Annotation of freem_fileman/DIFROMS3.m, revision 1.1.1.1

1.1       snw         1: DIFROMS3       ;SFISC/DCL- DATA TO DISTRIBUTION ARRAY;02:37 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:        Q
                      6: EN     ;
                      7:        I '$D(@DIFRFIA) D ERR(2) Q
                      8:        G:$G(DIFRFILE) FILE
                      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(5) Q  ;  * * * * PHASING OUT * * * *
                     12: FILE   N DIFRS,DIFRSCR,DIFRDA,DIFROOT,DIFRRLR,DIFR01,DIFRPR,DIFRDNSC,DIFRFRV,DIFRFRVX
                     13:        N DIFRQ,DIFRTART,DIFRK,R,R1,R2,R3,C,F,G,I,DIFR2DD,DIFRNODE,DIFRFELD,DIFRPCE,DIFRIENS,DIFRDD0
                     14:        S DIFR01=$G(@DIFRFIA@(DIFRFILE,0,1)),DIFRPR=$TR($P(DIFR01,"^",5),"Y","y")="y"
                     15:        I $TR($P(DIFR01,"^",7),"Y","y")'="y" Q
                     16:        I DIFRPR D PGL^DIFROMSP(DIFRFILE,"",DIFRTA)
                     17:        S DIFRS=$G(@DIFRFIA@(DIFRFILE,0,11))]"",DIFRSCR=$G(^(11))
                     18:        S DIFROOT=$NA(@($$ROOT^DILFD(DIFRFILE,"",1))),DIFRDA=0  ;$NA/trans gbl $Q
                     19:        S DIFRRLR=$G(@DIFRFIA@(DIFRFILE,0,"RLRO"))
                     20:        S:DIFRRLR="" DIFRRLR=DIFROOT
                     21:        I $D(@DIFRRLR)'>9 D ERR(4) Q
                     22:        N Y
                     23:        F  S DIFRDA=$O(@DIFRRLR@(DIFRDA)) Q:DIFRDA'>0  D
                     24:        .I '$D(@DIFROOT@(DIFRDA,0)) D  Q
                     25:        ..N DIFRERR S DIFRERR(1)=DIFRDA,DIFRERR(2)=DIFRFILE
                     26:        ..D BLD^DIALOG(9513,.DIFRERR)
                     27:        ..Q
                     28:        .I DIFRS,$D(@DIFRRLR@(DIFRDA,0)) S Y=DIFRDA X DIFRSCR Q:'$T  ;set *NAKED* and *Y*
                     29:        .M @DIFRTA@("DATA",DIFRFILE,DIFRDA)=@DIFROOT@(DIFRDA)
                     30:        .Q
                     31:        S DIFRQ=$NA(@DIFRTA@("DATA",DIFRFILE))  ;$NA/trans gbl/$Q
                     32:        S DIFRTART=$$OREF^DILF(DIFRQ)
                     33:        F  S DIFRQ=$Q(@DIFRQ) Q:$P(DIFRQ,DIFRTART)]""!(DIFRQ="")  D:$P(DIFRQ,DIFRTART,2,99)[""""!(DIFRPR)
                     34:        .K R1
                     35:        .S DIFRK=1
                     36:        .S R2=$P(DIFRQ,DIFRTART,2,99),$E(R2,$L(R2))="",C=$L(R2,","),F=1,R1=0
                     37:        .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)=G,R1=R1+1,C=C+($L(G,",")-1) I 'G,G'?1"0".E,R1#2 S DIFRK=DIFRTART_$P(R2,",",1,I)_")" Q
                     38:        .I DIFRPR,DIFRK,'(R1#2) D  Q  ;RESOLVE POINTERS
                     39:        ..D  Q:DIFR2DD'>0
                     40:        ...I R1'>3 S DIFR2DD=DIFRFILE Q
                     41:        ...S R3=""
                     42:        ...F I=0:1:R1-3 S R3=R3_R1(I)_","
                     43:        ...S DIFR2DD=+$P($G(@(DIFRTART_R3_"0)")),"^",2)
                     44:        ...Q
                     45:        ..S DIFRNODE=R1($O(R1(""),-1)),DIFRDNSC=R2
                     46:        ..Q:'$D(@DIFRTA@("PGL",DIFR2DD,DIFRNODE))
                     47:        ..S DIFRPCE=0
                     48:        ..F  S DIFRPCE=$O(@DIFRTA@("PGL",DIFR2DD,DIFRNODE,DIFRPCE)) Q:DIFRPCE=""  D:DIFRPCE>0
                     49:        ...Q:$P(@DIFRQ,"^",DIFRPCE)=""
                     50:        ...S DIFRFELD=$O(@DIFRTA@("PGL",DIFR2DD,DIFRNODE,DIFRPCE,"")),(I,DIFRIENS)=""
                     51:        ...;CREATE IENS * * * * * * * * * * * * * * * * *
                     52:        ...F  S I=$O(R1(I),-1) Q:I=""  S:'(I#2) DIFRIENS=DIFRIENS_R1(I)_","
                     53:        ...S DIFRDD0=^DD(DIFR2DD,DIFRFELD,0)
                     54:        ...S DIFRFRV=$$GET1^DIQ(DIFR2DD,DIFRIENS,DIFRFELD)
                     55:        ...I DIFRFRV']"" D  Q
                     56:        ....N DIFRERR
                     57:        ....S DIFRERR(1)=DIFR2DD,DIFRERR(2)=DIFRIENS,DIFRERR(3)=DIFRFELD
                     58:        ....D BLD^DIALOG(9514,.DIFRERR)
                     59:        ....Q
                     60:        ...S DIFRFRVX="FRV1"
                     61:        ...; If .01 field on file level is a pointer use "FRV0" subscript
                     62:        ...;I R1'>3,DIFRPCE=1,DIFRNODE=0 S DIFRFRVX="FRV0"
                     63:        ...S @DIFRTA@(DIFRFRVX,DIFRFILE,DIFRDNSC,DIFRPCE)=DIFRFRV
                     64:        ...S @DIFRTA@(DIFRFRVX,DIFRFILE,DIFRDNSC,DIFRPCE,"F")=$S($P(DIFRDD0,"^",2)["P":";"_$P(DIFRDD0,"^",3),$P(DIFRDD0,"^",2)["V":"1;"_$P($P(@DIFRQ,"^",DIFRPCE),";",2),1:"")
                     65:        ...Q
                     66:        ..Q
                     67:        ..;Q:IF HEADER NODE OR IF NOT DATA NODE THEN FIND DD AND CHECK
                     68:        ..;  IF DD#,"PGL",DATA NODE EXIST IF SO GET PIECE AND FIELD
                     69:        ..;  AND SET IT UP INTO A STRUCTURE ; ALL RESOLVED; .01,IDs AND PTR.
                     70:        ..;IT WAS DECIDED NOT TO RESOLVE .01 AND ID POINTERS
                     71:        ..Q
                     72:        .Q:DIFRK
                     73:        .K @DIFRK
                     74:        .Q
                     75:        Q
                     76:        ;
                     77: ERR(X) N Y S Y=$P($T(ERR+X),";",5) Q:'Y  D BLD^DIALOG(Y) Q
                     78:        ;;FIA Node Is Set To "No Data";1;9509
                     79:        ;;FIA Array Does Not Exist;2;9501
                     80:        ;;;3;
                     81:        ;;Records Do Not Exist;4;9510
                     82:        ;;FIA File Number Invalid;5;9502

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