PSAUP ;BIR/JMB-Upload and Process Prime Vendor Invoice Data ;7/23/97
;;3.0; DRUG ACCOUNTABILITY/INVENTORY INTERFACE;**12**; 10/24/97
;This routine uploads the prime vendor data into ^TMP("PSAPV",$J).
;The X12 data is checked for proper format. If the X12 data is correct,
;it is loaded into ^XTMP("PSAX12").
;
I '$D(^XUSEC("PSA ORDERS",DUZ)) W !,"You do not hold the key to enter the option." Q
W @IOF,!,"****************************** I M P O R T A N T ******************************"
W !!,"This option uploads the invoice data received from your prime vendor.",!,"In order to upload the data, you must be running ProComm Plus software",!,"on Pharmacy's prime vendor PC.",!!
S PSASTLN="",$P(PSASTLN,"*",80)="" W PSASTLN,! K PSASTLN
S DIR("A")="Are you ready to upload the prime vendor invoice data",DIR(0)="Y",DIR("B")="Yes",DIR("??")="^D YNUPLOAD^PSAUP1" D ^DIR K DIR
I 'Y S PSAOUT=1 G KILL
I $D(^DIZ(8980,"AOK",DUZ)) S XTKDIC="^TMP(""PSAX12"",$J,",DWLC=0,XTKMODE=2
I '$D(^DIZ(8980,"AOK",DUZ)) D RFILE^XTKERM4
S PSAOUT=0 K ^TMP("PSAX12",$J)
W !!,"Press <ALT> 1 if your Prime Vendor script is installed as a Meta Key,",!,"otherwise press <ALT> F5 and enter ""PV""",!
X ^%ZOSF("EOFF") R X:DTIME X ^%ZOSF("EON") D HASH^XUSHSHP I X'="$4_\y o\Xp>RN}ab*_%," S PSAOUT=1
I '$G(PSAOUT) S XTKDIC="^TMP(""PSAX12"",$J,",DWLC=0,XTKMODE=2 D RECEIVE^XTKERMIT
I $G(PSAOUT) S XTKERR="The invoice file cannot be uploaded. Contact your IRM staff for assistance." K ^TMP("PSAPV",$J) H 1
I $G(XTKERR)'=0 W !!,"ERROR - "_XTKERR S PSAOUT=1 Q
I DWLC=0 W !,"ERROR - NO LINES RECEIVED." S PSAOUT=1 Q
W @IOF,!,"Done",!,"The data uploaded to a temporary file. "_DWLC," lines received.",!! H 2
G:'$O(^TMP("PSAX12",$J,0)) KILL
;
UNWRAP ;Changes the data element and segment delimiters to ^ & ~, places each
;segment on a node to itself, then removes leading spaces from each
;data element
W !,"Unwrapping the invoice."
;
;Get delimiters
S (PSABBC,PSAISA,PSALINE,PSASEGD,PSALND)=0
F S PSALINE=$O(^TMP("PSAX12",$J,PSALINE)) Q:'PSALINE D Q:PSABBC&(PSAISA)
.I $E($G(^TMP("PSAX12",$J,PSALINE,0)),1,3)="ISA" S DAVE=^TMP("PSAX12",$J,PSALINE,0) S PSASEGD=$E(^(0),4,4),PSALND=$E(^(0),106,106),PSAISA=1 W "." Q
.I $P($G(^TMP("PSAX12",$J,PSALINE,0)),PSASEGD,2)="DS",$P($G(^(0)),PSASEGD,3)="BBC" S PSABBC=1
;If drug company is Bergen (BBC), changes data element to ^ and adds
;segment delimiters to ~.
I PSABBC S (PSACNT,PSALINE)=0 F S PSALINE=$O(^TMP("PSAX12",$J,PSALINE)) Q:'PSALINE D
.S PSADATA=^TMP("PSAX12",$J,PSALINE,0)_"~"
.I PSASEGD'="^" S PSADATA=$TR(PSADATA,PSASEGD,"^")
.I $E($G(^TMP("PSAX12",$J,PSALINE,0)),1,3)="ISA" W "."
.S ^TMP("PSAX12",$J,PSALINE,0)=PSADATA
G:PSABBC LINE
;
I PSASEGD=""!(PSALND="") D G KILL
.S PSASTAR="",$P(PSASTAR,"*",80)=""
.W !,PSASTAR,!,"There is a major error in the invoice file.",!,"Contact your IRM Staff for assistance."
.W !!,"Press the Esc key then enter YES at the 'EXIT SCRIPT (Y/N)' prompt.",!,"Press RETURN to exit the option.",!,PSASTAR D END^PSAPROC
G:PSASEGD="~"&(PSALND="^") LINE
;
;Changes the data element and segment delimiters to ^ and ~.
S (PSACNT,PSALINE)=0 F S PSALINE=$O(^TMP("PSAX12",$J,PSALINE)) Q:'PSALINE D Q:PSAOUT
.S PSADATA=^TMP("PSAX12",$J,PSALINE,0)
.I PSALND'="~" S PSADATA=$TR(PSADATA,PSALND,"~")
.I PSASEGD'="^" S PSADATA=$TR(PSADATA,PSASEGD,"^")
.S ^TMP("PSAX12",$J,PSALINE,0)=PSADATA
.I $P(^TMP("PSAX12",$J,PSALINE,0),"^")="ISA" W "."
;
LINE ;Places each segment on a node to itself.
K ^TMP("PSAPV",$J)
S PSAHOLD="",(PSACNT,PSALINE)=0
F S PSALINE=$O(^TMP("PSAX12",$J,PSALINE)) Q:'PSALINE D
.S PSADATA=^TMP("PSAX12",$J,PSALINE,0),PSADATA=PSAHOLD_PSADATA
.I PSADATA'["~" S PSAHOLD=PSADATA Q
.S PSASTOP=0 F S PSASEG=$P(PSADATA,"~") Q:PSASEG="" D Q:PSASTOP
..S PSACNT=PSACNT+1,^TMP("PSAPV",$J,PSACNT,0)=PSASEG
..I $P(PSASEG,"^")="ISA" W "."
..S PSADATA=$P(PSADATA,"~",2,99) I PSADATA'["~" S PSASTOP=1,PSAHOLD=PSADATA Q
..S PSAHOLD=""
;
SPACES ;remove all leading spaces in all data elements
K ^TMP("PSAX12",$J)
S (PSACNT,PSALINE)=0 F S PSALINE=$O(^TMP("PSAPV",$J,PSALINE)) Q:'PSALINE D
.S PSASEG=^TMP("PSAPV",$J,PSALINE,0)
.I $E(PSASEG,1,3)="ISA" S ^TMP("PSAPVS",$J,PSALINE)=^TMP("PSAPV",$J,PSALINE,0) W "." Q
.S PSACNT=0,PSASEGL=$L(PSASEG)
.F PSAEX=1:1:PSASEGL S PSAX=$E(PSASEG,PSAEX,PSAEX) S:PSAX="^" PSACNT=PSACNT+1
.F PSAPC=1:1:(PSACNT+1) S PSADE=$P(PSASEG,"^",PSAPC) D
..F Q:$E(PSADE,1,1)'=" " S PSADE=$E(PSADE,2,999)
..S $P(PSASEG,"^",PSAPC)=PSADE
.S ^TMP("PSAPVS",$J,PSALINE)=PSASEG
K ^TMP("PSAPV",$J)
W !,"Finished unwrapping the invoice." H 2
;
CHECK ;Looks for X12 errors. If no errors, loads data into ^TMP("PSAPV SET",$J)
W !!,"Checking the invoice data."
D ^PSAUP2
K ^TMP("PSAPVS",$J)
I PSAOUT K ^TMP("PSAPV SET",$J) G KILL
W !,"Finished checking the invoice data." H 2
;
LOADXTMP ;Loads data into ^XTMP("PSAPV").
W !!,"Loading data into VISTA."
D XTMP^PSAUP1
K ^TMP("PSAPV SET",$J) G:PSAOUT KILL
W !,"Finished loading data into VISTA."
W !!,"** The upload was successful. **" H 4
D END^PSAPROC
;
STORE ;Get the line item data and store in ^XTMP("PSAPV")
W @IOF S PSANEXT=$O(^XTMP("PSAPV",0))
I PSANEXT="" W !,"There are no valid invoices to process." H 1 G KILL
W !,"Searching for and storing the drug data for each line item."
D ^PSAUP5
W !,"Finished storing the drug data." H 1
;
PRINT ;Ask if user wants to print invoices.
S PSASTA="U"
W ! S DIR(0)="Y",DIR("A")="Print all uploaded invoices",DIR("B")="Y",DIR("?",1)="Enter YES to print the invoices that were uploaded.",DIR("?")="Enter NO to bypass printing the invoices and continue.",DIR("??")="^D YNPRINT^PSAUP1"
D ^DIR K DIR G:$G(DIRUT) KILL D:Y ^PSAUP4
;
PROC ;Ask if user wants to process the invoice data now.
W ! S DIR(0)="Y",DIR("A")="Do you want to process the invoices now",DIR("B")="Y",DIR("?",1)="Enter YES to process the invoices that were uploaded.",DIR("?")="Enter NO to exit the option.",DIR("??")="^D YNPROCES^PSAUP1"
D ^DIR K DIR G:'Y!($G(DIRUT)) KILL
D KILL
;
PHARM ;Assign a pharmacy location or master vault to each Order.
;Then process the invoice data.
S PSAOUT=0
D ^PSAPROC G:$G(PSAOUT) EXIT^PSAPROC
;
PRINT2 W !! S DIR(0)="Y",DIR("A")="Print all unprocessed and just processed invoices",DIR("B")="N"
S DIR("?",1)="Enter YES to print all of the uploaded invoices that are",DIR("?")="unprocessed or just processed. Enter NO to exit the option."
S DIR("??")="^D PRT2^PSAUP1"
D ^DIR K DIR D:+Y ^PSAUP4 S PSAENTRY=0
G EXIT^PSAPROC
;
KILL ;Kills uploading variables
K ^TMP("PSAPV",$J),^TMP("PSAPVS",$J),^TMP("PSAPV SET",$J),^TMP("PSAX12",$J)
K %,DIR,DIRUT,DWLC,PSABBC,PSACNT,PSACTN1,PSACOMB,PSACS,PSACTRL,PSACTRL2,PSADATA,PSADE,PSADT,PSADUP,PSAENTRY,PSAERR,PSAEX,PSAEXPEC,PSAFND1,PSAGS,PSAHOLD,PSAIEN,PSAIN,PSAINV,PSAINVDT,PSAINVN,PSAISA,PSAISIT,PSAISITN,PSAITCNT,PSAITEM
K PSALAST,PSALINE,PSALLCS,PSALLOK,PSALND,PSALOC,PSANDC,PSANEW,PSANEXT,PSANTYPE,PSAOK,PSAORD,PSAORDDT,PSAORDN,PSAOSIT,PSAOSITN,PSAOUT,PSAPC
K PSAS,PSASEG,PSASEGL,PSASEGD,PSASS,PSAST,PSASTA,PSASTAR,PSASTCNT,PSASUB,PSASYN,PSAUOM,PSAUOM1,PSAUOMH,PSAUOMH1,PSAVSN,PSAX,X,X1,X2,XTKDIC,XTKERR,XTKMODE,Y
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSAUP 7259 printed Dec 13, 2024@01:50:45 Page 2
PSAUP ;BIR/JMB-Upload and Process Prime Vendor Invoice Data ;7/23/97
+1 ;;3.0; DRUG ACCOUNTABILITY/INVENTORY INTERFACE;**12**; 10/24/97
+2 ;This routine uploads the prime vendor data into ^TMP("PSAPV",$J).
+3 ;The X12 data is checked for proper format. If the X12 data is correct,
+4 ;it is loaded into ^XTMP("PSAX12").
+5 ;
+6 IF '$DATA(^XUSEC("PSA ORDERS",DUZ))
WRITE !,"You do not hold the key to enter the option."
QUIT
+7 WRITE @IOF,!,"****************************** I M P O R T A N T ******************************"
+8 WRITE !!,"This option uploads the invoice data received from your prime vendor.",!,"In order to upload the data, you must be running ProComm Plus software",!,"on Pharmacy's prime vendor PC.",!!
+9 SET PSASTLN=""
SET $PIECE(PSASTLN,"*",80)=""
WRITE PSASTLN,!
KILL PSASTLN
+10 SET DIR("A")="Are you ready to upload the prime vendor invoice data"
SET DIR(0)="Y"
SET DIR("B")="Yes"
SET DIR("??")="^D YNUPLOAD^PSAUP1"
DO ^DIR
KILL DIR
+11 IF 'Y
SET PSAOUT=1
GOTO KILL
+12 IF $DATA(^DIZ(8980,"AOK",DUZ))
SET XTKDIC="^TMP(""PSAX12"",$J,"
SET DWLC=0
SET XTKMODE=2
+13 IF '$DATA(^DIZ(8980,"AOK",DUZ))
DO RFILE^XTKERM4
+14 SET PSAOUT=0
KILL ^TMP("PSAX12",$JOB)
+15 WRITE !!,"Press <ALT> 1 if your Prime Vendor script is installed as a Meta Key,",!,"otherwise press <ALT> F5 and enter ""PV""",!
+16 XECUTE ^%ZOSF("EOFF")
READ X:DTIME
XECUTE ^%ZOSF("EON")
DO HASH^XUSHSHP
IF X'="$4_\y o\Xp>RN}ab*_%,"
SET PSAOUT=1
+17 IF '$GET(PSAOUT)
SET XTKDIC="^TMP(""PSAX12"",$J,"
SET DWLC=0
SET XTKMODE=2
DO RECEIVE^XTKERMIT
+18 IF $GET(PSAOUT)
SET XTKERR="The invoice file cannot be uploaded. Contact your IRM staff for assistance."
KILL ^TMP("PSAPV",$JOB)
HANG 1
+19 IF $GET(XTKERR)'=0
WRITE !!,"ERROR - "_XTKERR
SET PSAOUT=1
QUIT
+20 IF DWLC=0
WRITE !,"ERROR - NO LINES RECEIVED."
SET PSAOUT=1
QUIT
+21 WRITE @IOF,!,"Done",!,"The data uploaded to a temporary file. "_DWLC," lines received.",!!
HANG 2
+22 if '$ORDER(^TMP("PSAX12",$JOB,0))
GOTO KILL
+23 ;
UNWRAP ;Changes the data element and segment delimiters to ^ & ~, places each
+1 ;segment on a node to itself, then removes leading spaces from each
+2 ;data element
+3 WRITE !,"Unwrapping the invoice."
+4 ;
+5 ;Get delimiters
+6 SET (PSABBC,PSAISA,PSALINE,PSASEGD,PSALND)=0
+7 FOR
SET PSALINE=$ORDER(^TMP("PSAX12",$JOB,PSALINE))
if 'PSALINE
QUIT
Begin DoDot:1
+8 IF $EXTRACT($GET(^TMP("PSAX12",$JOB,PSALINE,0)),1,3)="ISA"
SET DAVE=^TMP("PSAX12",$JOB,PSALINE,0)
SET PSASEGD=$EXTRACT(^(0),4,4)
SET PSALND=$EXTRACT(^(0),106,106)
SET PSAISA=1
WRITE "."
QUIT
+9 IF $PIECE($GET(^TMP("PSAX12",$JOB,PSALINE,0)),PSASEGD,2)="DS"
IF $PIECE($GET(^(0)),PSASEGD,3)="BBC"
SET PSABBC=1
End DoDot:1
if PSABBC&(PSAISA)
QUIT
+10 ;If drug company is Bergen (BBC), changes data element to ^ and adds
+11 ;segment delimiters to ~.
+12 IF PSABBC
SET (PSACNT,PSALINE)=0
FOR
SET PSALINE=$ORDER(^TMP("PSAX12",$JOB,PSALINE))
if 'PSALINE
QUIT
Begin DoDot:1
+13 SET PSADATA=^TMP("PSAX12",$JOB,PSALINE,0)_"~"
+14 IF PSASEGD'="^"
SET PSADATA=$TRANSLATE(PSADATA,PSASEGD,"^")
+15 IF $EXTRACT($GET(^TMP("PSAX12",$JOB,PSALINE,0)),1,3)="ISA"
WRITE "."
+16 SET ^TMP("PSAX12",$JOB,PSALINE,0)=PSADATA
End DoDot:1
+17 if PSABBC
GOTO LINE
+18 ;
+19 IF PSASEGD=""!(PSALND="")
Begin DoDot:1
+20 SET PSASTAR=""
SET $PIECE(PSASTAR,"*",80)=""
+21 WRITE !,PSASTAR,!,"There is a major error in the invoice file.",!,"Contact your IRM Staff for assistance."
+22 WRITE !!,"Press the Esc key then enter YES at the 'EXIT SCRIPT (Y/N)' prompt.",!,"Press RETURN to exit the option.",!,PSASTAR
DO END^PSAPROC
End DoDot:1
GOTO KILL
+23 if PSASEGD="~"&(PSALND="^")
GOTO LINE
+24 ;
+25 ;Changes the data element and segment delimiters to ^ and ~.
+26 SET (PSACNT,PSALINE)=0
FOR
SET PSALINE=$ORDER(^TMP("PSAX12",$JOB,PSALINE))
if 'PSALINE
QUIT
Begin DoDot:1
+27 SET PSADATA=^TMP("PSAX12",$JOB,PSALINE,0)
+28 IF PSALND'="~"
SET PSADATA=$TRANSLATE(PSADATA,PSALND,"~")
+29 IF PSASEGD'="^"
SET PSADATA=$TRANSLATE(PSADATA,PSASEGD,"^")
+30 SET ^TMP("PSAX12",$JOB,PSALINE,0)=PSADATA
+31 IF $PIECE(^TMP("PSAX12",$JOB,PSALINE,0),"^")="ISA"
WRITE "."
End DoDot:1
if PSAOUT
QUIT
+32 ;
LINE ;Places each segment on a node to itself.
+1 KILL ^TMP("PSAPV",$JOB)
+2 SET PSAHOLD=""
SET (PSACNT,PSALINE)=0
+3 FOR
SET PSALINE=$ORDER(^TMP("PSAX12",$JOB,PSALINE))
if 'PSALINE
QUIT
Begin DoDot:1
+4 SET PSADATA=^TMP("PSAX12",$JOB,PSALINE,0)
SET PSADATA=PSAHOLD_PSADATA
+5 IF PSADATA'["~"
SET PSAHOLD=PSADATA
QUIT
+6 SET PSASTOP=0
FOR
SET PSASEG=$PIECE(PSADATA,"~")
if PSASEG=""
QUIT
Begin DoDot:2
+7 SET PSACNT=PSACNT+1
SET ^TMP("PSAPV",$JOB,PSACNT,0)=PSASEG
+8 IF $PIECE(PSASEG,"^")="ISA"
WRITE "."
+9 SET PSADATA=$PIECE(PSADATA,"~",2,99)
IF PSADATA'["~"
SET PSASTOP=1
SET PSAHOLD=PSADATA
QUIT
+10 SET PSAHOLD=""
End DoDot:2
if PSASTOP
QUIT
End DoDot:1
+11 ;
SPACES ;remove all leading spaces in all data elements
+1 KILL ^TMP("PSAX12",$JOB)
+2 SET (PSACNT,PSALINE)=0
FOR
SET PSALINE=$ORDER(^TMP("PSAPV",$JOB,PSALINE))
if 'PSALINE
QUIT
Begin DoDot:1
+3 SET PSASEG=^TMP("PSAPV",$JOB,PSALINE,0)
+4 IF $EXTRACT(PSASEG,1,3)="ISA"
SET ^TMP("PSAPVS",$JOB,PSALINE)=^TMP("PSAPV",$JOB,PSALINE,0)
WRITE "."
QUIT
+5 SET PSACNT=0
SET PSASEGL=$LENGTH(PSASEG)
+6 FOR PSAEX=1:1:PSASEGL
SET PSAX=$EXTRACT(PSASEG,PSAEX,PSAEX)
if PSAX="^"
SET PSACNT=PSACNT+1
+7 FOR PSAPC=1:1:(PSACNT+1)
SET PSADE=$PIECE(PSASEG,"^",PSAPC)
Begin DoDot:2
+8 FOR
if $EXTRACT(PSADE,1,1)'=" "
QUIT
SET PSADE=$EXTRACT(PSADE,2,999)
+9 SET $PIECE(PSASEG,"^",PSAPC)=PSADE
End DoDot:2
+10 SET ^TMP("PSAPVS",$JOB,PSALINE)=PSASEG
End DoDot:1
+11 KILL ^TMP("PSAPV",$JOB)
+12 WRITE !,"Finished unwrapping the invoice."
HANG 2
+13 ;
CHECK ;Looks for X12 errors. If no errors, loads data into ^TMP("PSAPV SET",$J)
+1 WRITE !!,"Checking the invoice data."
+2 DO ^PSAUP2
+3 KILL ^TMP("PSAPVS",$JOB)
+4 IF PSAOUT
KILL ^TMP("PSAPV SET",$JOB)
GOTO KILL
+5 WRITE !,"Finished checking the invoice data."
HANG 2
+6 ;
LOADXTMP ;Loads data into ^XTMP("PSAPV").
+1 WRITE !!,"Loading data into VISTA."
+2 DO XTMP^PSAUP1
+3 KILL ^TMP("PSAPV SET",$JOB)
if PSAOUT
GOTO KILL
+4 WRITE !,"Finished loading data into VISTA."
+5 WRITE !!,"** The upload was successful. **"
HANG 4
+6 DO END^PSAPROC
+7 ;
STORE ;Get the line item data and store in ^XTMP("PSAPV")
+1 WRITE @IOF
SET PSANEXT=$ORDER(^XTMP("PSAPV",0))
+2 IF PSANEXT=""
WRITE !,"There are no valid invoices to process."
HANG 1
GOTO KILL
+3 WRITE !,"Searching for and storing the drug data for each line item."
+4 DO ^PSAUP5
+5 WRITE !,"Finished storing the drug data."
HANG 1
+6 ;
PRINT ;Ask if user wants to print invoices.
+1 SET PSASTA="U"
+2 WRITE !
SET DIR(0)="Y"
SET DIR("A")="Print all uploaded invoices"
SET DIR("B")="Y"
SET DIR("?",1)="Enter YES to print the invoices that were uploaded."
SET DIR("?")="Enter NO to bypass printing the invoices and continue."
SET DIR("??")="^D YNPRINT^PSAUP1"
+3 DO ^DIR
KILL DIR
if $GET(DIRUT)
GOTO KILL
if Y
DO ^PSAUP4
+4 ;
PROC ;Ask if user wants to process the invoice data now.
+1 WRITE !
SET DIR(0)="Y"
SET DIR("A")="Do you want to process the invoices now"
SET DIR("B")="Y"
SET DIR("?",1)="Enter YES to process the invoices that were uploaded."
SET DIR("?")="Enter NO to exit the option."
SET DIR("??")="^D YNPROCES^PSAUP1"
+2 DO ^DIR
KILL DIR
if 'Y!($GET(DIRUT))
GOTO KILL
+3 DO KILL
+4 ;
PHARM ;Assign a pharmacy location or master vault to each Order.
+1 ;Then process the invoice data.
+2 SET PSAOUT=0
+3 DO ^PSAPROC
if $GET(PSAOUT)
GOTO EXIT^PSAPROC
+4 ;
PRINT2 WRITE !!
SET DIR(0)="Y"
SET DIR("A")="Print all unprocessed and just processed invoices"
SET DIR("B")="N"
+1 SET DIR("?",1)="Enter YES to print all of the uploaded invoices that are"
SET DIR("?")="unprocessed or just processed. Enter NO to exit the option."
+2 SET DIR("??")="^D PRT2^PSAUP1"
+3 DO ^DIR
KILL DIR
if +Y
DO ^PSAUP4
SET PSAENTRY=0
+4 GOTO EXIT^PSAPROC
+5 ;
KILL ;Kills uploading variables
+1 KILL ^TMP("PSAPV",$JOB),^TMP("PSAPVS",$JOB),^TMP("PSAPV SET",$JOB),^TMP("PSAX12",$JOB)
+2 KILL %,DIR,DIRUT,DWLC,PSABBC,PSACNT,PSACTN1,PSACOMB,PSACS,PSACTRL,PSACTRL2,PSADATA,PSADE,PSADT,PSADUP,PSAENTRY,PSAERR,PSAEX,PSAEXPEC,PSAFND1,PSAGS,PSAHOLD,PSAIEN,PSAIN,PSAINV,PSAINVDT,PSAINVN,PSAISA,PSAISIT,PSAISITN,PSAITCNT,PSAITEM
+3 KILL PSALAST,PSALINE,PSALLCS,PSALLOK,PSALND,PSALOC,PSANDC,PSANEW,PSANEXT,PSANTYPE,PSAOK,PSAORD,PSAORDDT,PSAORDN,PSAOSIT,PSAOSITN,PSAOUT,PSAPC
+4 KILL PSAS,PSASEG,PSASEGL,PSASEGD,PSASS,PSAST,PSASTA,PSASTAR,PSASTCNT,PSASUB,PSASYN,PSAUOM,PSAUOM1,PSAUOMH,PSAUOMH1,PSAVSN,PSAX,X,X1,X2,XTKDIC,XTKERR,XTKMODE,Y
+5 QUIT