Annotation of freem_fileman/DIFROMS1.m, revision 1.1

1.1     ! snw         1: DIFROMS1       ;SFISC/DCL-MOVE DD TO TARGET ARRAY;11:00 AM  30 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:        Q
        !             6: EN     ;
        !             7:        I '$D(@DIFRFIA) D ERR(1) Q
        !             8:        G:$G(DIFRFILE) FCHK
        !             9:        S DIFRFILE=0 F  S DIFRFILE=$O(@DIFRFIA@(DIFRFILE)) Q:DIFRFILE'>0  D FILE
        !            10:        Q
        !            11: FCHK   I '$D(@DIFRFIA@(DIFRFILE)) D ERR(2) Q
        !            12: FILE   N DSEC,DIFRD,DIFRX,DIFR01,DIFRFDD
        !            13:        N DIFRQ,DIFRTART,DIFRK,R,R1,R2,R3,C,F,G,I,DIFRPFD
        !            14:        S DIFR01=$G(@DIFRFIA@(DIFRFILE,0,1))
        !            15:        S DIFRFDD=$TR($P(DIFR01,"^",3),"FP","fp")'="p"
        !            16:        S DSEC=$TR($P(DIFR01,"^",2),"y","Y")="Y"
        !            17:        S DIFRPFD=@DIFRFIA@(DIFRFILE,DIFRFILE)=0
        !            18:        I DIFRFDD!DIFRPFD D
        !            19:        .M @DIFRTA@("^DIC",DIFRFILE,DIFRFILE,"%")=^DIC(DIFRFILE,"%")
        !            20:        .M @DIFRTA@("^DIC",DIFRFILE,DIFRFILE,"%D")=^DIC(DIFRFILE,"%D")
        !            21:        .S @DIFRTA@("^DIC",DIFRFILE,DIFRFILE,0)=$P(^DIC(DIFRFILE,0),"^",1,2)
        !            22:        .S @DIFRTA@("^DIC",DIFRFILE,DIFRFILE,0,"GL")=^DIC(DIFRFILE,0,"GL")
        !            23:        .S @DIFRTA@("^DIC",DIFRFILE,"B",@DIFRFIA@(DIFRFILE),DIFRFILE)=""
        !            24:        .Q
        !            25:        I DSEC,(DIFRFDD!(DIFRPFD)) D
        !            26:        .D XY^%RCR("^DIC("_DIFRFILE_",0,",$$OREF^DILF($NA(@DIFRTA@("SEC","^DIC",DIFRFILE,DIFRFILE,0))))
        !            27:        .K @DIFRTA@("SEC","^DIC",DIFRFILE,DIFRFILE,0,"GL")
        !            28:        .Q
        !            29:        S DIFRD=0
        !            30:        ;              * * Go through each DD and sub-DD * *
        !            31:        F  S DIFRD=$O(@DIFRFIA@(DIFRFILE,DIFRD)) Q:DIFRD'>0  S DIFRPFD=^(DIFRD)=0 D
        !            32:        .S DIFRX=0
        !            33:        .;         * * Merge each field DD to transport structure * *
        !            34:        .;F  S DIFRX=$O(^DD(DIFRD,DIFRX)) Q:DIFRX'>0  I $D(@DIFRFIA@(DIFRFILE,DIFRD))<9!($D(@DIFRFIA@(DIFRFILE,DIFRD,DIFRX))) D
        !            35:        .F  S DIFRX=$O(^DD(DIFRD,DIFRX)) Q:DIFRX'>0  I DIFRPFD!($D(@DIFRFIA@(DIFRFILE,DIFRD,DIFRX))) D
        !            36:        ..M @DIFRTA@("^DD",DIFRFILE,DIFRD,DIFRX)=^DD(DIFRD,DIFRX)
        !            37:        ..N SEC F SEC=8,8.5,9 I $D(^DD(DIFRD,DIFRX,SEC)) D:SEC=8  I SEC>8,^(SEC)'="^",$P(^(0),"^",2)'["K",^(SEC)'="@" D
        !            38:        ...I DSEC S @DIFRTA@("SEC","^DD",DIFRFILE,DIFRD,DIFRX,SEC)=^DD(DIFRD,DIFRX,SEC)
        !            39:        ...K @DIFRTA@("^DD",DIFRFILE,DIFRD,DIFRX,SEC)
        !            40:        ...Q
        !            41:        ..Q
        !            42:        .;                * * Clean up x-refs in DDs * *
        !            43:        .S DIFRQ=$NA(@DIFRTA@("^DD",DIFRFILE,DIFRD))
        !            44:        .S DIFRTART=$$OREF^DILF(DIFRQ)
        !            45:        .F  S DIFRQ=$Q(@DIFRQ) Q:$P(DIFRQ,DIFRTART)]""!(DIFRQ="")  D:$P(DIFRQ,DIFRTART,2,99)[""""
        !            46:        ..S DIFRK=1
        !            47:        ..S R2=$P(DIFRQ,DIFRTART,2,99),$E(R2,$L(R2))="",C=$L(R2,","),F=1,R1=0
        !            48:        ..F I=1:1 Q:I'<C  S G=$P(R2,",",F,I) Q:G=""  I G'[""""!($L(G,"""")#2&($E(G)="""")&($E(G,$L(G))="""")) S F=F+$L(G,","),I=F-1,R1=R1+1,C=C+($L(G,",")-1) I 'G,G'?1"0".E,R1#2 S DIFRK=DIFRTART_$P(R2,",",1,I)_")" Q
        !            49:        ..Q:DIFRK
        !            50:        ..K @DIFRK
        !            51:        ..Q
        !            52:        .;           * * Build DD 0 node after x-ref clean up * *
        !            53:        .;               for full DD or full sub-DD
        !            54:        .I DIFRFDD!(DIFRPFD) D
        !            55:        ..M @DIFRTA@("^DD",DIFRFILE,DIFRD,0)=^DD(DIFRD,0)
        !            56:        ..K @DIFRTA@("^DD",DIFRFILE,DIFRD,0,"VR")
        !            57:        ..Q
        !            58:        .Q
        !            59:        Q
        !            60: ERR(X) D BLD^DIALOG($P($T(ERR+X),";",5)) Q
        !            61:        ;;FIA Array Does Not Exist;1;9501
        !            62:        ;;FIA File Number Invalid;2;9502

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