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

ZISHPW.m

Go to the documentation of this file.
  1. %ZISH ;IHS\PR,SFISC/AC - Host File Control for MSM (PW);09/23/96 11:22 [ 04/02/2003 8:29 AM ]
  1. ;;8.0;KERNEL;**1004,1005,1007**;APR 1, 2003
  1. ;;8.0;KERNEL;**24,36**;JUL 10, 1995
  1. ;THIS ROUTINE CONTAINS IHS MODIFICATIONS BY IHS/ADC/GTH 2/19/97; IHS/ANMC/LJF 2/19/97
  1. ;THIS IS ROUTINE ZISHPW
  1. ;
  1. OPEN(X1,X2,X3,X4,X5) ;SR. Open Host File
  1. I $$IHS^ZISHMSMU Q $$OPEN^ZISHMSMU(X1,X2,X3) ; IHS/ADC/GTH 2/19/97
  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. ;X5=Max record size for a new file
  1. N %,%1,%2,%I,%T,%ZA,%ZISHIO
  1. S %I=$I,%T=0,POP=0 M %ZISHIO=IO
  1. F %=51:1:54 O %::0 I $T S %T=% Q
  1. I '%T U:%I]"" %I S POP=1 Q
  1. S %1=$$MODE^%ZISF(X2_X3,X4)
  1. S %2=%_":"_%1
  1. U @%2 S %ZA=$ZA
  1. I %ZA=-1 U:%I]"" %I C % S POP=1 Q
  1. S IO=%,IO(1,IO)=""
  1. I $G(X1)]"" D SAVDEV^%ZISUTL(X1)
  1. Q
  1. ;
  1. CLOSE(X) ;SR. Close HFS device not opened by %ZIS.
  1. ;X=HANDLE NAME
  1. ;IO=Device
  1. N %
  1. I $G(IO)]"" C IO K IO(1,IO)
  1. I $G(X)]"" D RMDEV^%ZISUTL(X)
  1. D HOME^%ZIS
  1. Q
  1. ;
  1. OPENERR ;
  1. Q 0
  1. ;
  1. DEL(%ZISHX1,%ZISHX2) ;SR. Del fl(s)
  1. I $$IHS^ZISHMSMU Q $$DEL^ZISHMSMU(%ZISHX1,%ZISHX2) ; IHS/ADC/GTH 2/19/97
  1. ;S Y=$$DEL^ZOSHMSM("\dir\","fl")
  1. ; ,.array)
  1. ;Changed X2 to a $NAME string
  1. N %,%ZISH
  1. N ZOSHDA,ZOSHF,ZOSHX,ZOSHQ,ZOSHDF,ZOSHC
  1. S %ZISHX1=$TR(%ZISHX1,"/","\")
  1. ;Get fls to act on
  1. ;No '*' allowed
  1. S %ZISH="" F S %ZISH=$O(@%ZISHX2@(%ZISH)) Q:'%ZISH I %ZISH["*" S ZOSHQ=1 Q
  1. I $D(ZOSHQ) Q 0
  1. S %ZISH="" F S %ZISH=$O(@%ZISHX2@(%ZISH)) Q:%ZISH="" D
  1. .;S ZOSHC="rm "_X1_%
  1. .S ZOSHC=$ZOS(2,%ZISHX1_%ZISH)
  1. .;D JW
  1. Q 1
  1. ;
  1. LIST(%ZISHX1,%ZISHX2,%ZISHX3) ;SR. Create a local array holding fl names
  1. I $$IHS^ZISHMSMU Q $$LIST^ZISHMSMU(%ZISHX1,%ZISHX2,.%ZISHX3) ; IHS/ADC/GTH 2/19/97
  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,%ZISHN,%ZISHX,%ZISHY
  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. .F %ZISHN=1:1 D Q:$P(%ZISHY,"^")=""!(%ZISHY<0) S @%ZISHX3@($P(%ZISHY,"^"))="" ;S @%ZISHX3@(%ZISHN)=$P(%ZISHY,"^")
  1. ..I %ZISHN>1 S %ZISHY=$ZOS(13,%ZISHY)
  1. ..E S %ZISHY=$ZOS(12,%ZISHX,0)
  1. Q $O(@%ZISHX3@(""))]""
  1. ;
  1. MV(X1,X2,Y1,Y2) ;SR. Rename a fl
  1. I $$IHS^ZISHMSMU Q $$MV^ZISHMSMU(X1,X2,Y1,Y2) ; IHS/ADC/GTH 2/19/97
  1. ;S Y=$$MV^ZOSHDOS("\dir\","fl","\dir\","fl")
  1. ;
  1. N %ZB,%ZC,%ZISHDV1,%ZISHDV2,%ZISHFN1,%ZISHFN2,%ZISHPCT,%ZISHSIZ,%ZISHX,X,Y
  1. S X=X1_X2
  1. S Y=Y1_Y2
  1. I X1=Y1 Q $ZOS(3,X,Y)'<0
  1. ;
  1. S %ZISHDV1=51,%ZISHDV2=52,%ZISHFN1=X,%ZISHFN2=Y
  1. O %ZISHDV1:(%ZISHFN1)
  1. O %ZISHDV2:(%ZISHFN2:"W")
  1. U %ZISHDV1:(::0:2) S %ZISHSIZ=$ZB U %ZISHDV1:(::0:0) S (%ZISHPCT,%ZB,%ZC)=0
  1. D SLOWCOPY S %ZISHX(X2)="" S Y=$$DEL^%ZISH(X1,$NA(%ZISHX))
  1. Q 1
  1. ;
  1. SLOWCOPY ; Copy without view buffer
  1. N X,Y
  1. O %ZISHDV1:(%ZISHFN1:"R"::::""),%ZISHDV2:(%ZISHFN2:"W"::::"")
  1. FOR DO Q:%ZC!(%ZB=%ZISHSIZ)
  1. . U %ZISHDV1 R X#1024 Q:$L(X)=0
  1. . U %ZISHDV2 W X S %ZB=$ZB,%ZC=$ZC Q:%ZC
  1. . I %ZB=%ZISHSIZ C %ZISHDV2 S %ZC=($ZA=-1)
  1. . S X=%ZB/%ZISHSIZ*100\1 ; %done
  1. . Q:X=%ZISHPCT S %ZISHPCT=X
  1. . Q ;U 0 W $J(%ZISHPCT,3),*13
  1. Q
  1. ;
  1. PWD(X) ;SR. Print working directory
  1. Q $$PWD^ZISHMSMU(.X) ; IHS/ANMC/LFJ 2/19/97
  1. I $ZV["UNIX" Q $$PWD^ZISHMSMU() ; IHS/ADC/GTH 2/19/97
  1. N Y
  1. S Y=$ZOS(11,$ZOS(14))
  1. Q:Y<0 ""
  1. S Y=Y_$S($E(Y,$L(Y))'="\":"\",1:"")
  1. Q $ZOS(14)_":"_Y
  1. ;
  1. JW ;Call dos $ZOS
  1. S ZOSHX=$ZOS(ZOSHNUM,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. FL(X) ;Fl len
  1. N ZOSHP1,ZOSHP2
  1. S ZOSHP1=$P(X,"."),ZOSHP2=$P(X,".",2)
  1. I $L(ZOSHP1)>8 S X=4 Q
  1. I $L(ZOSHP2)>3 S X=4 Q
  1. Q
  1. READNXT(REC) ;Read any sized record into array.
  1. N T,I,X,LB
  1. U IO S LB=$ZB R REC#255 S %ZA=$ZA,%ZB=$ZB,%ZC=$ZC,%ZL=%ZA Q:$$EOF(%ZC)
  1. Q:%ZA<255
  1. F I=1:1 S LB=LB+%ZA Q:LB<%ZB R X#255 S %ZA=$ZA,%ZB=$ZB,%ZC=$ZC Q:$$EOF(%ZC)!('$L(X)) S REC(I)=X
  1. Q
  1. STATUS() ;SR. Return EOF status
  1. ;U $I
  1. Q $ZC
  1. ;
  1. Q $$EOF($ZC)
  1. ;
  1. EOF(X) ;Eof flag, pass in $ZC
  1. Q (X=-1)
  1. ;
  1. READREC(X) ;Read record from host file.
  1. N Y
  1. U IO R X S Y=$ZC
  1. U $P
  1. Q Y
  1. MAKEREF(HF,IX,OVF) ;Internal call to rebuild global ref.
  1. ;Return %ZISHF,%ZISHO,%ZISHI,%ZISUB
  1. N I,F,MX
  1. S OVF=$G(OVF,"%ZISHOF")
  1. S %ZISHI=$QS(HF,IX),MX=$QL(HF) ;
  1. S F=$NA(@HF,IX-1) ;Get first part
  1. I IX=1 S %ZISHF=F_"(%ZISHI" ;Build root, IX=1
  1. I IX>1 S %ZISHF=$E(F,1,$L(F)-1)_",%ZISHI" ;Build root
  1. S %ZISHO=%ZISHF_","_OVF_",%OVFCNT)" ;Make overflow
  1. F I=IX+1:1:MX S %ZISHF=%ZISHF_",%ZISUB("_I_")",%ZISUB(I)=$QS(HF,I)
  1. S %ZISHF=%ZISHF_")"
  1. Q
  1. FTG(%ZISHX1,%ZISHX2,%ZISHX3,%ZISHX4,%ZISHX5) ;SR. Unload contents of host file into global
  1. ;p1=hostf file directory
  1. ;p2=host file name
  1. ;p3= $NAME REFERENCE INCLUDING STARTING SUBSCRIPT
  1. ;p4=INCREMENT SUBSCRIPT
  1. ;p5=Overflow subscript, defaults to "OVF"
  1. N %ZA,%ZB,%ZC,%ZL,X,%OVFCNT,%CONT
  1. N I,%ZISH,%ZISH1,%ZISHI,%ZISHL,%ZISHOF,%ZISHOX,%ZISHS,%ZISHX,%ZISHY,POP,%ZISUB
  1. S %ZISHOF=$G(%ZISHX5,"OVF")
  1. D MAKEREF(%ZISHX3,%ZISHX4,"%ZISHOF")
  1. D OPEN^%ZISH(,%ZISHX1,%ZISHX2,"R")
  1. I POP Q 0
  1. S X="ERREOF^%ZISH",@^%ZOSF("TRAP")
  1. U IO F K %XX D READNXT(.%XX) Q:$$EOF(%ZC) D
  1. . S @%ZISHF=%XX
  1. . I $D(%XX)>2 F %OVFCNT=1:1 Q:'$D(%XX(%OVFCNT)) S @%ZISHO=%XX(%OVFCNT)
  1. . S %ZISHI=%ZISHI+1
  1. . Q
  1. D CLOSE() ;Normal exit
  1. Q 1
  1. ;
  1. ERREOF D CLOSE() ;Error close and exit
  1. Q 0
  1. ;
  1. GTF(%ZISHX1,%ZISHX2,%ZISHX3,%ZISHX4) ;SR. Load contents of global to host file.
  1. ;Previously name LOAD
  1. ;p1=$NAME of global reference
  1. ;p2=incrementing subscript
  1. ;p3=host file directory
  1. ;p4=host file name
  1. N %ZISHY,%ZISHOX
  1. S %ZISHY=$$MGTF(%ZISHX1,%ZISHX2,%ZISHX3,%ZISHX4,"W")
  1. Q %ZISHY
  1. ;
  1. GATF(%ZISHX1,%ZISHX2,%ZISHX3,%ZISHX4) ;SR. Append to host file.
  1. ;
  1. ;p1=$NAME of global reference
  1. ;p2=incrementing subscript
  1. ;p3=host file directory
  1. ;p4=host file name
  1. N %ZISHY
  1. S %ZISHY=$$MGTF(%ZISHX1,%ZISHX2,%ZISHX3,%ZISHX4,"A")
  1. Q %ZISHY
  1. MGTF(%ZISHX1,%ZISHX2,%ZISHX3,%ZISHX4,%ZISHX5) ;
  1. ;p1=$NAME of global reference
  1. ;p2=incrementing subscript
  1. ;p3=host file directory
  1. ;p4=host file name
  1. N %ZISH,%ZISH1,%ZISHI,%ZISHL,%ZISHS,%ZISHOX,IO,%ZISHX,Y
  1. D MAKEREF(%ZISHX1,%ZISHX2)
  1. D OPEN^%ZISH(,%ZISHX3,%ZISHX4,%ZISHX5)
  1. I POP Q 0
  1. N X
  1. S X="ERREOF^%ZISH",@^%ZOSF("TRAP")
  1. F Q:'($D(@%ZISHF)#2) S %ZISHX=@%ZISHF,%ZISHI=%ZISHI+1 U IO W %ZISHX,!
  1. D CLOSE()
  1. Q 1
  1. ;