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

ZISHMSU.m

Go to the documentation of this file.
  1. %ZISH ;IHS/PR,SFISC/AC ; HOST COMMANDS - UNIX (MSU); [ 04/02/2003 8:29 AM ]
  1. ;;8.0;KERNEL;**1001,1002,1003,1004,1005,1007**;APR 1, 2003
  1. ;;8.0;KERNEL;;JUL 10, 1995
  1. ;THIS ROUTINE CONTAINS IHS MODIFICATIONS BY IHS/ADC/GTH 11/25/96; IHS/ANMC/LJF 12/11/96; TASSC/DFM; IHS/OIRM/DSD/AEF/12/19/02 ;IHS/OIRM/DSD/AEF/1/21/03
  1. ;THIS IS ROUTINE ZISHMSU
  1. ;
  1. ; For unix operating systems.
  1. ;
  1. ; Save in MGR uci as %ZISH.
  1. ;
  1. ; IHS/ADC/GTH 11-25/96 - Intercepts added for IHS calls that are
  1. ; not compatible with VA calls. See $$IHS^ZISHMSMU if any options
  1. ; need to be added for your site.
  1. ;
  1. ;IHS/ANMC/LJF 12/11/96
  1. ; -- checked for passing of 4th parameter, if not sent use IHS code
  1. ; -- redirected PWD call to IHS code
  1. ;
  1. ;
  1. OPEN(X1,X2,X3,X4) ;
  1. I '$D(X4) Q $$OPEN^ZISHMSMU(X1,X2,X3) ;IHS/ANMC/LJF 12/11/96
  1. ;I $$IHS^ZISHMSMU Q $$OPEN^ZISHMSMU(X1,X2,X3) ; IHS/ADC/GTH 10-28-96
  1. ;X1=handle name
  1. ;X2=directory name /dir/
  1. ;X3=file name
  1. ;X4=file access mode e.g.: W for write, R for read, A for append.
  1. N %,%1,%I
  1. S %I=$I
  1. F %=51:1:54 O %::0 S %T=$T Q:%T
  1. I %T S IO=%,IO(1,IO)="",POP=0
  1. ; E U:$D(IO(1,%I) %I S POP=1 Q ; IHS/ADC/GTH 11-25-96
  1. E U:$D(IO(1,%I)) %I S POP=1 Q ; IHS/ADC/GTH 11-25-96
  1. S %1=$$MODE^%ZISF(X2_X3,X4)
  1. S %=%_":"_%1
  1. U @% S %ZA=$ZA
  1. I %ZA=-1 U %I C IO K IO(1,IO) S POP=1 Q ;Q 0
  1. ;S IO=%,IO(1,IO)=""
  1. I $G(X1)]"" D SAVDEV^%ZISUTL(X1)
  1. Q ;Q 1
  1. ;
  1. CLOSE(X) ;Close HFS device not opened by %ZIS.
  1. ;X=HANDLE NAME
  1. N %
  1. I $G(X)]"" C IO K IO(1,IO) D RMDEV^%ZISUTL(X),HOME^%ZIS Q
  1. C IO K IO(1,IO) D HOME^%ZIS
  1. Q
  1. ;
  1. OPENERR ;
  1. Q 0
  1. ;
  1. DEL(%ZISHX1,%ZISHX2) ;Del fl(s)
  1. I $$IHS^ZISHMSMU Q $$DEL^ZISHMSMU(%ZISHX1,%ZISHX2) ; IHS/ADC/GTH - 10-28-96
  1. ;S Y=$$DEL^ZOSHMSM("/dir/","fl")
  1. ; ,.array)
  1. ;Changed param 2 to a $NAME string.
  1. N %ZISH,%ZISHLGR
  1. N ZOSHDA,ZOSHF,ZOSHX,ZOSHQ,ZOSHDF,ZOSHC
  1. ;
  1. ;Dir frmt
  1. ;D DF(.ZOSH1) CHANGE TO USE $TR
  1. S %ZISHX1=$TR(%ZISHX1,"\","/")
  1. ;
  1. ;Get fls to act on
  1. ;No '*' allowed
  1. S %ZISHLGR=$$LGR^%ZOSV ;if possible, save off last global reference
  1. S %ZISH="" F S %ZISH=$O(@%ZISHX2@(%ZISH)) Q:'%ZISH I %ZISH["*" S ZOSHQ=1 Q
  1. I $D(ZOSHQ) X "I $G(%ZISHLGR)]"""",$D(@%ZISHLGR)" Q 0
  1. S %ZISH="" F S %ZISH=$O(@%ZISHX2@(%ZISH)) Q:%ZISH="" D
  1. .S ZOSHC="rm "_%ZISHX1_%ZISH
  1. .;S ZOSHC=$ZOS(2,%ZOSHX1_%ZISH)
  1. .D JW
  1. I $G(%ZISHLGR)]"",$D(@%ZISHLGR)
  1. Q 1
  1. ;
  1. ;
  1. LIST(%ZISHX1,%ZISHX2,%ZISHX3) ;Create a local array holding fl names
  1. I $$IHS^ZISHMSMU Q $$LIST^ZISHMSMU(%ZISHX1,%ZISHX2,.%ZISHX3) ; IHS/ADC/GTH - 10-28-96
  1. ;S Y=$$LIST^ZOSHDOS("\dir\","fl",".return array")
  1. ; "fl*",
  1. ; .array,
  1. ;
  1. ;Change X2 = $NAME OF CLOSE ROOT
  1. ;Change X3 = $NAME OF CLOSE ROOT
  1. ;
  1. N %ZISH,%ZISHLGR,%ZISHN,%ZISHX,%ZISXX,%ZISHY
  1. S %ZISHLGR=$$LGR^%ZOSV ;if possible, save off last global reference
  1. S ZOSHC="rm ZOSHAUTO."_$J
  1. D JW
  1. S %ZISHN=0
  1. ;Get fls to act on
  1. S %ZISH="" F S %ZISH=$O(@%ZISHX2@(%ZISH)) Q:%ZISH="" D
  1. .S %ZISHX=%ZISHX1_%ZISH
  1. .S ZOSHC="ls -d "_%ZISHX_" >> ZOSHAUTO."_$J
  1. .D JW
  1. D OPEN("","","ZOSHAUTO."_$J,"R")
  1. F ZOSHLN=1:1 U IO R %ZISHXX Q:$$STATUS=-1 D
  1. .S %ZISHY=$P(%ZISHXX,"/",$L(%ZISHXX,"/"))
  1. .I %ZISHY]"" S @%ZISHX3@(%ZISHY)=""
  1. C IO K IO(1,IO)
  1. ;Remove ZOSHAUTO.$J
  1. S ZOSHC="rm ZOSHAUTO."_$J
  1. D JW
  1. I $G(%ZISHLGR)]"",$D(@%ZISHLGR)
  1. Q $O(@%ZISHX3@(""))]""
  1. ;
  1. MV(X1,X2,X3,X4) ;Rename a fl
  1. I $$IHS^ZISHMSMU Q $$MV^ZISHMSMU(X1,X2,X3,X4) ; IHS/ADC/GTH - 10-28-96
  1. ;S Y=$$MV^ZOSHMSM("/dir/","fl","/dir/","fl")
  1. ;
  1. N %,%1
  1. N ZOSHC,ZOSHX
  1. ;
  1. ;Dir frmt
  1. D DF(.X1)
  1. D DF(.X3)
  1. ;
  1. ;Pbv or qit
  1. I $O(X2(0))!($O(X4(0))) S ZOSHX=3 X "I $G(%ZISHLGR)]"""",$D(@%ZISHLGR)" Q ZOSHX
  1. ;
  1. ;Check for 'from' and 'to' directory
  1. ;
  1. ;S ZOSHC="mv "_X1_X2_" "_X3_X4
  1. S ZOSHC="cp "_X1_X2_" "_X3_X4_" ; rm "_X1_X2
  1. D JW
  1. I $G(%ZISHLGR)]"",$D(@%ZISHLGR)
  1. Q 1 ;ZOSHX
  1. ;
  1. PWD(X) ;Print working directory
  1. Q $$PWD^ZISHMSMU(.X) ;IHS/ANMC/LJF 12/11/96
  1. I $$IHS^ZISHMSMU Q $$PWD^ZISHMSMU(.X) ; IHS/ADC/GTH - 10-28-96
  1. ;
  1. N %,%IS,POP,X,Y,ZOSHC,ZOSHDA,ZOSHDF,ZOSHF,ZOSHIOP,ZOSHLN,ZOSHQ,ZOSHX,ZOSHSYFI,ZOSHIOP1
  1. ;
  1. ;Init ZOSHAUTO.$J
  1. S ZOSHC="rm ZOSHAUTO."_$J
  1. D JW
  1. ;
  1. S ZOSHC="pwd > ZOSHAUTO."_$J
  1. D JW
  1. ;
  1. ;Open ZOSHAUTO.$J to read.
  1. ;Create the 'Return Array' to pass back to user
  1. D OPEN^%ZISH("","ZOSHAUTO."_$J,"R") I POP Q ""
  1. F %1=1:1 U IO R % Q:$$STATUS=-1 S Y=%
  1. D CLOSE^%ZISH("")
  1. ;
  1. ;Remove ZOSHAUTO.$J
  1. S ZOSHC="rm ZOSHAUTO."_$J
  1. D JW
  1. ;
  1. S Y=Y_$S($E(Y,$L(Y))'="/":"/",1:"")
  1. Q Y
  1. ;
  1. JW ;msm extrinsic
  1. S ZOSHX=$$JOBWAIT^%HOSTCMD(ZOSHC)
  1. Q
  1. DF(X) ;Dir frmt
  1. Q:X=""
  1. S X=$TR(X,"\","/")
  1. I $E(X,$L(X))'="/" S X=X_"/"
  1. Q
  1. ;----- BEGIN IHS MODIFICATION - XU*8.0*1007
  1. ;ORIGINAL MODIFICATION BY IHS/OIRM/DSD/AEF 12/19/02
  1. ;ADDED SUBROUTINE DEFDIR TO PREVENT <LINER>CHKNM+3^%ZISF ERROR
  1. ;AT THE 'Enter a Host File:' PROMPT WHEN A PATH IS NOT SPECIFIED
  1. DEFDIR(DF) ;ef. Default Dir and frmt
  1. Q:DF="." "" ;Special way to get current dir.
  1. S:DF="" DF=$G(^XTV(8989.3,1,"DEV"))
  1. I $E(DF,$L(DF))'="/" S DF=DF_"/"
  1. Q DF
  1. ;----- END IHS MODIFICATION
  1. STATUS() ;Eof flag
  1. Q $ZC
  1. QL(X) ;Qlfrs
  1. Q:X=""
  1. S:$E(X)'="-" X="-"_X
  1. Q
  1. FL(X) ;Fl len
  1. N ZOSHP1,ZOSHP2
  1. S ZOSHP1=$P(X,"."),ZOSHP2=$P(X,".",2)
  1. ;----- BEGIN IHS MODIFICATION - XU*8*1007
  1. ;THESE TWO LINES ARE COMMENTED OUT, FILE LENGTH IS NO LONGER AN ISSUE.
  1. ;ORIGINAL MODIFICATION BY TASSC/MFD
  1. ;I $L(ZOSHP1)>14 S X=4 Q
  1. ;I $L(ZOSHP2)>8 S X=4 Q
  1. ;----- END IHS MODIFICATION
  1. Q
  1. ;
  1. FTG(%ZISHX1,%ZISHX2,%ZISHX3,%ZISHX4,%ZISHX5) ;Unload contents of host file into global
  1. ;p1=hostf file directory
  1. ;p2=host file name
  1. ;p3= NOW $NAME REFERENCE INCLUDING STARTING SUBSCRIPT
  1. ;p4=INCREMENT SUBSCRIPT
  1. ;p5=Overflow subscript, defaults to "OVF"
  1. N %ZISH,%ZISH1,%ZISHI,%ZISHL,%ZISHLGR,%ZISHS,ZISHIO,%ZISHOVL,%ZISHX,ZISHY
  1. S %ZISHLGR=$$LGR^%ZOSV ;if possible, save off last global reference
  1. S %ZISHOVL=$G(%ZISHOVL,"OVF")
  1. S %ZISHI=$$QS^XLFUTL(%ZISHX3,%ZISHX4)
  1. S %ZISHL=$$QL^XLFUTL(%ZISHX3)
  1. I %ZISHX4=(%ZISHL+1),%ZISHI="" S %ZISHI=1
  1. S %ZISH1=$NA(@%ZISHX3,%ZISHX4-1)
  1. F %ZISH=%ZISHX4+1:1:%ZISHL S %ZISHS(%ZISH)=$$QS^XLFUTL(%ZISHX3,%ZISH)
  1. D OPEN^%ZISH("",%ZISHX1,%ZISHX2,"R")
  1. S %ZISHX="",%ZPZB="",%ZPL="",%OVLCNT=0,%CONT=0,%ZISHNREC=1
  1. U IO F D READNXT(.%XX) Q:$$STATUS&'$L(%XX) D ;U 0 W !,"%ZB="_%ZB,!,"%ZPZB+%ZL="_(%ZPZB+%ZL),!,"%ZPZB="_%ZPZB_" %ZL="_%ZL U IO S %ZISHNREC=$S(%ZB'=(%ZPZB+%ZL):1,1:0) S:%ZISHNREC %ZISHI=%ZISHI+1 S %ZPZB=$ZB,%ZPL=%ZL
  1. .I %ZISHNREC D
  1. ..;U 0 W !,"NEWRECORD" U IO ;XU*8.0*1007;IHS/OIRM/DSD/AEF - 1/21/03 COMMENTED OUT TO PREVENT <NOPEN> ERROR IN RPC BROKER
  1. ..S %ZISHX=%XX
  1. ..S %ZISH2=$NA(@%ZISH1@(%ZISHI))
  1. ..S %ZISH=%ZISH+1
  1. ..F %ZISH=%ZISHX4+1:1:%ZISHL S %ZISH2=$NA(@%ZISH2@(%ZISHS(%ZISH)))
  1. ..S @%ZISH2=$E(%ZISHX,1,255)
  1. ..S %OVLCNT=0,%CONT=0
  1. ..Q:%ZL'>255
  1. ..D LOOP
  1. .E D
  1. ..;U 0 W !,"CONTINUATION RECORD" U IO ;XU*8.0*1007;IHS/OIRM/DSD/AEF - 1/21/03 COMMENTED OUT TO PREVENT <NOPEN> ERROR IN RPC BROKER
  1. ..S %ZL2=$L(%ZISHX),%ZISHX=%ZISHX_$E(%XX,1,255-%ZL2)
  1. ..D SETOVL
  1. ..S %XX=$E(%XX,256-%ZL2,$L(%XX))
  1. ..S %ZISHX=%XX
  1. ..D:%ZISHX]"" SETOVL
  1. ..I $L(%ZISHX)>255 D LOOP
  1. .;U 0 W !,"%ZB="_%ZB,!,"%ZPZB+%ZL="_(%ZPZB+%ZL),!,"%ZPZB="_%ZPZB_" %ZL="_%ZL U IO ;XU*8.0*1007;IHS/OIRM/DSD/AEF - 1/21/03 COMMENTED OUT TO PREVENT <NOPEN> ERROR IN RPC BROKER
  1. .S %ZISHNREC=$S(%ZB'=(%ZPZB+%ZL):1,1:0)
  1. .I %ZISHNREC D
  1. ..S %ZISHI=%ZISHI+1 ;B:%ZISHI=2
  1. .S %ZPZB=$ZB,%ZPL=%ZL
  1. ;I %ZISHX]"",%ZISHNREC D SETOVL
  1. EOF2 C IO K IO(1,IO)
  1. I $G(%ZISHLGR)]"",$D(@%ZISHLGR) ;restore last global reference.
  1. Q 1
  1. LOOP S %CONT=1 F Q:$L(%ZISHX)'>255 D
  1. .S %ZISHX=$E(%ZISHX,256,$L(%ZISHX))
  1. .D SETOVL:$L(%ZISHX)>255
  1. Q
  1. NEXTLUP F Q:%ZA=%ZL D
  1. .D READNXT(.%XX) Q:$$STATUS
  1. .S %ZL2=$L(%ZISHX),%ZISHX=%ZISHX_$E(%XX,1,255-%L2)
  1. .D SETOVL
  1. .S %XX=$E(%XX,256-%L2,$L(%XX))
  1. .I $L(%XX)>255 S %ZISHX=%XX D LOOP
  1. .E S %ZISHX=%XX D SETOVL
  1. Q
  1. READNXT(%XX) ;
  1. U IO R %XX Q:$$STATUS S %ZA=$ZA,%ZB=$ZB,%ZL=$L(%XX)
  1. Q
  1. SETOVL ;
  1. S %OVLCNT=%OVLCNT+1
  1. S @$NA(@%ZISH1@(%ZISHI))@(%ZISHOVL,%OVLCNT)=$E(%ZISHX,1,255)
  1. Q
  1. Q 1
  1. GTF(%ZISHX1,%ZISHX2,%ZISHX3,%ZISHX4) ;Load contents of global to host file.
  1. ;p1=$NAME of global reference
  1. ;p2=incrementing subscript
  1. ;p3=host file directory
  1. ;p4=host file name
  1. ;
  1. N %ZISHLGR,%ZISHY
  1. S %ZISHLGR=$$LGR^%ZOSV ;if possible, save off last global reference
  1. S %ZISHY=$$MGTF(%ZISHX1,%ZISHX2,%ZISHX3,%ZISHX4,"W")
  1. Q %ZISHY
  1. GATF(%ZISHX1,%ZISHX2,%ZISHX3,%ZISHX4) ;Load contents of global to host file.
  1. ;p1=$NAME of global reference
  1. ;p2=incrementing subscript
  1. ;p3=host file directory
  1. ;p4=host file name
  1. N %ZISHLGR,%ZISHY
  1. S %ZISHLGR=$$LGR^%ZOSV ;if possible, save off last global reference
  1. S %ZISY=$$MGTF(%ZISHX1,%ZISHX2,%ZISHX3,%ZISHX4,"A")
  1. I $G(%ZISHLGR)]"",$D(@%ZISHLGR)
  1. Q %ZISHY
  1. ;
  1. MGTF(%ZISHX1,%ZISHX2,%ZISHX3,%ZISHX4,%ZISHX5) ;Load contents of global to host file.
  1. ;p1=$NAME of global reference
  1. ;p2=incrementing subscript
  1. ;p3=host file directory
  1. ;p4=host file name
  1. ;p5=access mode
  1. N %ZISH,%ZISH1,%ZISHI,%ZISHL,%ZISHS,%ZISHIO,%ZISHX,%ZISHY
  1. S %I=$$QS^XLFUTL(%ZISHX1,%ZISHX2)
  1. S %L=$$QL^XLFUTL(%ZISHX1)
  1. S %1=$NA(@%ZISHX1,%ZISHX2-1)
  1. F %ZISH=%ZISHX2+1:1:%ZISHL S %ZISHS(%ZISH)=$$QS^XLFUTL(%ZISHX1,%ZISH)
  1. D OPEN^%ZISH("",%ZISHX3,%ZISHX4,%ZISHX5)
  1. S %ZISHX="EOF3^%ZISH"
  1. F D Q:'($D(@%ZISH2)#2) S %ZISHX=@%ZISH2,%ZISHI=%ZISHI+1 U IO W %ZISHX,!
  1. .S %ZISH2=$NA(@%ZISH1@(%ZISHI))
  1. .F %ZISH=%ZISHX2+1:1:%ZISHL S %ZISH2=$NA(@%ZISH2@(%ZISHS(%ZISH)))
  1. ;C %ZISHIO
  1. D CLOSE^%ZISH("")
  1. Q 1
  1. Q
  1. ;
  1. FROM(ZISH1,ZISH2,ZISH3,ZISH4,ZISH5) ; ----- Get unix file(s) from.
  1. ;
  1. Q $$FROM^ZISHMSMU(ZISH1,ZISH2,ZISH3,ZISH4,ZISH5)
  1. ;
  1. ;
  1. SEND(ZISH1,ZISH2,ZISH3) ;Send unix fl
  1. ;
  1. Q $$SEND^ZISHMSMU(ZISH1,ZISH2)
  1. ;----- BEGIN IHS MODIFICATION - XU*8.0*1007
  1. ;Subroutine SENDTO1 is added to use sendto1 script to send file
  1. SENDTO1(ZISH1,ZISH2) ;Use sendto1 script to send unix file
  1. ;
  1. Q $$SENDTO1^ZISHMSMU(ZISH1,ZISH2)
  1. ;----- END IHS MODIFICATION