File:  [Coherent Logic Development] / freem_fileman / USER / DDBRS.m
Revision 1.1: download - view: text, annotated - select for diffs
Mon Apr 28 14:13:19 2025 UTC (3 months ago) by snw
Branches: MAIN
CVS tags: HEAD
Restructure repository

    1: DDBRS	;SFISC/DCL-SET UP SPLIT SCREEN ;09:27 AM  13 Sep 1994;
    2: 	;;21.0;VA FileMan;;Dec 28, 1994
    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","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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>