| 1 | DDBRS ;SFISC/DCL-SET UP SPLIT SCREEN ;NOV 04, 1996@13:55 | 
|---|
| 2 | ;;22.0;VA FileMan;;Mar 30, 1999 | 
|---|
| 3 | ;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | TB(IOTM,IOBM,TA) ;Set Top and Bottom Margins in Target Array | 
|---|
| 5 | ;pass IOTM, IOBM and TA all by reference ** | 
|---|
| 6 | N I,X | 
|---|
| 7 | I (((IOBM-IOTM)+1)#2) S IOBM=IOBM-1 | 
|---|
| 8 | S TA(0,"IOTM")=IOTM | 
|---|
| 9 | S TA(0,"IOBM")=IOBM | 
|---|
| 10 | ETA S X=((IOBM+1)-(IOTM-1)\2)-2 | 
|---|
| 11 | S TA(1,"IOTM")=IOTM | 
|---|
| 12 | S TA(1,"IOBM")=IOTM+X | 
|---|
| 13 | S TA(2,"IOBM")=IOBM | 
|---|
| 14 | S TA(2,"IOTM")=IOBM-X | 
|---|
| 15 | ETB D | 
|---|
| 16 | .N IOTM,IOBM | 
|---|
| 17 | .F I=+$G(I):1:2 S IOTM=TA(I,"IOTM"),IOBM=TA(I,"IOBM") D | 
|---|
| 18 | ..S TA(I,"DDBSY")=(IOTM-2)_";"_(IOTM-1)_";"_(IOBM-1)_";"_(IOBM) | 
|---|
| 19 | ..S TA(I,"DDBSRL")=(IOBM-IOTM)+1 | 
|---|
| 20 | ..Q | 
|---|
| 21 | .Q | 
|---|
| 22 | Q | 
|---|
| 23 | ; | 
|---|
| 24 | ENTB(TA,DDBLD) ;called to reset DDBSY and DDBSRL for resizing split screen | 
|---|
| 25 | ;TA PASSED BY REFERENCE | 
|---|
| 26 | N I | 
|---|
| 27 | S I=1 | 
|---|
| 28 | D ETB | 
|---|
| 29 | F I=1,2 S TA(I,"DDBTPG")=TA(I,"DDBTL")\TA(I,"DDBSRL")+(TA(I,"DDBTL")#TA(I,"DDBSRL")'<1) | 
|---|
| 30 | F I="DDBTPG","DDBSY","DDBSRL" S @I=TA(TA,I) | 
|---|
| 31 | I DDBLD<0 S TA(1,"DDBL")=TA(1,"DDBL")-$S(TA(1,"DDBL")>0:1,1:0) Q | 
|---|
| 32 | S TA(1,"DDBL")=TA(1,"DDBL")+$S(TA(1,"DDBL")<TA(1,"DDBTL"):1,1:0) Q | 
|---|
| 33 | Q | 
|---|
| 34 | ; | 
|---|
| 35 | INIT(SUB,TA) ;Finish saving variables for TA pass TA by reference ** | 
|---|
| 36 | N I G:$G(SUB)]"" SUB | 
|---|
| 37 | F SUB=1,2 D SUB | 
|---|
| 38 | Q | 
|---|
| 39 | SUB F I="DDBSRL","DDBHDR","DDBHDRC","DDBTL","DDBSA","DDBSF","DDBST","DDBZN","DDBDM","DDBC","DDBPSA","DDBRPE","DDBPMSG","DDBTPG" S TA(SUB,I)=@I | 
|---|
| 40 | S TA(SUB,"DDBL")=+$G(DDBL) | 
|---|
| 41 | Q | 
|---|
| 42 | ; | 
|---|
| 43 | SR(X,Y,ARRAY) ;Save, Restore, Array - Pass Array by reference ** | 
|---|
| 44 | D INIT(X,.ARRAY) | 
|---|
| 45 | S X="" | 
|---|
| 46 | F  S X=$O(ARRAY(Y,X)) Q:X=""  S @X=ARRAY(Y,X) | 
|---|
| 47 | S ARRAY=Y  ;* * active array * * | 
|---|
| 48 | Q | 
|---|
| 49 | ; | 
|---|
| 50 | FULL(TA) ;Full Screen | 
|---|
| 51 | ;TA passed by reference | 
|---|
| 52 | I TA=1 S DDBL=DDBL+(DDBSRL+2) | 
|---|
| 53 | N I,X | 
|---|
| 54 | F I="IOBM","IOTM","DDBSY","DDBSRL" S @I=TA(0,I) | 
|---|
| 55 | S DDBTPG=DDBTL\DDBSRL+(DDBTL#DDBSRL'<1) | 
|---|
| 56 | S I=1 D ETA | 
|---|
| 57 | W @IOSTBM | 
|---|
| 58 | S TA=0  ;* * active array * * | 
|---|
| 59 | S DDBL=$G(DDBL,0) S:DDBL<0 DDBL=0 S:DDBL>DDBTL DDBL=DDBTL | 
|---|
| 60 | D PSR^DDBR0(1) | 
|---|
| 61 | Q | 
|---|
| 62 | ; | 
|---|
| 63 | SPLIT ;Split Screen | 
|---|
| 64 | N I | 
|---|
| 65 | F I="IOBM","IOTM","DDBSY","DDBSRL" S @I=DDBRSA(2,I) | 
|---|
| 66 | S DDBTPG=DDBTL\DDBSRL+(DDBTL#DDBSRL'<1) | 
|---|
| 67 | S I=1 | 
|---|
| 68 | D INIT("",.DDBRSA) | 
|---|
| 69 | W @IOSTBM | 
|---|
| 70 | S DDBL=$G(DDBL,0) S:DDBL<0 DDBL=0 S:DDBL>DDBTL DDBL=DDBTL | 
|---|
| 71 | D PSR^DDBR0(1) | 
|---|
| 72 | D SR(2,1,.DDBRSA) | 
|---|
| 73 | W @IOSTBM | 
|---|
| 74 | S DDBL=DDBL-(DDBSRL+2),DDBRSA(1,"DDBL")=DDBL | 
|---|
| 75 | S DDBL=$G(DDBL,0) S:DDBL<0 DDBL=0 S:DDBL>DDBTL DDBL=DDBTL | 
|---|
| 76 | D PSR^DDBR0(1) | 
|---|
| 77 | Q | 
|---|
| 78 | ; | 
|---|
| 79 | ;;NOTE: DDBRSA=0 - full screen | 
|---|
| 80 | ;;      DDBRSA=1 - top of split screen | 
|---|
| 81 | ;;      DDBRSA=2 - bottom of split screen | 
|---|