When invoked from DSM, $ENV.GenericImport does not
import the file when the If $ENV.Assert(...)="YES" on
line 65 of version 27 is answered with an "O".
The problem is in the Assert method. Assert in the
above call is passed Buttons="Yes,No", but prompts
with a default of "O)k [O]" and returns "OK", not "YES"
as expected.
Test Steps:
1) Create a dummy Class Library in the CDE (TEST).
2) Export to opl file (TEST.opl).
3) FTP to DSM box.
4) Execute the following M code.
Replace
<VMS DEVICE> and <VMS DIR> with the device and
directory names the opl file was FTP'd too.
N DEV,RESULT
S DEV="<VMS DEVICE>:[VMS DIR>]TEST.OPL"
D INIT^VESOEX
S RESULT=$$INVOKE^VESOEX(@%obj(0)@
(" ","ENV"),"Serialization::GenericImp
ort",1,DEV)
D DELSESID^VESOSESS(%obj)
Q
Fix VESOSEDH
Logged In: YES
user_id=41717
Problem comfirmed. VESOSEDH is the cause - This is the
default session handler. Fixed by patch [ 586117 ] Fix Default
Assert implementation. Which is also attached here
Logged In: YES
user_id=41717
Likewise the problem in $ENV.Assert can be demostrated
using the EsiObjects Command line tools ^VESOOPST.
Note:
In the above example and internal structure is used
(@%obj(0)@(" ","ENV") which is not safe (These may change
without notice). A safer approach would be to use the call
$$Lookup^VESOCESI("$ENV") to find the environment.