Annotation of freem_fileman/DDSPRNT.m, revision 1.1.1.1

1.1       snw         1: DDSPRNT        ;SFISC/MKO-PRINT A FORM ;02:51 PM  18 Nov 1994
                      2:        ;;21.0;VA FileMan;;Dec 28, 1994
                      3:        ;Per VHA Directive 10-93-142, this routine should not be modified.
                      4:        ;
                      5:        I '$D(DIFM) N DIFM S DIFM=1 D INIZE^DIEFU
                      6:        ;
                      7:        N DDSFORM,DDSPBRK
                      8:        D SELFORM(.DDSFORM) Q:DDSFORM=-1
                      9:        D PAGEBRK(.DDSPBRK) Q:$D(DDSPBRK)[0
                     10:        ;
                     11:        ;Device
                     12:        S %ZIS=$S($D(^%ZTSK):"Q",1:"")
                     13:        W ! D ^%ZIS K %ZIS I $G(POP) K POP Q
                     14:        K POP
                     15:        ;
                     16:        ;Queue report
                     17:        I $D(IO("Q")),$D(^%ZTSK) D  G END
                     18:        . S ZTRTN="PRINT^DDSPRNT"
                     19:        . S ZTDESC="Report of Form "_$P(DDSFORM,U,2)
                     20:        . N I F I="DDSFORM","DDSFORM(0)","DDSPBRK" S ZTSAVE(I)=""
                     21:        . D ^%ZTLOAD
                     22:        . I $D(ZTSK)#2 W !,"Report queued!",!,"Task number: "_$G(ZTSK),!
                     23:        . E  W !,"Report canceled!",!
                     24:        . K ZTSK
                     25:        . S IOP="HOME" D ^%ZIS
                     26:        ;
                     27:        U IO
                     28:        ;
                     29: PRINT  ;Entry point for queued reports
                     30:        N DDSBK,DDSCOL1,DDSCOL2,DDSCOL3,DDSCRT,DDSFILE
                     31:        N DDSHLIN,DDSHBK,DDSPAGE,DDSQUE
                     32:        N DX,DY,X,Y
                     33:        ;
                     34:        I '$D(DIFM) N DIFM S DIFM=1 D INIZE^DIEFU
                     35:        D INIT
                     36:        D @("HDR"_(2-DDSCRT))
                     37:        D FORM,END
                     38:        Q
                     39:        ;
                     40: FORM   ;Form data
                     41:        W !
                     42:        ;
                     43:        ;Description
                     44:        D WP($NA(^DIST(.403,+DDSFORM,15))) Q:$D(DIRUT)
                     45:        ;
                     46:        ;Other properties
                     47:        D W("PRIMARY FILE: "_$P(DDSFORM(0),U,8),9) Q:$D(DIRUT)
                     48:        W ?49,"READ ACCESS: "_$P(DDSFORM(0),U,2)
                     49:        D W("DATE CREATED: "_$$EXTERNAL^DILFD(.403,4,"",$P(DDSFORM(0),U,5)),9) Q:$D(DIRUT)
                     50:        W ?48,"WRITE ACCESS: "_$P(DDSFORM(0),U,3)
                     51:        D W("DATE LAST USED: "_$$EXTERNAL^DILFD(.403,5,"",$P(DDSFORM(0),U,6)),7) Q:$D(DIRUT)
                     52:        W ?53,"CREATOR: "_$P(DDSFORM(0),U,4)
                     53:        D W() Q:$D(DIRUT)
                     54:        ;
                     55:        I $P(DDSFORM(0),U,7)]"" D W("TITLE: "_$P(DDSFORM(0),U,7),16) Q:$D(DIRUT)
                     56:        I $P($G(^DIST(.403,+DDSFORM,21)),U)]"" D W("RECORD SELECTION PAGE: "_$P(^(21),U)) Q:$D(DIRUT)
                     57:        ;
                     58:        I $X D W() Q:$D(DIRUT)
                     59:        S X=$G(^DIST(.403,+DDSFORM,11))
                     60:        I X]"" D W("PRE ACTION:",11) Q:$D(DIRUT)  D PCOL(X,23)
                     61:        S X=$G(^DIST(.403,+DDSFORM,12))
                     62:        I X]"" D W("POST ACTION:",10) Q:$D(DIRUT)  D PCOL(X,23)
                     63:        S X=$G(^DIST(.403,+DDSFORM,14))
                     64:        I X]"" D W("POST SAVE:",12) Q:$D(DIRUT)  D PCOL(X,23)
                     65:        S X=$G(^DIST(.403,+DDSFORM,20))
                     66:        I X]"" D W("DATA VALIDATION:",6) Q:$D(DIRUT)  D PCOL(X,23)
                     67:        K DDSFORM(0)
                     68:        ;
                     69:        ;Loop through all pages
                     70:        I $X D W() Q:$D(DIRUT)
                     71:        Q:'$O(^DIST(.403,+DDSFORM,40,0))
                     72:        ;
                     73:        N DDSPG,DDSPGN
                     74:        S DDSPGN="",DDSPFRST=1
                     75:        F  S DDSPGN=$O(^DIST(.403,+DDSFORM,40,"B",DDSPGN)) Q:DDSPGN=""!$D(DIRUT)  S DDSPG=0 F  S DDSPG=$O(^DIST(.403,+DDSFORM,40,"B",DDSPGN,DDSPG)) Q:'DDSPG!$D(DIRUT)  D PAGE^DDSPRNT1
                     76:        K DDSPFRST Q:$D(DIRUT)
                     77:        ;
                     78:        D:$D(DDSHBK) HBLKS^DDSPRNT1
                     79:        Q
                     80:        ;
                     81: WR(DDSLAB,DDSVAL,DDSFLG)       ;Write label and value
                     82:        I DDSVAL="",'$G(DDSFLG) Q
                     83:        ;
                     84:        D W() Q:$D(DIRUT)
                     85:        W ?DDSCOL2,DDSLAB
                     86:        ;
                     87:        I $X>DDSCOL3 N DDSCOL3 S DDSCOL3=$X+1
                     88:        D PCOL(DDSVAL,DDSCOL3)
                     89:        Q
                     90:        ;
                     91: PCOL(DDSVAL,DDSCOL)    ;Print DDSVAL
                     92:        N DDSWIDTH,DDSIND
                     93:        S DDSWIDTH=IOM-DDSCOL-1
                     94:        F DDSIND=1:DDSWIDTH:$L(DDSVAL) D  Q:$D(DIRUT)
                     95:        . I DDSIND>1 D W() Q:$D(DIRUT)
                     96:        . W ?DDSCOL,$E(DDSVAL,DDSIND,DDSIND+DDSWIDTH-1)
                     97:        Q
                     98:        ;
                     99: WP(DDSWP,DIWL,DDSLF)   ;Print text in array @DDSWP
                    100:        ;DDSLF [ A : LF after (def)
                    101:        ;        B : LF feed before
                    102:        ;
                    103:        Q:'$P($G(@DDSWP@(0)),U,3)
                    104:        N DIW,DIWF,DIWI,DIWR,DIWT,DIWTC,DIWX,DN
                    105:        N DDSI,DDSCNT,I,X,Z
                    106:        ;
                    107:        K ^UTILITY($J,"W")
                    108:        S:'$G(DIWL) DIWL=1
                    109:        S DIWR=IOM-1
                    110:        S:'$D(DDSLF) DDSLF="A"
                    111:        ;
                    112:        S DDSCNT=$P($G(@DDSWP@(0)),U,3)
                    113:        I DDSCNT D
                    114:        . F DDSI=1:1:DDSCNT I $D(@DDSWP@(DDSI,0))#2 S X=^(0) D ^DIWP
                    115:        . ;
                    116:        . I DDSLF'["B" D
                    117:        .. W ?DIWL-1,$G(^UTILITY($J,"W",DIWL,1,0))
                    118:        .. S DDSCNT=1
                    119:        . E  S DDSCNT=0
                    120:        . F  S DDSCNT=$O(^UTILITY($J,"W",DIWL,DDSCNT)) Q:'DDSCNT!$D(DIRUT)  D
                    121:        .. D W($G(^UTILITY($J,"W",DIWL,DDSCNT,0)),DIWL-1)
                    122:        ;
                    123:        K ^UTILITY($J,"W")
                    124:        D:DDSLF["A" W()
                    125:        Q
                    126:        ;
                    127: W(DDSSTR,DDSCOL)       ;Write DDSSTR
                    128:        I $Y+3'<IOSL D HEADER Q:$D(DIRUT)
                    129:        W !?+$G(DDSCOL),$G(DDSSTR)
                    130:        Q
                    131:        ;
                    132: HEADER ;All headers except first
                    133:        I DDSCRT D  Q:$D(DIRUT)
                    134:        . N DIR,X,Y
                    135:        . S DIR(0)="E" W ! D ^DIR
                    136:        I DDSQUE,$$S^%ZTLOAD S (ZTSTOP,DIRUT)=1 Q
                    137:        ;
                    138: HDR1   ;First header for CRTs
                    139:        W @IOF
                    140:        ;
                    141: HDR2   ;First header for non-CRTs
                    142:        ;
                    143:        S DDSPAGE=$G(DDSPAGE)+1
                    144:        W "FORM LISTING - "_$P(DDSFORM,U,2)_" (#"_+DDSFORM_")"
                    145:        W !,"FILE: "_DDSFILE
                    146:        W ?(IOM-$L(DDSHLIN)-$L(DDSPAGE)-1),DDSHLIN_DDSPAGE
                    147:        W !,$TR($J("",IOM-1)," ","-")
                    148:        Q
                    149:        ;
                    150: SELFORM(DDSFORM)       ;Select form
                    151:        N %,%W,%Y,C,I,Q,DDH,DIC,X,Y
                    152:        S DIC="^DIST(.403,",DIC(0)="QEAMZ"
                    153:        D ^DIC K DIC
                    154:        S DDSFORM=Y,DDSFORM(0)=$G(Y(0))
                    155:        Q
                    156:        ;
                    157: PAGEBRK(DDSPBRK)       ;Prompt
                    158:        N DIR,DIRUT,DUOUT,DTOUT,DIROUT,X,Y
                    159:        S DIR(0)="YO"
                    160:        S DIR("A")="Start each page of the form on a new page"
                    161:        S DIR("B")="Yes"
                    162:        W ! D ^DIR Q:$D(DIRUT)
                    163:        S DDSPBRK=Y
                    164:        Q
                    165:        ;
                    166: INIT   ;Setup
                    167:        N %,%H,X,Y
                    168:        S %H=$H D YX^%DTC
                    169:        S DDSHLIN=$P(Y,"@")_"  "_$P($P(Y,"@",2),":",1,2)_"    PAGE "
                    170:        S DDSFILE=$P(DDSFORM(0),U,8)
                    171:        I DDSFILE,$D(^DIC(DDSFILE,0))#2 S DDSFILE=$P(^(0),U)_" (#"_DDSFILE_")"
                    172:        E  S DDSFILE=""
                    173:        S DDSCRT=$E(IOST,1,2)="C-"
                    174:        S DDSQUE=$D(ZTQUEUED)
                    175:        Q
                    176:        ;
                    177: END    ;Finish up
                    178:        I $D(ZTQUEUED) S ZTREQ="@"
                    179:        E  X $G(^%ZIS("C"))
                    180:        K DIRUT,DUOUT,DTOUT
                    181:        Q

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