Annotation of freem_fileman/DDS41.m, revision 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>