The basic VS Code extension for ObjectScript doesn't manage deletions at all.  You have to manually delete them on the server.

You can however use the Serenji extension which does manage deletions properly.  You can read more about it here:  or just install it from the VS Code marketplace.

Deltanji can take care of this for you.

With Deltanji you can change the DTL either in the Management Portal or in VS Code, or both.   And you'll get a lot of other benefits if you upgrade your git repository to Deltanji.

Hi Alexey

It sounds like writing a simple VS Code Extension would be the right solution for this requirement.

We would be able to help you with this if you don't have the appropriate skills.



The VS Code ecosystem for Objectscript is evolving fast.  And because it is community driven there is plenty of choice of extensions.

If you are likely to be working with more than one IRIS server then you should check out the InterSystems Server Manager extension.  And for code editing you have a choice of the basic vscode-objectscript or Serenji.

Then for debugging there is some support in the vscode-objectscript extension or you can purchase the premium debugger option for Serenji.

But as Nigel says, check out the VS Code market place, there are quite a number of interesting and useful extensions to choose from depending on your needs.



When a label begins with % it is often a sign that it is something that has been generated as part of the class compilation process.

In this case %Construct is the generated constructor code for the class.  More specifically, if any property in your class definition has an initial value specification then the %Construct code will be generated in your .int routine and will initialise the values of these properties.

By default, the .int code for the class %DeepSee.ResultSet.cls will not be present on your system, but you can create it by recompiling this class with the k flag which indicates that .int code should be kept.

Do Compile^%apiOBJ("%DeepSee.ResultSet","k")

Once you have re-compiled this class then you should be able to inspect the .int code and locate the line that is responsible for your <PROTECT> error.

Have you looked at PDFbox?

Alternatively, if the pdfs are of your own making then the best solution would be to merge the xml content before you use fop to create the pdf document.


Do you need something more than simply attaching a debugger to the process and stepping through the code?

With the Serenji debugger you have precise control over stepping into or over blocks of code and you can mask out library code that you already know about (or don't want to know about).

Hi Mike

Nice example of recursion.  However, you might want to try testing your solution with some non-sanitized input.   For example:

set maliciousInput="""_$xecute(""h"")_"""
set in(maliciousInput)=""
set in(maliciousInput,1)=""
set out=..Flatten(in)