%ZISG2 ;SFISC/AC -- Device Handler Prototype
 ;;8.0T3
LOAD ;LOAD TMP ARRAY
 S %=$G(^$E("WINDOW")) I $L(%) S %PARENT("PARENT")=%
 I '$D(XGWIN) D PREP^XG
 D GET^XGCLOAD("ZISG DEVICE W1","ZISGDEV","TMP")
 D GET^XGCLOAD("ZISG DEVICE TRM","ZISGTRM","TMP")
 D GET^XGCLOAD("ZISG DEVICE SPL","ZISGSPL","TMP")
 D GET^XGCLOAD("ZISG DEVICE SDP","ZISGSDP","TMP")
 D GET^XGCLOAD("ZISG DEVICE HFS","ZISGHFS","TMP")
 D GET^XGCLOAD("ZISG DEVICE MT","ZISGMT","TMP")
 S TMP("ZISGDEV","G","QDTIME","TITLE")=""
 Q
B1 ;OLD B1 CODE FROM ZISG ROUTINE
 ;;I '^$W("ZISGDEV","G","PROMPT","VISIBLE") D
 ;;.S ^$W("ZISGDEV","G","PROMPT","VALUE")=^$W("ZISGDEV","G","DEV","VALUE")
 ;;.S ^$W("ZISGDEV","G","PROMPT","VISIBLE")=1
 ;;.;S ^$W("ZISGDEV","G","QFRAME","VISIBLE")=0
 ;;E  D
 ;;.S ^$W("ZISGDEV","G","PROMPT","VISIBLE")=0
 ;;.;S ^$W("ZISGDEV","G","QFRAME","VISIBLE")=1
 ;;.S ITEM=$O(^$W("ZISGDEV","G","PROMPT","VALUE",""))
 ;;.I ITEM S ^$W("ZISGDEV","G","DEV","VALUE")=^$W("ZISGDEV","G","PROMPT","CHOICE",ITEM)
 Q
B2 ;;I '^$W("ZISGTRM","G","SUBTYPE","VISIBLE") D
 ;;.S ^$W("ZISGTRM","G","SUBTYPE","VALUE")=^$W("ZISGTRM","G","SUB","VALUE")
 ;;.;S ^$W("ZISGTRM","G","MARGIN","ACTIVE")=0
 ;;.S ^$W("ZISGTRM","G","SUBTYPE","VISIBLE")=1
 ;;E  D
 ;;.S ^$W("ZISGTRM","G","SUBTYPE","VISIBLE")=0
 ;;.;S ^$W("ZISGTRM","G","MARGIN","ACTIVE")=1
 ;;.S ITEM=$O(^$W("ZISGTRM","G","SUBTYPE","VALUE",""))
 ;;.I ITEM S ^$W("ZISGTRM","G","SUB","VALUE")=^$W("ZISGTRM","G","SUBTYPE","CHOICE",ITEM)
 Q
