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

ZIS3.m

Go to the documentation of this file.
  1. %ZIS3 ;SFISC/AC,RWF -- DEVICE HANDLER(DEVICE TYPES & PARAMETERS) ;06/09/10 17:47
  1. ;;8.0;KERNEL;**18,36,69,104,391,440,499,546,1018**;JUL 10, 1995;Build 8
  1. ;Per VHA Directive 2004-038, this routine should not be modified
  1. ;Call with a Go from ^%ZIS2
  1. I %ZIS'["T",$G(^%ZIS(1,+%E,"POX"))]"" D XPOX^ZISX(%E) ;Pre-Open
  1. I $D(%ZISQUIT) S POP=1 K %ZISQUIT
  1. S %ZISCHK=1
  1. ;See if need to lock.
  1. K %ZISLOCK
  1. I %ZIS'["T",+$G(^%ZIS(1,+%E,"GBL")) S %ZISLOCK=$NA(^%ZIS("lock",IO))
  1. ;
  1. I 'POP G TRM:(%ZTYPE["TRM"),@(%ZTYPE_"^%ZIS6") ;Jump to next part
  1. ;
  1. Q ;%ZIS6 Returns here
  1. ;See if need to un-lock.
  1. I $D(%ZISUOUT) K %ZISUOUT,%ZISHP,%ZISHPOP Q
  1. I POP S:%ZIS'["T" IO=""
  1. Q ;Return to %ZIS1
  1. ;
  1. VTRM ;Virtual terminal type
  1. TRM ;Terminal type
  1. D MARGN:'POP,SETPAR:'POP ;Terminal type
  1. I 'POP,%ZIS'["T",%ZISB=1,'$D(IOP),IO'=IO(0),'$D(IO("Q")),%ZIS["Q" D AQUE
  1. D W("")
  1. I '$D(IO("Q")),'POP,%ZISB,%ZIS'["T" D O^%ZIS4
  1. G Q
  1. DEVOK N X,Y,X1 ;Not sure this is needed
  1. S X=IO,X1=%ZTYPE
  1. D DEVOK^%ZOSV I Y=-99!(Y=0)!(Y=$J) Q
  1. I Y>0 S POP=1 D:(%ZIS["D") W($C(7)_"[Device Unavailable]") Q
  1. I Y=-1 S IO="",POP=1 D:(%ZIS["D") W($C(7)_"[Device does not Exist or Unavailable]") Q
  1. Q
  1. ;
  1. MARGN ;Get the margin and page length
  1. S %A=$P(%Y,";",1)
  1. I %A?1A.ANP D SUBIEN(.%A,1) I $D(^%ZIS(2,%A,1)) K %Z91 D ST(1) S %Y=$P(%Y,";",2,9),%ZISMY=$P(%ZISMY,";",2,9) G MARGN
  1. I %A>3 S $P(%Z91,"^")=$S(%A>255:255,1:+%A)
  1. I $P(%Y,";",2) S $P(%Z91,"^",3)=+$S($P(%Y,";",2)>65534:65534,1:$P(%Y,";",2)) ;Cache fix for $Y#65535 wrap
  1. ;
  1. ALTP I '$D(IO("P")) Q:%A>3 G ASKMAR:%ZTYPE["TRM" Q
  1. S %X=$F(IO("P"),"M") I %X S %A=+$E(IO("P"),%X,99),$P(%Z91,"^")=$S(%A>255:255,1:%A)
  1. S %X=$F(IO("P"),"L") I %X S $P(%Z91,"^",3)=+$E(IO("P"),%X,99)
  1. Q:%A>3!(%ZTYPE'["TRM")
  1. ASKMAR I %ZIS["M",'$D(IOP),$S(%E=%H:+$P(%Z,"^",3),1:1),$P(%Z,"^",4) W " Right Margin: " W:$P(%Z91,"^")]"" +%Z91,"// "
  1. E Q
  1. ;----- BEGIN IHS MODIFICATION - XU*8.0*1007, RE-ADDED XU*8.0*1018
  1. ;THE LINE BELOW IS COMMENTED OUT AND REPLACED BY A NEW LINE TO ALLOW
  1. ;FOR SLAVED DEVICES WITH A $I OF 0. ORIG MOD BY IHS/ANMC/CLS 12/10/96
  1. ;D SBR^%ZIS1 I '$D(DTOUT)&'$D(DUOUT) S:%X=""&($P(%Z91,"^")]"") %X=+%Z91 G ASKMAR:%X'?1.N S $P(%Z91,"^")=$S(%X>255:255,1:%X) Q
  1. D SBR^%ZIS1 I '$D(DTOUT)&'$D(DUOUT) S:%X=""&($P(%Z91,"^")]"") %X=+%Z91 G ASKMAR:(%X'?1.N)!(%X<1) S $P(%Z91,"^")=$S(%X>255:255,1:%X) Q
  1. ;----- END IHS MODIFICATION
  1. S POP=1 I %ZISB&(%ZTYPE["TRM") D C Q
  1. Q
  1. ;
  1. W(%) ;Write text
  1. Q:$D(IOP)
  1. W !,%
  1. Q
  1. ;
  1. C ;Close open device
  1. I IO'=$G(IO(0)),$D(IO(1,IO)) C IO K IO(1,IO)
  1. Q
  1. ;
  1. SETPAR S:$L(%ZISOPAR)&($E(%ZISOPAR)'="(") %ZISOPAR="("_%ZISOPAR_")"
  1. Q
  1. ;
  1. AQUE ;Ask about Queueing
  1. W ! S %=$S($D(IO("Q")):1,1:2)
  1. I $D(IO("Q")) W !,"Previously, you have selected queueing."
  1. W !,"Do you "_$S($D(IO("Q")):"STILL ",1:"")_"want your output QUEUED"
  1. D YN^%ZIS1 G AQUE:%=0 Q:$D(IO("Q"))
  1. I %=-1 S POP=1,%ZISHPOP=1,%ZISUOUT=1 D C Q
  1. I %=1 S IO("Q")=1 D C Q
  1. Q
  1. ;
  1. ST(%ZISTP) ;
  1. S %ZISIOST(0)=%A,%ZISIOST=$P($G(^%ZIS(2,%A,0)),"^")
  1. S:'$D(%Z91) %Z91=$P($G(^%ZIS(2,%A,1),"132^#^60^$C(8)"),"^",1,4),$P(%Z91,"^",5)=$G(^("XY"))
  1. Q:%ZISTP
  1. STP N %B ;%E is a pointer to the Device file
  1. S %B=$G(^%ZIS(1,%E,91))
  1. S:$P(%B,"^")]"" $P(%Z91,"^")=+%B S:$P(%B,"^",3)]"" $P(%Z91,"^",3)=$P(%B,"^",3) ;S $P(%Z91,"^",5)=$G(^%ZIS(2,%ZISIOST(0),"XY"))
  1. Q
  1. SUBIEN(%1,%) ;Return Subtype ien. %1 is call by Ref.
  1. N %XX,%YY
  1. I $D(^%ZIS(2,"B",%1))>9 S %1=+$O(^%ZIS(2,"B",%1,0)) Q
  1. I '$G(%) S X="" Q
  1. S %XX=%1 D 2^%ZIS5 S %1=+%YY
  1. Q
  1. SUBTYPE(%A) ;Called from %ZISH
  1. N %ZISIOST,%Z91
  1. S:$G(%A)="" %A="P-OTHER"
  1. D SUBIEN(.%A),ST(1)
  1. S IOM=$P(%Z91,U,1),IOF=$P(%Z91,U,2),IOSL=$P(%Z91,U,3),IOST=%ZISIOST,IOST(0)=%ZISIOST(0),IOBS="$C(8)"
  1. S:IOST="" IOST="P-OTHER",IOST(0)=0
  1. Q