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

AZHLSCU9.m

Go to the documentation of this file.
  1. AZHLSCU9 ; IHS/ADC/GTH:KEU - UNDEF CHECKER. %INDEX SYNTAX CHECKER ;
  1. ;;5.0;AZHLSC;;JUL 10, 1996
  1. D PARSE S LI=0,AC=255 F %=0:0 S %=$O(LV(%)) Q:%'>0 S LI(%)=0
  1. Q
  1. ;LV is a set of Linked Values
  1. PARSE K LV,LI S (ERR,LI,PL,I)=0,(LL,LV)=1,(OP,CH)="",Q="""" ;D NEW S LL(LLO,8)=LL
  1. ;
  1. PA2 S I=I+1,CH=$E(STR,I) G:CH="" PEND
  1. G E:CH=";"!(CH'?1ANP) I """$()"[CH D QUOTE:CH=Q,FUNC:CH="$",DN:CH="(",UP:CH=")" G PA2
  1. I CH="^",I=LL G PA2:$E(STR,I+1)'="[" S I=I+1,X=$E(STR,LL,I) D ADD S LL=I+1 G PA2
  1. I CH?1A!(CH="%") D VAR G PA2
  1. I CH?1N D NUM G PA2
  1. S:"+-#'/*&![]<>?"[CH OP=CH I CH="?",",!"'[$E(STR,I-1) D AR,PAT G PA2
  1. D:CH?1P AR G PA2
  1. ;
  1. DN D STR S X=CH D ADD,NEW S LI(LV)=LI,LV=LV+1,PL=PL+1 S:'$D(LI(LV)) LI(LV)=0 S LI=LI(LV),LI(LV-1,1)=LI
  1. Q
  1. UP D STR S EC=LI-LI(LV-1,1),X=$C(10) D ADD,NEW S LI(LV)=LI,LV=LV-1,LI=LI(LV),PL=PL-1
  1. S X=EC D ADD S X=CH D ADD Q
  1. NEW S LL=I+1
  1. Q
  1. AR D STR S X=CH D ADD,NEW Q
  1. STR S X=$E(STR,LL,I-1) Q:X="" ;Drop into ADD
  1. ADD S LI=LI+1,LV(LV,LI)=X Q
  1. Q
  1. QUOTE F I=I+1:1 S CH=$E(STR,I) Q:CH=""!(CH=Q)
  1. I $E(STR,I+1)=Q S I=I+1 G QUOTE
  1. Q
  1. VAR F J=I+1:1 S CH=$E(STR,J) Q:CH'?1AN
  1. S I=J-1 Q
  1. NUM F J=I+1:1 S CH=$E(STR,J) Q:"0123456789."'[CH!(CH="")
  1. I CH="E" S CH=$E(STR,J+1) I CH?1N!("+-"[CH) S I=J G NUM
  1. S I=J-1 Q
  1. INC S I=I+1,CH=$E(STR,I)
  1. Q
  1. FUNC D INC S X=CH D VAR S S=$E(STR,LL,I),LL=I+1 G EXT:S["$$" G SPV:CH'="("
  1. S S=$E(S,2,9),F1=$F("ACDEFGJLNOPQRSTVZ",X),F1=$P($T(FNC),",",F1)
  1. S:$E(S,1,2)="TR" F1="TRANSLATE^2;3" S:$E(S,1,2)="FN" F1="FNUMBER^2;2"
  1. S X="$"_F1,CH="" D ADD Q
  1. SPV S X=S D ADD S CH=$E(S,2)
  1. EXT ;EXTRINSIC
  1. S X=S,CH="" D ADD
  1. E Q
  1. PAT F I=I+1:1 S CH=$E(STR,I) D PATQ:CH=Q I CH=""!(CH'?1N&("ACELNPU."'[CH)) Q
  1. S I=I-1 Q
  1. PATQ F I=I+1:1 S CH=$E(STR,I) Q:CH=""!(CH=Q)
  1. S I=I+1,CH=$E(STR,I) G:CH=Q PATQ Q
  1. PEND D AR
  1. Q
  1. Q
  1. FNC ;;,ASCII^1;2,CHAR^1;999,DATA^1;1,EXTRACT^1;3,FIND^2;3,GET^1;1,JUSTIFY^2;3,LENGTH^1;2,NEXT^1;1,ORDER^1;1,PIECE^2;4,QUERY^1;1,RANDOM^1;1,SELECT^1;999,TEXT^1;1,VIEW^1;999,
  1. TEST S STR="@^(0)" D AZHLSCU9