Annotation of freem_fileman/USER/DDBR.m, revision 1.1
1.1 ! snw 1: DDBR ;SFISC/DCL-VA FILEMAN BROWSER ;12/28/94 11:23
! 2: ;;21.0;VA FileMan;;Dec 28, 1994
! 3: ;Per VHA Directive 10-93-142, this routine should not be modified.
! 4: EN N DDBC,DDBFLG,DDBL,DDBPMSG,DDBSA,DDBX,IOTM,IOBM
! 5: I '$$TEST^DDBRT W $C(7),!!,"This terminal does not support scroll region or reverse index",!! Q
! 6: D LIST^DDBR3(.DDBX)
! 7: I DDBX'>0 W:DDBX=0 $C(7),!!,"No Text",!! Q
! 8: S DDBSA=DDBX(6)
! 9: S DDBFLG=DDBX(4)
! 10: S DDBPMSG=DDBX(5)
! 11: D CONTNU
! 12: D KTMP^DDBRU
! 13: Q
! 14: WP(DDBFN,DDBRN,DDBFLD,DDBFLG,DDBPMSG,DDBL,DDBC,IOTM,IOBM) N DDBSA
! 15: S DDBSA=$$GET^DIQG($G(DDBFN),$G(DDBRN),$G(DDBFLD),"B")
! 16: I $G(DIERR) D CLEAN Q
! 17: S DDBSA=$P(DDBSA,"$CREF$",2)
! 18: I DDBSA']"" D ERR("FILE, RECORD and/or FIELD") Q
! 19: I '$D(@DDBSA) D ERR("SOURCE ARRAY") Q
! 20: S DDBPMSG=$G(DDBPMSG,"VA FileMan Browser (wp) DOCUMENT 1")
! 21: D CONTNU
! 22: D:$G(DDBFLG)'["P" KTMP^DDBRU
! 23: Q
! 24: BROWSE(DDBSA,DDBFLG,DDBPMSG,DDBL,DDBC,IOTM,IOBM) N DDBRLIST
! 25: CONTNU I $G(U)'="^" N U S U="^"
! 26: S DDBPMSG=$G(DDBPMSG,"VA FileMan Browser DOCUMENT 1")
! 27: N %,D,DX,IOP,XY,X,Y
! 28: D:$G(DDBFLG)'["H" INIT I $G(DIERR) D CLEAN Q
! 29: I $G(DDBSA)']"" D ERR("SOURCE ARRAY") Q
! 30: I '$D(@DDBSA) D ERR("SOURCE ARRAY") Q
! 31: I $G(DDBFLG)'["N",DDBSA'="^TMP(""DDB"",$J)" D
! 32: .I $NA(@DDBSA)=$NA(^TMP("DDB",$J)) S DDBSA="^TMP(""DDB"",$J)" Q
! 33: .K ^TMP("DDB",$J)
! 34: .D XY^%RCR($$OREF(DDBSA),"^TMP(""DDB"",$J,")
! 35: .;M ^TMP("DDB",$J)=@DDBSA
! 36: .S DDBSA="^TMP(""DDB"",$J)"
! 37: .Q
! 38: N DDBRE,DDBRPE,DDBPSA,DDBTO,DDBDM,DDBFNO,I,DDBFLGS
! 39: N DDBHDR,DDBFTR,DDBSP,DDBSF,DDBST,DDBTL,DDBTPG,DDBZN
! 40: I '$G(DDBRLIST) N DDBSRL,DDBSX,DDBSY,DDBRSA
! 41: S DDBFTR=$E("Col> |<PF1>H=Help <PF1>E=Exit| Line> Screen>"_$J("",IOM),1,IOM)
! 42: I '$G(DDBRLIST) S IOBM=$S($G(IOBM)>0:IOBM,1:$G(IOSL,24))-1,IOTM=$S($G(IOTM)>0:IOTM,1:1)+1
! 43: S DDBRSA=0
! 44: D TB^DDBRS(.IOTM,.IOBM,.DDBRSA)
! 45: S DDBSX="0;4;40;65"
! 46: S DDBSY=DDBRSA(0,"DDBSY")
! 47: I IOBM>(IOSL-1) D ERR("BOTTOM MARGIN") Q
! 48: I IOTM<2 D ERR("TOP MARGIN") Q
! 49: I IOBM'>IOTM D ERR("TOP & BOTTOM MARGINS") Q
! 50: S DDBSRL=DDBRSA(0,"DDBSRL")
! 51: I DDBSRL'>4 D ERR("SCROLL REGION (TOO SMALL)") Q
! 52: I DDBRSA(1,"DDBSRL")'>4 K DDBRSA(1),DDBRSA(2)
! 53: S DDBHDR=$$CTXT(DDBPMSG,$J("",IOM+1),IOM)
! 54: S DDBTL=$P($G(@DDBSA@(0)),"^",3) S:DDBTL'>0 DDBTL=$O(@DDBSA@(" "),-1)
! 55: I DDBTL'>0 D I DDBTL'>0 D BLD^DIALOG(1700,"*NO TEXT*"_DDBSA) D CLEAN Q
! 56: .N I S I=0 F S I=$O(@DDBSA@(I)) Q:I'>0 S DDBTL=I
! 57: .Q
! 58: S DDBZN=$D(@DDBSA@(DDBTL,0))#2,DDBTPG=DDBTL\DDBSRL+(DDBTL#DDBSRL'<1),DDBSF=1,DDBST=IOM
! 59: S DDBDM=DDBSA="^TMP(""DDB"",$J)"
! 60: I $G(DDBC)=+$G(DDBC) D ERR("TAB (Closed Array Root)") Q
! 61: S:$G(DDBC)="" DDBC="^TMP(""DDBC"",$J)"
! 62: I '$D(@DDBC) F I=1,22:22:176 S @DDBC@(I)=""
! 63: I $D(@DDBC@(1))'>9 N DDBC0,DDBC1 S @DDBC@(1)="",DDBC1=1,DDBC0=DDBC
! 64: S DDBPSA=0,DDBFLG=$G(DDBFLG)
! 65: S DDBFLGS=DDBFLG["S"
! 66: G EN^DDBRGE
! 67: DOCLIST(DDBDSA,DDBFLG,IOTM,IOBM) S IOP="HOME" D ^%ZIS
! 68: N DDBPMSG,DDBL,DDBC,DDBSA,DDBSRL,DDBSX,DDBSY,DDBRSA,DDBRLIST
! 69: S IOBM=$S($G(IOBM)>0:IOBM,1:$G(IOSL,24))-1,IOTM=$S($G(IOTM)>0:IOTM,1:1)+1
! 70: S DDBSX="0;4;40;65"
! 71: S DDBSY=(IOTM-2)_";"_(IOTM-1)_";"_(IOBM-1)_";"_(IOBM) ;hdr,txttop,txtbot,ftr
! 72: I IOBM>(IOSL-1) D ERR("BOTTOM MARGIN") Q
! 73: I IOTM<2 D ERR("TOP MARGIN") Q
! 74: I IOBM'>IOTM D ERR("TOP & BOTTOM MARGINS") Q
! 75: S DDBSRL=(IOBM-IOTM)+1 ;scroll region lines
! 76: I '$D(@DDBDSA) D ERR("DOCUMENT ARRAY INVALID") Q
! 77: S DDBFLG=$TR($G(DDBFLG),"P")_"N"
! 78: S DDBPMSG=$O(@DDBDSA@("")) S:DDBPMSG]"" DDBSA=@DDBDSA@(DDBPMSG)
! 79: I DDBPMSG']""!(DDBSA']"") D ERR("DOCUMENT ARRAY INVALID") Q
! 80: D I $G(DIERR) K ^TMP("DDBLST",$J) D CLEAN Q
! 81: .N DOC,DOCSA
! 82: .S DOC=""
! 83: .K ^TMP("DDBLST",$J)
! 84: .F S DOC=$O(@DDBDSA@(DOC)) Q:DOC="" D
! 85: ..S DOCSA=@DDBDSA@(DOC)
! 86: ..D LOADCL^DDBR4(DOCSA,"",DOC)
! 87: ..Q
! 88: .Q
! 89: Q:$G(DDBENDR)
! 90: S DDBRLIST=1
! 91: G CONTNU
! 92: RTN G DR^DDBRU
! 93: ROOT G EN^DDBRU2
! 94: CTXT(X,T,W) Q:X="" $G(T)
! 95: N HW
! 96: S W=$G(W,79),HW=W\2
! 97: S $E(T,HW-($L(X)\2),HW-($L(X)\2)+$L(X))=X Q $E(T,1,W)
! 98: OREF(X) N X1,X2 S X1=$P(X,"(")_"(",X2=$$OR2($P(X,"(",2)) Q:X2="" X1 Q X1_X2_","
! 99: OR2(%) Q:%=")"!(%=",") "" Q:$L(%)=1 % S:"),"[$E(%,$L(%)) %=$E(%,1,$L(%)-1) Q %
! 100: INIT I '$D(DIFM) N DIFM S DIFM=1 D INIZE^DIEFU
! 101: D INIT^DDGLIB0()
! 102: I $G(DIERR) Q
! 103: I '$D(IOSTBM)!('$D(IOIL)) S X="IOSTBM;IORI" D ENDR^%ZISS
! 104: D:$G(IOSTBM)="" TRMERR^DDGLIB0("Set top and bottom margins")
! 105: D:$G(IORI)="" TRMERR^DDGLIB0("Reverse index")
! 106: Q
! 107: ERR(DDBERR) N P S P(1)=DDBERR
! 108: I $G(U)="^" N U S U="^"
! 109: D BLD^DIALOG(202,.P),OUT^DDBRU:$D(DDGLDEL)
! 110: CLEAN D:'$D(DDS) KILL^DDGLIB0($G(DDBFLG))
! 111: Q
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>