%ZISG3 ;SFISC/AC -- Device Handler Prototype
 ;;8.0T3
B2 ;VADIMS M@WAPI/KWAPI INTERFACE
 I '@XGWIN@("ZISGTRM","G","SUBTYPE","VISIBLE") D
 .S SUB=@XGWIN@("ZISGTRM","G","SUB","VALUE")
 .I SUB]"" D
 ..S ITEM=$$SUBITEM(SUB)
 ..I ITEM]"" D
 ...D S^XG("ZISGTRM","G","SUBTYPE","VALUE",ITEM,"")
 ...D S^XG("ZISGTRM","G","SUBTYPE","TOPSHOW",ITEM)
 .;S ^$W("ZISGTRM","G","MARGIN","ACTIVE")=0
 .D S^XG("ZISGTRM","G","SUBTYPE","VISIBLE",1)
 E  D
 .D S^XG("ZISGTRM","G","SUBTYPE","VISIBLE",0)
 .;S ^$W("ZISGTRM","G","MARGIN","ACTIVE")=1
 .S ITEM=$O(@XGWIN@("ZISGTRM","G","SUBTYPE","VALUE",""))
 .I ITEM D S^XG("ZISGTRM","G","SUB","VALUE",@XGWIN@("ZISGTRM","G","SUBTYPE","CHOICE",ITEM))
 I $D(^$EVENT("ELEMENT")),^$EVENT("ELEMENT")["SUBTYPE" D
 .N SUB
 .S SUB=@XGWIN@("ZISGTRM","G","SUBTYPE","CHOICE",ITEM)
 .D SUBCHG(SUB)
 Q
SUB ; Callback for SUB item
 S SUB=^$W("ZISGTRM","G","SUB","VALUE")
 I SUB]"" D  D SUBCHG(SUB)
 .N %,%1
 .K ^$W("ZISGTRM","G","SUBTYPE","VALUE")
 .F %=1:1 Q:'$D(^$W("ZISGTRM","G","SUBTYPE","CHOICE",%))!(SUB="")  D
 ..S %1=^$W("ZISGTRM","G","SUBTYPE","CHOICE",%)
 ..I %1=SUB S ^$W("ZISGTRM","G","SUBTYPE","VALUE",%)="" S SUB="" Q
 ..I %1]SUB S ^$W("ZISGTRM","G","SUBTYPE","TOPSHOW")=% S SUB="" Q
 Q
SUBITEM(X) ;
 N %,%1,Y S Y=""
 .F %=1:1 Q:'$D(^$W("ZISGTRM","G","SUBTYPE","CHOICE",%))!(X="")  D
 .S %1=^$W("ZISGTRM","G","SUBTYPE","CHOICE",%)
 .I %1=X!(%1]X S Y=% S X="" Q
 Q Y
SUBCHG(X) ;Change in subtype
 ;This sub-routine triggers appropriate values to the
 ;relevant MWAPI fields(MARGIN and PAGE LENGTH).
 W !,"SUBCHG(X) has been called!!!"
 N %,RM,SL Q:$G(X)=""
 S %=$O(^%ZIS(2,"B",X,0)) Q:%'>0
 I '($D(^%ZIS(2,+%,0))#2) Q
 W !,"X==>>"_X
 Q:$P($G(^(0)),"^")'=X
 S RM=$P($G(^(1)),"^"),SL=$P($G(^(1)),"^",3)
 W !,"RM==>>"_RM
 I RM=80!(RM=132!(RM=255)) D
 .W !,"SETTING VALUE INTO ZMARGIN"
 .S ^$W("ZISGTRM","G","ZMARGIN","VALUE")=$S(RM=80:1,RM=132:2,RM=255:3,1:4)
 .W !,"SETTING MARGINVAL TO INACTIVE"
 .S ^$W("ZISGTRM","G","MARGINVAL","ACTIVE")=0
 E  D
 .S ^$W("ZISGTRM","G","ZMARGIN","VALUE")=4
 .S ^$W("ZISGTRM","G","MARGINVAL","ACTIVE")=1
 S ^$W("ZISGTRM","G","MARGINVAL","VALUE")=RM
 I SL=24!(SL=66!(SL=88!(SL=96))) D
 .S ^$W("ZISGTRM","G","ZPAGELENGTH","VALUE")=$S(SL=24:1,SL=66:2,SL=88:3,SL=96:4,1:5)
 .S ^$W("ZISGTRM","G","PAGELENGTHVAL","ACTIVE")=0
 E  D
 .S ^$W("ZISGTRM","G","ZPAGELENGTH","VALUE")=5
 .S ^$W("ZISGTRM","G","PAGELENGTHVAL","ACTIVE")=1
 S ^$W("ZISGTRM","G","PAGELENGTHVAL","VALUE")=SL
 Q
