Single character greater than or equal symbol is $c(8805), so:

.......
set 
text=^||TestProfile("Table",p,"PostInfo",r)
set text=$replace(text,">=",$c(8805))
.......

Try and let us know.

Enrico

You can change the port from 57772 to 80 in System Managment Portal: System Administrtion -> Configuration -> Additional Settings -> Startup -> WebServerPort

Or cache.cpf configurtion file:

WebServerPort=57772  to WebServerPort=80

Better, proper and suggested solution: install a properly configured web server using port 80, don't use the little web server installed by Ensemble.

Enrico

Exactly for that situation I use:

If ##class(Ens.Job).ShouldBeQuiescent() || ##class(Ens.Job).ShouldTerminate() {
    ; do your closing housekeeping or...whatever..
    Quit
}

In your case maybe only ShouldTerminate() would be sufficient.

Enrico

I haven't seen a database corruption for many years, I literally forgot the last time I saw it, it may be 15+ years or more. And in the past (last millennium) I've seen and dealt db corruption.

Out of curiosity, what are the symptoms or your corruption? How did it happened?

I don't think alerts are stored in any file, they are stored in the Interoperability Event Log accessible from System Management Portal or via SQL using Ens_Util.Log table alerts have Type=6/Alert

Try enabling the log in the Java Gateway. In Management Portal:

System Administration > Configuration > Connectivity > External Language Servers > Edit External Language Server

Edit the "%Java Server" (you may need to stop it, if started) and in Advanced Settings specify a Log File.

Then reproduce the problem and check the log file.

The log file (in some case) can grow significantly, you may want to disable it when done.

Enrico

Frankly I cannot see any advantage in using the sample you posted, it makes things more complicated with no advantage and no, it's not faster than just use a plain simple property.

There are cases when those "tricks" (calculated properties, Set/Get methods) can be useful, but that's not the case of the code in your sample.

Regarding VALUELIST, it makes it easy and simple to define a (typically small) set of valid values for a property, then, if necessary, you can optionally provide a "user friendly" representation of those value. If you don't find it useful or don't need it, well....don't use it.

Enrico

The solution in simple....if you know it:

 set addressArray=netGate.new("remote.test.Address[2]")
 do addressArray.%set(0, home)
 do addressArray.%set(1, home2)  set person = netGate.new("remote.test.Person")
 do person.setAddressArray(addressArray)
 set addressArray2=person.getAddressArray()
 for i=0:1:1 {
      set addr = addressArray2.%get(i)
      !, addr.city
 }
 

In addition to %set() and %get() method for arrays there are also %setall(), %getall() methods.

Hopefully these methods will be documented sometime in the future.

Enrico

I don't think you can add SqlProc at class level, but you can modify the class definition programmatically.

Look at the class %Dictionary.MethodDefinition and the property SqlProc, if you set it to 1 is the same as adding [SqlProc] to the method.

%Dictionary.MethodDefinition is a child class of %Dictionary.ClassDefinition.

Of course I advise you to test it in a temporary system/namespace before...

Hope it helps,

Enrico