Annotation of freem_fileman/DDS41.m, revision 1.1.1.1

1.1       snw         1: DDS41  ;SFISC/MKO-VERIFY DATA ;07:42 AM  25 Oct 1994
                      2:        ;;21.0;VA FileMan;;Dec 28, 1994
                      3:        ;Per VHA Directive 10-93-142, this routine should not be modified.
                      4:        N DDO
                      5:        K DDSERROR,DDS4DONE,DDS4ERR
                      6:        S DDS4PG=DDSPG
                      7:        ;
                      8:        ;Set DA,DIE,DDP array to its original value
                      9:        I $G(DDSPTB)_$G(DDSREP)]"" N DIE,DDP,DDSDA,DA,DDSDL D
                     10:        . S DA=DDSDAORG,DDSDL=DDSDLORG,DDSDA=DA_","
                     11:        . F DDSI=1:1:DDSDL S DA(DDSI)=DDSDAORG(DDSI),DDSDA=DDSDA_DA(DDSI)_","
                     12:        . S DDP=$P($G(DDSFLORG),U),DIE=U_$P($G(DDSFLORG),U,2) S:DIE=U DIE=""
                     13:        ;
                     14:        D LDALL
                     15:        I $G(DIERR) D  G END
                     16:        . N P
                     17:        . S P(1)=$P($G(^DIST(.403,+DDS,40,DDSPG,0)),U),P(2)=$P($G(^(1)),U)
                     18:        . S:P(2)="" P(2)="unnamed"
                     19:        . D BLD^DIALOG(3041,.P),ERR^DDSMSG
                     20:        . S DDS4ERR=1
                     21:        ;
                     22:        D LP
                     23:        ;
                     24:        S DDSPG=DDS4PG,DDS4VC=$G(^DIST(.403,+DDS,20))
                     25:        I DDS4VC'?."^"  K @DDSREFT@("MSG") X DDS4VC
                     26:        I $G(@DDSREFT@("MSG"))>0!$G(DIERR) D PRNT
                     27:        ;
                     28: END    S Y='$D(DDSERROR)&'$G(DDS4ERR)
                     29:        K DDS4B,DDS4DA,DDS4DONE,DDS4ERR,DDS4FLD,DDS4PG,DDS4TP
                     30:        K DDS4VC,DDSCAP,DDSDD,DDSERROR,DDSI,DDSPID
                     31:        K DDSREQ,DIERR,DV
                     32:        Q
                     33:        ;
                     34: LDALL  ;Load all pages
                     35:        S (DDSPG,DDS4PG1)=$O(^DIST(.403,+DDS,40,"B",$S($G(DDSPAGE)]"":DDSPAGE,1:1),""))
                     36:        S Y=1
                     37:        F  D ^DDS1(DDSPG) Q:$G(DIERR)  S DDSPG=$$NP^DDS5(.Y) Q:DDSPG=DDS4PG1!'Y
                     38:        K DDS4PG1
                     39:        Q
                     40:        ;
                     41: LP     ;Loop through all pages/blocks
                     42:        S DX=0,DY=IOSL-1 X IOXY
                     43:        W "Verifying ..."_$P(DDGLCLR,DDGLDEL)
                     44:        ;
                     45:        S DDSPG=0
                     46:        F  S DDSPG=$O(@DDSREFT@(DDSPG)) Q:'DDSPG  D
                     47:        . S DDS4B=0
                     48:        . F  S DDS4B=$O(@DDSREFT@(DDSPG,DDS4B)) Q:'DDS4B  D
                     49:        .. I '$D(DDS4DONE(DDS4B)),$P(@DDSREFS@(DDSPG,DDS4B),U,5)="e" D
                     50:        ... S DDSPID=$S($P($G(^DIST(.403,+DDS,40,DDSPG,1)),U)]"":$P(^(1),U),1:"Page "_$P(^(0),U))
                     51:        ... D VB
                     52:        Q
                     53:        ;
                     54: VB     ;Loop through all fields on block
                     55:        N DDP
                     56:        S DDS4DONE(DDS4B)="",DDP=$P(^DIST(.404,DDS4B,0),U,2)
                     57:        S DDO=0 F  S DDO=$O(^DIST(.404,DDS4B,40,DDO)) Q:'DDO  D VF
                     58:        Q
                     59:        ;
                     60: VF     ;Check for required fields
                     61:        Q:$D(^DIST(.404,DDS4B,40,DDO,0))[0  S DDS4TP=$P(^(0),U,3)
                     62:        Q:DDS4TP=1  Q:DDS4TP=4
                     63:        S DDSCAP=$P(^DIST(.404,DDS4B,40,DDO,0),U,2)_$S($P(^(0),U,4)]"":" ("_$P(^(0),U,4)_")",1:"")
                     64:        ;
                     65:        I DDS4TP=2 N DDP D
                     66:        . S DDP=0,DDS4FLD=DDO_","_DDS4B
                     67:        . K DV
                     68:        ;
                     69:        E  D  Q:DDS4FLD'=+$P(DDS4FLD,"E")!(DDS4FLD=.01)
                     70:        . S DDS4FLD=$G(^DIST(.404,DDS4B,40,DDO,1))
                     71:        . S DDSDD=$G(^DD(DDP,DDS4FLD,0)),DV=$P(DDSDD,U,2)
                     72:        . S:DDSCAP="" DDSCAP=$S($G(^DD(DDP,DDS4FLD,.1))]"":^(.1),1:$P(DDSDD,U))
                     73:        ;
                     74:        S DDS4DA=" "
                     75:        F  S DDS4DA=$O(@DDSREFT@(DDSPG,DDS4B,DDS4DA)) Q:DDS4DA=""  D
                     76:        . I $P(@DDSREFT@(DDSPG,DDS4B,DDS4DA),U,6)<2 D VR Q
                     77:        . N DDS4PDA S DDS4PDA=DDS4DA N DDS4DA
                     78:        . S DDS4DA=""
                     79:        . F  S DDS4DA=$O(@DDSREFT@(DDSPG,DDS4B,DDS4PDA,"B",DDS4DA)) Q:'DDS4DA  D VR
                     80:        Q
                     81:        ;
                     82: VR     ;Check that value is non-null for record
                     83:        S DDSREQ=$P($G(^DIST(.404,DDS4B,40,DDO,4)),U)
                     84:        S:$P($G(@DDSREFT@("F"_DDP,DDS4DA,DDS4FLD,"A")),U)]"" DDSREQ=$P(^("A"),U)
                     85:        ;
                     86:        I DDSREQ'=1,$G(DV)'["R" Q
                     87:        ;
                     88:        ;Required WP fields (quit if mult)
                     89:        I DDP,$D(@DDSREFT@("F"_DDP,DDS4DA,DDS4FLD,"M")) D:'^("M")  Q
                     90:        . I $G(@DDSREFT@("F"_DDP,DDS4DA,DDS4FLD,"F")) S DDS4REF=$NA(^("D"))
                     91:        . E  S DDS4REF=$P(@DDSREFT@("F"_DDP,DDS4DA,DDS4FLD,"M"),U,2),DDS4REF=U_$E(DDS4REF,1,$L(DDS4REF)-1)_")"
                     92:        . S (DDS4VAL,DDS4I)=0
                     93:        . F  S DDS4I=$O(@DDS4REF@(DDS4I)) Q:'DDS4I  I $G(@DDS4REF@(DDS4I,0))'?." " S DDS4VAL=1 Q
                     94:        . D:'DDS4VAL LDERR
                     95:        . K DDS4REF,DDS4I,DDS4VAL
                     96:        ;
                     97:        I $G(@DDSREFT@("F"_DDP,DDS4DA,DDS4FLD,"D"))="" D LDERR
                     98:        Q
                     99:        ;
                    100: LDERR  ;Call ^DIALOG to load error
                    101:        N P
                    102:        I $D(DDS4ERR)[0 S DDS4ERR=1 D BLD^DIALOG(3091)
                    103:        S P(1)=DDSPID,P(2)=DDSCAP,P(3)=""
                    104:        I $L(DDS4DA,",")>2 D
                    105:        . N Y,C
                    106:        . S P(3)=$P(@(@DDSREFT@(DDSPG,DDS4B,$G(DDS4PDA,DDS4DA),"GL")_+DDS4DA_",0)"),U)
                    107:        . Q:P(3)=""
                    108:        . S Y=P(3),C=$P(^DD(DDP,.01,0),U,2) D Y^DIQ S P(3)=Y
                    109:        . S P(3)="(Subrecord: "_P(3)_")"
                    110:        D BLD^DIALOG(3092,.P)
                    111:        Q
                    112:        ;
                    113: PRNT   ;
                    114:        S (DDSABT,DX,DY)=0,$X=0,$Y=0 X IOXY
                    115:        W $P(DDGLCLR,DDGLDEL,2)
                    116:        ;
                    117:        I $G(DIERR) D
                    118:        . S DDSI=0
                    119:        . F  S DDSI=$O(^TMP("DIERR",$J,DDSI)) Q:'DDSI!DDSABT  D
                    120:        .. S DDSJ=0
                    121:        .. F  S DDSJ=$O(^TMP("DIERR",$J,DDSI,"TEXT",DDSJ)) Q:'DDSJ!DDSABT  D
                    122:        ... D:$G(^TMP("DIERR",$J,DDSI,"TEXT",DDSJ))]"" WLIN(^(DDSJ))
                    123:        G:DDSABT PRNTEND
                    124:        ;
                    125:        I $D(@DDSREFT@("MSG")) D
                    126:        . S DDSI=0
                    127:        . F  S DDSI=$O(@DDSREFT@("MSG",DDSI)) Q:'DDSI!DDSABT  D
                    128:        .. D:@DDSREFT@("MSG",DDSI)]"" WLIN(^(DDSI))
                    129:        ;
                    130:        D EOP
                    131:        ;
                    132: PRNTEND        W $P(DDGLCLR,DDGLDEL,2)
                    133:        K DDSABT,DDSI,DDSJ
                    134:        K @DDSREFT@("MSG"),^TMP("DIERR",$J)
                    135:        Q
                    136:        ;
                    137: WLIN(DDSX)     ;
                    138:        ;Write a single line, wrap at word boundaries
                    139:        S DDSWIDTH=IOM-1
                    140:        F  Q:DDSX=""!DDSABT  D
                    141:        . F DDSSP=$L(DDSX," "):-1:1 I $L($P(DDSX," ",1,DDSSP))<DDSWIDTH D  Q
                    142:        .. I $Y+4>IOSL D EOP I 'Y S DDSABT=1 Q
                    143:        .. W !,$P(DDSX," ",1,DDSSP)
                    144:        .. S DDSX=$P(DDSX," ",DDSSP+1,999)
                    145:        K DDSWIDTH
                    146:        Q
                    147: EOP    ;
                    148:        N X
                    149:        S DX=0,DY=IOSL-1 X IOXY
                    150:        R "Press RETURN to continue: ",X:DTIME
                    151:        S Y=X'[U&$T
                    152:        Q

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