Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: ZOSVGUX

ZOSVGUX.m

Go to the documentation of this file.
  1. %ZOSV ;SFISC/AC,PUG/TOAD,HOU/DHW - View commands & special functions. ;09/15/08 16:41
  1. ;;8.0;KERNEL;**275,425,499**;Jul 10, 1995;Build 24
  1. ;
  1. ACTJ() ; # active jobs
  1. I $G(^XUTL("XUSYS","CNT")) Q $G(^XUTL("XUSYS","CNT"))
  1. ;This would also work
  1. N %I,%FILE,Y
  1. S %FILE=$$TEMP_"zosv_actj_"_$J_".tmp"
  1. ZSYSTEM "ps cef -C mumps|wc>"_%FILE
  1. S %I=$I
  1. O %FILE
  1. U %FILE R Y:99 U %I
  1. C %FILE:DELETE
  1. F Q:$E(Y)'=" " S $E(Y)=""
  1. S Y=Y-1,^XUTL("XUSYS","CNT")=Y
  1. Q Y
  1. ;
  1. AVJ() ; # available jobs, Limit is in the OS.
  1. N V,J
  1. S V=^%ZOSF("VOL"),J=$O(^XTV(8989.3,1,4,"B",V,0)),J=$P($G(^XTV(8989.3,1,4,J,0),"^^1000"),"^",3)
  1. Q J-$$ACTJ ;Use signon Max
  1. ;
  1. RTNDIR() ; primary routine source directory
  1. ;Assume /home/xxx/o(/home/xxx/r /home/xxx/w) /home/gtm()
  1. Q $P($S($ZRO["(":$P($P($ZRO,"(",2),")"),1:$ZRO)," ")_"/"
  1. ;
  1. TEMP() ; Return path to temp directory
  1. ;N %TEMP S %TEMP=$P($$RTNDIR," "),%TEMP=$P(%TEMP,"/",1,$L(%TEMP,"/")-2)_"/t/"
  1. Q $G(^%ZOSF("TMP"),$G(^XTV(8989.3,1,"DEV"),"/tmp/"))
  1. ;
  1. PASSALL ;
  1. U $I:(NOESCAPE:NOTERMINATOR:PASTHRU) Q
  1. NOPASS ;
  1. U $I:(ESCAPE:TERMINATOR="":NOPASTHRU) Q
  1. ;
  1. GETPEER() ;Get the IP address of a connection peer
  1. N PEER
  1. S PEER=$P($ZTRNLNM("SSH_CLIENT")," ") S:PEER="" PEER=$ZTRNLNM("REMOTEHOST")
  1. S PEER=$S($L(PEER):PEER,$L($G(IO("IP"))):IO("IP"),$L($G(IO("GTM-IP"))):IO("GTM-IP"),1:"")
  1. I $G(^XTV(8989.3,1,"PEER"))[PEER S PEER="" ;p499
  1. Q PEER
  1. ;
  1. PRGMODE ;Drop into direct mode
  1. N X,XUCI,XUSLNT
  1. W ! S ZTPAC=$P($G(^VA(200,+DUZ,.1)),"^",5),XUVOL=^%ZOSF("VOL")
  1. S X="" X ^%ZOSF("EOFF") R:ZTPAC]"" !,"PAC: ",X:60 D LC^XUS X ^%ZOSF("EON") I X'=ZTPAC W "??",$C(7) Q
  1. N XMB,XMTEXT,XMY S XMB="XUPROGMODE",XMB(1)=DUZ,XMB(2)=$I D ^XMB:$L($T(^XMB)) D BYE^XUSCLEAN K ZTPAC,X,XMB
  1. D UCI S XUCI=Y D PRGM^ZUA
  1. F BREAK
  1. HALT
  1. ;
  1. PROGMODE() ; In Application mode
  1. Q 0 ; This was used to control UCI switching, has no meaning in GT.M
  1. ;
  1. UCI ;
  1. S Y=^%ZOSF("PROD") Q
  1. ;
  1. UCICHECK(X) ;
  1. Q X
  1. ;
  1. JOBPAR ; <=====
  1. N %FILE,%I S %FILE=$$PWD^%ZISH_"zosv_jobpar_"_$J_".tmp"
  1. ZSYSTEM "ps c -p "_X_"|tail -1>"_%FILE
  1. S %I=$I
  1. O %FILE
  1. U %FILE R Y:99 U %I
  1. C %FILE:DELETE
  1. F Q:$E(Y)'=" " S $E(Y)=""
  1. I +Y=X,$E(Y,$L(Y)-4,$L(Y))="mumps" S Y=^%ZOSF("PROD")
  1. E S Y=""
  1. Q
  1. ;
  1. SHARELIC(TYPE) ;Used by Cache implementations
  1. Q
  1. ;
  1. PRIORITY ;
  1. K Y ; VA has this disabled in general.
  1. Q
  1. ;
  1. PRIINQ() ;
  1. Q 5 ; for now, we're always middle of the road
  1. ;
  1. BAUD S X="UNKNOWN"
  1. Q
  1. ;
  1. LGR() ; Last global reference ($REFERENCE)
  1. Q $R
  1. ;
  1. EC() ; Error Code: returning $ZS in format more like $ZE from DSM
  1. N %ZE
  1. I $ZS="" S %ZE=""
  1. S %ZE=$P($ZS,",",2)_","_$P($ZS,",",4)_","_$P($ZS,",")_",-"_$P($ZS,",",3)
  1. Q %ZE
  1. ;
  1. DOLRO ;SAVE ENTIRE SYMBOL TABLE IN LOCATION SPECIFIED BY X
  1. ;S Y="%" F S Y=$O(@Y) Q:Y="" D
  1. ;. I $D(@Y)#2 S @(X_"Y)="_Y)
  1. ;. I $D(@Y)>9 S %X=Y_"(",%Y=X_"Y," D %XY^%RCR
  1. S Y="%" F M:$D(@Y) @(X_"Y)="_Y) S Y=$O(@Y) Q:Y=""
  1. Q
  1. ;
  1. ORDER ;SAVE PART OF SYMBOL TABLE IN LOCATION SPECIFIED BY X
  1. N %
  1. S (Y,%)=$P(Y,"*",1) ;I $D(@Y)=0 F S Y=$O(@Y) Q:Y=""!(Y[Y1)
  1. Q:Y=""
  1. ;S %=$D(@Y) S:%#2 @(X_"Y)="_Y) I %>9 S %X=Y_"(",%Y=X_"Y," D %XY^%RCR
  1. ;F S Y=$O(@Y) Q:Y=""!(Y'[Y1) S %=$D(@Y) S:%#2 @(X_"Y)="_Y) I %>9 S %X=Y_"(",%Y=X_"Y," D %XY^%RCR
  1. F M:$D(@Y) @(X_"Y)="_Y) S Y=$O(@Y) Q:Y=""!(Y'[%)
  1. Q
  1. ;
  1. PARSIZ ;
  1. S X=3 Q
  1. ;
  1. NOLOG ;
  1. S Y=0 Q
  1. ;
  1. GETENV ;Get environment Return Y='UCI^VOL^NODE^BOX LOOKUP'
  1. N %HOST,%V S %V=^%ZOSF("PROD"),%HOST=$$RETURN("hostname -s")
  1. S Y=$TR(%V,",","^")_"^"_%HOST_"^"_$P(%V,",",2)_":"_%HOST
  1. Q
  1. ;
  1. VERSION(X) ;return OS version, X=1 - return OS
  1. Q $S($G(X):$P($ZV," V"),1:+$P($ZV," V",2))
  1. ;
  1. OS() ;
  1. Q "UNIX"
  1. ;
  1. SETNM(X) ;Set name, Trap dup's, Fall into SETENV
  1. N $ETRAP S $ETRAP="S $ECODE="""" Q"
  1. SETENV ;Set environment X='PROCESS NAME^ '
  1. S ^XUTL("XUSYS",$J,0)=$H,^("NM")=X ; workaround
  1. Q
  1. ;
  1. SID() ;System ID
  1. N J1,T S T="~"
  1. S J1(1)=$ZROUTINES,J1(1)=$P(J1(1)," ")
  1. S J1(2)=$ZGBLDIR
  1. Q "1~"_J1(1)_T_J1(2)
  1. ;
  1. PRI() ;Check if a mixed OS enviroment.
  1. ;Default return 1 unless we are on the secondary OS.
  1. ;Only Cache on a VMS/Linux mix is supported now.
  1. Q 1
  1. ;
  1. T0 ; start RT clock
  1. Q ; we don't have $ZH on GT.M
  1. ;
  1. T1 ; store RT datum w/ZHDIF
  1. Q ; we don't have $ZH on GT.M
  1. ;
  1. ZHDIF ;Display dif of two $ZH's
  1. W !," ET=",$J(($P(%ZH1,",")-$P(%ZH0,",")*86400)+($P(%ZH1,",",2)-$P(%ZH0,",",2)),6,2)
  1. Q
  1. ;
  1. ;Code moved to %ZOSVKR, Comment out if needed.
  1. LOGRSRC(OPT,TYPE,STATUS) ;record resource usage in ^XTMP("KMPR"
  1. Q:'$G(^%ZTSCH("LOGRSRC")) ; quit if RUM not turned on.
  1. ; call to RUM routine.
  1. D RU^%ZOSVKR($G(OPT),$G(TYPE),$G(STATUS))
  1. Q
  1. ;
  1. SETTRM(X) ;Turn on specified terminators.
  1. U $I:(TERMINATOR=X)
  1. Q 1
  1. ;
  1. DEVOK ;
  1. ;use lsof (list open files)
  1. ; given a device name in X
  1. ;INPUT: X=Device $I, X1=IOT -- X1 needed for resources
  1. ;OUTPUT: Y=0 if available, Y=job # if owned
  1. ; Y=-1 if device does not exists.
  1. ; return Y=0 if not owned, Y=$J of owning job, Y=999 if dev cycling
  1. ;
  1. I $G(X1)="RES" G RESOK^%ZIS6
  1. S Y=0
  1. Q ;Let ZIS deal with it.
  1. ;
  1. N %FILE S %FILE=$$TEMP_"zosv_devok_"_$J_".tmp"
  1. ZSYSTEM "/usr/sbin/lsof -F Pc "_X_" >"_%FILE
  1. N %I,%X,%Y S %I=$I
  1. O %FILE U %FILE
  1. F %Y=0:1 R %X:99 Q:%X="" Q:%X["lsof: status error" D
  1. . S %Y(%Y\2,$S($E(%X)="p":"PID",$E(%X)="c":"CMD",1:"?"))=$E(%X,2,$L(%X))
  1. U %I
  1. C %FILE:(DELETE)
  1. I %X["lsof: status error" S Y=-1 Q
  1. S %X="",Y=0
  1. F S %X=$O(%Y(%X)) Q:%X="" I %Y(%X,"CMD")="mumps" S Y=%Y(%X,"PID") Q
  1. Q
  1. ;
  1. DEVOPN ;List of Devices opened. Linux only
  1. ;Returns variable Y. Y=Devices owned separated by a comma
  1. N %I,%X,%Y
  1. ZSHOW "D":%Y
  1. S %I=0,Y="",%X=""
  1. F S %I=$O(%Y("D",%I)) Q:'%I S Y=Y_%X_$P(%Y("D",%I)," "),%X=","
  1. Q
  1. ;
  1. RETURN(%COMMAND) ; ** Private Entry Point: execute a shell command & return the resulting value **
  1. ; %COMMAND is the string value of the Linux command
  1. N %VALUE S %VALUE="" ; value to return
  1. N %FILE S %FILE=$$TEMP_"RET"_$J_".txt" ; temporary results file
  1. ZSYSTEM %COMMAND_" > "_%FILE ; execute command & save result
  1. O %FILE:(REWIND) U %FILE R:'$ZEOF %VALUE:99 C %FILE:(DELETE) ; fetch value & delete file
  1. ;
  1. QUIT %VALUE ; return value
  1. ;
  1. ;
  1. STRIPCR(%DIRECT) ; ** Private Entry Point: strip extraneous CR from end of lines of all
  1. ; routines in %DIRECTORY Linux directory
  1. ;
  1. ZSYSTEM "perl -pi -e 's/\r\n$/\n/' "_%DIRECT_"[A-K]*.m"
  1. ZSYSTEM "perl -pi -e 's/\r\n$/\n/' "_%DIRECT_"[L-S]*.m"
  1. ZSYSTEM "perl -pi -e 's/\r\n$/\n/' "_%DIRECT_"[T-z]*.m"
  1. ZSYSTEM "perl -pi -e 's/\r\n$/\n/' "_%DIRECT_"[_]*.m"
  1. Q
  1. ;