[641] | 1 | XBDHDF ; IHS/ADC/GTH - GETS FIELD INFO FOR HEADER LINE EDITOR ; [ 02/07/97 3:02 PM ]
|
---|
| 2 | ;;4.0;XB;;Jul 20, 2009;Build 2
|
---|
| 3 | ;
|
---|
| 4 | NEW ;
|
---|
| 5 | NEW XBDHXX,XBDHQUIT
|
---|
| 6 | VAR ;
|
---|
| 7 | S X=^TMP("XBDH",$J,"STACK",XBDHLIFO),XBDHDFN=$P(X,U),XBDHDFNA=$P(X,U,2),XBDHDSUB=$P(X,U,3),XBDHDPTH=$P(X,U,4)
|
---|
| 8 | KILL X
|
---|
| 9 | I $D(XBDHMFLG) KILL XBDHMFLG S Y="" G OK1
|
---|
| 10 | MORE ;
|
---|
| 11 | D PATH
|
---|
| 12 | GETFIELD ;
|
---|
| 13 | S Z=$J("",(XBDHLIFO*2)-2)_$S(XBDHCHN=1:"First",1:"Then")_" print "_$S(XBDHLIFO>1:(XBDHDFNA_" "),1:"")_XBDHDSUB_"field"
|
---|
| 14 | S A=""
|
---|
| 15 | I $D(XBDHMULT) S A=XBDHMULT,XBDHMFLG="" KILL XBDHMULT
|
---|
| 16 | S Z=Z_": "
|
---|
| 17 | I A]"" S Z=Z_A_"//"
|
---|
| 18 | W !,Z
|
---|
| 19 | R Y:DTIME
|
---|
| 20 | E S Y=U
|
---|
| 21 | I Y="" S Y=A
|
---|
| 22 | I Y="?" W !!,"Enter field name,number,computed expr.,MUMPS code,jump syntax or '??' for list",!! G GETFIELD
|
---|
| 23 | I Y="^" W !! Q
|
---|
| 24 | I Y="",XBDHCHN=1 W ! G GETFIELD
|
---|
| 25 | I Y="",XBDHLIFO=1 W !! Q
|
---|
| 26 | OK1 ;
|
---|
| 27 | I Y="" KILL ^TMP("XBDH",$J,"STACK",XBDHLIFO) S XBDHLIFO=XBDHLIFO-1,XBDHDPTH=$P(XBDHDPTH,";",1,XBDHLIFO)_";" W !!! G VAR
|
---|
| 28 | I Y?1"."1U,$E(Y,2)']$C(63+XBDHCHN) S XBDHECHN=($A($E(Y,2))-64) Q
|
---|
| 29 | S XBDHXX=Y
|
---|
| 30 | I $E(Y,$L(Y))=":" D ^XBDHDF1 G VAR:Y'=-1,OUT:A="^",GETFIELD
|
---|
| 31 | S DIC(0)="EZ",DIC="^DD(XBDHDFN,",X=Y
|
---|
| 32 | D ^DIC
|
---|
| 33 | I X="??" W !! G GETFIELD
|
---|
| 34 | I Y'=-1 D OK S X=$P(^DD(XBDHDFN,+Y,0),U,2) I X?1.9N1"."2N.E D MULTIPLE I Z="VAR" G VAR
|
---|
| 35 | I Y'=-1 Q
|
---|
| 36 | CKMUMPS ;
|
---|
| 37 | D ^DIM
|
---|
| 38 | I $D(X) W !,"MUMPS EXPRESSION ENTERED",!! D MUMPS G @X
|
---|
| 39 | CKM1 ;
|
---|
| 40 | S Y=XBDHXX
|
---|
| 41 | I $E(Y,$L(Y))'=":" D ^XBDHDF1 G VAR:Y'=-1,OUT:A="^"
|
---|
| 42 | D COMPUTED
|
---|
| 43 | G:$D(XBDHQUIT) OUT
|
---|
| 44 | W !
|
---|
| 45 | Q:$D(XBDHHDN)
|
---|
| 46 | G GETFIELD
|
---|
| 47 | ;
|
---|
| 48 | OK ;
|
---|
| 49 | S XBDHHDNO=+Y,XBDHHDN=$P(Y,U,2)
|
---|
| 50 | Q
|
---|
| 51 | ;
|
---|
| 52 | COMPUTED ;
|
---|
| 53 | I XBDHXX="NUMBER" S (XBDHHDN,XBDHHDNO)=XBDHXX KILL XBDHXX Q
|
---|
| 54 | S X=XBDHXX
|
---|
| 55 | D ^DIM
|
---|
| 56 | I $D(X) G C1
|
---|
| 57 | W !
|
---|
| 58 | S DIR(0)="YO",DIR("A")="This is a computed expression, right",DIR("B")="YES"
|
---|
| 59 | D ^DIR
|
---|
| 60 | KILL DIR
|
---|
| 61 | I Y=U W !! Q
|
---|
| 62 | I 'Y KILL Y,XBDHHDN W !,"SORRY, I DON'T UNDERSTAND THIS ENTRY...TRY AGAIN",!!,*7 Q
|
---|
| 63 | C1 ;
|
---|
| 64 | S XBDHHDN="",XBDHHDNO=XBDHXX
|
---|
| 65 | KILL XBDHXX
|
---|
| 66 | Q
|
---|
| 67 | ;
|
---|
| 68 | MUMPS ;
|
---|
| 69 | S %=1
|
---|
| 70 | W !,"DOES THIS MUMPS EXPRESSION REQUIRE A COLUMN HEADER"
|
---|
| 71 | D YN^DICN
|
---|
| 72 | I %Y=U S X="OUT" Q
|
---|
| 73 | I $E(%Y)'="N" W ! S X="CKM1" Q
|
---|
| 74 | F I=1:1 I '$D(^TMP("XBDH",$J,"HEADER",XBDHCHN,I)) S ^(I)=XBDHXX Q
|
---|
| 75 | S X="GETFIELD"
|
---|
| 76 | W !!!
|
---|
| 77 | Q
|
---|
| 78 | ;
|
---|
| 79 | MULTIPLE ;
|
---|
| 80 | S Z=^DD(+X,.01,0)
|
---|
| 81 | I $P(Z,U,2)["W" W " (word-processing)" Q
|
---|
| 82 | W " (multiple)"
|
---|
| 83 | S Z=$O(^DD(+X,0,"NM","")),XBDHLIFO=XBDHLIFO+1,XBDHDPTH=XBDHDPTH_Z_";"
|
---|
| 84 | S ^TMP("XBDH",$J,"STACK",XBDHLIFO)=+X_U_Z_U_"SUB-"_U_XBDHDPTH
|
---|
| 85 | S Z=$O(^DD(+X,.01))
|
---|
| 86 | S:Z'=+Z XBDHMULT=$P(^DD(+X,.01,0),U)
|
---|
| 87 | W !!
|
---|
| 88 | S Z="VAR"
|
---|
| 89 | Q
|
---|
| 90 | ;
|
---|
| 91 | PATH ;
|
---|
| 92 | NEW A,X,Y,Z
|
---|
| 93 | S X="CURRENTLY PRINTING FIELDS FROM THE ",A=0,Y=$L(XBDHDPTH,";")
|
---|
| 94 | I XBDHDPTH="" S X=X_"'"_XBDHPDNA_"'"_" FILE" G LINE
|
---|
| 95 | DECI ;
|
---|
| 96 | S Y=Y-1
|
---|
| 97 | G:Y=0 LAST
|
---|
| 98 | S A=A+1,Z=$P(XBDHDPTH,";",Y)
|
---|
| 99 | I A>1 S X=X_"OF THE "
|
---|
| 100 | I $E(Z,$L(Z))=":" S X=X_"'"_$P(^TMP("XBDH",$J,"STACK",XBDHLIFO),U,2)_"'"_" FILE" G LINE
|
---|
| 101 | S X=X_"'"_Z_"'"_" SUB-FILE "
|
---|
| 102 | G DECI
|
---|
| 103 | ;
|
---|
| 104 | LAST ;
|
---|
| 105 | I A S X=X_"OF THE "
|
---|
| 106 | S X=X_"'"_XBDHPDNA_"'"_" FILE"
|
---|
| 107 | LINE ;
|
---|
| 108 | W !!,X,!!
|
---|
| 109 | Q
|
---|
| 110 | ;
|
---|
| 111 | OUT ;
|
---|
| 112 | S Y="^"
|
---|
| 113 | Q
|
---|
| 114 | ;
|
---|
| 115 | NOTES ;
|
---|
| 116 | ; INTERPRETS THE ANSWER TO THE "THEN ENTER FIELD: " QUERY
|
---|
| 117 | ; INPUT = ^TMP("XBDH",$J,"STACK",XBDHLIFO) [XBDHDFN^XBDHDFNA^XBDHDSUB^XBDHDPTH],XBDHCHN,XBDHLIFO
|
---|
| 118 | ; OUTPUT = XBDHHDNO,XBDHHDN
|
---|
| 119 | ; IF FIELD IS A MULTIPLE, IT RESETS PATH AND LIFO AND ASKS FOR SUBFILE. IF ONLY .01 FIELD OF SUBFILE EXISTS, IT PROMPTS FOR IT.
|
---|
| 120 | ; ANY ANSWER IT CANT FIGURE OUT IS TREATED (AT LEAST TEMPORARILY) AS A COMPUTED FIELD
|
---|
| 121 | ; IF ANSWER IS A RELATIONAL JUMP (ie ENDS IN ':') IT CHECKS ITS LEGALITY,RESETS PATH AND LIFO.
|
---|
| 122 | ; MUMPS EXPRSSIONS ARE ATTACHED TO THE SUCCEEDING FIELD AS THE SUBSCRIPT ^TMP("XBDH",$J,"HEADER",X,Y) AND WILL FOLLOW THIS FIELD IF IT IS MOVED OR REMOVED
|
---|
| 123 | ; IF USER IS IN A SUBFILE OR JUMPED-TO FILE , PRESSING <CR> WILL MOVE HIM TO THE NEXT HIGHER LEVEL
|
---|