| 1 | DDGLIBH ;SFISC/MKO-SCREEN EDITOR HELP ;08:00 AM  23 Feb 1995 | 
|---|
| 2 | ;;22.0;VA FileMan;;Mar 30, 1999 | 
|---|
| 3 | ;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | ; | 
|---|
| 5 | HLP(DDGLHN1,DDGLHN2,DDGLSUB,DDGLPLN) ; | 
|---|
| 6 | ;DDGLHN1  = Entry number in Dialog file of first help screen | 
|---|
| 7 | ;DDGLHN2  = Entry number of last help screen | 
|---|
| 8 | ;DDGLSUB  = Subscript in ^TMP to copy help to | 
|---|
| 9 | ;DDGLPLN  = $Y to print prompt | 
|---|
| 10 | ; | 
|---|
| 11 | N DX,DY,DDGLI,DDGLJ,DDGLSC,DDGLTX,DDGLX,DIHELP,DDGL0 | 
|---|
| 12 | S DDGL0=$C(31) | 
|---|
| 13 | D:'$D(DDGLH) GETKEY | 
|---|
| 14 | I $D(IOTM)[0 N IOTM S IOTM=1 | 
|---|
| 15 | I $D(IOBM)[0 N IOBM S IOBM=IOSL | 
|---|
| 16 | I '$G(DDGLPLN) S DDGLPLN=IOBM-1 | 
|---|
| 17 | S DDGLSC=DDGLHN1 | 
|---|
| 18 | ; | 
|---|
| 19 | D DISP(DDGLHN1) | 
|---|
| 20 | ; | 
|---|
| 21 | F  S DDGLX=$$READ D @DDGLX Q:DDGLX=U | 
|---|
| 22 | Q | 
|---|
| 23 | ; | 
|---|
| 24 | UP I DDGLSC>DDGLHN1 S DDGLSC=DDGLSC-1 D DISP(DDGLSC) | 
|---|
| 25 | Q | 
|---|
| 26 | ; | 
|---|
| 27 | DN I DDGLSC<DDGLHN2 S DDGLSC=DDGLSC+1 D DISP(DDGLSC) | 
|---|
| 28 | Q | 
|---|
| 29 | ; | 
|---|
| 30 | TO W $C(7) | 
|---|
| 31 | QT S DDGLX=U | 
|---|
| 32 | Q | 
|---|
| 33 | ; | 
|---|
| 34 | PT ;Prompt for device and print | 
|---|
| 35 | ;Clear screen | 
|---|
| 36 | N POP | 
|---|
| 37 | N %,%A,%B,%B1,%B2,%B3,%BA,%C,%E,%G,%H,%I,%J,%K,%M,%N | 
|---|
| 38 | N %P,%S,%T,%W,%X,%Y | 
|---|
| 39 | N %A0,%D1,%D2,%DT,%J1,%W0 | 
|---|
| 40 | ; | 
|---|
| 41 | S DY=IOTM-1,DX=0 X IOXY | 
|---|
| 42 | W $P(DDGLVID,DDGLDEL)_"PRINT THE HELP SCREENS"_$P(DDGLVID,DDGLDEL,10)_$P(DDGLCLR,DDGLDEL) | 
|---|
| 43 | F DDGLI=1:1:IOBM-IOTM W $C(13,10)_$P(DDGLCLR,DDGLDEL) | 
|---|
| 44 | S DY=IOTM+1,DX=0 X IOXY | 
|---|
| 45 | ; | 
|---|
| 46 | X DDGLZOSF("EON"),DDGLZOSF("TRMOFF") | 
|---|
| 47 | S X=$G(IOM,80) X ^%ZOSF("RM") | 
|---|
| 48 | W $P(DDGLVID,DDGLDEL,9) | 
|---|
| 49 | ; | 
|---|
| 50 | DEVICE ;Device prompt | 
|---|
| 51 | N IOF,IOSL | 
|---|
| 52 | S IOF="#",IOSL=IOBM-IOTM+1 ;In case help frames are invoked | 
|---|
| 53 | S %ZIS=$S($D(^%ZTSK):"Q",1:""),%ZIS("B")="" | 
|---|
| 54 | D ^%ZIS K %ZIS | 
|---|
| 55 | ; | 
|---|
| 56 | I POP D | 
|---|
| 57 | . W !!,"Report canceled!" | 
|---|
| 58 | . H 2 | 
|---|
| 59 | ; | 
|---|
| 60 | ;Queue report | 
|---|
| 61 | E  I $D(IO("Q")),$D(^%ZTSK) D | 
|---|
| 62 | . S ZTRTN="PRINT^DDGLIBH" | 
|---|
| 63 | . S ZTDESC="Help screen printout." | 
|---|
| 64 | . N I F I="DDGLHN1","DDGLHN2" S ZTSAVE(I)="" | 
|---|
| 65 | . D ^%ZTLOAD | 
|---|
| 66 | . I $D(ZTSK)#2 W !,"Report queued!",!,"Task number: "_ZTSK,! | 
|---|
| 67 | . E  W !,"Report canceled!",! | 
|---|
| 68 | . K ZTSK | 
|---|
| 69 | . S IOP="HOME" D ^%ZIS | 
|---|
| 70 | ; | 
|---|
| 71 | E  I $E(IOST,1,2)="C-" D  G DEVICE | 
|---|
| 72 | . W !,$C(7)_"You cannot print the help screens on a CRT.",! | 
|---|
| 73 | ; | 
|---|
| 74 | ;Non-queued report | 
|---|
| 75 | E  D | 
|---|
| 76 | . W !,"Printing ..." | 
|---|
| 77 | . U IO | 
|---|
| 78 | . D PRINT | 
|---|
| 79 | . X $G(^%ZIS("C")) | 
|---|
| 80 | ; | 
|---|
| 81 | ;Repaint help screen | 
|---|
| 82 | X DDGLZOSF("EOFF"),DDGLZOSF("TRMON") | 
|---|
| 83 | S X=0 X ^%ZOSF("RM") | 
|---|
| 84 | W $P(DDGLVID,DDGLDEL,8) | 
|---|
| 85 | D DISP(DDGLSC) | 
|---|
| 86 | Q | 
|---|
| 87 | ; | 
|---|
| 88 | PRINT ; | 
|---|
| 89 | N DDGLJ,DDGLL,DDGLP | 
|---|
| 90 | F DDGLI=DDGLHN1:1:DDGLHN2 D | 
|---|
| 91 | . I DDGLI'=DDGLHN1 D | 
|---|
| 92 | .. I $Y+$O(^DI(.84,DDGLI,2," "),-1)+2'<IOSL W @IOF | 
|---|
| 93 | .. E  W !! | 
|---|
| 94 | . S DDGLJ=0 | 
|---|
| 95 | . F  S DDGLJ=$O(^DI(.84,DDGLI,2,DDGLJ)) Q:'DDGLJ  D | 
|---|
| 96 | .. S DDGLL=$G(^DI(.84,DDGLI,2,DDGLJ,0)) | 
|---|
| 97 | .. F  Q:DDGLL'["\"  D | 
|---|
| 98 | ... S DDGLP=$F(DDGLL,"\") Q:$E(DDGLL,DDGLP)="\" | 
|---|
| 99 | ... S $E(DDGLL,DDGLP-1,DDGLP)="" | 
|---|
| 100 | .. W !,DDGLL | 
|---|
| 101 | ; | 
|---|
| 102 | S:$D(ZTQUEUED) ZTREQ="@" | 
|---|
| 103 | Q | 
|---|
| 104 | ; | 
|---|
| 105 | DISP(DDGLHN) ;Print help screen DDGLHN | 
|---|
| 106 | N DDGLHARR | 
|---|
| 107 | S DDGLHARR=$NA(^TMP(DDGLSUB,$J,DDGLHN)) | 
|---|
| 108 | D:'$D(@DDGLHARR) BLD^DIALOG(DDGLHN,"","",DDGLHARR) | 
|---|
| 109 | ; | 
|---|
| 110 | S DY=IOTM-1,DX=0 X IOXY | 
|---|
| 111 | F DDGLI=1:1 Q:'$D(@DDGLHARR@(DDGLI))  S DDGLTX=^(DDGLI) D | 
|---|
| 112 | . I DDGLTX["\B" F  S DDGLJ=$F(DDGLTX,"\B") Q:'DDGLJ  D | 
|---|
| 113 | .. S $E(DDGLTX,DDGLJ-2,DDGLJ-1)=$P(DDGLVID,DDGLDEL) | 
|---|
| 114 | . I DDGLTX["\n" F  S DDGLJ=$F(DDGLTX,"\n") Q:'DDGLJ  D | 
|---|
| 115 | .. S $E(DDGLTX,DDGLJ-2,DDGLJ-1)=$P(DDGLVID,DDGLDEL,10) | 
|---|
| 116 | . W $S(DDGLI>1:$C(13,10),1:"")_DDGLTX_$P(DDGLCLR,DDGLDEL) | 
|---|
| 117 | ; | 
|---|
| 118 | F DDGLI=DDGLI:1:IOBM-IOTM+1 W $C(13,10)_$P(DDGLCLR,DDGLDEL) | 
|---|
| 119 | Q | 
|---|
| 120 | ; | 
|---|
| 121 | READ() ; | 
|---|
| 122 | S DY=DDGLPLN,DX=0 X IOXY | 
|---|
| 123 | W $P(DDGLCLR,DDGLDEL)_"Press " | 
|---|
| 124 | W:DDGLSC>DDGLHN1 $P(DDGLVID,DDGLDEL)_"<Up>"_$P(DDGLVID,DDGLDEL,10)_" for previous page, " | 
|---|
| 125 | W:DDGLSC<DDGLHN2 $P(DDGLVID,DDGLDEL)_"<Down>"_$P(DDGLVID,DDGLDEL,10)_" for next page, " | 
|---|
| 126 | W $P(DDGLVID,DDGLDEL)_"P"_$P(DDGLVID,DDGLDEL,10)_" to print, " | 
|---|
| 127 | W $P(DDGLVID,DDGLDEL)_"^"_$P(DDGLVID,DDGLDEL,10)_" to exit: " | 
|---|
| 128 | D GETCH(DTIME,.DDGLX) | 
|---|
| 129 | S DY=DDGLPLN,DX=0 X IOXY W $P(DDGLCLR,DDGLDEL) | 
|---|
| 130 | Q DDGLX | 
|---|
| 131 | ; | 
|---|
| 132 | GETCH(DTIME,Y) ;Out: Y = Mnemonic | 
|---|
| 133 | F  D  Q:Y'=-1 | 
|---|
| 134 | . R *Y:DTIME | 
|---|
| 135 | . I Y<0 S Y="TO" Q | 
|---|
| 136 | . D MNE(.Y) | 
|---|
| 137 | Q | 
|---|
| 138 | ; | 
|---|
| 139 | MNE(Y) ;Out: Y = Mnemonic, or -1 if invalid | 
|---|
| 140 | N S,F | 
|---|
| 141 | S S="",F=0 | 
|---|
| 142 | F  D MNELOOP Q:F | 
|---|
| 143 | Q | 
|---|
| 144 | ; | 
|---|
| 145 | MNELOOP ;Read more | 
|---|
| 146 | S S=S_$C(Y) | 
|---|
| 147 | I DDGLH("IN")'[(DDGL0_S) D  I Y=-1 D FLUSH Q | 
|---|
| 148 | . I $C(Y)'?1L S Y=-1 Q | 
|---|
| 149 | . S S=$E(S,1,$L(S)-1)_$C(Y-32) | 
|---|
| 150 | . S:DDGLH("IN")'[(DDGL0_S_DDGL0) Y=-1 | 
|---|
| 151 | ; | 
|---|
| 152 | I DDGLH("IN")[(DDGL0_S_DDGL0),S'=$C(27) D  Q | 
|---|
| 153 | . S Y=$P(DDGLH("OUT"),DDGL0,$L($P(DDGLH("IN"),DDGL0_S_DDGL0),DDGL0)),F=1 | 
|---|
| 154 | ; | 
|---|
| 155 | R *Y:5 D:Y=-1 FLUSH | 
|---|
| 156 | Q | 
|---|
| 157 | ; | 
|---|
| 158 | FLUSH ; | 
|---|
| 159 | N DDGLZ | 
|---|
| 160 | S F=1 W $C(7) F  R *DDGLZ:0 E  Q | 
|---|
| 161 | Q | 
|---|
| 162 | ; | 
|---|
| 163 | GETKEY ;Get key sequences and defaults | 
|---|
| 164 | N AU,AD,F1,PREVSC,NEXTSC | 
|---|
| 165 | N I,K,N,T | 
|---|
| 166 | S AU=$P(DDGLKEY,U,2) | 
|---|
| 167 | S AD=$P(DDGLKEY,U,3) | 
|---|
| 168 | S F1=$P(DDGLKEY,U,6) | 
|---|
| 169 | S PREVSC=$P(DDGLKEY,U,14) | 
|---|
| 170 | S NEXTSC=$P(DDGLKEY,U,15) | 
|---|
| 171 | ; | 
|---|
| 172 | K DDGLH | 
|---|
| 173 | S DDGLH("IN")="",DDGLH("OUT")="" | 
|---|
| 174 | F I=1:1 S T=$P($T(MAP+I),";;",2,999) Q:T=""  D | 
|---|
| 175 | . S @("K="_$P(T,";",2)) | 
|---|
| 176 | . I DDGLH("IN")'[(DDGL0_K),K]"" D | 
|---|
| 177 | .. S DDGLH("IN")=DDGLH("IN")_DDGL0_K | 
|---|
| 178 | .. S DDGLH("OUT")=DDGLH("OUT")_$P(T,";")_DDGL0 | 
|---|
| 179 | S DDGLH("IN")=DDGLH("IN")_DDGL0 | 
|---|
| 180 | S DDGLH("OUT")=$E(DDGLH("OUT"),1,$L(DDGLH("OUT"))-1) | 
|---|
| 181 | Q | 
|---|
| 182 | ; | 
|---|
| 183 | MAP ;Keys | 
|---|
| 184 | ;;DN;$C(13) | 
|---|
| 185 | ;;DN;AD | 
|---|
| 186 | ;;DN;F1_AD | 
|---|
| 187 | ;;DN;NEXTSC | 
|---|
| 188 | ;;UP;AU | 
|---|
| 189 | ;;UP;F1_AU | 
|---|
| 190 | ;;UP;PREVSC | 
|---|
| 191 | ;;QT;F1_"E" | 
|---|
| 192 | ;;QT;F1_"Q" | 
|---|
| 193 | ;;QT;"^" | 
|---|
| 194 | ;;PT;"P" | 
|---|