Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: XBDHDF

XBDHDF.m

Go to the documentation of this file.
  1. XBDHDF ; IHS/ADC/GTH - GETS FIELD INFO FOR HEADER LINE EDITOR ; [ 02/07/97 3:02 PM ]
  1. ;;3.0;IHS/VA UTILITIES;;FEB 07, 1997
  1. ;
  1. NEW ;
  1. NEW XBDHXX,XBDHQUIT
  1. VAR ;
  1. 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)
  1. KILL X
  1. I $D(XBDHMFLG) KILL XBDHMFLG S Y="" G OK1
  1. MORE ;
  1. D PATH
  1. GETFIELD ;
  1. S Z=$J("",(XBDHLIFO*2)-2)_$S(XBDHCHN=1:"First",1:"Then")_" print "_$S(XBDHLIFO>1:(XBDHDFNA_" "),1:"")_XBDHDSUB_"field"
  1. S A=""
  1. I $D(XBDHMULT) S A=XBDHMULT,XBDHMFLG="" KILL XBDHMULT
  1. S Z=Z_": "
  1. I A]"" S Z=Z_A_"//"
  1. W !,Z
  1. R Y:DTIME
  1. E S Y=U
  1. I Y="" S Y=A
  1. I Y="?" W !!,"Enter field name,number,computed expr.,MUMPS code,jump syntax or '??' for list",!! G GETFIELD
  1. I Y="^" W !! Q
  1. I Y="",XBDHCHN=1 W ! G GETFIELD
  1. I Y="",XBDHLIFO=1 W !! Q
  1. OK1 ;
  1. I Y="" KILL ^TMP("XBDH",$J,"STACK",XBDHLIFO) S XBDHLIFO=XBDHLIFO-1,XBDHDPTH=$P(XBDHDPTH,";",1,XBDHLIFO)_";" W !!! G VAR
  1. I Y?1"."1U,$E(Y,2)']$C(63+XBDHCHN) S XBDHECHN=($A($E(Y,2))-64) Q
  1. S XBDHXX=Y
  1. I $E(Y,$L(Y))=":" D ^XBDHDF1 G VAR:Y'=-1,OUT:A="^",GETFIELD
  1. S DIC(0)="EZ",DIC="^DD(XBDHDFN,",X=Y
  1. D ^DIC
  1. I X="??" W !! G GETFIELD
  1. 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
  1. I Y'=-1 Q
  1. CKMUMPS ;
  1. D ^DIM
  1. I $D(X) W !,"MUMPS EXPRESSION ENTERED",!! D MUMPS G @X
  1. CKM1 ;
  1. S Y=XBDHXX
  1. I $E(Y,$L(Y))'=":" D ^XBDHDF1 G VAR:Y'=-1,OUT:A="^"
  1. D COMPUTED
  1. G:$D(XBDHQUIT) OUT
  1. W !
  1. Q:$D(XBDHHDN)
  1. G GETFIELD
  1. ;
  1. OK ;
  1. S XBDHHDNO=+Y,XBDHHDN=$P(Y,U,2)
  1. Q
  1. ;
  1. COMPUTED ;
  1. I XBDHXX="NUMBER" S (XBDHHDN,XBDHHDNO)=XBDHXX KILL XBDHXX Q
  1. S X=XBDHXX
  1. D ^DIM
  1. I $D(X) G C1
  1. W !
  1. S DIR(0)="YO",DIR("A")="This is a computed expression, right",DIR("B")="YES"
  1. D ^DIR
  1. KILL DIR
  1. I Y=U W !! Q
  1. I 'Y KILL Y,XBDHHDN W !,"SORRY, I DON'T UNDERSTAND THIS ENTRY...TRY AGAIN",!!,*7 Q
  1. C1 ;
  1. S XBDHHDN="",XBDHHDNO=XBDHXX
  1. KILL XBDHXX
  1. Q
  1. ;
  1. MUMPS ;
  1. S %=1
  1. W !,"DOES THIS MUMPS EXPRESSION REQUIRE A COLUMN HEADER"
  1. D YN^DICN
  1. I %Y=U S X="OUT" Q
  1. I $E(%Y)'="N" W ! S X="CKM1" Q
  1. F I=1:1 I '$D(^TMP("XBDH",$J,"HEADER",XBDHCHN,I)) S ^(I)=XBDHXX Q
  1. S X="GETFIELD"
  1. W !!!
  1. Q
  1. ;
  1. MULTIPLE ;
  1. S Z=^DD(+X,.01,0)
  1. I $P(Z,U,2)["W" W " (word-processing)" Q
  1. W " (multiple)"
  1. S Z=$O(^DD(+X,0,"NM","")),XBDHLIFO=XBDHLIFO+1,XBDHDPTH=XBDHDPTH_Z_";"
  1. S ^TMP("XBDH",$J,"STACK",XBDHLIFO)=+X_U_Z_U_"SUB-"_U_XBDHDPTH
  1. S Z=$O(^DD(+X,.01))
  1. S:Z'=+Z XBDHMULT=$P(^DD(+X,.01,0),U)
  1. W !!
  1. S Z="VAR"
  1. Q
  1. ;
  1. PATH ;
  1. NEW A,X,Y,Z
  1. S X="CURRENTLY PRINTING FIELDS FROM THE ",A=0,Y=$L(XBDHDPTH,";")
  1. I XBDHDPTH="" S X=X_"'"_XBDHPDNA_"'"_" FILE" G LINE
  1. DECI ;
  1. S Y=Y-1
  1. G:Y=0 LAST
  1. S A=A+1,Z=$P(XBDHDPTH,";",Y)
  1. I A>1 S X=X_"OF THE "
  1. I $E(Z,$L(Z))=":" S X=X_"'"_$P(^TMP("XBDH",$J,"STACK",XBDHLIFO),U,2)_"'"_" FILE" G LINE
  1. S X=X_"'"_Z_"'"_" SUB-FILE "
  1. G DECI
  1. ;
  1. LAST ;
  1. I A S X=X_"OF THE "
  1. S X=X_"'"_XBDHPDNA_"'"_" FILE"
  1. LINE ;
  1. W !!,X,!!
  1. Q
  1. ;
  1. OUT ;
  1. S Y="^"
  1. Q
  1. ;
  1. NOTES ;
  1. ; INTERPRETS THE ANSWER TO THE "THEN ENTER FIELD: " QUERY
  1. ; INPUT = ^TMP("XBDH",$J,"STACK",XBDHLIFO) [XBDHDFN^XBDHDFNA^XBDHDSUB^XBDHDPTH],XBDHCHN,XBDHLIFO
  1. ; OUTPUT = XBDHHDNO,XBDHHDN
  1. ; 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.
  1. ; ANY ANSWER IT CANT FIGURE OUT IS TREATED (AT LEAST TEMPORARILY) AS A COMPUTED FIELD
  1. ; IF ANSWER IS A RELATIONAL JUMP (ie ENDS IN ':') IT CHECKS ITS LEGALITY,RESETS PATH AND LIFO.
  1. ; 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
  1. ; IF USER IS IN A SUBFILE OR JUMPED-TO FILE , PRESSING <CR> WILL MOVE HIM TO THE NEXT HIGHER LEVEL