Annotation of freem_fileman/DIQGDD.m, revision 1.1
1.1 ! snw 1: DIQGDD ;SFISC/DCL-DATA DICTIONARY ATTRIBUTE RETRIEVER;01:52 PM 12 Sep 1994;
! 2: ;;21.0;VA FileMan;;Dec 28, 1994
! 3: ;Per VHA Directive 10-93-142, this routine should not be modified.
! 4: GET(DIQGR,DA,DR,DIQGPARM,DIQGETA,DIQGERRA,DIQGIPAR) ;
! 5: EN3 I $G(U)'="^" N U S U="^"
! 6: I $G(DIQGIPAR)'["A" K DIERR,^TMP("DIERR",$J)
! 7: I $G(DIQGR)'>0 N X S X(1)="FILE" Q $$F^DIQG(.X,1)
! 8: I $G(DA)']"" S DA=DIQGR,DIQGR=1 I '$D(^DIC(DA,0)) S X(1)="FILE" Q $$F^DIQG(.X,1)
! 9: S:DIQGR>1 DIQGPARM=$G(DIQGPARM)_"D"
! 10: I DA'?.N,$D(^DD(DIQGR,"B",DA)) S DA=$O(^(DA,"")) I $O(^(DA)) D 200 Q ""
! 11: I DA'>0 D 200 Q ""
! 12: I '$$VLDATRBT(DIQGR=1,$G(DR)) D 202("ATTRIBUTE") Q ""
! 13: I DR="FIELD LENGTH" Q $$FL^DIQGDDU(DIQGR,DA)
! 14: I DR="REQUIRED IDENTIFIERS" G RI^DIQGDDU
! 15: G DDENTRY^DIQG
! 16: ;
! 17: FILE(DIQGR,DR,DIQGPARM,DIQGTA,DIQGERRA,DIQGIPAR) ;
! 18: EN2 N DA
! 19: S DA=""
! 20: I '$G(DIQGR),$G(DIQGR)]"",$D(^DIC("B",DIQGR)) S DIQGR=$O(^(DIQGR,""))
! 21: G EN1
! 22: ;
! 23: FIELD(DIQGR,DA,DR,DIQGPARM,DIQGTA,DIQGERRA,DIQGIPAR) ;
! 24: EN1 N DIQGERR,DIQGEY,DIQGSAL,DIQGFNUL,DIQGSALX,DIQGTAXX
! 25: S DIQGEY(1)=$G(DIQGR)
! 26: I $G(U)'="^" N U S U="^"
! 27: I $G(DIQGIPAR)'["A" K DIERR,^TMP("DIERR",$J)
! 28: I $G(DIQGR)'>0 D 202("FILE") Q
! 29: I '$D(^DD(DIQGR,0)) D 202("FILE") Q
! 30: I $G(DA)']"" S DA=DIQGR,DIQGR=1 I '$D(^DIC(DA,0)) D 202("FILE") Q
! 31: I $G(DIQGTA)']"" D 202("TARGET ARRAY") Q
! 32: S DIQGPARM=$G(DIQGPARM)_$S(DIQGR>1:"D",1:""),DIQGFNUL=DIQGPARM["N"
! 33: I DA'?.N,$D(^DD(DIQGR,"B",DA)) S DA=$O(^(DA,"")) I $O(^(DA)) N X S X(1)=DA,X("FILE")=DIQGR D BLD^DIALOG(505,.X),FE Q
! 34: I DA'>0 S DIQGEY(3)=DA D 200 Q
! 35: I DIQGR>1,'$D(^DD(DIQGR,DA,0)) S DIQGEY(3)=DA D 200 Q
! 36: D BLDSAL(DIQGR=1,.DR,.DIQGSAL)
! 37: I '$D(DIQGSAL),'$D(DIERR) D 200 Q
! 38: I '$D(DIQGSAL) Q
! 39: S DIQGSAL="" F S DIQGSAL=$O(DIQGSAL(DIQGSAL)) Q:DIQGSAL="" D
! 40: .I DIQGR=1,DIQGSAL="REQUIRED IDENTIFIERS" D Q
! 41: ..N X
! 42: ..S X=$$RIF^DIQGDDU(DA,DIQGSAL,DIQGTA)
! 43: ..S:X]"" @DIQGTA@(DIQGSAL)=X
! 44: ..Q
! 45: .S DIQGTAXX=$S('$D(DIQGSAL(DIQGSAL,"#(word-processing)")):DIQGTA,1:$$OREF(DIQGTA)_$$Q(DIQGSAL)_")")
! 46: .I DIQGR>1,DIQGSAL="FIELD LENGTH" S DIQGSALX=$$FL^DIQGDDU(DIQGR,DA) G SET
! 47: .S DIQGSALX=$$GET^DIQG($S(DIQGR>1:"^DD("_DIQGR_",",1:"^DIC("),DA,DIQGSAL(DIQGSAL),DIQGPARM,DIQGTAXX,"","1A")
! 48: .;I $D(DIQGSAL(DIQGSAL,"#(word-processing)")) Q
! 49: SET .I DIQGSALX]"" S @DIQGTA@(DIQGSAL)=DIQGSALX Q
! 50: .Q:DIQGFNUL
! 51: .S @DIQGTA@(DIQGSAL)=DIQGSALX
! 52: .Q
! 53: Q
! 54: ;
! 55: BLDSAL(DIQGTYPE,DIQGDR,DIQGVALA) ;DIQGTYPE=1 for FILE and 0 for FIELD, DIQGDR=string/array, DIQGVALA=valid attribute list array
! 56: ; * If DIQGDR is an array pass by reference *
! 57: I $G(DIQGDR)="*" D LIST^DIQGDDT($S(DIQGTYPE=1:"FILETXT",1:"FIELDTXT"),.DIQGVALA,"",3) Q
! 58: N DIQGER,DIQGI,DIQGX,DIQGY D LIST^DIQGDDT($S(DIQGTYPE=1:"FILETXT",1:"FIELDTXT"),.DIQGX,"",3)
! 59: I $G(DIQGDR)]"" F DIQGI=1:1 S DIQGY=$P(DIQGDR,";",DIQGI) Q:DIQGY="" D
! 60: .I '$D(DIQGX(DIQGY)) S DIQGER(4)=DIQGY D 200 Q
! 61: .S DIQGVALA(DIQGY)=DIQGX(DIQGY) S:$D(DIQGX(DIQGY,"#(word-processing)")) DIQGVALA(DIQGY,"#(word-processing)")=DIQGX(DIQGY)
! 62: Q:$D(DIQGVALA)
! 63: S DIQGY="" F S DIQGY=$O(DIQGDR(DIQGY)) Q:DIQGY="" D
! 64: .I '$D(DIQGX(DIQGY)) S DIQGER(4)=DIQGY D 200 Q
! 65: .S DIQGVALA(DIQGY)=DIQGX(DIQGY) S:$D(DIQGX(DIQGY,"#(word-processing)")) DIQGVALA(DIQGY,"#(word-processing)")=DIQGX(DIQGY)
! 66: .Q
! 67: Q
! 68: ;
! 69: XDR(DIQGR,DR,DIQGERR) ;DIQGR DD FILE NUMBER EITHER 1 OR 0
! 70: ;DR IS DR STRING TO CONVERT TO NUMERIC DR STRING
! 71: S DIQGR=+$G(DIQGR),DR=$G(DR)
! 72: N I,X,XDR D LIST^DIQGDDT($S(DIQGR=1:"FILETXT",1:"FIELDTXT"),.X,4,3)
! 73: I $G(DR)]"" S (X,XDR)="" F I=1:1 S X=$P(DR,";",I) Q:X="" D
! 74: .I '$D(X(X)) S DIQGERR(X)="" Q
! 75: .S XDR=XDR_X(X)_";" Q
! 76: I $D(DR)>1 S (X,XDR)="" F S X=$O(DR(X)) Q:X="" D:'$D(X(X)) S:X]"" XDR=XDR_X(X)_";"
! 77: .I '$D(X(X)) S DIQGERR(X)="" Q
! 78: .S XDR=XDR_X(X)_";" Q
! 79: Q XDR
! 80: ;
! 81: VLDATRBT(TYPE,ATRIB) ;EXTRINSIC FUNCTION $$TEST IF VALID ATTRIBUTE
! 82: ;TYPE 0 OR 1 - FIELD=0, FILE=1 (^DD(0) OR ^DD(1))
! 83: ;ATRIB=ATTRIBUTE BEING REQUESTED
! 84: Q:ATRIB']"" 0
! 85: N X D LIST^DIQGDDT($S(TYPE=1:"FILETXT",1:"FIELDTXT"),.X)
! 86: Q $D(X(ATRIB))#2
! 87: DR(TYPE) ;TYPE=1,FILE OR 0,FIELD AND RETURNS DR STRING FOR ALL ATTRIBUTES IN INTERNAL FORM (ATTRIBUTE FIELD NUMBERS 3RD ;-PIECE
! 88: S TYPE=+$G(TYPE)
! 89: N X,Y
! 90: D LIST^DIQGDDT($S(TYPE=1:"FILETXT",1:"FIELDTXT"),.X,3)
! 91: S (X,Y)=.01 F S Y=$O(X(Y)) Q:Y'>0 S X=X_";"_Y
! 92: Q X
! 93: ;
! 94: FILELST(DIDARRAY) ;PASS TARGET ARRAY BY REFERENCE * * LIST FILE ATTRIBUTES * *
! 95: EN4 N EQL,TP,TYPE,DIQGDFLG
! 96: S TYPE="FILETXT",DIQGDFLG="L"
! 97: G ENLST^DIQGDDT
! 98: ;
! 99: FIELDLST(DIDARRAY) ;PASS TARGET ARRAY BY REFERENCE * * LIST FIELD ATTRIBUTES * *
! 100: EN5 N EQL,TP,TYPE,DIQGDFLG
! 101: S TYPE="FIELDTXT",DIQGDFLG="L"
! 102: G ENLST^DIQGDDT
! 103: ;
! 104: OREF(X) N X1,X2 S X1=$P(X,"(")_"(",X2=$$OR2($P(X,"(",2)) Q:X2="" X1 Q X1_X2_","
! 105: OR2(%) Q:%=")"!(%=",") "" Q:$L(%)=1 % S:"),"[$E(%,$L(%)) %=$E(%,1,$L(%)-1) Q %
! 106: Q(%Z) S %Z(%Z)="",%Z=$Q(%Z("")) Q $E(%Z,4,$L(%Z)-1)
! 107: 200 D BLD^DIALOG(200),FE Q
! 108: 202(E) N X S X(1)=E
! 109: D BLD^DIALOG(202,.X),FE
! 110: Q
! 111: FE I $G(DIQGERRA)]"" D CALLOUT^DIEFU(DIQGERRA)
! 112: Q
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>