Annotation of freem_fileman/USER/DIFROMSS.m, revision 1.1

1.1     ! snw         1: DIFROMSS       ;SCISC/DCL-DIFROM SERVER/DATA SORT LIST/SB-DD/HDR2P ;11:05 AM  15 Sep 1994;
        !             2:        ;;21.0;VA FileMan;;Dec 28, 1994
        !             3:        ;Per VHA Directive 10-93-142, this routine should not be modified.
        !             4:        Q
        !             5: SEL(DIFRFILE,DIFRX)    ;Extrinsic function to return resolved value for
        !             6:        ;freetext pointer
        !             7:        ;FILE,X-VALUE
        !             8:        N D,DIC,DIE,DIX,DIY,DO,DS,X,Y
        !             9:        N %,%K,%Y,DA,D0,D1,D2,D3
        !            10:        S DIC="^DIBT(",DIC(0)="QEMZ",X=DIFRX
        !            11:        S DIC("S")="I $P(^(0),U,4)=DIFRFILE,$D(^(1))>9"
        !            12:        D ^DIC
        !            13:        Q:Y'>0 ""
        !            14:        Q Y(0,0)
        !            15:        ;
        !            16: HELP(DIFRFILE) ;
        !            17:        N D,DIC,DIE,DIX,DIY,DO,DS,X,Y
        !            18:        N %,%K,%Y,DA,D0,D1,D2,D3
        !            19:        S DIC="^DIBT(",DIC(0)="M",DIC("S")="I $P(^(0),U,4)=DIFRFILE,$D(^(1))>9",X="??"
        !            20:        D ^DIC
        !            21:        Q
        !            22:        ;
        !            23: SB(DIFRDD,DIFRFLG,DIFRTA,DIFRVAL)      ;Returns a list of sub-DDs for any DD#
        !            24:        ;DD#,FLAGS,TARGET ARRAY(by value)
        !            25:        ;DD/SUB DD NUMBER (required)
        !            26:        ;FLAGS "W"=Include Word-processing fields (optional)
        !            27:        ;TARGET ARRAY (required)
        !            28:        ;DIFRVAL - SET TARGET ARRAY EQUAL TO
        !            29:        N DIFRSDD,DIFRSSDD,DIFRNW
        !            30:        S DIFRSDD=0,DIFRNW=$G(DIFRFLG)'["W",DIFRVAL=$G(DIFRVAL)
        !            31:        F  S DIFRSDD=$O(^DD(DIFRDD,"SB",DIFRSDD)) Q:DIFRSDD'>0  D
        !            32:        .S DIFRSSDD=0
        !            33:        .I DIFRNW,$P($G(^DD(DIFRSDD,.01,0)),"^",2)["W" Q
        !            34:        .S @DIFRTA@(DIFRSDD)=DIFRVAL,DIFRSSDD=$O(^DD(DIFRSDD,"SB",0))
        !            35:        .I DIFRSSDD D SB(DIFRSDD,$G(DIFRFLG),DIFRTA,DIFRVAL)
        !            36:        .Q
        !            37:        Q
        !            38:        ;
        !            39: HDR2P(DIFRDD)  ;Header Node/2nd piece update
        !            40:        Q:$G(DIFRDD)'>0 ""
        !            41:        Q:'$D(^DIC(+DIFRDD,0,"GL")) "" S DIFRDD=$TR(DIFRDD_$P($P(@(^("GL")_"0)"),"^",2),+DIFRDD,2),"DPSVIs")
        !            42:        N DIFRDDT
        !            43:        I $O(^DD(+DIFRDD,0,"ID",0)) S DIFRDD=DIFRDD_"I"
        !            44:        I $D(^DD(+DIFRDD,0,"SCR")) S DIFRDD=DIFRDD_"s"
        !            45:        F DIFRDDT="D","P","S","V" I $P(^DD(+DIFRDD,.01,0),"^",2)[DIFRDDT S DIFRDD=DIFRDD_DIFRDDT Q
        !            46:        Q DIFRDD
        !            47:        ;
        !            48: EXAM(TA)       ;Examine what's in 2nd piece of data Header and put into array sub
        !            49:        ;TA=Target Array
        !            50:        Q:$G(TA)']""
        !            51:        N FN,GR,P2
        !            52:        S FN=0
        !            53:        F  S FN=$O(^DIC(FN)) Q:FN'>0  I $D(^DIC(FN,0,"GL")) S GR=^("GL") D
        !            54:        .Q:'$D(@(GR_"0)"))  S P2=$P(^(0),"^",2),P2=$P(P2,+P2,2)
        !            55:        .S:P2]"" @TA@(P2)=FN
        !            56:        .Q
        !            57:        Q
        !            58:        ;
        !            59: VAL(DIFRFILE,DIFRIEN)  ;Validate Edit and Print Template's and also Forms
        !            60:        S DIFRFILE=$G(DIFRFILE),DIFRIEN=$G(DIFRIEN)
        !            61:        Q:DIFRIEN'>0 0
        !            62:        N ROOT,PIECE,FILE
        !            63:        D
        !            64:        .N X
        !            65:        .S X=DIFRFILE
        !            66:        .I X=.4!(X=.402)!(X=.403)!(X=.404) Q
        !            67:        .S DIFRFILE=0
        !            68:        .Q
        !            69:        Q:DIFRFILE'>0 0
        !            70:        S ROOT="^"_$P($P(".4;DIPT^.402;DIE^.403;DIST(.403)^.404;DIST(.404)",DIFRFILE_";",2),"^")
        !            71:        S PIECE=$P($P(".4;4^.402;4^.403;8^.404;2",DIFRFILE_";",2),"^")
        !            72:        Q:'$D(@ROOT@(DIFRIEN,0)) 0
        !            73:        S FILE=$P(^(0),"^",PIECE)
        !            74:        I DIFRFILE=.404&('FILE) Q 1
        !            75:        Q:FILE'>0 0
        !            76:        I DIFRFILE=.403 N BLOCK D  Q:'BLOCK 0
        !            77:        .N PAGE,BLOCKP
        !            78:        .S PAGE=0,BLOCK=1
        !            79:        .F  S PAGE=$O(@ROOT@(DIFRIEN,40,PAGE)) Q:PAGE'>0  S BLOCKP=$P($G(^(PAGE,0)),"^",2) S:BLOCKP BLOCK=$$VAL(.404,BLOCKP) Q:'BLOCK  D  Q:'BLOCK
        !            80:        ..N M40
        !            81:        ..S M40=0
        !            82:        ..F  S M40=$O(@ROOT@(DIFRIEN,40,PAGE,40,M40)) Q:M40'>0  S BLOCK=$$VAL(.404,M40) Q:'BLOCK
        !            83:        ..Q
        !            84:        .Q
        !            85:        I DIFRFILE=.4,$P(@ROOT@(DIFRIEN,0),"^",8) Q 0
        !            86:        Q $D(^DD(FILE,0))#2

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