RGUTOS ;CAIRO/DKM - Platform-dependent operations;04-Sep-1998 11:26;DKM
 ;;2.1;RUN TIME LIBRARY;;Mar 22, 1999
 ;=================================================================
VER() Q $P($T(+2),";",3)
CVTFN(RGFIL,RGROOT) ;
 N RGZ,RGZ1,RGD
 S RGD=$$DIRDLM,RGROOT=$G(RGROOT)
 S:$E(RGROOT,$L(RGROOT))=$E(RGD,3) RGROOT=$E(RGROOT,1,$L(RGROOT)-1)
 S RGZ=$L(RGFIL,"/"),RGZ1=$P(RGFIL,"/",1,RGZ-1),RGFIL=$P(RGFIL,"/",RGZ)
 S:$L(RGZ1) RGROOT=RGROOT_$E(RGD,$S($L(RGROOT):2,1:1))_$TR(RGZ1,"/.-",$E(RGD,2))
 Q RGROOT_$S($L(RGROOT):$E(RGD,3),1:"")_RGFIL
RM(X) X ^%ZOSF("RM")
 Q
TEST(X) N Z
 S:X[U Z=$P(X,U),X=$P(X,U,2)
 X ^%ZOSF("TEST")
 Q $S('$T:0,$G(Z)="":1,Z'?.1"%"1.AN:0,1:$T(@Z^@X)'="")
ETRAP() Q $$NEWERR^%ZTER
OPENX(X1,X2) ;
 D OPEN(.X1,.X2)
 Q X1
OPEN(X1,X2) ;
 O X1:$S("Rr"[$G(X2):"RS","Ww"[X2:"WNS","Bb"[X2:"RF",1:""):0
 E  ZT "NOPEN"
 U X1
 S ^TMP("HFS",$J,X1)=""
 Q
CLOSE(X) C X
 K ^TMP("HFS",$J,X)
 Q
CLOSEALL N Z
 S Z=""
 F  S Z=$O(^TMP("HFS",$J,Z)) Q:Z=""  C Z
 K ^TMP("HFS",$J)
 Q
EOF ZT:$ZA=-1 "ENDOFFILE"
 Q
EOFERR() Q:$ZE["ENDOFFILE"
READ(X,Y) ;
 S $ZT="READX"
 U $G(Y,$I)
 R X
 Q 0
READX Q 1
DELETE(X) ;
 S X=$ZF(-1,"del """_X_"""")
 Q
RENAME(X1,X2) ;
 S X1=$ZF(-1,"ren """_X1_""" """_X2_"""")
 Q
DIR(X1,X2,X3) ;
 N Z,Z1
 S X3=$G(X3,$NA(^UTILITY("DIR",$J)))
 K @X3
 S:'$G(X2) X2=9999999999
 F Z=1:1:X2 S Z1=$ZSEARCH(X1),X1="" Q:Z1=""  D
 .S Z1=$P(Z1,"\",$L(Z1,"\"))
 .S:$TR(Z1,".")'="" @X3@(Z1)=""
 Q
DIRDLM() Q "\\\"
DEFDIR(X) ;
 S X=$G(X,$P($G(^XTV(8989.3,1,"DEV")),U))
 S:$E(X,$L(X))'="\" X=X_"\"
 Q X
ERR(X1,X2,X3) ;
 S X1=$E($P($ZE,">"),2,99),X2=$P($P($ZE,">",2),":"),X3=X1
 S:X2["*" X2=""
 S:$E(X1)="Z" X3=$E(X1,2,99),X1="ZTRAP"
 Q
FTP(X1,X2,X3,X4,X5,X6,X7) ;
 Q
RAISE(X) ZT $G(X)
TRAP(X) Q $S($D(X):"$ZT="""_X_"""",1:"$ZT")
SIZE(X) Q 0
FREE(X) Q 0
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HRGUTOS   1838     printed  Sep 23, 2025@20:13:45                                                                                                                                                                                                      Page 2
RGUTOS    ;CAIRO/DKM - Platform-dependent operations;04-Sep-1998 11:26;DKM
 +1       ;;2.1;RUN TIME LIBRARY;;Mar 22, 1999
 +2       ;=================================================================
VER()      QUIT $PIECE($TEXT(+2),";",3)
CVTFN(RGFIL,RGROOT) ;
 +1        NEW RGZ,RGZ1,RGD
 +2        SET RGD=$$DIRDLM
           SET RGROOT=$GET(RGROOT)
 +3        if $EXTRACT(RGROOT,$LENGTH(RGROOT))=$EXTRACT(RGD,3)
               SET RGROOT=$EXTRACT(RGROOT,1,$LENGTH(RGROOT)-1)
 +4        SET RGZ=$LENGTH(RGFIL,"/")
           SET RGZ1=$PIECE(RGFIL,"/",1,RGZ-1)
           SET RGFIL=$PIECE(RGFIL,"/",RGZ)
 +5        if $LENGTH(RGZ1)
               SET RGROOT=RGROOT_$EXTRACT(RGD,$SELECT($LENGTH(RGROOT):2,1:1))_$TRANSLATE(RGZ1,"/.-",$EXTRACT(RGD,2))
 +6        QUIT RGROOT_$SELECT($LENGTH(RGROOT):$EXTRACT(RGD,3),1:"")_RGFIL
RM(X)      XECUTE ^%ZOSF("RM")
 +1        QUIT 
TEST(X)    NEW Z
 +1        if X[U
               SET Z=$PIECE(X,U)
               SET X=$PIECE(X,U,2)
 +2        XECUTE ^%ZOSF("TEST")
 +3        QUIT $SELECT('$TEST:0,$GET(Z)="":1,Z'?.1"%"1.AN:0,1:$TEXT(@Z^@X)'="")
ETRAP()    QUIT $$NEWERR^%ZTER
OPENX(X1,X2) ;
 +1        DO OPEN(.X1,.X2)
 +2        QUIT X1
OPEN(X1,X2) ;
 +1        OPEN X1:$SELECT("Rr"[$GET(X2):"RS","Ww"[X2:"WNS","Bb"[X2:"RF",1:""):0
 +2       IF '$TEST