INHSZ21 ;JSH,DGH; 20 Dec 1999 09:35 ;INHSZ2 continued outbound msg; 19 Dec 91  1:00PM 
 ;;3.01;BHL IHS Interfaces with GIS;;JUL 01, 2001
 ;COPYRIGHT 1991-2000 SAIC
 ;CHCS TOOLS_460; GEN 10; 23-JUL-1997
 ;COPYRIGHT 1988, 1989, 1990 SAIC
 ;Changes needed for X12, NOT for NCPDP after redesign.
L G L^INHSZ1
 ;
DELIM ;Set delimiter character
 N %1 S %1=$$LBTB^UTIL($P(LINE,"=",2))
 I MODE="I" D DELI G DELQ
 Q:'$$SYNTAX^INHSZ0($P(LINE,COMM,2,99),"."" ""1""=""."" ""1"""""""".E.""""""""")
 S A=" S DELIM="""_$P($P(%1,"""",2),"""")_"""" D L
DELQ S DELIM=1,DICOMPX("DELIM")=""""_$P($P(%1,"""",2),"""")_""""
 Q
DELI ;INPUT mode version of delimiter set.
 N DICOMPX S DICOMPX("DATA")="$$GL^INHOU(UIF,LCT)",X=%1 D DICOMP(.X)
 I '$D(X) D ERROR^INHSZ0("Invalid expression to set the DELIMITER.",1) Q
 S A=" "_X_" S DELIM=X K DXS" D L Q
 ;
SUBDELIM ;set subdelimiter character
 N %1 S %1=$$LBTB^UTIL($P(LINE,"=",2))
 I MODE="I" D SUBI G SUBQ
 Q:'$$SYNTAX^INHSZ0($P(LINE,COMM,2,99),"."" ""1""=""."" ""1"""""""".E1""""""""")
 S A=" S SUBDELIM="""_$P($P(%1,"""",2),"""")_"""" D L
SUBQ S SUBDELIM=1,DICOMPX("SUBDELIM")=""""_$P($P(%1,"""",2),"""")_""""
 Q
SUBI ;INPUT mode version of subdelimiter set
 N DICOMPX S DICOMPX("DATA")="$$GL^INHOU(UIF,LCT)",X=%1 D DICOMP(.X)
 I '$D(X) D ERROR^INHSZ0("Invalid expression to set the SUBDELIMITER.",1) Q
 S A=" "_X_" S SUBDELIM=X K DXS S INDELIMS=DELIM_$P(Y(1),DELIM,2)" D L
 Q
 ;
SET ;SET statement
 I MODE="I" D ERROR^INHSZ0("SET statement allow in Output scripts only.",1) Q
 Q:'$$SYNTAX^INHSZ0($$LB^UTIL($P(LINE,COMM,2,99)),"."" ""1.ANP1""=""1.E")
 N %1,I,J,V,X,INXFRM,INCONV
 S V=$$LBTB^UTIL($P($P(LINE,"SET",2),"="))
 S A=" ;"_LINE D L
 S X=$$LB^UTIL($P(LINE,"=",2)) S:X X="#"_X
 ;Following replaces old INSGX function
 I $E(X,1,5)="INSGX" S INXFRM=$P(X,"\",2),INCONV=$P(X,"\",3),LEN=$P(X,"\",4),X=$P(X,"\",5,99)
 S DICOMPX=""
 D ATSET(X),DICOMP(.X,0,1)
 I FILE="",$P(DICOMPX,U)=0 K X
 I '$D(X) D ERROR^INHSZ0("Invalid expression in SET statement.",1) Q
 S A=" S D0=INDA "_X D L
 ;To replace INSGX function create another line in compiled code which
 ;will execute the transform or the conversion.
 I ($L($G(INXFRM))!$L($G(INCONV))) D
 .I $L($G(INXFRM)) S A=" S X1="""_INXFRM_""" X:$L($G(@X1)) $G(@X1)"
 .S A=A_" S X=$E(X,1,"_LEN_")"
 .I $L($G(INCONV)) S A=A_" S X1="""_INCONV_""" X:$L($G(@X1)) $G(@X1)"
 .D L
 S A=" S @INV@("""_V_""")=X K DXS,D0" D L S SET(V)="",DICOMPX(V)="@INV@("""_V_""")"
 Q
 ;
IF ;IF statement
 Q:'$$SYNTAX^INHSZ0($P(LINE,COMM,2,99),"1."" ""1.ANP")
 N I,J,DA,DQI,X,Q,D0,%1 S D0=0
 S A=" ;"_LINE D L
 S (%1,X)=$$LBTB^UTIL($P(LINE," ",2,999))
 D ATSET(X),DICOMP(.X)
 G:'$D(X) IFM
 I Y'["B" D ERROR^INHSZ0("Expression is not Boolean in structure.",1) Q
 S:X["D0" D0=1
 I MODE="I",SECT'="STORE",D0 D ERROR^INHSZ0("Expression involves a file entry which is not yet determined.",1) Q
 S A=" "_X_" K DXS,D0 I X" D L
IFQ S IF=IF+1,A=" D:$T" D L,DOWN^INHSZ1("I") Q
 ;
IFM ;IF may be MUMPS code
 S X="I "_%1 D ^DIM I '$D(X) D ERROR^INHSZ0("Expression INVALID.",1) Q
 S A=" "_X D L G IFQ
 ;
ENDIF ;end of an IF block
 I 'IF D ERROR^INHSZ0("No active IF to end.",0) Q
 I $P(INDS(DOTLVL),U)'="I" D ERROR^INHSZ0("Misplaced ENDIF",0) Q
 S IF=IF-1 D UP^INHSZ1 Q
 ;
DICOMP(X,%N,%W) ;Run DICOMP to evaluate expression
 ;X= expression to evaluate (pass by reference)
 ;If %N=1 then DICOMPX will not be used
 ;If %W=1 then WP fields may be specified - first line will be used
 N %,V,V1,I,J,DICOMP,DS,DL,DE,DICMX,INOLDX N:$G(%N) DICOMPX
 S:$G(%W) DICMX="S INX=$P(X,""|CR|"") Q "
 S DA="DXS(",DQI="Y(",DICOMP="",I(0)="^"_$P(FILE,U,2),J(0)=+FILE,DICOMP="",INOLDX=X
 D ^DICOMP I '$D(X) D  Q:'$D(X)
 .  Q:$G(MODE)="I"   ;Don't double check inbound scripts
 .  S %=$P($G(^DIC(+FILE,0)),U,1) S:'$L(%) %=$P($G(^DD(+FILE,0)),U,1)
 .  W *7,!!,"Ambiguity in the following expression:"
 .  W !,"Current base file: ",%," (#",+FILE,")",!,"Expression:  ",INOLDX,!
 .  S X=INOLDX,DICOMP="?" D ^DICOMP S DICOMP=""
 .  W !,"Ambiguity ",$S($D(X):"",1:"NOT "),"resolved.",!
 F I=0:0 S I=$O(X(I)) Q:'I  S:X(I)["D0" D0=1 S A=" S DXS("_I_")="""_$$REPLACE^UTIL(X(I),"""","""""")_"""" D L
 S:Y["w"!(Y["l") X="K INX "_X_" S X=$G(INX)"
 Q
 ;
ATSET(X) ;Set DICOMPX array for any @variables in the code
 ;X = code to process
 N Q,I,J
 S Q=0 F I=1:1:$L(X) D
 . I $E(X,I)="""" S Q='Q Q
 . Q:$E(X,I)'="@"
 . F J=I+1:1 Q:$E(X,J)'?1AN
 . S DICOMPX($E(X,I,J-1))="$G(INA("""_$E(X,I+1,J-1)_""""_$G(WHSUB)_"))",I=J
 Q
 ;
WHILE ;WHILE loop initiate 
 N %E I $D(LINE)>9 D ERROR^INHSZ0("Line too long.",1)
 S %E=$$LBTB^UTIL($P(LINE,"WHILE",2,99))
 S:$P(%E," ")="~REQUIRED~" %E=$$LBTB^UTIL($P(LINE,"~REQUIRED~",2,99))
 I '$L(%E) D ERROR^INHSZ0("Condition missing from WHILE statement.",1) Q
 G:MODE="O" WHILE^INHSZ20
 S X="I "_%E D ^DIM I '$D(X) D ERROR^INHSZ0("Condition not valid.",1) Q
 S A=" ;"_LINE D L S WHILE=WHILE+1
 I $P(LINE," ",1,2)="WHILE ~REQUIRED~" S A=" I $P($$GL^INHOU(UIF,LCT),DELIM)'="_$P(%E,"=",2)_" Q:'$$CHECKSEG^INHOU("_$P(%E,"=",2)_",1,"_WHILE_")"_$S(WHILE>1:"",1:" 2") D L
 S A=" S INI("_WHILE_")=1 F  "_$S(MODE="I":"S DATA=$$GL^INHOU(UIF,LCT) Q:'$$CHECKSEG^INHOU("_$P(%E,"=",2)_",0,"_WHILE_")",1:"Q:'("_%E_")")_"  D  S INI("_WHILE_")=INI("_WHILE_")+1" D L
 D DOWN^INHSZ1("W")
 S WHSUB=WHSUB_",INI("_WHILE_")"
 Q
 ;
ENDWHILE ;End of while loop
 I 'DOTLVL D ERROR^INHSZ0("No active WHILE to end.",1) Q
 I $P(INDS(DOTLVL),U)'="W" D ERROR^INHSZ0("Misplaced ENDWHILE.",1) Q
 G:MODE="O" ENDWHILE^INHSZ20
 S WHILE=WHILE-1 D UP^INHSZ1 S WHSUB=$P(WHSUB,",",1,WHILE+1) S:'WHILE WHSUB=""
 Q
 ;
GROUP ;Initiate a GROUP
 I $P(LINE,COMM,2)]"" D WARN^INHSZ0("Characters after GROUP ignored.",1)
 S A=" ;Start of GROUP" D L
 S A=" F  S MATCH=0 D  Q:'MATCH" D L
 D DOWN^INHSZ1("G") S GROUP=1 Q
 ;
ENDGROUP ;End of group
 I 'DOTLVL D ERROR^INHSZ0("No active GROUP to end.",1) Q
 I $P(INDS(DOTLVL),U)'="G" D ERROR^INHSZ0("Misplaced ENDGROUP.",1) Q
 D UP^INHSZ1 S GROUP=0 Q
 ;
ERROR ;ERROR command
 Q:'$$SYNTAX^INHSZ0($P(LINE,COMM,2),"."" ""1""=""."" ""1""""""""1.ANP1""""""""."" "".1"";""."" "".1N")
 N M,T
 S M=$$LBTB^UTIL($P($P(LINE,"=",2),";"))
 S T=$$LBTB^UTIL($P(LINE,";",2))
 I T]"",$L(T)>1!("12"'[T) D ERROR^INHSZ0("Illegal error type '"_T_"' in ERROR statement.",1) Q
 S:T="" T=2
 S A=" D ERROR^INHS("_M_","_T_")" D L
 Q
 ;
BHLMIEN ;Set Message IEN
 N %1 S %1=$$LBTB^UTIL($P(LINE,"=",2))
 Q:'$$SYNTAX^INHSZ0($P(LINE,COMM,2,99),"."" ""1""=""."" ""1"""""""".E.""""""""")
 S A=" S BHLMIEN="""_$P($P(%1,"""",2),"""")_"""" D L
 S BHLMIEN=1,DICOMPX("BHLMIEN")=""""_$P($P(%1,"""",2),"""")_""""
 Q
INHSZ21   ;JSH,DGH; 20 Dec 1999 09:35 ;INHSZ2 continued outbound msg; 19 Dec 91  1:00PM 
 +1       ;;3.01;BHL IHS Interfaces with GIS;;JUL 01, 2001
 +2       ;COPYRIGHT 1991-2000 SAIC
 +3       ;CHCS TOOLS_460; GEN 10; 23-JUL-1997
 +4       ;COPYRIGHT 1988, 1989, 1990 SAIC
 +5       ;Changes needed for X12, NOT for NCPDP after redesign.
L          GOTO L^INHSZ1
 +1       ;
DELIM     ;Set delimiter character
 +1        NEW %1
           SET %1=$$LBTB^UTIL($PIECE(LINE,"=",2))
 +2        IF MODE="I"
               DO DELI
               GOTO DELQ
 +3        IF '$$SYNTAX^INHSZ0($PIECE(LINE,COMM,2,99),"."" ""1""=""."" ""1"""""""".E.""""""""")
               QUIT 
 +4        SET A=" S DELIM="""_$PIECE($PIECE(%1,"""",2),"""")_""""
           DO L
DELQ       SET DELIM=1
           SET DICOMPX("DELIM")=""""_$PIECE($PIECE(%1,"""",2),"""")_""""
 +1        QUIT 
DELI      ;INPUT mode version of delimiter set.
 +1        NEW DICOMPX
           SET DICOMPX("DATA")="$$GL^INHOU(UIF,LCT)"
           SET X=%1
           DO DICOMP(.X)
 +2        IF '$DATA(X)
               DO ERROR^INHSZ0("Invalid expression to set the DELIMITER.",1)
               QUIT 
 +3        SET A=" "_X_" S DELIM=X K DXS"
           DO L
           QUIT 
 +4       ;
SUBDELIM  ;set subdelimiter character
 +1        NEW %1
           SET %1=$$LBTB^UTIL($PIECE(LINE,"=",2))
 +2        IF MODE="I"
               DO SUBI
               GOTO SUBQ
 +3        IF '$$SYNTAX^INHSZ0($PIECE(LINE,COMM,2,99),"."" ""1""=""."" ""1"""""""".E1""""""""")
               QUIT 
 +4        SET A=" S SUBDELIM="""_$PIECE($PIECE(%1,"""",2),"""")_""""
           DO L
SUBQ       SET SUBDELIM=1
           SET DICOMPX("SUBDELIM")=""""_$PIECE($PIECE(%1,"""",2),"""")_""""
 +1        QUIT 
SUBI      ;INPUT mode version of subdelimiter set
 +1        NEW DICOMPX
           SET DICOMPX("DATA")="$$GL^INHOU(UIF,LCT)"
           SET X=%1
           DO DICOMP(.X)
 +2        IF '$DATA(X)
               DO ERROR^INHSZ0("Invalid expression to set the SUBDELIMITER.",1)
               QUIT 
 +3        SET A=" "_X_" S SUBDELIM=X K DXS S INDELIMS=DELIM_$P(Y(1),DELIM,2)"
           DO L
 +4        QUIT 
 +5       ;
SET       ;SET statement
 +1        IF MODE="I"
               DO ERROR^INHSZ0("SET statement allow in Output scripts only.",1)
               QUIT 
 +2        IF '$$SYNTAX^INHSZ0($$LB^UTIL($PIECE(LINE,COMM,2,99)),"."" ""1.ANP1""=""1.E")
               QUIT 
 +3        NEW %1,I,J,V,X,INXFRM,INCONV
 +4        SET V=$$LBTB^UTIL($PIECE($PIECE(LINE,"SET",2),"="))
 +5        SET A=" ;"_LINE
           DO L
 +6        SET X=$$LB^UTIL($PIECE(LINE,"=",2))
           IF X
               SET X="#"_X
 +7       ;Following replaces old INSGX function
 +8        IF $EXTRACT(X,1,5)="INSGX"
               SET INXFRM=$PIECE(X,"\",2)
               SET INCONV=$PIECE(X,"\",3)
               SET LEN=$PIECE(X,"\",4)
               SET X=$PIECE(X,"\",5,99)
 +9        SET DICOMPX=""
 +10       DO ATSET(X)
           DO DICOMP(.X,0,1)
 +11       IF FILE=""
               IF $PIECE(DICOMPX,U)=0
                   KILL X
 +12       IF '$DATA(X)
               DO ERROR^INHSZ0("Invalid expression in SET statement.",1)
               QUIT 
 +13       SET A=" S D0=INDA "_X
           DO L
 +14      ;To replace INSGX function create another line in compiled code which
 +15      ;will execute the transform or the conversion.
 +16       IF ($LENGTH($GET(INXFRM))!$LENGTH($GET(INCONV)))
               Begin DoDot:1
 +17               IF $LENGTH($GET(INXFRM))
                       SET A=" S X1="""_INXFRM_""" X:$L($G(@X1)) $G(@X1)"
 +18               SET A=A_" S X=$E(X,1,"_LEN_")"
 +19               IF $LENGTH($GET(INCONV))
                       SET A=A_" S X1="""_INCONV_""" X:$L($G(@X1)) $G(@X1)"
 +20               DO L
               End DoDot:1
 +21       SET A=" S @INV@("""_V_""")=X K DXS,D0"
           DO L
           SET SET(V)=""
           SET DICOMPX(V)="@INV@("""_V_""")"
 +22       QUIT 
 +23      ;
IF        ;IF statement
 +1        IF '$$SYNTAX^INHSZ0($PIECE(LINE,COMM,2,99),"1."" ""1.ANP")
               QUIT 
 +2        NEW I,J,DA,DQI,X,Q,D0,%1
           SET D0=0
 +3        SET A=" ;"_LINE
           DO L
 +4        SET (%1,X)=$$LBTB^UTIL($PIECE(LINE," ",2,999))
 +5        DO ATSET(X)
           DO DICOMP(.X)
 +6        IF '$DATA(X)
               GOTO IFM
 +7        IF Y'["B"
               DO ERROR^INHSZ0("Expression is not Boolean in structure.",1)
               QUIT 
 +8        IF X["D0"
               SET D0=1
 +9        IF MODE="I"
               IF SECT'="STORE"
                   IF D0
                       DO ERROR^INHSZ0("Expression involves a file entry which is not yet determined.",1)
                       QUIT 
 +10       SET A=" "_X_" K DXS,D0 I X"
           DO L
IFQ        SET IF=IF+1
           SET A=" D:$T"
           DO L
           DO DOWN^INHSZ1("I")
           QUIT 
 +1       ;
IFM       ;IF may be MUMPS code
 +1        SET X="I "_%1
           DO ^DIM
           IF '$DATA(X)
               DO ERROR^INHSZ0("Expression INVALID.",1)
               QUIT 
 +2        SET A=" "_X
           DO L
           GOTO IFQ
 +3       ;
ENDIF     ;end of an IF block
 +1        IF 'IF
               DO ERROR^INHSZ0("No active IF to end.",0)
               QUIT 
 +2        IF $PIECE(INDS(DOTLVL),U)'="I"
               DO ERROR^INHSZ0("Misplaced ENDIF",0)
               QUIT 
 +3        SET IF=IF-1
           DO UP^INHSZ1
           QUIT 
 +4       ;
DICOMP(X,%N,%W) ;Run DICOMP to evaluate expression
 +1       ;X= expression to evaluate (pass by reference)
 +2       ;If %N=1 then DICOMPX will not be used
 +3       ;If %W=1 then WP fields may be specified - first line will be used
 +4        NEW %,V,V1,I,J,DICOMP,DS,DL,DE,DICMX,INOLDX
           IF $GET(%N)
               NEW DICOMPX
 +5        IF $GET(%W)
               SET DICMX="S INX=$P(X,""|CR|"") Q "
 +6        SET DA="DXS("
           SET DQI="Y("
           SET DICOMP=""
           SET I(0)="^"_$PIECE(FILE,U,2)
           SET J(0)=+FILE
           SET DICOMP=""
           SET INOLDX=X
 +7        DO ^DICOMP
           IF '$DATA(X)
               Begin DoDot:1
 +8       ;Don't double check inbound scripts
                   IF $GET(MODE)="I"
                       QUIT 
 +9                SET %=$PIECE($GET(^DIC(+FILE,0)),U,1)
                   IF '$LENGTH(%)
                       SET %=$PIECE($GET(^DD(+FILE,0)),U,1)
 +10               WRITE *7,!!,"Ambiguity in the following expression:"
 +11               WRITE !,"Current base file: ",%," (#",+FILE,")",!,"Expression:  ",INOLDX,!
 +12               SET X=INOLDX
                   SET DICOMP="?"
                   DO ^DICOMP
                   SET DICOMP=""
 +13               WRITE !,"Ambiguity ",$SELECT($DATA(X):"",1:"NOT "),"resolved.",!
               End DoDot:1
               IF '$DATA(X)
                   QUIT 
 +14       FOR I=0:0
               SET I=$ORDER(X(I))
               IF 'I
                   QUIT 
               IF X(I)["D0"
                   SET D0=1
               SET A=" S DXS("_I_")="""_$$REPLACE^UTIL(X(I),"""","""""")_""""
               DO L
 +15       IF Y["w"!(Y["l")
               SET X="K INX "_X_" S X=$G(INX)"
 +16       QUIT 
 +17      ;
ATSET(X)  ;Set DICOMPX array for any @variables in the code
 +1       ;X = code to process
 +2        NEW Q,I,J
 +3        SET Q=0
           FOR I=1:1:$LENGTH(X)
               Begin DoDot:1
 +4                IF $EXTRACT(X,I)=""""
                       SET Q='Q
                       QUIT 
 +5                IF $EXTRACT(X,I)'="@"
                       QUIT 
 +6                FOR J=I+1:1
                       IF $EXTRACT(X,J)'?1AN
                           QUIT 
 +7                SET DICOMPX($EXTRACT(X,I,J-1))="$G(INA("""_$EXTRACT(X,I+1,J-1)_""""_$GET(WHSUB)_"))"
                   SET I=J
               End DoDot:1
 +8        QUIT 
 +9       ;
WHILE     ;WHILE loop initiate 
 +1        NEW %E
           IF $DATA(LINE)>9
               DO ERROR^INHSZ0("Line too long.",1)
 +2        SET %E=$$LBTB^UTIL($PIECE(LINE,"WHILE",2,99))
 +3        IF $PIECE(%E," ")="~REQUIRED~"
               SET %E=$$LBTB^UTIL($PIECE(LINE,"~REQUIRED~",2,99))
 +4        IF '$LENGTH(%E)
               DO ERROR^INHSZ0("Condition missing from WHILE statement.",1)
               QUIT 
 +5        IF MODE="O"
               GOTO WHILE^INHSZ20
 +6        SET X="I "_%E
           DO ^DIM
           IF '$DATA(X)
               DO ERROR^INHSZ0("Condition not valid.",1)
               QUIT 
 +7        SET A=" ;"_LINE
           DO L
           SET WHILE=WHILE+1
 +8        IF $PIECE(LINE," ",1,2)="WHILE ~REQUIRED~"
               SET A=" I $P($$GL^INHOU(UIF,LCT),DELIM)'="_$PIECE(%E,"=",2)_" Q:'$$CHECKSEG^INHOU("_$PIECE(%E,"=",2)_",1,"_WHILE_")"_$SELECT(WHILE>1:"",1:" 2")
               DO L
 +9        SET A=" S INI("_WHILE_")=1 F  "_$SELECT(MODE="I":"S DATA=$$GL^INHOU(UIF,LCT) Q:'$$CHECKSEG^INHOU("_$PIECE(%E,"=",2)_",0,"_WHILE_")",1:"Q:'("_%E_")")_"  D  S INI("_WHILE_")=INI("_WHILE_")+1"
           DO L
 +10       DO DOWN^INHSZ1("W")
 +11       SET WHSUB=WHSUB_",INI("_WHILE_")"
 +12       QUIT 
 +13      ;
ENDWHILE  ;End of while loop
 +1        IF 'DOTLVL
               DO ERROR^INHSZ0("No active WHILE to end.",1)
               QUIT 
 +2        IF $PIECE(INDS(DOTLVL),U)'="W"
               DO ERROR^INHSZ0("Misplaced ENDWHILE.",1)
               QUIT 
 +3        IF MODE="O"
               GOTO ENDWHILE^INHSZ20
 +4        SET WHILE=WHILE-1
           DO UP^INHSZ1
           SET WHSUB=$PIECE(WHSUB,",",1,WHILE+1)
           IF 'WHILE
               SET WHSUB=""
 +5        QUIT 
 +6       ;
GROUP     ;Initiate a GROUP
 +1        IF $PIECE(LINE,COMM,2)]""
               DO WARN^INHSZ0("Characters after GROUP ignored.",1)
 +2        SET A=" ;Start of GROUP"
           DO L
 +3        SET A=" F  S MATCH=0 D  Q:'MATCH"
           DO L
 +4        DO DOWN^INHSZ1("G")
           SET GROUP=1
           QUIT 
 +5       ;
ENDGROUP  ;End of group
 +1        IF 'DOTLVL
               DO ERROR^INHSZ0("No active GROUP to end.",1)
               QUIT 
 +2        IF $PIECE(INDS(DOTLVL),U)'="G"
               DO ERROR^INHSZ0("Misplaced ENDGROUP.",1)
               QUIT 
 +3        DO UP^INHSZ1
           SET GROUP=0
           QUIT 
 +4       ;
ERROR     ;ERROR command
 +1        IF '$$SYNTAX^INHSZ0($PIECE(LINE,COMM,2),"."" ""1""=""."" ""1""""""""1.ANP1""""""""."" "".1"";""."" "".1N")
               QUIT 
 +2        NEW M,T
 +3        SET M=$$LBTB^UTIL($PIECE($PIECE(LINE,"=",2),";"))
 +4        SET T=$$LBTB^UTIL($PIECE(LINE,";",2))
 +5        IF T]""
               IF $LENGTH(T)>1!("12"'[T)
                   DO ERROR^INHSZ0("Illegal error type '"_T_"' in ERROR statement.",1)
                   QUIT 
 +6        IF T=""
               SET T=2
 +7        SET A=" D ERROR^INHS("_M_","_T_")"
           DO L
 +8        QUIT 
 +9       ;
BHLMIEN   ;Set Message IEN
 +1        NEW %1
           SET %1=$$LBTB^UTIL($PIECE(LINE,"=",2))
 +2        IF '$$SYNTAX^INHSZ0($PIECE(LINE,COMM,2,99),"."" ""1""=""."" ""1"""""""".E.""""""""")
               QUIT 
 +3        SET A=" S BHLMIEN="""_$PIECE($PIECE(%1,"""",2),"""")_""""
           DO L
 +4        SET BHLMIEN=1
           SET DICOMPX("BHLMIEN")=""""_$PIECE($PIECE(%1,"""",2),"""")_""""
 +5        QUIT