CHGRAD ;CHANGE IN MARGIN
 N REF
 ;S REF="^$W("""_^$EVENT("WINDOW")_""",""G"")"
 ;S REF=@XGWIN_"("""_@XGEVENT@("WINDOW")_""",""G"")"
 S REF=XGWIN_"("""_@XGEVENT@("WINDOW")_""",""G"")"
 ;S GADGET=$P(^$EVENT("ELEMENT"),",",2)
 S GADGET=$P(@XGEVENT@("ELEMENT"),",",2)
 S ITEM=@REF@(GADGET,"VALUE")
 S VALUE=@REF@(GADGET,"CHOICE",ITEM)
 S GADVAL=$E(GADGET,2,$L(GADGET))_"VAL"
 I VALUE="OTHER" D
 .S @REF@(GADVAL,"ACTIVE")=1
 E  D
 .S @REF@(GADVAL,"VALUE")=VALUE
 .S @REF@(GADVAL,"ACTIVE")=0
 ;S ^$W("ZISGTRM","G","MARGINVAL","VALUE")=^$EVENT("CHOICE")
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HZISG3   3061     printed  Sep 23, 2025@19:51:21                                                                                                                                                                                                       Page 2
%ZISG3    ;SFISC/AC -- Device Handler Prototype
 +1       ;;8.0T3
B2        ;VADIMS M@WAPI/KWAPI INTERFACE
 +1        IF '@XGWIN@("ZISGTRM","G","SUBTYPE","VISIBLE")
               Begin DoDot:1
 +2                SET SUB=@XGWIN@("ZISGTRM","G","SUB","VALUE")
 +3                IF SUB]""
                       Begin DoDot:2
 +4                        SET ITEM=$$SUBITEM(SUB)
 +5                        IF ITEM]""
                               Begin DoDot:3
 +6                                DO S^XG("ZISGTRM","G","SUBTYPE","VALUE",ITEM,"")
 +7                                DO S^XG("ZISGTRM","G","SUBTYPE","TOPSHOW",ITEM)
                               End DoDot:3
                       End DoDot:2
 +8       ;S ^$W("ZISGTRM","G","MARGIN","ACTIVE")=0
 +9                DO S^XG("ZISGTRM","G","SUBTYPE","VISIBLE",1)
               End DoDot:1
 +10      IF '$TEST
               Begin DoDot:1
 +11               DO S^XG("ZISGTRM","G","SUBTYPE","VISIBLE",0)
 +12      ;S ^$W("ZISGTRM","G","MARGIN","ACTIVE")=1
 +13               SET ITEM=$ORDER(@XGWIN@("ZISGTRM","G","SUBTYPE","VALUE",""))
 +14               IF ITEM
                       DO S^XG("ZISGTRM","G","SUB","VALUE",@XGWIN@("ZISGTRM","G","SUBTYPE","CHOICE",ITEM))
               End DoDot:1
 +15 
*** ERROR ***
           IF $DATA(^$EVENT("ELEMENT"))