PRCVVMF ;WOIFO/DAP-DYNAMED VENDOR UPDATE HL7 MESSAGING ROUTINE; 03/02/05
;;5.1;IFCAP;**81**;Oct 20,2000
;Per VHA Directive 10-93-142, this routine should not be modified.
;
Q
;
EN(PRCVVN) ;Entry point for API Call
I $$GET^XPAR("SYS","PRCV COTS INVENTORY",1,"Q")'=1 Q
I $D(PRCVVN)=0 Q
N HLA
S PRCVCNT=0,PRCVERG=0
D HDRBLD
I PRCVERG=1 K PRCVERG Q
;
D MSGBLD
;
S PRCVDP=""
D GENERATE^HLMA(PRCVPRO,"LM",1,.PRCVDP)
I +$P(PRCVDP,"^",2) S PRCVERR(1)="Error generating message through VistA HL7 package for Vendor Update involving vendor # "_PRCVVN D CLIFP
;
K ^TMP("PRCVNDR",$J,PRCVVN)
;
D FIN
K PRCVERG
;
Q
;
HDRBLD ;Generate message header, MFI Segment
;
K HL S PRCVPRO="PRCV_IFCAP_04_EV_VEND_UPD"
D INIT^HLFNC2(PRCVPRO,.HL)
I $G(HL) S PRCVERR(1)="Error generating message through VistA HL7 package for Vendor Update involving vendor # "_PRCVVN D CLIFP D FIN Q
;
S PRCVCS=$E(HL("ECH")),PRCVRS=$E(HL("ECH"),2),PRCVSS=$E(HL("ECH"),4),PRCVFS=HL("FS")
;
;PRCVDT Transaction Date/Time w/offset
D NOW^%DTC
S PRCVDT=$$FMTHL7^XLFDT(%)
;
;Build MFI Segment
S PRCVCNT=PRCVCNT+1
S HLA("HLS",PRCVCNT)="MFI"_PRCVFS_"OME"_PRCVFS_"440"_PRCVCS_"VENDOR"_PRCVFS_"UPD"_PRCVFS_PRCVDT_PRCVFS_PRCVFS_"AL"
;
Q
;
MSGBLD ;Build Message Body
;
;PRCVNM Vendor Name
S PRCVNM=$P(^TMP("PRCVNDR",$J,PRCVVN,0),"^",1)
;Address Fields - HL7 String Conversions
S PRCV1="C",PRCV2=HL("FS")_HL("ECH")
;PRCVAD1 Address 1
S PRCVAD1=$P(^TMP("PRCVNDR",$J,PRCVVN,0),"^",2)
I PRCVAD1'="" D
. S PRCVAD1=$$CONV^PRCVUTSC(PRCVAD1,PRCV1,PRCV2)
. Q
;PRCVAD2 Address 2
S PRCVAD2=$P(^TMP("PRCVNDR",$J,PRCVVN,0),"^",3)
I PRCVAD2'="" D
. S PRCVAD2=$$CONV^PRCVUTSC(PRCVAD2,PRCV1,PRCV2)
. Q
;PRCVAD3 Address 3
S PRCVAD3=$P(^TMP("PRCVNDR",$J,PRCVVN,0),"^",4)
I PRCVAD3'="" D
. S PRCVAD3=$$CONV^PRCVUTSC(PRCVAD3,PRCV1,PRCV2)
. Q
;PRCVAD4 Address 4
S PRCVAD4=$P(^TMP("PRCVNDR",$J,PRCVVN,0),"^",5)
I PRCVAD4'="" D
. S PRCVAD4=$$CONV^PRCVUTSC(PRCVAD4,PRCV1,PRCV2)
. Q
;PRCVCT City
S PRCVCT=$P(^TMP("PRCVNDR",$J,PRCVVN,0),"^",6)
;PRCVST State
S PRCVST=$P(^TMP("PRCVNDR",$J,PRCVVN,0),"^",7)
;PRCVZP Zip Code
S PRCVZP=$P(^TMP("PRCVNDR",$J,PRCVVN,0),"^",8)
;PRCVCPS Contact Person
S PRCVCPS=$P(^TMP("PRCVNDR",$J,PRCVVN,0),"^",9)
;PRCVCPH Contact Phone #
S PRCVCPH=$P(^TMP("PRCVNDR",$J,PRCVVN,0),"^",10)
;PRCVSTAT Station #
S PRCVSTAT=$P(^TMP("PRCVNDR",$J,PRCVVN,0),"^",11)
;PRCVEDI Vendor EDI #
S PRCVEDI=$P(^TMP("PRCVNDR",$J,PRCVVN,1),"^",2)
;PRCVFMS Vendor FMS #
S PRCVFMS=$P(^TMP("PRCVNDR",$J,PRCVVN,1),"^",3)
;PRCVALT Alternate Address Indicator
S PRCVALT=$P(^TMP("PRCVNDR",$J,PRCVVN,1),"^",4)
;PRCVINA Inactivation Date
S PRCVINA=$P(^TMP("PRCVNDR",$J,PRCVVN,2),"^",1)
I PRCVINA'="" S PRCVINA=$$FMTHL7^XLFDT(PRCVINA)
;PRCVCFX Contact FAX #
S PRCVCFX=$P(^TMP("PRCVNDR",$J,PRCVVN,2),"^",3)
;PRCVDNB Dun and Bradstreet #
S PRCVDNB=$P(^TMP("PRCVNDR",$J,PRCVVN,2),"^",4)
;PRCVACN Account Number
S PRCVACN=$P(^TMP("PRCVNDR",$J,PRCVVN,2),"^",5)
;
;Handling Repeating Contract Number Array and Building HL7 Field ZVD.6
S N=0,B=0,PRCVCNA="" F S N=$O(^TMP("PRCVNDR",$J,PRCVVN,3,N)) Q:+N=0 D
. S PRCVED=$P(^TMP("PRCVNDR",$J,PRCVVN,3,N),"^",2)
. S V=$$FMADD^XLFDT(PRCVED,366) I (%<V)!(PRCVED="") D
.. S B=B+1,PRCVCN=$P(^TMP("PRCVNDR",$J,PRCVVN,3,N),"^",1)
.. S PRCVBD=$P(^TMP("PRCVNDR",$J,PRCVVN,3,N),"^",3)
.. I PRCVBD'="" S PRCVBD=$$FMTHL7^XLFDT(PRCVBD)
.. I PRCVED'="" S PRCVED=$$FMTHL7^XLFDT(PRCVED)
.. S PRCVCNA(B)=PRCVRS_PRCVCN_PRCVCS_PRCVCS_PRCVCS_PRCVCS_PRCVCS_PRCVCS_PRCVBD_PRCVCS_PRCVED
.. Q
. Q
;
I $D(PRCVCNA(1)) S PRCVCNA(1)=$P(PRCVCNA(1),PRCVRS,2)
;
;Build MFE Segment
S PRCVCNT=PRCVCNT+1
S HLA("HLS",PRCVCNT)="MFE"_PRCVFS_"MUP"_PRCVFS_PRCVVN_PRCVFS_PRCVFS_PRCVVN_PRCVCS_PRCVNM_PRCVCS_PRCVSTAT_PRCVFS_"CE"
;
;Build ZVD Segment
S PRCVCNT=PRCVCNT+1,R=0
S HLA("HLS",PRCVCNT)="ZVD"_PRCVFS_PRCVNM_PRCVCS_PRCVCS_PRCVVN_PRCVCS_PRCVCS_PRCVCS_PRCVCS_"IFCAP"_PRCVCS_PRCVSTAT_PRCVRS_PRCVNM_PRCVCS_PRCVCS_PRCVEDI_PRCVCS_PRCVCS_PRCVCS_PRCVCS_"EDI"_PRCVCS_PRCVSTAT_PRCVRS
S HLA("HLS",PRCVCNT)=HLA("HLS",PRCVCNT)_PRCVNM_PRCVCS_PRCVCS_PRCVFMS_PRCVCS_PRCVCS_PRCVCS_PRCVCS_"FMS"_PRCVCS_PRCVSTAT_PRCVRS_PRCVNM_PRCVCS_PRCVCS_PRCVDNB_PRCVCS_PRCVCS_PRCVCS_PRCVCS_"Dun and Bradstreet"_PRCVCS_PRCVSTAT
S HLA("HLS",PRCVCNT,1)=PRCVFS_PRCVAD1_PRCVSS_PRCVAD2_PRCVSS_PRCVAD3_PRCVSS_PRCVAD4_PRCVCS_PRCVCS_PRCVCT_PRCVCS_PRCVST_PRCVCS_PRCVZP_PRCVFS_PRCVACN_PRCVFS_PRCVCPS_PRCVFS
S HLA("HLS",PRCVCNT,2)=PRCVCPH_PRCVCS_PRCVCS_"PH"_PRCVRS_PRCVCFX_PRCVCS_PRCVCS_"FX"_PRCVFS_PRCVCS_PRCVINA_PRCVFS
;
I $D(PRCVCNA) S W=0,R=2 F S W=$O(PRCVCNA(W)) Q:+W=0 D
. S R=R+1
. S HLA("HLS",PRCVCNT,R)=PRCVCNA(W)
. Q
;
I R<2 S R=2
S HLA("HLS",PRCVCNT,R+1)=PRCVFS_PRCVALT
;
Q
;
MFKPROC ;Process MFK^M01 response message
;
;Uses HLNEXT twice to bypass the MSH segment and go directly to the MSA segment
X HLNEXT
;
X HLNEXT
S VAL=$$FLD^HLCSUTL(HLNODE,2)
I VAL'="AA" D ERROR
;
D FIN
;
Q
;
ERROR ;Process ERR Segments
S PRCVERC=2,PRCVERR(1)="Unable to update Vendor in DynaMed."
S PRCVERR(2)="During a Vendor Update to DynaMed the following errors occurred:"
F M=1:1 X HLNEXT Q:HLQUIT'>0 D
. S VAL=$$FLD^HLCSUTL(HLNODE,1)
. I VAL="MFA" S PRCVME=$$FLD^HLCSUTL(HLNODE,3)
. I VAL="ERR" D
.. S PRCVERC=PRCVERC+1,PRCVERM=$$FLD^HLCSUTL(HLNODE,6)
.. S PRCVERR(PRCVERC)=$P(PRCVERM,"^",2)
.. Q
. Q
;
D CLIFP
;
Q
;
CLIFP ;Call partner app w/ mail message for users on error
N XMDUZ,XMMG,XMSUB,XMTEXT,XMY,XMZ
S XMSUB="DynaMed Vendor # "_PRCVME_" Update Errors "_$$HTE^XLFDT($H)
S XMDUZ="IFCAP/COTS Inventory Interface"
S XMTEXT="PRCVERR("
S XMY("G.PRCV Item Vendor Edits")=""
;
D ^XMD
S PRCVERG=1
;
Q
;
FIN ;Clean up variables
K PRCVVN,PRCVCNT,PRCVDP,PRCVPRO,HL,PRCVCS,PRCVRS,PRCVFS,PRCVDT,%,PRCVNM,PRCVAD1,PRCVAD2,PRCVAD3,PRCVAD4,PRCVME
K PRCVCT,PRCVST,PRCVZP,PRCVCPS,PRCVCPH,PRCVSTAT,PRCVEDI,PRCVFMS,PRCVALT,PRCVINA,PRCVCFX,PRCVDNB,PRCVACN
K N,PRCVCNA,PRCVCN,PRCVBD,PRCVED,VAL,PRCVERC,PRCVERM,PRCVERR,PRCV1,PRCV2,STR1,PRCVSS,V,W,R,B,M
;
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPRCVVMF 6169 printed Nov 22, 2024@17:30:27 Page 2
PRCVVMF ;WOIFO/DAP-DYNAMED VENDOR UPDATE HL7 MESSAGING ROUTINE; 03/02/05
+1 ;;5.1;IFCAP;**81**;Oct 20,2000
+2 ;Per VHA Directive 10-93-142, this routine should not be modified.
+3 ;
+4 QUIT
+5 ;
EN(PRCVVN) ;Entry point for API Call
+1 IF $$GET^XPAR("SYS","PRCV COTS INVENTORY",1,"Q")'=1
QUIT
+2 IF $DATA(PRCVVN)=0
QUIT
+3 NEW HLA
+4 SET PRCVCNT=0
SET PRCVERG=0
+5 DO HDRBLD
+6 IF PRCVERG=1
KILL PRCVERG
QUIT
+7 ;
+8 DO MSGBLD
+9 ;
+10 SET PRCVDP=""
+11 DO GENERATE^HLMA(PRCVPRO,"LM",1,.PRCVDP)
+12 IF +$PIECE(PRCVDP,"^",2)
SET PRCVERR(1)="Error generating message through VistA HL7 package for Vendor Update involving vendor # "_PRCVVN
DO CLIFP
+13 ;
+14 KILL ^TMP("PRCVNDR",$JOB,PRCVVN)
+15 ;
+16 DO FIN
+17 KILL PRCVERG
+18 ;
+19 QUIT
+20 ;
HDRBLD ;Generate message header, MFI Segment
+1 ;
+2 KILL HL
SET PRCVPRO="PRCV_IFCAP_04_EV_VEND_UPD"
+3 DO INIT^HLFNC2(PRCVPRO,.HL)
+4 IF $GET(HL)
SET PRCVERR(1)="Error generating message through VistA HL7 package for Vendor Update involving vendor # "_PRCVVN
DO CLIFP
DO FIN
QUIT
+5 ;
+6 SET PRCVCS=$EXTRACT(HL("ECH"))
SET PRCVRS=$EXTRACT(HL("ECH"),2)
SET PRCVSS=$EXTRACT(HL("ECH"),4)
SET PRCVFS=HL("FS")
+7 ;
+8 ;PRCVDT Transaction Date/Time w/offset
+9 DO NOW^%DTC
+10 SET PRCVDT=$$FMTHL7^XLFDT(%)
+11 ;
+12 ;Build MFI Segment
+13 SET PRCVCNT=PRCVCNT+1
+14 SET HLA("HLS",PRCVCNT)="MFI"_PRCVFS_"OME"_PRCVFS_"440"_PRCVCS_"VENDOR"_PRCVFS_"UPD"_PRCVFS_PRCVDT_PRCVFS_PRCVFS_"AL"
+15 ;
+16 QUIT
+17 ;
MSGBLD ;Build Message Body
+1 ;
+2 ;PRCVNM Vendor Name
+3 SET PRCVNM=$PIECE(^TMP("PRCVNDR",$JOB,PRCVVN,0),"^",1)
+4 ;Address Fields - HL7 String Conversions
+5 SET PRCV1="C"
SET PRCV2=HL("FS")_HL("ECH")
+6 ;PRCVAD1 Address 1
+7 SET PRCVAD1=$PIECE(^TMP("PRCVNDR",$JOB,PRCVVN,0),"^",2)
+8 IF PRCVAD1'=""
Begin DoDot:1
+9 SET PRCVAD1=$$CONV^PRCVUTSC(PRCVAD1,PRCV1,PRCV2)
+10 QUIT
End DoDot:1
+11 ;PRCVAD2 Address 2
+12 SET PRCVAD2=$PIECE(^TMP("PRCVNDR",$JOB,PRCVVN,0),"^",3)
+13 IF PRCVAD2'=""
Begin DoDot:1
+14 SET PRCVAD2=$$CONV^PRCVUTSC(PRCVAD2,PRCV1,PRCV2)
+15 QUIT
End DoDot:1
+16 ;PRCVAD3 Address 3
+17 SET PRCVAD3=$PIECE(^TMP("PRCVNDR",$JOB,PRCVVN,0),"^",4)
+18 IF PRCVAD3'=""
Begin DoDot:1
+19 SET PRCVAD3=$$CONV^PRCVUTSC(PRCVAD3,PRCV1,PRCV2)
+20 QUIT
End DoDot:1
+21 ;PRCVAD4 Address 4
+22 SET PRCVAD4=$PIECE(^TMP("PRCVNDR",$JOB,PRCVVN,0),"^",5)
+23 IF PRCVAD4'=""
Begin DoDot:1
+24 SET PRCVAD4=$$CONV^PRCVUTSC(PRCVAD4,PRCV1,PRCV2)
+25 QUIT
End DoDot:1
+26 ;PRCVCT City
+27 SET PRCVCT=$PIECE(^TMP("PRCVNDR",$JOB,PRCVVN,0),"^",6)
+28 ;PRCVST State
+29 SET PRCVST=$PIECE(^TMP("PRCVNDR",$JOB,PRCVVN,0),"^",7)
+30 ;PRCVZP Zip Code
+31 SET PRCVZP=$PIECE(^TMP("PRCVNDR",$JOB,PRCVVN,0),"^",8)
+32 ;PRCVCPS Contact Person
+33 SET PRCVCPS=$PIECE(^TMP("PRCVNDR",$JOB,PRCVVN,0),"^",9)
+34 ;PRCVCPH Contact Phone #
+35 SET PRCVCPH=$PIECE(^TMP("PRCVNDR",$JOB,PRCVVN,0),"^",10)
+36 ;PRCVSTAT Station #
+37 SET PRCVSTAT=$PIECE(^TMP("PRCVNDR",$JOB,PRCVVN,0),"^",11)
+38 ;PRCVEDI Vendor EDI #
+39 SET PRCVEDI=$PIECE(^TMP("PRCVNDR",$JOB,PRCVVN,1),"^",2)
+40 ;PRCVFMS Vendor FMS #
+41 SET PRCVFMS=$PIECE(^TMP("PRCVNDR",$JOB,PRCVVN,1),"^",3)
+42 ;PRCVALT Alternate Address Indicator
+43 SET PRCVALT=$PIECE(^TMP("PRCVNDR",$JOB,PRCVVN,1),"^",4)
+44 ;PRCVINA Inactivation Date
+45 SET PRCVINA=$PIECE(^TMP("PRCVNDR",$JOB,PRCVVN,2),"^",1)
+46 IF PRCVINA'=""
SET PRCVINA=$$FMTHL7^XLFDT(PRCVINA)
+47 ;PRCVCFX Contact FAX #
+48 SET PRCVCFX=$PIECE(^TMP("PRCVNDR",$JOB,PRCVVN,2),"^",3)
+49 ;PRCVDNB Dun and Bradstreet #
+50 SET PRCVDNB=$PIECE(^TMP("PRCVNDR",$JOB,PRCVVN,2),"^",4)
+51 ;PRCVACN Account Number
+52 SET PRCVACN=$PIECE(^TMP("PRCVNDR",$JOB,PRCVVN,2),"^",5)
+53 ;
+54 ;Handling Repeating Contract Number Array and Building HL7 Field ZVD.6
+55 SET N=0
SET B=0
SET PRCVCNA=""
FOR
SET N=$ORDER(^TMP("PRCVNDR",$JOB,PRCVVN,3,N))
if +N=0
QUIT
Begin DoDot:1
+56 SET PRCVED=$PIECE(^TMP("PRCVNDR",$JOB,PRCVVN,3,N),"^",2)
+57 SET V=$$FMADD^XLFDT(PRCVED,366)
IF (%<V)!(PRCVED="")
Begin DoDot:2
+58 SET B=B+1
SET PRCVCN=$PIECE(^TMP("PRCVNDR",$JOB,PRCVVN,3,N),"^",1)
+59 SET PRCVBD=$PIECE(^TMP("PRCVNDR",$JOB,PRCVVN,3,N),"^",3)
+60 IF PRCVBD'=""
SET PRCVBD=$$FMTHL7^XLFDT(PRCVBD)
+61 IF PRCVED'=""
SET PRCVED=$$FMTHL7^XLFDT(PRCVED)
+62 SET PRCVCNA(B)=PRCVRS_PRCVCN_PRCVCS_PRCVCS_PRCVCS_PRCVCS_PRCVCS_PRCVCS_PRCVBD_PRCVCS_PRCVED
+63 QUIT
End DoDot:2
+64 QUIT
End DoDot:1
+65 ;
+66 IF $DATA(PRCVCNA(1))
SET PRCVCNA(1)=$PIECE(PRCVCNA(1),PRCVRS,2)
+67 ;
+68 ;Build MFE Segment
+69 SET PRCVCNT=PRCVCNT+1
+70 SET HLA("HLS",PRCVCNT)="MFE"_PRCVFS_"MUP"_PRCVFS_PRCVVN_PRCVFS_PRCVFS_PRCVVN_PRCVCS_PRCVNM_PRCVCS_PRCVSTAT_PRCVFS_"CE"
+71 ;
+72 ;Build ZVD Segment
+73 SET PRCVCNT=PRCVCNT+1
SET R=0
+74 SET HLA("HLS",PRCVCNT)="ZVD"_PRCVFS_PRCVNM_PRCVCS_PRCVCS_PRCVVN_PRCVCS_PRCVCS_PRCVCS_PRCVCS_"IFCAP"_PRCVCS_PRCVSTAT_PRCVRS_PRCVNM_PRCVCS_PRCVCS_PRCVEDI_PRCVCS_PRCVCS_PRCVCS_PRCVCS_"EDI"_PRCVCS_PRCVSTAT_PRCVRS
+75 SET HLA("HLS",PRCVCNT)=HLA("HLS",PRCVCNT)_PRCVNM_PRCVCS_PRCVCS_PRCVFMS_PRCVCS_PRCVCS_PRCVCS_PRCVCS_"FMS"_PRCVCS_PRCVSTAT_PRCVRS_PRCVNM_PRCVCS_PRCVCS_PRCVDNB_PRCVCS_PRCVCS_PRCVCS_PRCVCS_"Dun and Bradstreet"_PRCVCS_PRCVSTAT
+76 SET HLA("HLS",PRCVCNT,1)=PRCVFS_PRCVAD1_PRCVSS_PRCVAD2_PRCVSS_PRCVAD3_PRCVSS_PRCVAD4_PRCVCS_PRCVCS_PRCVCT_PRCVCS_PRCVST_PRCVCS_PRCVZP_PRCVFS_PRCVACN_PRCVFS_PRCVCPS_PRCVFS
+77 SET HLA("HLS",PRCVCNT,2)=PRCVCPH_PRCVCS_PRCVCS_"PH"_PRCVRS_PRCVCFX_PRCVCS_PRCVCS_"FX"_PRCVFS_PRCVCS_PRCVINA_PRCVFS
+78 ;
+79 IF $DATA(PRCVCNA)
SET W=0
SET R=2
FOR
SET W=$ORDER(PRCVCNA(W))
if +W=0
QUIT
Begin DoDot:1
+80 SET R=R+1
+81 SET HLA("HLS",PRCVCNT,R)=PRCVCNA(W)
+82 QUIT
End DoDot:1
+83 ;
+84 IF R<2
SET R=2
+85 SET HLA("HLS",PRCVCNT,R+1)=PRCVFS_PRCVALT
+86 ;
+87 QUIT
+88 ;
MFKPROC ;Process MFK^M01 response message
+1 ;
+2 ;Uses HLNEXT twice to bypass the MSH segment and go directly to the MSA segment
+3 XECUTE HLNEXT
+4 ;
+5 XECUTE HLNEXT
+6 SET VAL=$$FLD^HLCSUTL(HLNODE,2)
+7 IF VAL'="AA"
DO ERROR
+8 ;
+9 DO FIN
+10 ;
+11 QUIT
+12 ;
ERROR ;Process ERR Segments
+1 SET PRCVERC=2
SET PRCVERR(1)="Unable to update Vendor in DynaMed."
+2 SET PRCVERR(2)="During a Vendor Update to DynaMed the following errors occurred:"
+3 FOR M=1:1
XECUTE HLNEXT
if HLQUIT'>0
QUIT
Begin DoDot:1
+4 SET VAL=$$FLD^HLCSUTL(HLNODE,1)
+5 IF VAL="MFA"
SET PRCVME=$$FLD^HLCSUTL(HLNODE,3)
+6 IF VAL="ERR"
Begin DoDot:2
+7 SET PRCVERC=PRCVERC+1
SET PRCVERM=$$FLD^HLCSUTL(HLNODE,6)
+8 SET PRCVERR(PRCVERC)=$PIECE(PRCVERM,"^",2)
+9 QUIT
End DoDot:2
+10 QUIT
End DoDot:1
+11 ;
+12 DO CLIFP
+13 ;
+14 QUIT
+15 ;
CLIFP ;Call partner app w/ mail message for users on error
+1 NEW XMDUZ,XMMG,XMSUB,XMTEXT,XMY,XMZ
+2 SET XMSUB="DynaMed Vendor # "_PRCVME_" Update Errors "_$$HTE^XLFDT($HOROLOG)
+3 SET XMDUZ="IFCAP/COTS Inventory Interface"
+4 SET XMTEXT="PRCVERR("
+5 SET XMY("G.PRCV Item Vendor Edits")=""
+6 ;
+7 DO ^XMD
+8 SET PRCVERG=1
+9 ;
+10 QUIT
+11 ;
FIN ;Clean up variables
+1 KILL PRCVVN,PRCVCNT,PRCVDP,PRCVPRO,HL,PRCVCS,PRCVRS,PRCVFS,PRCVDT,%,PRCVNM,PRCVAD1,PRCVAD2,PRCVAD3,PRCVAD4,PRCVME
+2 KILL PRCVCT,PRCVST,PRCVZP,PRCVCPS,PRCVCPH,PRCVSTAT,PRCVEDI,PRCVFMS,PRCVALT,PRCVINA,PRCVCFX,PRCVDNB,PRCVACN
+3 KILL N,PRCVCNA,PRCVCN,PRCVBD,PRCVED,VAL,PRCVERC,PRCVERM,PRCVERR,PRCV1,PRCV2,STR1,PRCVSS,V,W,R,B,M
+4 ;
+5 QUIT