| 1 | VALM1 ;ALB/MJK - Screen Manipulation Utilities ;06/27/2006 | 
|---|
| 2 | ;;1.0;List Manager;**5,6,8**;Aug 13, 1993;Build 1 | 
|---|
| 3 | INSTR(STR,X,Y,LENGTH,ERASE) ; -- insert text | 
|---|
| 4 | ;    STR := string to insert | 
|---|
| 5 | ;      X := X coordinate | 
|---|
| 6 | ;      Y := Y coordinate | 
|---|
| 7 | ; LENGTH := clear # of characters | 
|---|
| 8 | ;  ERASE := erase chars first | 
|---|
| 9 | W IOSC | 
|---|
| 10 | I $G(ERASE) S DY=Y-1,DX=X-1 X IOXY W $J("",LENGTH) | 
|---|
| 11 | S DY=Y-1,DX=X-1 X IOXY W STR | 
|---|
| 12 | W IORC | 
|---|
| 13 | Q | 
|---|
| 14 | FLDUPD(STR,FLD,LINE,CON,COFF) ; -- update entry and field on screen | 
|---|
| 15 | ;    STR := string to insert | 
|---|
| 16 | ;    FLD := col name | 
|---|
| 17 | ;  LINE := entry # in list | 
|---|
| 18 | D INSTR(.STR,+$P(VALMDDF(FLD),U,2),LINE-VALMBG+VALM("TM"),$P(VALMDDF(FLD),U,3),1) | 
|---|
| 19 | Q | 
|---|
| 20 | SETFLD(STR,VAR,FLD) ; -- set field in var | 
|---|
| 21 | ; input: STR := string to insert | 
|---|
| 22 | ;        VAR := destination string | 
|---|
| 23 | ;        FLD := col name | 
|---|
| 24 | Q $$SETSTR(STR,VAR,+$P(VALMDDF(FLD),U,2),+$P(VALMDDF(FLD),U,3)) | 
|---|
| 25 | SETSTR(S,V,X,L) ; -- insert text(S) into variable(V) | 
|---|
| 26 | ;    S := string to insert | 
|---|
| 27 | ;    V := destination string | 
|---|
| 28 | ;    X := insert @ col X | 
|---|
| 29 | ;    L := clear # of chars (length) | 
|---|
| 30 | Q $E(V_$J("",X-1),1,X-1)_$E(S_$J("",L),1,L)_$E(V,X+L,999) | 
|---|
| 31 | FULL ; set full scrolling region | 
|---|
| 32 | I '$D(IOSTBM) D TERM^VALM0 | 
|---|
| 33 | I IOSTBM]"" S IOTM=1,IOBM=IOSL W IOSC W @IOSTBM W IORC | 
|---|
| 34 | S X=VALMWD X ^%ZOSF("RM") | 
|---|
| 35 | Q | 
|---|
| 36 | CLEAR ; -- clear screen | 
|---|
| 37 | D FULL,ERASE W @IOF | 
|---|
| 38 | Q | 
|---|
| 39 | ERASE ; | 
|---|
| 40 | W $G(VALMSGR),$G(IOSGR0) | 
|---|
| 41 | Q | 
|---|
| 42 | FDATE(Y) ; -- return formatted date | 
|---|
| 43 | ;   input:          Y := field name | 
|---|
| 44 | ;  output: [returned] := formatted date only | 
|---|
| 45 | Q $E(Y,4,5)_"/"_$E(Y,6,7)_"/"_$E(Y,2,3) | 
|---|
| 46 | FTIME(Y) ; -- return formatted date/time | 
|---|
| 47 | ;   input:          Y := internal date/time | 
|---|
| 48 | ;  output: [returned] := formatted date and time | 
|---|
| 49 | D DD^%DT | 
|---|
| 50 | Q Y | 
|---|
| 51 | FDTTM(Y) ; -- return formatted date/time | 
|---|
| 52 | ;   input:          Y := internal date/time | 
|---|
| 53 | ;  output: [returned] := formatted date and time | 
|---|
| 54 | N VALMY | 
|---|
| 55 | S VALMY=$E(Y,4,5)_"/"_$E(Y,6,7)_"/"_$E(Y,2,3) | 
|---|
| 56 | D DD^%DT | 
|---|
| 57 | Q VALMY_$S($P(Y,"@",2)]"":"@"_$P(Y,"@",2),1:"") | 
|---|
| 58 | NOW() ; -- return now | 
|---|
| 59 | D NOW^%DTC | 
|---|
| 60 | Q $$FTIME(%) | 
|---|
| 61 | RANGE ; -- change date range | 
|---|
| 62 | G RANGE^VALM11 | 
|---|
| 63 | WAIT ; "Enter RETURN to continue" | 
|---|
| 64 | N DIR,X,Y,DIRUT,DUOUT,DTOUT,DIROUT | 
|---|
| 65 | W ! S DIR(0)="E" S DIR("A")="Enter RETURN to continue" D ^DIR W ! | 
|---|
| 66 | Q | 
|---|
| 67 | GOON() ; "Enter RETURN to continue or '^' to exit" | 
|---|
| 68 | N DIR,X,Y,DIRUT,DUOUT,DTOUT,DIROUT | 
|---|
| 69 | W ! S DIR(0)="E" D ^DIR W ! | 
|---|
| 70 | Q +Y | 
|---|
| 71 | PAUSE ; | 
|---|
| 72 | W ! S DIR(0)="E" D ^DIR K DIR W ! | 
|---|
| 73 | Q | 
|---|
| 74 | PRT ; -- prt screen (PS) | 
|---|
| 75 | N VALMESC | 
|---|
| 76 | S VALMBCK="R" | 
|---|
| 77 | D:VALMCC FULL | 
|---|
| 78 | S %ZIS="Q" D ^%ZIS G PRTQ:POP | 
|---|
| 79 | I $D(IO("Q")) D  G PRTQ | 
|---|
| 80 | . S ZTRTN="PRTS^VALM1",ZTDESC="List Manager: Print Screen" | 
|---|
| 81 | . D SAVE,^%ZTLOAD | 
|---|
| 82 | I IO=IO(0) D CLEAR S X=0 X ^%ZOSF("RM") | 
|---|
| 83 | ; fall through | 
|---|
| 84 | PRTS ; | 
|---|
| 85 | N VALMCC,VALMCAP | 
|---|
| 86 | I $D(ZTQUEUED) S ZTREQ="@" | 
|---|
| 87 | S VALMCC=0,VALMCAP=$$CAPTION^VALM,VALMPG1=1 | 
|---|
| 88 | U IO D HDR^VALM,TBAR^VALM,LIST^VALM,LBAR^VALM,FTR | 
|---|
| 89 | ; fall through | 
|---|
| 90 | PRTQ ; | 
|---|
| 91 | D CHKLONG | 
|---|
| 92 | D:'$D(ZTQUEUED) ^%ZISC | 
|---|
| 93 | D TERM^VALM0 S X=0 X ^%ZOSF("RM") | 
|---|
| 94 | Q | 
|---|
| 95 | SAVE ; -- save to queue | 
|---|
| 96 | F X="VALMIOXY","VALMEVL","VALMLFT","VALMPGE","VALMWD","VALMCNT","VALMBG","VALMDDF(","VALMHDR(","VALM(" S ZTSAVE(X)="" | 
|---|
| 97 | F X="VALMAR",$S($E(VALMAR,$L(VALMAR))=")":$E(VALMAR,1,$L(VALMAR)-1)_",",1:VALMAR_"(") S ZTSAVE(X)="" | 
|---|
| 98 | Q | 
|---|
| 99 | FTR ; -- footer to print | 
|---|
| 100 | S VALMESC="" | 
|---|
| 101 | I $E(IOST,1,2)="C-" S VALMESC='$$GOON | 
|---|
| 102 | Q | 
|---|
| 103 | PRTL ; -- prt list (PL) | 
|---|
| 104 | I $G(VALM("PRT"))]"",$O(^ORD(101,"B",VALM("PRT"),0)) S X=$O(^(0))_";ORD(101," D EN^XQOR G PRTQ | 
|---|
| 105 | N VALMESC | 
|---|
| 106 | S VALMBCK="R" | 
|---|
| 107 | D:VALMCC FULL | 
|---|
| 108 | S %ZIS="Q" D ^%ZIS G PRTQ:POP | 
|---|
| 109 | I $D(IO("Q")) D  G PRTLQ | 
|---|
| 110 | . S ZTRTN="PRTLS^VALM1",ZTDESC="List Manager: Print List" | 
|---|
| 111 | . D SAVE,^%ZTLOAD | 
|---|
| 112 | I IO=IO(0) D CLEAR S X=0 X ^%ZOSF("RM") | 
|---|
| 113 | ; fall through | 
|---|
| 114 | PRTLS ; | 
|---|
| 115 | N VALMPGE,VALMESC,VALMCC,VALMI,VALMLNS,VALMCAP,VALMWD | 
|---|
| 116 | I $D(ZTQUEUED) S ZTREQ="@" | 
|---|
| 117 | S VALMWD=IOM,VALMLNS=VALM("LINES"),VALMPG1=1 | 
|---|
| 118 | S VALM("LINES")=IOSL-(VALM("TM")+3),VALMCC=0,VALMPGE=1,VALMCAP=$$CAPTION^VALM | 
|---|
| 119 | U IO D HDR^VALM,TBAR^VALM | 
|---|
| 120 | F VALMI=1:1:VALMCNT S X=$G(@VALMAR@($$GET^VALM4(VALMI),0)) W !,X I IOSL<($Y+6) D FTR G PRTLQ:VALMESC S VALMPGE=VALMPGE+1 D HDR^VALM,TBAR^VALM | 
|---|
| 121 | D FTR | 
|---|
| 122 | ; fall through | 
|---|
| 123 | PRTLQ ; | 
|---|
| 124 | D CHKLONG | 
|---|
| 125 | D:'$D(ZTQUEUED) ^%ZISC | 
|---|
| 126 | D TERM^VALM0 S X=0 X ^%ZOSF("RM") | 
|---|
| 127 | S:$D(VALMLNS) VALM("LINES")=VALMLNS | 
|---|
| 128 | Q | 
|---|
| 129 | CHKLONG ; | 
|---|
| 130 | Q:'$$TOOLONG | 
|---|
| 131 | I '$D(ZTQUEUED) S VALMSG="Some printed item lines may have been truncated." Q:IO(0)=IO!$D(IO("Q")) | 
|---|
| 132 | Q:$E(IOST,1,2)="C-" | 
|---|
| 133 | I $Y+4>IOSL W @IOF | 
|---|
| 134 | E  W ! | 
|---|
| 135 | W !,">>> Warning: Some list items lines may have been truncated." | 
|---|
| 136 | W !,">>> This list requires ",VALM("RM")," characters/line." | 
|---|
| 137 | W !,">>> This device supports ",IOM," characters/line." | 
|---|
| 138 | Q | 
|---|
| 139 | TOOLONG() ; Is the line length too long for the device? | 
|---|
| 140 | Q:'$D(VALM("RM")) 0 | 
|---|
| 141 | Q:'$D(IOM) 0 | 
|---|
| 142 | Q $S(VALM("RM")>IOM:1,1:0) | 
|---|
| 143 | UPPER(X) ; -- convert to uppercase | 
|---|
| 144 | Q $$UP^XLFSTR(X) | 
|---|
| 145 | LOWER(X) ; | 
|---|
| 146 | N Y,C,Z,I | 
|---|
| 147 | S Y=$E(X)_$TR($E(X,2,999),"ABCDEFGHIJKLMNOPQRSTUVWXYZ@","abcdefghijklmnopqrstuvwxyz ") | 
|---|
| 148 | F C=" ",",","/" S I=0 F  S I=$F(Y,C,I) Q:'I  S Y=$E(Y,1,I-1)_$TR($E(Y,I),"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")_$E(Y,I+1,999) | 
|---|
| 149 | Q Y | 
|---|