BHLU ; cmi/flag/maw - BHL Utilities ; [ 04/19/2004 10:42 AM ]
;;3.01;BHL IHS Interfaces with GIS;**2,10,11,12,13,14,15,16**;OCT 15, 2002
;
;this routine will have callable utilites by the BHL Package
;
DIE ;-- generic DIE call from BHL package
K DIE,DR
I BHLVAL="""""" S BHLVAL="@"
Q:BHLVAL="" ;don't update data with a null value
S DIE=BHLFL,DR=BHLFLD_"///"_BHLVAL,DA=BHLX
D ^DIE
I $D(Y) S BHLERCD="GEN" S BHLEFL=BHLFL X BHLERR
K DIE,DR
Q
;
DIE4 ;-- generic DIE call from BHL package
K DIE,DR
I BHLVAL="""""" S BHLVAL="@"
Q:BHLVAL="" ;don't update data with a null value
S DIE=BHLFL,DR=BHLFLD_"////"_BHLVAL,DA=BHLX
D ^DIE
I $D(Y) S BHLERCD="GEN" S BHLEFL=BHLFL X BHLERR
K DIE,DR
Q
;
DIEM ;-- generic die call for multiples
S DIE=BHLFL,DA(1)=BHLX,DA=BHLVAL,DR=BHLFLD_"///"_BHLVAL2
D ^DIE
I $D(Y) S BHLERCD="GEN",BHLEFL=BHLFL2,BHLFLD=BHLFLD X BHLERR
K DIE,DR
Q
;
DIC(BHLFL,BHLVAL) ;EP - generic dic call
S DIC=BHLFL,DIC(0)="MXZ",X=BHLVAL D ^DIC
S BHLY=+Y
Q BHLY
;
FK ;EP - kill fileman variables
K DD,DO,DIC,DIE,DR,Y,DIR
Q
;
ST(ST) ;-- transform into state
I ST="" Q ST
S NST=$$VAL^XBDIQ1(5,ST,1)
Q NST
;
CHKPAT(BHLPT,BHLDUZ) ;EP - lookup the patient
I '$G(BHLDUZ) S BHLDUZ=DUZ(2)
S BHLXDA=0 F S BHLXDA=$O(^AUPNPAT("D",BHLPT,BHLXDA)) Q:'BHLXDA!($G(BHLPAT)) D
. S BHLYDA=0 F S BHLYDA=$O(^AUPNPAT("D",BHLPT,BHLXDA,BHLYDA)) Q:'BHLYDA!($G(BHLPAT)) I BHLYDA=BHLDUZ S BHLPAT=BHLXDA
I $G(BHLPAT) Q BHLPAT
Q ""
;
CHKDOB(BHLDOBC) ;EP - check the date of birth and sex for identifier
S BHLDOB2=$P($G(^DPT(BHLDOBC,0)),U,3)
I BHLDOB2'=BHLDOB S BHLERCD="NODOBM" X BHLERR S BHLPAT="" Q BHLPAT
S BHLSEX2=$P($G(^DPT(BHLDOBC,0)),U,2)
I BHLSEX2'=BHLSEX S BHLERCD="NOSEXM" X BHLERR S BHLPAT="" Q BHLPAT
S BHLPAT=BHLDOBC
Q BHLPAT
Q
;
CHAR ;-- set field sep and encoding characters for a message
S DIC="^INTHL7M(",DIC(0)="AEMQZ"
S DIC("A")="Set Characters for which message: "
D ^DIC
Q:Y<0
S BHL("MSG")=+Y
D CHARUP(BHL("MSG"))
Q
;
CHARUP(BHLMIEN) ;EP - update field sep and enc chars for hl7
I $P($G(^INTHL7M(BHLMIEN,0)),U)["HL" D Q
. S ^INTHL7M(BHLMIEN,"FS")="|"
. S ^INTHL7M(BHLMIEN,"EC")="^~\&"
I $P($G(^INTHL7M(BHLMIEN,0)),U)="X1" S ^INTHL7M(BHLMIEN,"FS")="*"
Q
;
COMPILE(MSG) ;EP - compile a message
S Y=MSG,INGALL=1 D EN^INHSGZ
Q
;
COMPILEP(NS) ;EP - compile msgs by namespace
S BHLNDA=0 F S BHLNDA=$O(^INTHL7M("B",BHLNDA)) Q:BHLNDA="" D
. Q:BHLNDA'[NS
. S BHLNIEN=0 F S BHLNIEN=$O(^INTHL7M("B",BHLNDA,BHLNIEN)) Q:'BHLNIEN D
.. S Y=BHLNIEN,INGALL=1
.. D EN^INHSGZ
Q
;
HFS(BHLHFSN,BHLUIEN) ;EP - saves message to host file
S Y=$$OPEN^%ZISH("D:\TEMP\",BHLHFSN_"."_BHLMSTD,"W")
U IO
I BHLMSTD="X12" D
. S BHLUDA=0 F S BHLUDA=$O(^INTHU(BHLUIEN,3,BHLUDA)) Q:'BHLUDA D
.. S BHLXR=$P($G(^INTHU(BHLUIEN,3,BHLUDA,0)),"|CR|")
.. I $G(BHLXR)["~" W BHLXR Q
.. W BHLXR_"~"
I BHLMSTD'="X12" D
. S BHLUDA=0 F S BHLUDA=$O(^INTHU(BHLUIEN,3,BHLUDA)) Q:'BHLUDA D
.. W $P($G(^INTHU(BHLUIEN,3,BHLUDA,0)),"|CR|"),!
D ^%ZISC
Q
;
HFSA(DEST,BHLHDIR,BHLHFNM) ;EP - export from this destination
HFSDW ;-- callable from Data Warehouse
F BHLJOB="FORMAT CONTROLLER","OUTPUT CONTROLLER" D
. S BHLY=$$CHK^BHLBCK(BHLJOB)
Q:'$D(^INLHDEST(DEST))
S Y=$$OPEN^%ZISH(BHLHDIR,BHLHFNM,"W")
Q:Y
S BHLH=0 F S BHLH=$O(^INLHDEST(DEST,0,BHLH)) Q:'BHLH D
. S BHLU=0 F S BHLU=$O(^INLHDEST(DEST,0,BHLH,BHLU)) Q:'BHLU D
.. D LPINTHU(BHLU)
.. K ^INLHDEST(DEST,0,BHLH,BHLU)
D ^%ZISC
Q
;
HFSRL(DEST,BHLHDIR,BHLHFNM) ;EP - export from this destination
F BHLJOB="FORMAT CONTROLLER","OUTPUT CONTROLLER" D
. S BHLY=$$CHK^BHLBCK(BHLJOB)
S Y=$$OPEN^%ZISH(BHLHDIR,BHLHFNM,"W")
Q:Y
S BHLH=0 F S BHLH=$O(^INLHDEST(DEST,0,BHLH)) Q:'BHLH D
. S BHLU=0 F S BHLU=$O(^INLHDEST(DEST,0,BHLH,BHLU)) Q:'BHLU D
.. D RLINTHU(BHLU)
.. K ^INLHDEST(DEST,0,BHLH,BHLU)
D ^%ZISC
Q
;
LPINTHU(BHLUIEN) ;EP - loop through UIF and set to file
S BHLUDA=0 F S BHLUDA=$O(^INTHU(BHLUIEN,3,BHLUDA)) Q:'BHLUDA D
. U IO W $P($G(^INTHU(BHLUIEN,3,BHLUDA,0)),"|CR|"),!
Q
;
RLINTHU(BHLUIEN) ;EP - loop through UIF and set to file for ref lab
S BHLUDA=0 F S BHLUDA=$O(^INTHU(BHLUIEN,3,BHLUDA)) Q:'BHLUDA D
. ;U IO W $P($G(^INTHU(BHLUIEN,3,BHLUDA,0)),"|CR|"),$C(13,10)
. ;U IO W $P($G(^INTHU(BHLUIEN,3,BHLUDA,0)),"|CR|"),$C(10) quest old
. U IO W $P($G(^INTHU(BHLUIEN,3,BHLUDA,0)),"|CR|"),! ;quest new
Q
;
SENDFILE(FNM,SDIR,IP,PASS) ;EP - this will trigger a send via the sendto command, sendto.pl must exist
S BHLOPS=$P($G(^AUTTSITE(1,0)),U,21)
I PASS["anonymous" D Q
. S BHLSEND="sendto -i"_$S(BHLOPS=1:" ",1:" -a ")_IP_" "_SDIR_FNM
. S X=$$JOBWAIT^%HOSTCMD(BHLSEND)
S BHLSEND="sendto -i -l "_PASS_$S(BHLOPS=1:" ",1:" -a ")_IP_" "_SDIR_FNM
;S BHLSEND="sendto1 -u -l "_PASS_$S(BHLOPS=1:" ",1:" -a ")_IP_" "_SDIR_FNM ;for loinc project
S X=$$JOBWAIT^%HOSTCMD(BHLSEND)
Q
;
MPORT ;EP - run the import package utility
I $O(^INXPORT(""))="" D Q
. W !,"Global ^INXPORT missing, please restore and run MPORT^BHLU"
S BHLIT=$O(^INXPORT(""))
S BHLIST=$O(^INXPORT(BHLIT,""))
S BHLIPK=$O(^INXPORT(BHLIT,BHLIST,""))
W !,"Importing GIS "_$G(BHLIT)_" Supplement "_$G(BHLIPK)
W ", developing site "_$G(BHLIST)
D ^INMPORT
W !,"Finished Importing GIS Supplement "
K BHLIT,BHLIST,BHLIPK
Q
;
STUFFO(DEST,STOR) ;--loop through stor and stuff into ^INTHU
D NOW^%DTC S BHLXDTM=$G(%)
S BHLXH=$H
S BHLXDEST=$O(^INRHD("B","X1 IHS "_DEST,0))
S BHLXSTAT="N"
S BHLXIO="O"
S BHLXPRIO=1
K DD,DO
S DIC="^INTHU(",DIC(0)="L",X=BHLXDTM
S DIC("DR")=".02////"_BHLXDEST_";.03////"_BHLXSTAT_";.1////"_BHLXIO
S DIC("DR")=DIC("DR")_";.16///"_BHLXPRIO
D FILE^DICN
S BHLXUIF=+Y
S BHLXDA=0 F S BHLXDA=$O(@STOR@(BHLXDA)) Q:'BHLXDA D
. K DIC,DD,DO
. S DIC="^INTHU("_BHLXUIF_",3,",DIC(0)="L"
. S DIC("P")=$P(^DD(4001,3,0),"",2)
. S DA(1)=BHLXUIF,X=$G(@STOR@(BHLXDA))_"|CR|"
. Q:X=""
. D FILE^DICN
K ^INTHU(BHLXUIF,3,"B") ;don't need b index on msg multiple
S ^INLHDEST(BHLXDEST,BHLXPRIO,BHLXH,BHLXUIF)=""
Q
;
EOJ ;-- kill variables and quit
Q
;
BHLU ; cmi/flag/maw - BHL Utilities ; [ 04/19/2004 10:42 AM ]
+1 ;;3.01;BHL IHS Interfaces with GIS;**2,10,11,12,13,14,15,16**;OCT 15, 2002
+2 ;
+3 ;this routine will have callable utilites by the BHL Package
+4 ;
DIE ;-- generic DIE call from BHL package
+1 KILL DIE,DR
+2 IF BHLVAL=""""""
SET BHLVAL="@"
+3 ;don't update data with a null value
IF BHLVAL=""
QUIT
+4 SET DIE=BHLFL
SET DR=BHLFLD_"///"_BHLVAL
SET DA=BHLX
+5 DO ^DIE
+6 IF $DATA(Y)
SET BHLERCD="GEN"
SET BHLEFL=BHLFL
XECUTE BHLERR
+7 KILL DIE,DR
+8 QUIT
+9 ;
DIE4 ;-- generic DIE call from BHL package
+1 KILL DIE,DR
+2 IF BHLVAL=""""""
SET BHLVAL="@"
+3 ;don't update data with a null value
IF BHLVAL=""
QUIT
+4 SET DIE=BHLFL
SET DR=BHLFLD_"////"_BHLVAL
SET DA=BHLX
+5 DO ^DIE
+6 IF $DATA(Y)
SET BHLERCD="GEN"
SET BHLEFL=BHLFL
XECUTE BHLERR
+7 KILL DIE,DR
+8 QUIT
+9 ;
DIEM ;-- generic die call for multiples
+1 SET DIE=BHLFL
SET DA(1)=BHLX
SET DA=BHLVAL
SET DR=BHLFLD_"///"_BHLVAL2
+2 DO ^DIE
+3 IF $DATA(Y)
SET BHLERCD="GEN"
SET BHLEFL=BHLFL2
SET BHLFLD=BHLFLD
XECUTE BHLERR
+4 KILL DIE,DR
+5 QUIT
+6 ;
DIC(BHLFL,BHLVAL) ;EP - generic dic call
+1 SET DIC=BHLFL
SET DIC(0)="MXZ"
SET X=BHLVAL
DO ^DIC
+2 SET BHLY=+Y
+3 QUIT BHLY
+4 ;
FK ;EP - kill fileman variables
+1 KILL DD,DO,DIC,DIE,DR,Y,DIR
+2 QUIT
+3 ;
ST(ST) ;-- transform into state
+1 IF ST=""
QUIT ST
+2 SET NST=$$VAL^XBDIQ1(5,ST,1)
+3 QUIT NST
+4 ;
CHKPAT(BHLPT,BHLDUZ) ;EP - lookup the patient
+1 IF '$GET(BHLDUZ)
SET BHLDUZ=DUZ(2)
+2 SET BHLXDA=0
FOR
SET BHLXDA=$ORDER(^AUPNPAT("D",BHLPT,BHLXDA))
IF 'BHLXDA!($GET(BHLPAT))
QUIT
Begin DoDot:1
+3 SET BHLYDA=0
FOR
SET BHLYDA=$ORDER(^AUPNPAT("D",BHLPT,BHLXDA,BHLYDA))
IF 'BHLYDA!($GET(BHLPAT))
QUIT
IF BHLYDA=BHLDUZ
SET BHLPAT=BHLXDA
End DoDot:1
+4 IF $GET(BHLPAT)
QUIT BHLPAT
+5 QUIT ""
+6 ;
CHKDOB(BHLDOBC) ;EP - check the date of birth and sex for identifier
+1 SET BHLDOB2=$PIECE($GET(^DPT(BHLDOBC,0)),U,3)
+2 IF BHLDOB2'=BHLDOB
SET BHLERCD="NODOBM"
XECUTE BHLERR
SET BHLPAT=""
QUIT BHLPAT
+3 SET BHLSEX2=$PIECE($GET(^DPT(BHLDOBC,0)),U,2)
+4 IF BHLSEX2'=BHLSEX
SET BHLERCD="NOSEXM"
XECUTE BHLERR
SET BHLPAT=""
QUIT BHLPAT
+5 SET BHLPAT=BHLDOBC
+6 QUIT BHLPAT
+7 QUIT
+8 ;
CHAR ;-- set field sep and encoding characters for a message
+1 SET DIC="^INTHL7M("
SET DIC(0)="AEMQZ"
+2 SET DIC("A")="Set Characters for which message: "
+3 DO ^DIC
+4 IF Y<0
QUIT
+5 SET BHL("MSG")=+Y
+6 DO CHARUP(BHL("MSG"))
+7 QUIT
+8 ;
CHARUP(BHLMIEN) ;EP - update field sep and enc chars for hl7
+1 IF $PIECE($GET(^INTHL7M(BHLMIEN,0)),U)["HL"
Begin DoDot:1
+2 SET ^INTHL7M(BHLMIEN,"FS")="|"
+3 SET ^INTHL7M(BHLMIEN,"EC")="^~\&"
End DoDot:1
QUIT
+4 IF $PIECE($GET(^INTHL7M(BHLMIEN,0)),U)="X1"
SET ^INTHL7M(BHLMIEN,"FS")="*"
+5 QUIT
+6 ;
COMPILE(MSG) ;EP - compile a message
+1 SET Y=MSG
SET INGALL=1
DO EN^INHSGZ
+2 QUIT
+3 ;
COMPILEP(NS) ;EP - compile msgs by namespace
+1 SET BHLNDA=0
FOR
SET BHLNDA=$ORDER(^INTHL7M("B",BHLNDA))
IF BHLNDA=""
QUIT
Begin DoDot:1
+2 IF BHLNDA'[NS
QUIT
+3 SET BHLNIEN=0
FOR
SET BHLNIEN=$ORDER(^INTHL7M("B",BHLNDA,BHLNIEN))
IF 'BHLNIEN
QUIT
Begin DoDot:2
+4 SET Y=BHLNIEN
SET INGALL=1
+5 DO EN^INHSGZ
End DoDot:2
End DoDot:1
+6 QUIT
+7 ;
HFS(BHLHFSN,BHLUIEN) ;EP - saves message to host file
+1 SET Y=$$OPEN^%ZISH("D:\TEMP\",BHLHFSN_"."_BHLMSTD,"W")
+2 USE IO
+3 IF BHLMSTD="X12"
Begin DoDot:1
+4 SET BHLUDA=0
FOR
SET BHLUDA=$ORDER(^INTHU(BHLUIEN,3,BHLUDA))
IF 'BHLUDA
QUIT
Begin DoDot:2
+5 SET BHLXR=$PIECE($GET(^INTHU(BHLUIEN,3,BHLUDA,0)),"|CR|")
+6 IF $GET(BHLXR)["~"
WRITE BHLXR
QUIT
+7 WRITE BHLXR_"~"
End DoDot:2
End DoDot:1
+8 IF BHLMSTD'="X12"
Begin DoDot:1
+9 SET BHLUDA=0
FOR
SET BHLUDA=$ORDER(^INTHU(BHLUIEN,3,BHLUDA))
IF 'BHLUDA
QUIT
Begin DoDot:2
+10 WRITE $PIECE($GET(^INTHU(BHLUIEN,3,BHLUDA,0)),"|CR|"),!
End DoDot:2
End DoDot:1
+11 DO ^%ZISC
+12 QUIT
+13 ;
HFSA(DEST,BHLHDIR,BHLHFNM) ;EP - export from this destination
HFSDW ;-- callable from Data Warehouse
+1 FOR BHLJOB="FORMAT CONTROLLER","OUTPUT CONTROLLER"
Begin DoDot:1
+2 SET BHLY=$$CHK^BHLBCK(BHLJOB)
End DoDot:1
+3 IF '$DATA(^INLHDEST(DEST))
QUIT
+4 SET Y=$$OPEN^%ZISH(BHLHDIR,BHLHFNM,"W")
+5 IF Y
QUIT
+6 SET BHLH=0
FOR
SET BHLH=$ORDER(^INLHDEST(DEST,0,BHLH))
IF 'BHLH
QUIT
Begin DoDot:1
+7 SET BHLU=0
FOR
SET BHLU=$ORDER(^INLHDEST(DEST,0,BHLH,BHLU))
IF 'BHLU
QUIT
Begin DoDot:2
+8 DO LPINTHU(BHLU)
+9 KILL ^INLHDEST(DEST,0,BHLH,BHLU)
End DoDot:2
End DoDot:1
+10 DO ^%ZISC
+11 QUIT
+12 ;
HFSRL(DEST,BHLHDIR,BHLHFNM) ;EP - export from this destination
+1 FOR BHLJOB="FORMAT CONTROLLER","OUTPUT CONTROLLER"
Begin DoDot:1
+2 SET BHLY=$$CHK^BHLBCK(BHLJOB)
End DoDot:1
+3 SET Y=$$OPEN^%ZISH(BHLHDIR,BHLHFNM,"W")
+4 IF Y
QUIT
+5 SET BHLH=0
FOR
SET BHLH=$ORDER(^INLHDEST(DEST,0,BHLH))
IF 'BHLH
QUIT
Begin DoDot:1
+6 SET BHLU=0
FOR
SET BHLU=$ORDER(^INLHDEST(DEST,0,BHLH,BHLU))
IF 'BHLU
QUIT
Begin DoDot:2
+7 DO RLINTHU(BHLU)
+8 KILL ^INLHDEST(DEST,0,BHLH,BHLU)
End DoDot:2
End DoDot:1
+9 DO ^%ZISC
+10 QUIT
+11 ;
LPINTHU(BHLUIEN) ;EP - loop through UIF and set to file
+1 SET BHLUDA=0
FOR
SET BHLUDA=$ORDER(^INTHU(BHLUIEN,3,BHLUDA))
IF 'BHLUDA
QUIT
Begin DoDot:1
+2 USE IO
WRITE $PIECE($GET(^INTHU(BHLUIEN,3,BHLUDA,0)),"|CR|"),!
End DoDot:1
+3 QUIT
+4 ;
RLINTHU(BHLUIEN) ;EP - loop through UIF and set to file for ref lab
+1 SET BHLUDA=0
FOR
SET BHLUDA=$ORDER(^INTHU(BHLUIEN,3,BHLUDA))
IF 'BHLUDA
QUIT
Begin DoDot:1
+2 ;U IO W $P($G(^INTHU(BHLUIEN,3,BHLUDA,0)),"|CR|"),$C(13,10)
+3 ;U IO W $P($G(^INTHU(BHLUIEN,3,BHLUDA,0)),"|CR|"),$C(10) quest old
+4 ;quest new
USE IO
WRITE $PIECE($GET(^INTHU(BHLUIEN,3,BHLUDA,0)),"|CR|"),!
End DoDot:1
+5 QUIT
+6 ;
SENDFILE(FNM,SDIR,IP,PASS) ;EP - this will trigger a send via the sendto command, sendto.pl must exist
+1 SET BHLOPS=$PIECE($GET(^AUTTSITE(1,0)),U,21)
+2 IF PASS["anonymous"
Begin DoDot:1
+3 SET BHLSEND="sendto -i"_$SELECT(BHLOPS=1:" ",1:" -a ")_IP_" "_SDIR_FNM
+4 SET X=$$JOBWAIT^%HOSTCMD(BHLSEND)
End DoDot:1
QUIT
+5 SET BHLSEND="sendto -i -l "_PASS_$SELECT(BHLOPS=1:" ",1:" -a ")_IP_" "_SDIR_FNM
+6 ;S BHLSEND="sendto1 -u -l "_PASS_$S(BHLOPS=1:" ",1:" -a ")_IP_" "_SDIR_FNM ;for loinc project
+7 SET X=$$JOBWAIT^%HOSTCMD(BHLSEND)
+8 QUIT
+9 ;
MPORT ;EP - run the import package utility
+1 IF $ORDER(^INXPORT(""))=""
Begin DoDot:1
+2 WRITE !,"Global ^INXPORT missing, please restore and run MPORT^BHLU"
End DoDot:1
QUIT
+3 SET BHLIT=$ORDER(^INXPORT(""))
+4 SET BHLIST=$ORDER(^INXPORT(BHLIT,""))
+5 SET BHLIPK=$ORDER(^INXPORT(BHLIT,BHLIST,""))
+6 WRITE !,"Importing GIS "_$GET(BHLIT)_" Supplement "_$GET(BHLIPK)
+7 WRITE ", developing site "_$GET(BHLIST)
+8 DO ^INMPORT
+9 WRITE !,"Finished Importing GIS Supplement "
+10 KILL BHLIT,BHLIST,BHLIPK
+11 QUIT
+12 ;
STUFFO(DEST,STOR) ;--loop through stor and stuff into ^INTHU
+1 DO NOW^%DTC
SET BHLXDTM=$GET(%)
+2 SET BHLXH=$HOROLOG
+3 SET BHLXDEST=$ORDER(^INRHD("B","X1 IHS "_DEST,0))
+4 SET BHLXSTAT="N"
+5 SET BHLXIO="O"
+6 SET BHLXPRIO=1
+7 KILL DD,DO
+8 SET DIC="^INTHU("
SET DIC(0)="L"
SET X=BHLXDTM
+9 SET DIC("DR")=".02////"_BHLXDEST_";.03////"_BHLXSTAT_";.1////"_BHLXIO
+10 SET DIC("DR")=DIC("DR")_";.16///"_BHLXPRIO
+11 DO FILE^DICN
+12 SET BHLXUIF=+Y
+13 SET BHLXDA=0
FOR
SET BHLXDA=$ORDER(@STOR@(BHLXDA))
IF 'BHLXDA
QUIT
Begin DoDot:1
+14 KILL DIC,DD,DO
+15 SET DIC="^INTHU("_BHLXUIF_",3,"
SET DIC(0)="L"
+16 SET DIC("P")=$PIECE(^DD(4001,3,0),"",2)
+17 SET DA(1)=BHLXUIF
SET X=$GET(@STOR@(BHLXDA))_"|CR|"
+18 IF X=""
QUIT
+19 DO FILE^DICN
End DoDot:1
+20 ;don't need b index on msg multiple
KILL ^INTHU(BHLXUIF,3,"B")
+21 SET ^INLHDEST(BHLXDEST,BHLXPRIO,BHLXH,BHLXUIF)=""
+22 QUIT
+23 ;
EOJ ;-- kill variables and quit
+1 QUIT
+2 ;