| 1 | VALM0 ;MJK/ALB - List Manager (cont.);08:19 PM  17 Jan 1993 | 
|---|
| 2 | ;;1;List Manager;;Aug 13, 1993 | 
|---|
| 3 | ; | 
|---|
| 4 | INIT(NAME,PARMS) ; | 
|---|
| 5 | D STACK | 
|---|
| 6 | K VALMBCK,VALMQUIT,VALMHDR | 
|---|
| 7 | S VALM(0)=$G(PARMS) | 
|---|
| 8 | I NAME["^",'$$SETUP^VALM00(.NAME) S VALMQUIT="" G INITQ | 
|---|
| 9 | I NAME'["^",'$$TEMP(.NAME) S VALMQUIT="" G INITQ | 
|---|
| 10 | D TERM:'VALMEVL,CALC | 
|---|
| 11 | INITQ K VALMX,X Q | 
|---|
| 12 | ; | 
|---|
| 13 | TERM ; -- set up term characteristics | 
|---|
| 14 | D HOME^%ZIS | 
|---|
| 15 | S VALMWD=IOM,X=$$IO_";IOBON;IOBOFF;IOSGR0" D ENDR^%ZISS | 
|---|
| 16 | S VALMSGR=$S($G(IOSGR0)]"":IOSGR0,1:$G(IOINORM)) | 
|---|
| 17 | ; -- cursor off/on to avoid bouncing | 
|---|
| 18 | S (VALMCON,VALMCOFF)="" | 
|---|
| 19 | I $E(IOST,1,4)="C-VT" S VALMCOFF=$C(13,27,91)_"?25l"_$C(13),VALMCON=$C(13,27,91)_"?25h"_$C(13) | 
|---|
| 20 | S X="XQORM6" X ^%ZOSF("TEST") D:$T INIT^XQORM6 | 
|---|
| 21 | S VALMIOXY=^%ZOSF("XY") | 
|---|
| 22 | Q | 
|---|
| 23 | ; | 
|---|
| 24 | IO() ; -- what device params | 
|---|
| 25 | Q "IORVON;IORVOFF;IOIL;IOSTBM;IOSC;IORC;IOEDEOP;IOINHI;IOINORM;IOUON;IOUOFF" | 
|---|
| 26 | ; | 
|---|
| 27 | STACK ; -- stack vars | 
|---|
| 28 | I $D(VALMEVL) D | 
|---|
| 29 | .K ^TMP("VALM STACK",$J,VALMEVL) | 
|---|
| 30 | .; -- stack'em | 
|---|
| 31 | .I $O(^TMP("VALM STACK",$J,VALMEVL,"VALM",""))="" S X="" F  S X=$O(VALM(X)) Q:X=""  S ^(X)=VALM(X) | 
|---|
| 32 | .I $O(^TMP("VALM STACK",$J,VALMEVL,"OTHER VARS",""))="" F X="VALMMENU","VALMCAP","VALMAR","VALMCNT","VALMBG","VALMLST","VALMCC","VALMLFT" S ^(X)=$G(@X) | 
|---|
| 33 | .K VALMBG,VALM,VALMLFT | 
|---|
| 34 | ; | 
|---|
| 35 | S VALMEVL=$S($D(VALMEVL):VALMEVL+1,1:0) | 
|---|
| 36 | I 'VALMEVL D | 
|---|
| 37 | .F X="VALM DATA","VALM VIDEO","VALM VIDEO SAVE","VALMAR" K ^TMP(X,$J) | 
|---|
| 38 | .K VALMBG,VALM,VALMLFT | 
|---|
| 39 | STACKQ Q | 
|---|
| 40 | ; | 
|---|
| 41 | POP ; -- clean up and unstack vars | 
|---|
| 42 | K VALMLFT,VALMMENU,VALMCAP,VALMHDR,VALMPGE,VALMUP,VALMDN,VALMDDF,VALMCC,VALMAR,VALMCNT,VALM,VALMBG,VALMLST,LN | 
|---|
| 43 | K ^TMP("VALM DATA",$J,VALMEVL) D KILL^VALM10() | 
|---|
| 44 | ; | 
|---|
| 45 | ; -- final clean up | 
|---|
| 46 | I 'VALMEVL D  G POPQ | 
|---|
| 47 | .D CLEAR^VALM1 | 
|---|
| 48 | .S X=VALMWD X ^%ZOSF("RM") | 
|---|
| 49 | .S Y=$$IO F I=1:1 S X=$P(Y,";",I) Q:X=""  K @X | 
|---|
| 50 | .K IOBON,IOBOFF,IOSGR0,VALMSGR | 
|---|
| 51 | .K Y,X,I,VALMEVL,VALMWD,VALMFIND,VALMIOXY,VALMKEY,VALMCON,VALMCOFF,VALMQUIT | 
|---|
| 52 | .S X="XQORM6" X ^%ZOSF("TEST") D:$T EXIT^XQORM6 | 
|---|
| 53 | ; | 
|---|
| 54 | ; -- unstack'em | 
|---|
| 55 | S VALMEVL=$S(VALMEVL:VALMEVL-1,1:0) | 
|---|
| 56 | I $O(^TMP("VALM STACK",$J,VALMEVL,"VALM",""))]"" S X="" F  S X=$O(^(X)) Q:X=""  S VALM(X)=^(X) | 
|---|
| 57 | I $O(^TMP("VALM STACK",$J,VALMEVL,"OTHER VARS",""))]"" S X="" F  S X=$O(^(X)) Q:X=""  S @X=^(X) | 
|---|
| 58 | K ^TMP("VALM STACK",$J,VALMEVL) | 
|---|
| 59 | D COL^VALM | 
|---|
| 60 | I $G(^TMP("VALM DATA",$J,VALMEVL,"HIDDEN"))'=$P($G(VALMKEY),U,2) D KEYS^VALM00($G(^("HIDDEN")),1) | 
|---|
| 61 | S VALMBCK="R",(VALMUP,VALMDN)="" | 
|---|
| 62 | POPQ Q | 
|---|
| 63 | ; | 
|---|
| 64 | TEMP(NAME) ; -- use list template | 
|---|
| 65 | N VALM0,VALM1,NODE | 
|---|
| 66 | S VALM=+$O(^SD(409.61,"B",NAME,0)),VALM0=$G(^SD(409.61,VALM,0)),VALM1=$G(^(1)) | 
|---|
| 67 | G:VALM0="" TEMPQ | 
|---|
| 68 | ; | 
|---|
| 69 | F NODE="ARRAY","HDR","EXP","HLP","INIT","FNL" S VALM(NODE)=$G(^SD(409.61,VALM,NODE)) | 
|---|
| 70 | S VALM("IFN")=VALM D COL^VALM | 
|---|
| 71 | S VALM("TYPE")=$P(VALM0,U,2) | 
|---|
| 72 | S VALM("TM")=$P(VALM0,U,5) | 
|---|
| 73 | S VALM("BM")=$P(VALM0,U,6) | 
|---|
| 74 | S VALM("FIXED")=$S($G(^SD(409.61,VALM("IFN"),"COL",+$O(^SD(409.61,VALM("IFN"),"COL","AIDENT",1,0)),0))]"":$P(^(0),U,2)+$P(^(0),U,3),1:0) | 
|---|
| 75 | S VALM("RM")=$S($P(VALM0,U,4):$P(VALM0,U,4),1:80) | 
|---|
| 76 | S VALMCC=+$P(VALM0,U,8) | 
|---|
| 77 | S VALM("ENTITY")=$P(VALM0,U,9) | 
|---|
| 78 | S VALM("PROTOCOL")=$P(VALM0,U,10) | 
|---|
| 79 | S VALM("PRT")=$P(VALM1,U) | 
|---|
| 80 | S VALM("TITLE")=$S($P(VALM0,U,11)]"":$P(VALM0,U,11),1:$P(VALM0,U)) | 
|---|
| 81 | S VALM("MAX")=$S($P(VALM0,U,12):$P(VALM0,U,12),1:1) | 
|---|
| 82 | S VALM("DAYS")=$S($P(VALM0,U,13):$P(VALM0,U,13),1:30) | 
|---|
| 83 | S VALM("DEFS")=$S($P(VALM0,U,14)=0:0,1:1) | 
|---|
| 84 | S VALM("HIDDEN")=$P(VALM1,U,2) | 
|---|
| 85 | I VALM("HIDDEN")="",VALM("TYPE")=2 S VALM("HIDDEN")="VALM HIDDEN ACTIONS" | 
|---|
| 86 | TEMPQ Q VALM0]"" | 
|---|
| 87 | ; | 
|---|
| 88 | CALC ; -- calculate derived parmeters | 
|---|
| 89 | N NODE,X,I,X,Y | 
|---|
| 90 | F NODE="HIDDEN","DAYS","EXP","HLP","INIT","FNL" I $G(VALM(NODE))]"" S ^TMP("VALM DATA",$J,VALMEVL,NODE)=VALM(NODE) K VALM(NODE) | 
|---|
| 91 | S VALMAR=$E(VALM("ARRAY"),2,50) K VALM("ARRAY") | 
|---|
| 92 | S:VALMAR="" VALMAR="^TMP(""VALMAR"",$J,VALMEVL)" | 
|---|
| 93 | S VALM("LINES")=(VALM("BM")-VALM("TM"))+1 | 
|---|
| 94 | S:VALM("TM")<3 VALM("TITLE")=" "_VALM("TITLE") | 
|---|
| 95 | S:VALM("TYPE")=2 VALM("DEFS")=1 | 
|---|
| 96 | ; -- set up protocol | 
|---|
| 97 | S X="VALM DISPLAY" ; default protocol | 
|---|
| 98 | I VALM("TYPE")=1,VALM("PROTOCOL")]"" S X=VALM("PROTOCOL") | 
|---|
| 99 | I VALM("TYPE")=2,$D(^TMP("VALM DATA",$J,VALMEVL,"EXP")) S X=X_" W/EXPAND" | 
|---|
| 100 | S VALM("PROTOCOL")=+$O(^ORD(101,"B",X,0))_";ORD(101," | 
|---|
| 101 | ; | 
|---|
| 102 | S (VALMUP,VALMDN)="" | 
|---|
| 103 | I VALMCC S Y=$$IO F I=1:1 S X=$P(Y,";",I) Q:X=""  I $G(@X)="" S VALMCC=0 Q | 
|---|
| 104 | S VALMCAP=$$CAPTION^VALM D ATR^VALM00 | 
|---|
| 105 | I $G(^TMP("VALM DATA",$J,VALMEVL,"HIDDEN"))'=$P($G(VALMKEY),U,2) D KEYS^VALM00($G(^("HIDDEN")),1) | 
|---|
| 106 | S:$G(^DISV($S($D(DUZ)#2:DUZ,1:0),"VALMMENU",VALM("PROTOCOL")))="" ^(VALM("PROTOCOL"))=1 S VALMMENU=^(VALM("PROTOCOL")) | 
|---|
| 107 | Q | 
|---|
| 108 | ; | 
|---|