OK ;Callbak for OK button.
 N REF
 S REF=XGWIN_"("""_@XGEVENT@("WINDOW")_""",""G"")"
 S IOP=$S($G(@REF@("QUEUE","VALUE")):"Q;",1:"")
 I $G(@REF@("QUEUE","VALUE")),$G(@REF@("QTIME","VALUE"))="NOW"!($G(@REF@("QDTIME","TITLE"))="") S ZTDTH=$H
 S XGION=$S($D(@REF@("DEV","VALUE")):@REF@("DEV","VALUE"),1:"")
 I XGION="" D ^XGLMSG("E","You have not selected a device.") Q
 ;ENTER RETRIEVE TYPE INFO HERE:
 S XGDA=""
 I '$D(XGION) D
 .S XGION=$S($D(^$W("ZISGDEV","G","DEV","VALUE")):^$W("ZISGDEV","G","DEV","VALUE"),1:"")
 S:$G(XGION)]"" XGDA=$O(^%ZIS(1,"B",XGION,0))
 S XGIOT=$G(^%ZIS(1,+XGDA,"TYPE"))
 W !,"XGION==>>"_XGION
 W !,"XGIOT==>>"_XGIOT
 ;G @XGIOT
TRM ;W:$D(@REF@("PROMPT","VALUE")) !,@REF@("PROMPT","VALUE"),@REF@("PROMPT","CHOICE",+$O(@REF@("PROMPT","VALUE","")))
 S REF=XGWIN_"(""ZISGTRM"",""G"")"
 W !,"REF==>>"_REF
 ;
 S XGIOST=$S($D(@REF@("SUB","VALUE")):@REF@("SUB","VALUE"),1:"")
 W !,"SUB==>>"_XGIOST
 ;W:$D(^$W("ZISGTRM","G","SUBTYPE","VALUE")) !,^$W("ZISGTRM","G","SUBTYPE","CHOICE",+$O(^$W("ZISGTRM","G","SUBTYPE","VALUE","")))
 ;W:$D(@REF@("SUBTYPE","VALUE")) !,@REF@("SUBTYPE","VALUE"),@REF@("PROMPT","CHOICE",+$O(@REF@("SUBTYPE","VALUE","")))
 ;
 S XGIOM=$S($D(@REF@("MARGINVAL","VALUE")):@REF@("MARGINVAL","VALUE"),1:"")
 W !,XGIOM
 S XGIOSL=$S($D(@REF@("PAGELENGTHVAL","VALUE")):@REF@("PAGELENGTHVAL","VALUE"),1:"")
 W !,XGIOSL
 W !,"ZTDTH==>>"_$G(ZTDTH)
 S IOP=IOP_XGION
 I XGIOT="SPL" S %=0 D  Q:%
 .I '$D(DUZ) D ^XGLMSG("E","Your DUZ is not defined!") S %=1 Q
 .I $S($D(^VA(200,DUZ,"SPL")):$E(^("SPL"),1),1:"N")'["y" D
 ..D ^XGLMSG("E","You aren't an authorized SPOOLER user.") S %=1 Q
 I XGIOT="SPL" S IOP=IOP_";"_XGDOC
 S:XGIOST]"" IOP=IOP_";"_XGIOST
 S:XGIOM]""!(XGIOSL]"") IOP=IOP_";"_XGIOM_";"_XGIOSL
 W !,"IOP==>>"_IOP
 S %ZIS="Q" D ^%ZIS
 G ERRMSG:POP
 ;ESTOP
 D ESTO^XG
 Q
ERRMSG ;Pop-up error message.
 D ^XGLMSG("E","THIS DEVICE IS BUSY")
 Q
QTIME ;
 S X=^$W("ZISGDEV","G","QTIME","VALUE")
 D ASK I Y=-1 D DTHLP Q
 W !,"ZTDTH==>>"_ZTDTH
 N %H
 S %H=ZTDTH D YX^%DTC
 S Y="("_Y_")"
 S ^$W("ZISGDEV","G","QDTIME","TITLE")=Y
 Q
 ;
ASK ;GET--ask for start time
 I $D(ZTQUEUED) D:ZTDTH]""  Q
 . S %DT="FRS",X=ZTDTH D ^%DT S ZTDTH=$$%H^%ZTLOAD2(+Y)
 . Q
 S %DT="RSX"
 I $D(ZTNOGO) D NEXT^XQ92 I X="" D  Q
 .N %
 .S %="Output is never allowed for this option!"
 .D ^XGLMSG("W",%) S ZTDTH="" Q
 I $D(ZTNOGO) S Y=X,%DT="S" D DD^%DT S %DT("B")=Y,%DT="RSX"
 I $D(ZTNOGO),'$D(XQNOGO) D
 .N %
 .S %="Output from this option is restricted during certain times"
 .D ^XGLMSG("W",%)
 D ^%DT I $D(ZTNOGO) D
 .S ZT=Y,X=Y
 .D ^XQ92 S Y=ZT Q:X]""
 .N % S %="That is a restricted time!"
 .D ^XGLMSG("W",%)
 K %DT,%T,X5
 S ZTDTH=$$%H^%ZTLOAD2(+Y) Q
 Q
DTHLP ;Help for Date input
 N I
 F I=1:1 S Y=$T(Z+I) Q:Y=""  S %(I)=$P(Y,";",3,999)
 K ^$EVENT("OK")
 D ^XGLMSG("I",.%)
 W !,^$DI($PD,"FOCUS")
 S ^$DI($PD,"FOCUS")="ZISGDEV,QTIME"
 Q
Z ;
 ;;Examples of Valid Dates:
 ;;  JAN 20 1957 or 20 JAN 57 or 1/20/57 or 012057
 ;;  T   (for TODAY),  T+1 (for TOMORROW),  T+2,  T+7,  etc.
 ;;  T-1 (for YESTERDAY),  T-3W (for 3 WEEKS AGO), etc.
 ;;If the year is omitted, the computer uses the CURRENT YEAR.
 ;;If the date is omitted, the current date is assumed.
 ;;Follow the date with a time, such as JAN 20@10, T@10AM, 10:30, etc.
 ;;You may enter a time, such as NOON, MIDNIGHT or NOW.
 ;;Seconds may be entered as 10:30:30 or 103030AM.
 ;;Time is REQUIRED in this response.
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HZISG2   4968     printed  Sep 23, 2025@19:51:20                                                                                                                                                                                                       Page 2
%ZISG2    ;SFISC/AC -- Device Handler Prototype
 +1       ;;8.0T3
LOAD      ;LOAD TMP ARRAY
 +1        SET %=$GET(^$EXTRACT("WINDOW"))
           IF $LENGTH(%)
               SET %PARENT("PARENT")=%
 +2        IF '$DATA(XGWIN)
               DO PREP^XG
 +3        DO GET^XGCLOAD("ZISG DEVICE W1","ZISGDEV","TMP")
 +4        DO GET^XGCLOAD("ZISG DEVICE TRM","ZISGTRM","TMP")
 +5        DO GET^XGCLOAD("ZISG DEVICE SPL","ZISGSPL","TMP")
 +6        DO GET^XGCLOAD("ZISG DEVICE SDP","ZISGSDP","TMP")
 +7        DO GET^XGCLOAD("ZISG DEVICE HFS","ZISGHFS","TMP")
 +8        DO GET^XGCLOAD("ZISG DEVICE MT","ZISGMT","TMP")
 +9        SET TMP("ZISGDEV","G","QDTIME","TITLE")=""
 +10       QUIT 
B1        ;OLD B1 CODE FROM ZISG ROUTINE
 +1       ;;I '^$W("ZISGDEV","G","PROMPT","VISIBLE") D
 +2       ;;.S ^$W("ZISGDEV","G","PROMPT","VALUE")=^$W("ZISGDEV","G","DEV","VALUE")
 +3       ;;.S ^$W("ZISGDEV","G","PROMPT","VISIBLE")=1
 +4       ;;.;S ^$W("ZISGDEV","G","QFRAME","VISIBLE")=0
 +5       ;;E  D
 +6       ;;.S ^$W("ZISGDEV","G","PROMPT","VISIBLE")=0
 +7       ;;.;S ^$W("ZISGDEV","G","QFRAME","VISIBLE")=1
 +8       ;;.S ITEM=$O(^$W("ZISGDEV","G","PROMPT","VALUE",""))
 +9       ;;.I ITEM S ^$W("ZISGDEV","G","DEV","VALUE")=^$W("ZISGDEV","G","PROMPT","CHOICE",ITEM)
 +10       QUIT 
B2        ;;I '^$W("ZISGTRM","G","SUBTYPE","VISIBLE") D
 +1       ;;.S ^$W("ZISGTRM","G","SUBTYPE","VALUE")=^$W("ZISGTRM","G","SUB","VALUE")
 +2       ;;.;S ^$W("ZISGTRM","G","MARGIN","ACTIVE")=0
 +3       ;;.S ^$W("ZISGTRM","G","SUBTYPE","VISIBLE")=1
 +4       ;;E  D
 +5       ;;.S ^$W("ZISGTRM","G","SUBTYPE","VISIBLE")=0
 +6       ;;.;S ^$W("ZISGTRM","G","MARGIN","ACTIVE")=1
 +7       ;;.S ITEM=$O(^$W("ZISGTRM","G","SUBTYPE","VALUE",""))
 +8       ;;.I ITEM S ^$W("ZISGTRM","G","SUB","VALUE")=^$W("ZISGTRM","G","SUBTYPE","CHOICE",ITEM)
 +9        QUIT 
OK        ;Callbak for OK button.
 +1        NEW REF
 +2        SET REF=XGWIN_"("""_@XGEVENT@("WINDOW")_""",""G"")"
 +3        SET IOP=$SELECT($GET(@REF@("QUEUE","VALUE")):"Q;",1:"")
 +4        IF $GET(@REF@("QUEUE","VALUE"))
               IF $GET(@REF@("QTIME","VALUE"))="NOW"!($GET(@REF@("QDTIME","TITLE"))="")
                   SET ZTDTH=$HOROLOG
 +5        SET XGION=$SELECT($DATA(@REF@("DEV","VALUE")):@REF@("DEV","VALUE"),1:"")
 +6        IF XGION=""
               DO ^XGLMSG("E","You have not selected a device.")
               QUIT 
 +7       ;ENTER RETRIEVE TYPE INFO HERE:
 +8        SET XGDA=""
 +9        IF '$DATA(XGION)
               Begin DoDot:1
 +10 
*** ERROR ***