Annotation of freem_fileman/DICU.m, revision 1.1

1.1     ! snw         1: DICU   ;SEA/TOAD-VA FileMan: Lookup Utilities ;10/13/94  11:50 ;
        !             2:        ;;21.0;VA FileMan;;Dec 28, 1994
        !             3:        ;Per VHA Directive 10-93-142, this routine should not be modified.
        !             4:        ;
        !             5:        
        !             6: REQIDS(DIFILE,DITARGET)        ;
        !             7:        ; return REQUIRED IDENTIFIERS file attribute
        !             8:        ; DIFILE = file#, DITARGET = target array
        !             9:        N DIATTRBT S DIATTRBT="REQUIRED IDENTIFIERS"
        !            10:        S @DITARGET@(DIATTRBT,.01)=""
        !            11:        N DIFIELD
        !            12:        S DIFIELD=0 F  S DIFIELD=$O(^DD(DIFILE,0,"ID",DIFIELD)) Q:'DIFIELD  D
        !            13:        . I $D(^DD(DIFILE,"RQ",DIFIELD)) S @DITARGET@(DIATTRBT,DIFIELD)=""
        !            14:        Q
        !            15:        
        !            16: RID(DIFILE)    ;
        !            17:        ; return a string listing a file's required identifiers
        !            18:        ; DIFILE = file#
        !            19:        N DILIST S DILIST=".01"
        !            20:        N DID S DID="" F  S DID=$O(^DD(DIFILE,0,"ID",DID)) Q:'DID  D
        !            21:        . I $D(^DD(DIFILE,"RQ",DID)) S DILIST=DILIST_U_DID
        !            22:        Q DILIST
        !            23:        
        !            24: RECALL(DIFILE,DIEN,DIUSER)     ;
        !            25: RECALLX        ;input from DILFD
        !            26:        ;ENTRY POINT--save a user's selection for use with space-bar recall
        !            27:        ;procedure, all passed by value
        !            28:        I '$D(DIQUIET) N DIQUIET S DIQUIET=1
        !            29:        I '$D(DIFM) N DIFM S DIFM=1 D INIZE^DIEFU
        !            30: 30     S DIFILE=$G(DIFILE)
        !            31:        I +DIFILE'=DIFILE!(DIFILE<0) D BLD^DIALOG(202,"file") Q
        !            32:        S DIEN=$G(DIEN) I DIEN="" S DIEN=","
        !            33:        I '$$IEN^DIDU1(DIEN) D BLD^DIALOG(202,"IEN string") Q
        !            34:        S DIUSER=+$G(DIUSER)
        !            35:        N DIOROOT,DIOUT S DIOUT=0 D  I DIOUT Q
        !            36:        . I '$D(^DD(DIFILE)) D  Q
        !            37:        . . S DIPE("FILE")=DIFILE
        !            38:        . . D BLD^DIALOG(401,.DIPE,.DIPE)
        !            39:        . . S DIOUT=1
        !            40: 32     . S DIOROOT=$$ROOT^DILFD(DIFILE,DIEN,"Q")
        !            41:        . I DIOROOT'?1"^"1U.7UN1"(".ANP,DIOROOT'?1"^%".7UN1"(".ANP D  Q
        !            42:        . . S DIPE("FILE")=DIFILE
        !            43:        . . S DIPE("ROOT")=DIOROOT
        !            44:        . . D BLD^DIALOG(402,.DIPE,.DIPE)
        !            45:        . . S DIOUT=1
        !            46:        S ^DISV(DIUSER,$E(DIOROOT,1,28))=$E(DIOROOT,29,$L(DIOROOT))_+DIEN
        !            47:        Q
        !            48:        ;
        !            49:        
        !            50: FILE(DIFILE,DIDA,DIFLAGS,DIROOT)       
        !            51:        ; entry point -- given a root, calculate the file # and DA
        !            52:        ; DO NOT USE UNTIL $QS & $QL AVAILABLE
        !            53:        N DIGLOBAL I $G(DIFLAGS)'["O" S DIGLOBAL=DIROOT
        !            54:        E  S DIGLOBAL=$$CREF^DIQGU(DIROOT),DIROOT=DIGLOBAL
        !            55:        S DIFILE=+$P($G(@DIGLOBAL@(0)),U,2),DIDA=""
        !            56:        N DA,DIENTRY S DA=1,DIENTRY=0
        !            57:        
        !            58: LOOP   N DICHAR,DIL,DILEAD,DIQL,DIQS,DIQSL F  D  Q:'DIQL
        !            59:        .
        !            60: STRIP  .
        !            61:        . ; S DIQL=$QL(DIGLOBAL) Q:'DIQL
        !            62:        . ; S DIQS=$QS(DIGLOBAL,DIQL)
        !            63:        . N DIQSL S DIQSL=$L(DIQS)+1 I +DIQS'=DIQS S DIQSL=DIQSL+2
        !            64:        . S DIL=$L(DIGLOBAL),DILEAD=DIL-DIQSL
        !            65:        . S $E(DIGLOBAL,DILEAD+1,DIL-1)=""
        !            66:        . S DICHAR=$E(DIGLOBAL,DILEAD)
        !            67:        . I DICHAR="," S $E(DIGLOBAL,DILEAD)=""
        !            68:        . E  I DICHAR="(" S $E(DIGLOBAL,DILEAD,DILEAD+1)=""
        !            69:        . E  S DIGLOBAL="ERROR:  "_DIGLOBAL,DIQL=0
        !            70:        .
        !            71: ENTRY  . I DIENTRY D
        !            72:        . . S DIFILE(DA)=+$P($G(@DIGLOBAL@(0)),U,2)
        !            73:        . . S DIROOT(DA)=DIGLOBAL
        !            74:        . . S DIDA(DA)=DIQS,DA=DA+1
        !            75:        . S DIENTRY='DIENTRY
        !            76:        Q

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