| 1 | RGUTOS ;CAIRO/DKM - Platform-dependent operations;12-Oct-1998 16:40;DKM
 | 
|---|
| 2 |  ;;2.1;RUN TIME LIBRARY;;Mar 22, 1999
 | 
|---|
| 3 |  ;=================================================================
 | 
|---|
| 4 |  ; Return version # of RTL
 | 
|---|
| 5 | VER() Q +$P($T(RGUTOS+1),";",3)
 | 
|---|
| 6 |  ; Set right margin
 | 
|---|
| 7 | RM(X) X ^%ZOSF("RM")
 | 
|---|
| 8 |  Q
 | 
|---|
| 9 |  ; Test for routine/tag
 | 
|---|
| 10 | TEST(X) N Z
 | 
|---|
| 11 |  S:X[U Z=$P(X,U),X=$P(X,U,2)
 | 
|---|
| 12 |  X ^%ZOSF("TEST")
 | 
|---|
| 13 |  Q $S('$T:0,$G(Z)="":1,Z'?.1"%"1.AN:0,1:$T(@Z^@X)'="")
 | 
|---|
| 14 |  ; Raise an exception
 | 
|---|
| 15 | RAISE(X) ZT $G(X)
 | 
|---|
| 16 |  ; Return code to set error trap
 | 
|---|
| 17 | TRAP(X) Q $$SUBST^RGUT(^%ZOSF("TRAP"),"X",""""_X_"""")
 | 
|---|
| 18 |  ; Check for $ET capability
 | 
|---|
| 19 | ETRAP() Q $$NEWERR^%ZTER
 | 
|---|
| 20 |  ; Open a file (extrinsic)
 | 
|---|
| 21 | OPENX(X1,X2) ;
 | 
|---|
| 22 |  D OPEN(.X1,.X2)
 | 
|---|
| 23 |  Q X1
 | 
|---|
| 24 |  ; Open a file
 | 
|---|
| 25 | OPEN(X1,X2) ;
 | 
|---|
| 26 |  N IO,POP,X3
 | 
|---|
| 27 |  D PARSE(.X1,.X3),OPEN^%ZISH(X3_X1,X3,X1,$G(X2,"R"),32767)
 | 
|---|
| 28 |  I POP ZT "OPEN"
 | 
|---|
| 29 |  S ^XTMP("RGHFS",$J,IO)=X3_X1,X1=IO
 | 
|---|
| 30 |  Q
 | 
|---|
| 31 |  ; Close a file
 | 
|---|
| 32 | CLOSE(X) N Y
 | 
|---|
| 33 |  S Y=$G(^XTMP("RGHFS",$J,X)),IO=X
 | 
|---|
| 34 |  K ^(X)
 | 
|---|
| 35 |  D CLOSE^%ZISH(Y)
 | 
|---|
| 36 |  Q
 | 
|---|
| 37 |  ; Close all open HFS
 | 
|---|
| 38 | CLOSEALL N Z
 | 
|---|
| 39 |  S Z=""
 | 
|---|
| 40 |  F  S Z=$O(^XTMP("RGHFS",$J,Z)) Q:Z=""  D CLOSE(Z)
 | 
|---|
| 41 |  Q
 | 
|---|
| 42 |  ; Parse out directory from filename
 | 
|---|
| 43 | PARSE(X,Y) ;
 | 
|---|
| 44 |  N D,Z
 | 
|---|
| 45 |  S D=$E($$DIRDLM,3),Z=$L(X,D),Y=$P(X,D,1,Z-1)_$S(Z>1:D,1:""),X=$P(X,D,Z)
 | 
|---|
| 46 |  Q
 | 
|---|
| 47 |  ; Read a line
 | 
|---|
| 48 | READ(X,Y) ;
 | 
|---|
| 49 |  N IO,%ZA,%ZB,%ZC,%ZL
 | 
|---|
| 50 |  S IO=$G(Y,$I)
 | 
|---|
| 51 |  D READNXT^%ZISH(.X)
 | 
|---|
| 52 |  U IO
 | 
|---|
| 53 |  Q $$STATUS^%ZISH&'$L(X)
 | 
|---|
| 54 |  ; Delete a file
 | 
|---|
| 55 | DELETE(X) ;
 | 
|---|
| 56 |  N Z
 | 
|---|
| 57 |  D PARSE(.X,.Z)
 | 
|---|
| 58 |  S Z(X)="",Z=$$DEL^%ZISH(Z,"Z")
 | 
|---|
| 59 |  Q
 | 
|---|
| 60 |  ; Rename a file
 | 
|---|
| 61 | RENAME(X1,X2) ;
 | 
|---|
| 62 |  N X3,X4
 | 
|---|
| 63 |  D PARSE(.X1,.X3),PARSE(.X2,.X4)
 | 
|---|
| 64 |  I $$MV^%ZISH(X3,X1,X4,X2)
 | 
|---|
| 65 |  Q
 | 
|---|
| 66 |  ; List files
 | 
|---|
| 67 | DIR(X1,X2,X3) ;
 | 
|---|
| 68 |  N Z
 | 
|---|
| 69 |  D PARSE(.X1,.Z)
 | 
|---|
| 70 |  S Z(X1)="",X3=$G(X3,"^UTILITY(""DIR"",$J)")
 | 
|---|
| 71 |  K @X3
 | 
|---|
| 72 |  I $$LIST^%ZISH(Z,"Z",X3)
 | 
|---|
| 73 |  Q
 | 
|---|
| 74 |  ; Force error if at EOF
 | 
|---|
| 75 | EOF I $$STATUS^%ZISH ZT "EOF"
 | 
|---|
| 76 |  Q
 | 
|---|
| 77 |  ; Returns true if current error is EOF
 | 
|---|
| 78 | EOFERR() Q $$EC^%ZOSV["EOF"
 | 
|---|
| 79 |  ; URL format filename-->HFS format
 | 
|---|
| 80 | CVTFN(RGFIL,RGROOT) ;
 | 
|---|
| 81 |  N RGZ,RGZ1,RGD
 | 
|---|
| 82 |  S RGD=$$DIRDLM,RGROOT=$G(RGROOT)
 | 
|---|
| 83 |  S:$E(RGROOT,$L(RGROOT))=$E(RGD,3) RGROOT=$E(RGROOT,1,$L(RGROOT)-1)
 | 
|---|
| 84 |  S RGZ=$L(RGFIL,"/"),RGZ1=$P(RGFIL,"/",1,RGZ-1),RGFIL=$P(RGFIL,"/",RGZ)
 | 
|---|
| 85 |  S:$L(RGZ1) RGROOT=RGROOT_$E(RGD,$S($L(RGROOT):2,1:1))_$TR(RGZ1,"/.-",$E(RGD,2))
 | 
|---|
| 86 |  Q RGROOT_$S($L(RGROOT):$E(RGD,3),1:"")_RGFIL
 | 
|---|
| 87 |  ; Return directory delimiters
 | 
|---|
| 88 | DIRDLM() N X
 | 
|---|
| 89 |  S X=$$PWD^%ZISH
 | 
|---|
| 90 |  Q $S(X["[":"[.]",X["\":"\\\",1:"///")
 | 
|---|
| 91 |  ; FTP file transfer
 | 
|---|
| 92 | FTP(X1,X2,X3,X4,X5,X6,X7) ;
 | 
|---|
| 93 |  D:$$VERSION^%ZOSV(1)["DSM" VMS^RGUTFTP(.X1,.X2,.X3,.X4,.X5,.X6,.X7)
 | 
|---|
| 94 |  Q
 | 
|---|
| 95 |  ; Parse error data
 | 
|---|
| 96 | ERR(X1,X2,X3) ;
 | 
|---|
| 97 |  N X
 | 
|---|
| 98 |  S X=$$EC^%ZOSV,X1=$$VERSION^%ZOSV(1)
 | 
|---|
| 99 |  G ERRMSM:X1["MSM",ERRDSM:X1["DSM"
 | 
|---|
| 100 |  S (X1,X2,X3)=""
 | 
|---|
| 101 |  Q
 | 
|---|
| 102 | ERRMSM S X1=$E($P(X,">"),2,99),X2=$P($P(X,">",2),":"),X3=X1
 | 
|---|
| 103 |  S:X2["*" X2=""
 | 
|---|
| 104 |  S:$E(X1)="Z" X3=$E(X1,2,99),X1="ZTRAP"
 | 
|---|
| 105 |  Q
 | 
|---|
| 106 | ERRDSM S X1=$P($P(X,", ",2),"-",3),X2=$P($P(X,", "),":"),X3=$$TRIM^RGUT($P(X,", ",$S(X1="ZTRAP":4,1:3)))
 | 
|---|
| 107 |  Q
 | 
|---|