AVA32P17 ;IHS/ITSC/AEF - AVA 93.2 PATCH 17 ; [ 07/01/2003 10:38 AM ]
;;93.2;VA SUPPORT FILES;**17**;JUL 01, 1993;Build 12
;
;IHS/ITSC/AEF AVA*93.2*17 06/26/2003
;
ENV ;----- ENVIRONMENT CHECK
;
N IORVOFF,IORVON
;
D ^XBKVAR
D HOME^%ZIS
;
D DUZ
I $G(XPDQUIT) D SORRY Q
;
D RV
D XPZ
D HELLO
D VER
D DUPE
D OK
;
I $D(XPDQUIT) W !,"INSTALL ABORTED!"
;
Q
;
DUZ ;----- CHECK FOR VALID DUZ VARIABLES
;
I '$G(DUZ) W !,"DUZ UNDEFINED OR 0." D FAIL(2)
I '$L($G(DUZ(0))) W !,"DUZ(0) UNDEFINED OR NULL." D FAIL(2)
I '($G(DUZ(0))["@") W !,"THE DD UPDATES REQUIRE AN '@' IN YOUR DUZ(0)" D FAIL(2)
Q
;
RV ;----- SET REVERSE VIDEO ON/OFF VARIABLES
;
D HOME^%ZIS
N X
S X="IORVON;IORVOFF"
D ENDR^%ZISS
Q
;
XPZ ;----- PREVENT 'DISABLE OPTIONS' AND 'MOVE ROUTINES' PROMPTS
;
I $G(XPDENV)=1 D
. S XPDDIQ("XPZ1")=0 ;SUPPRESS 'DISABLE OPTIONS' PROMPT
. S XPDDIQ("XPZ2")=0 ;SUPPRESS 'MOVE ROUTINES' PROMT
Q
;
HELLO ;----- HELLO MESSAGE AND ENVIRONMENT CHECK
;
N X
S X=$P(^VA(200,DUZ,0),U)
W !!,$$CJ^XLFSTR("Hello, "_$P(X,",",2)_" "_$P(X,","),IOM)
W !!,$$CJ^XLFSTR("Checking Environment for "_$P($T(+2),";",4)_" V "_$P($T(+2),";",3)_" Patch "_$P($T(+2),";",5)_".",IOM)
Q
;
VER ;----- CHECK FOR VERSIONS
;
I $$VCHK("AVA","93.2",2)
I $$VCHK("DI","21.0",2)
I $$VCHK("XU","8.0",2)
Q
;
CHKPAT(X) ;
;----- CHECK IF PATCH HAS BEEN INSTALLED
;
; RETURNS 1 IF PATCH HAS BEEN INSTALLED, 0 IF NOT
;
N XPDA,OK
S OK=0
S XPDA=0
F S XPDA=$O(^XPD(9.7,"B",X,XPDA)) Q:'XPDA D
. I $P($G(^XPD(9.7,XPDA,0)),U,9)=3 S OK=1
Q OK
;
DUPE ;----- CHECK FOR DUPLICATE AVA ENTRIES IN PACKAGE FILE
;
N D,DA,DIC,X,Y
S X="AVA",DIC="^DIC(9.4,",DIC(0)="",D="C"
D IX^DIC
I Y<0,$D(^DIC(9.4,"C","AVA")) D
. W !!,*7,*7,$$CJ^XLFSTR("You have more than one entry in the ",IOM)
. W !,$$CJ^XLFSTR("PACKAGE file with an 'AVA' prefix. ",IOM)
. W !,$$CJ^XLFSTR(IORVON_"One entry needs to be deleted"_IORVOFF,IOM)
. W !,$$CJ^XLFSTR("FIX IT! Before proceeding. ",IOM),!!,*7,*7
. D FAIL(2)
Q
;
OK ;----- OK TO INSTALL?
;
I $D(XPDQUIT) D
. W !!,$$CJ^XLFSTR(IORVON_"Please FIX it!!"_IORVOFF,IOM) D SORRY
;
I '$D(XPDQUIT) D
. W !!,$$CJ^XLFSTR("ENVIRONMENT OK.",IOM)
. I '$$DIR^XBDIR("E","","","","","",1) D FAIL(2)
Q
;
FAIL(X) ;----- SET XPDQUIT
;
K DIFQ
S XPDQUIT=X
Q
;
SORRY ;----- ISSUE 'SORRY... PRESS RETURN' MESSAGES
;
N Y
I '$D(ZTQUEUED) D
. W *7,!,$$CJ^XLFSTR("Sorry.... ",IOM)
. S Y=$$DIR^XBDIR("E","Press RETURN")
Q
;
VCHK(AVAPRE,AVAVER,AVAQUIT) ;
;----- CHECK VERSIONS NEEDED
;
N AVAV,AVAMSG,Y
;
S Y=1
S AVAV=$$VERSION^XPDUTL(AVAPRE)
S AVAMSG=$S(AVAV<AVAVER:" <<<--- FIX IT!",1:"")
;
W !,$$CJ^XLFSTR("Need at least "_AVAPRE_" v "_AVAVER_"....."_AVAPRE_" v "_AVAV_" Present"_AVAMSG,IOM)
;
I AVAV<AVAVER D FAIL(AVAQUIT) S Y=0
;
Q Y
;
PRE ;EP -- PREINSTALL FROM KIDS.
;
D ^XBKVAR
;
D BMES^XPDUTL("Beginning pre-install routine (PRE^AVA32P17)...")
;
D MES^XPDUTL("Pre-install routine is complete.")
Q
;
POST ;EP -- POST INSTALL FROM KIDS.
;
D ^XBKVAR
;
D BMES^XPDUTL("Beginning post-install routine (POST^AVA32P17)...")
;
D P12
D P15
D P17
;
D BMES^XPDUTL("Delivering AVA*93.2*17 install message to select users...")
D MAIL
;
D BMES^XPDUTL("Post-install routine is complete.")
Q
MAIL ;----- SEND INSTALL MAIL MESSAGE
;
N DIFROM,XMSUB,XMDUZ,XMTEXT,XMY
;
K ^TMP("AVAP17MS",$J)
;
S ^TMP("AVAP17MS",$J,1)=" --- AVA v 93.2, Patch 17, has been installed into this uci ---"
;
I $G(XPDA) D
. S %=0
. F S %=$O(^XTMP("XPDI",XPDA,"BLD",XPDBLD,1,%)) Q:'% D
. . S ^TMP("AVAP17MS",$J,(%+1))=" "_^(%,0)
;
S XMSUB=$P($P($T(+1),";",2)," ",3,99)
S XMDUZ=$S($G(DUZ):DUZ,1:.5)
S XMTEXT="^TMP(""AVAP17MS"",$J,"
S XMY(1)=""
S XMY(DUZ)=""
;
F %="XUMGR","XUPROG","XUPROGMODE" D SINGLE(%)
;
D ^XMD
;
K ^TMP("AVAP17MS",$J)
;
Q
;
SINGLE(K) ;----- GET HOLDERS OF A SINGLE KEY K.
;
N Y
;
Q:'$D(^XUSEC(K))
;
S Y=0
F S Y=$O(^XUSEC(K,Y)) Q:'Y S XMY(Y)=""
;
Q
;
P12 ;----- CHANGE SUB-FILE DD NUMBER IN THE 9999999.18 MULTIPLE OF FILE 200
; FROM PATCH 12
;
N I,P
D BMES^XPDUTL("Changing sub-file dictionary number in the 9999999.18 multiple in file 200...")
;
S P=$P(^DD(200,9999999.18,0),U,2)
S I=0
F S I=$O(^VA(200,I)) Q:'(I=+I) D
. I $D(^VA(200,I,9999999.18,0)) S $P(^(0),U,2)=P
Q
P15 ;----- UPDATE IHS XREFS IN FILES 200, 4
; FROM PATCH 15
;
Q:$$CHKPAT("AVA*93.2*15")
D BMES^XPDUTL("Updating IHS CROSS-REFERENCES in files 4 and 200...")
D ^AVAP15
Q
P17 ;----- ADD/UPDATE RACE FILE ENTRIES
; FROM PATCH 17
;
D ^XBKVAR
N RACE
;
K ^DD(10,.01,1,2) ;KILL 2ND "B" XREF - SHOULD ONLY BE 1
;
D BMES^XPDUTL("UPDATING RACE FILE ENTRIES...")
;
D BLDLST(.RACE)
;
S IEN=0
F S IEN=$O(RACE("FDA",IEN)) Q:'IEN D
. N FDAROOT,IENROOT,IENS,MSG,MSGROOT
. S RACE=RACE("FDA",IEN,.01)
. S IENS=$O(^DIC(10,"B",$E(RACE,1,45),0))
. S:'IENS IENS="+1"
. S IENS=IENS_","
. M FDAROOT(10,IENS)=RACE("FDA",IEN)
. D UPDATE^DIE("","FDAROOT","IENROOT","MSGROOT")
. S MSG(1)=RACE("FDA",IEN,.01)_" ** ADDED/UPDATED **"
. I $D(MSGROOT) D
. . S MSG(1)=" "
. . S MSG(2)="** ERROR **"
. . S MSG(3)="** Unable to add/update entry for "_RACE("FDA",IEN,.01)
. . S MSG(4)="** Entry should be added/updated via FileMan:"
. . S MSG(5)="** Name (.01): "_RACE("FDA",IEN,.01)
. . S MSG(6)="** Abbrev (2): "_RACE("FDA",IEN,2)
. . S MSG(7)=" "
. D BMES^XPDUTL(.MSG)
Q
BLDLST(ARRAY) ;
;----- BUILT LIST OF VALID RACES
;
N I,TXT
F I=1:1 S TXT=$P($T(RACES+I),";;",2) Q:TXT["$$END" D
. S ARRAY("FDA",I,.01)=$P(TXT,U)
. S ARRAY("FDA",I,2)=$P(TXT,U,2)
Q
RACES ;RACE (#.01)^ABBREVIATION (#2)
;;AMERICAN INDIAN OR ALASKA NATIVE^3
;;ASIAN^A
;;BLACK OR AFRICAN AMERICAN^B
;;DECLINED TO ANSWER^D
;;NATIVE HAWAIIAN OR OTHER PACIFIC ISLANDER^H
;;UNKNOWN BY PATIENT^U
;;WHITE^W
;;$$END
;
PREV ;EP -- INSTALL PREVIOUS PATCHES 1-10
;
;PATCH 1 IS ROUTINE ONLY; OBSOLETE
D ^AVAP2 ;PATCH 2
;D ^AVAP3 ;PATCH 3; OBSOLETE
D CLASS^AVAP4 ;PATCH 4;PATCH 5;PATCH 6
D ^AVAPINIT ;PATCH 7
;PATCH 8 IS ROUTINE ONLY
D INSTALL^AVASLXR ;PATCH 9
D ^AVAP10 ;PATCH 10
Q
AVA32P17 ;IHS/ITSC/AEF - AVA 93.2 PATCH 17 ; [ 07/01/2003 10:38 AM ]
+1 ;;93.2;VA SUPPORT FILES;**17**;JUL 01, 1993;Build 12
+2 ;
+3 ;IHS/ITSC/AEF AVA*93.2*17 06/26/2003
+4 ;
ENV ;----- ENVIRONMENT CHECK
+1 ;
+2 NEW IORVOFF,IORVON
+3 ;
+4 DO ^XBKVAR
+5 DO HOME^%ZIS
+6 ;
+7 DO DUZ
+8 IF $GET(XPDQUIT)
DO SORRY
QUIT
+9 ;
+10 DO RV
+11 DO XPZ
+12 DO HELLO
+13 DO VER
+14 DO DUPE
+15 DO OK
+16 ;
+17 IF $DATA(XPDQUIT)
WRITE !,"INSTALL ABORTED!"
+18 ;
+19 QUIT
+20 ;
DUZ ;----- CHECK FOR VALID DUZ VARIABLES
+1 ;
+2 IF '$GET(DUZ)
WRITE !,"DUZ UNDEFINED OR 0."
DO FAIL(2)
+3 IF '$LENGTH($GET(DUZ(0)))
WRITE !,"DUZ(0) UNDEFINED OR NULL."
DO FAIL(2)
+4 IF '($GET(DUZ(0))["@")
WRITE !,"THE DD UPDATES REQUIRE AN '@' IN YOUR DUZ(0)"
DO FAIL(2)
+5 QUIT
+6 ;
RV ;----- SET REVERSE VIDEO ON/OFF VARIABLES
+1 ;
+2 DO HOME^%ZIS
+3 NEW X
+4 SET X="IORVON;IORVOFF"
+5 DO ENDR^%ZISS
+6 QUIT
+7 ;
XPZ ;----- PREVENT 'DISABLE OPTIONS' AND 'MOVE ROUTINES' PROMPTS
+1 ;
+2 IF $GET(XPDENV)=1
Begin DoDot:1
+3 ;SUPPRESS 'DISABLE OPTIONS' PROMPT
SET XPDDIQ("XPZ1")=0
+4 ;SUPPRESS 'MOVE ROUTINES' PROMT
SET XPDDIQ("XPZ2")=0
End DoDot:1
+5 QUIT
+6 ;
HELLO ;----- HELLO MESSAGE AND ENVIRONMENT CHECK
+1 ;
+2 NEW X
+3 SET X=$PIECE(^VA(200,DUZ,0),U)
+4 WRITE !!,$$CJ^XLFSTR("Hello, "_$PIECE(X,",",2)_" "_$PIECE(X,","),IOM)
+5 WRITE !!,$$CJ^XLFSTR("Checking Environment for "_$PIECE($TEXT(+2),";",4)_" V "_$PIECE($TEXT(+2),";",3)_" Patch "_$PIECE($TEXT(+2),";",5)_".",IOM)
+6 QUIT
+7 ;
VER ;----- CHECK FOR VERSIONS
+1 ;
+2 IF $$VCHK("AVA","93.2",2)
+3 IF $$VCHK("DI","21.0",2)
+4 IF $$VCHK("XU","8.0",2)
+5 QUIT
+6 ;
CHKPAT(X) ;
+1 ;----- CHECK IF PATCH HAS BEEN INSTALLED
+2 ;
+3 ; RETURNS 1 IF PATCH HAS BEEN INSTALLED, 0 IF NOT
+4 ;
+5 NEW XPDA,OK
+6 SET OK=0
+7 SET XPDA=0
+8 FOR
SET XPDA=$ORDER(^XPD(9.7,"B",X,XPDA))
IF 'XPDA
QUIT
Begin DoDot:1
+9 IF $PIECE($GET(^XPD(9.7,XPDA,0)),U,9)=3
SET OK=1
End DoDot:1
+10 QUIT OK
+11 ;
DUPE ;----- CHECK FOR DUPLICATE AVA ENTRIES IN PACKAGE FILE
+1 ;
+2 NEW D,DA,DIC,X,Y
+3 SET X="AVA"
SET DIC="^DIC(9.4,"
SET DIC(0)=""
SET D="C"
+4 DO IX^DIC
+5 IF Y<0
IF $DATA(^DIC(9.4,"C","AVA"))
Begin DoDot:1
+6 WRITE !!,*7,*7,$$CJ^XLFSTR("You have more than one entry in the ",IOM)
+7 WRITE !,$$CJ^XLFSTR("PACKAGE file with an 'AVA' prefix. ",IOM)
+8 WRITE !,$$CJ^XLFSTR(IORVON_"One entry needs to be deleted"_IORVOFF,IOM)
+9 WRITE !,$$CJ^XLFSTR("FIX IT! Before proceeding. ",IOM),!!,*7,*7
+10 DO FAIL(2)
End DoDot:1
+11 QUIT
+12 ;
OK ;----- OK TO INSTALL?
+1 ;
+2 IF $DATA(XPDQUIT)
Begin DoDot:1
+3 WRITE !!,$$CJ^XLFSTR(IORVON_"Please FIX it!!"_IORVOFF,IOM)
DO SORRY
End DoDot:1
+4 ;
+5 IF '$DATA(XPDQUIT)
Begin DoDot:1
+6 WRITE !!,$$CJ^XLFSTR("ENVIRONMENT OK.",IOM)
+7 IF '$$DIR^XBDIR("E","","","","","",1)
DO FAIL(2)
End DoDot:1
+8 QUIT
+9 ;
FAIL(X) ;----- SET XPDQUIT
+1 ;
+2 KILL DIFQ
+3 SET XPDQUIT=X
+4 QUIT
+5 ;
SORRY ;----- ISSUE 'SORRY... PRESS RETURN' MESSAGES
+1 ;
+2 NEW Y
+3 IF '$DATA(ZTQUEUED)
Begin DoDot:1
+4 WRITE *7,!,$$CJ^XLFSTR("Sorry.... ",IOM)
+5 SET Y=$$DIR^XBDIR("E","Press RETURN")
End DoDot:1
+6 QUIT
+7 ;
VCHK(AVAPRE,AVAVER,AVAQUIT) ;
+1 ;----- CHECK VERSIONS NEEDED
+2 ;
+3 NEW AVAV,AVAMSG,Y
+4 ;
+5 SET Y=1
+6 SET AVAV=$$VERSION^XPDUTL(AVAPRE)
+7 SET AVAMSG=$SELECT(AVAV<AVAVER:" <<<--- FIX IT!",1:"")
+8 ;
+9 WRITE !,$$CJ^XLFSTR("Need at least "_AVAPRE_" v "_AVAVER_"....."_AVAPRE_" v "_AVAV_" Present"_AVAMSG,IOM)
+10 ;
+11 IF AVAV<AVAVER
DO FAIL(AVAQUIT)
SET Y=0
+12 ;
+13 QUIT Y
+14 ;
PRE ;EP -- PREINSTALL FROM KIDS.
+1 ;
+2 DO ^XBKVAR
+3 ;
+4 DO BMES^XPDUTL("Beginning pre-install routine (PRE^AVA32P17)...")
+5 ;
+6 DO MES^XPDUTL("Pre-install routine is complete.")
+7 QUIT
+8 ;
POST ;EP -- POST INSTALL FROM KIDS.
+1 ;
+2 DO ^XBKVAR
+3 ;
+4 DO BMES^XPDUTL("Beginning post-install routine (POST^AVA32P17)...")
+5 ;
+6 DO P12
+7 DO P15
+8 DO P17
+9 ;
+10 DO BMES^XPDUTL("Delivering AVA*93.2*17 install message to select users...")
+11 DO MAIL
+12 ;
+13 DO BMES^XPDUTL("Post-install routine is complete.")
+14 QUIT
MAIL ;----- SEND INSTALL MAIL MESSAGE
+1 ;
+2 NEW DIFROM,XMSUB,XMDUZ,XMTEXT,XMY
+3 ;
+4 KILL ^TMP("AVAP17MS",$JOB)
+5 ;
+6 SET ^TMP("AVAP17MS",$JOB,1)=" --- AVA v 93.2, Patch 17, has been installed into this uci ---"
+7 ;
+8 IF $GET(XPDA)
Begin DoDot:1
+9 SET %=0
+10 FOR
SET %=$ORDER(^XTMP("XPDI",XPDA,"BLD",XPDBLD,1,%))
IF '%
QUIT
Begin DoDot:2
+11 SET ^TMP("AVAP17MS",$JOB,(%+1))=" "_^(%,0)
End DoDot:2
End DoDot:1
+12 ;
+13 SET XMSUB=$PIECE($PIECE($TEXT(+1),";",2)," ",3,99)
+14 SET XMDUZ=$SELECT($GET(DUZ):DUZ,1:.5)
+15 SET XMTEXT="^TMP(""AVAP17MS"",$J,"
+16 SET XMY(1)=""
+17 SET XMY(DUZ)=""
+18 ;
+19 FOR %="XUMGR","XUPROG","XUPROGMODE"
DO SINGLE(%)
+20 ;
+21 DO ^XMD
+22 ;
+23 KILL ^TMP("AVAP17MS",$JOB)
+24 ;
+25 QUIT
+26 ;
SINGLE(K) ;----- GET HOLDERS OF A SINGLE KEY K.
+1 ;
+2 NEW Y
+3 ;
+4 IF '$DATA(^XUSEC(K))
QUIT
+5 ;
+6 SET Y=0
+7 FOR
SET Y=$ORDER(^XUSEC(K,Y))
IF 'Y
QUIT
SET XMY(Y)=""
+8 ;
+9 QUIT
+10 ;
P12 ;----- CHANGE SUB-FILE DD NUMBER IN THE 9999999.18 MULTIPLE OF FILE 200
+1 ; FROM PATCH 12
+2 ;
+3 NEW I,P
+4 DO BMES^XPDUTL("Changing sub-file dictionary number in the 9999999.18 multiple in file 200...")
+5 ;
+6 SET P=$PIECE(^DD(200,9999999.18,0),U,2)
+7 SET I=0
+8 FOR
SET I=$ORDER(^VA(200,I))
IF '(I=+I)
QUIT
Begin DoDot:1
+9 IF $DATA(^VA(200,I,9999999.18,0))
SET $PIECE(^(0),U,2)=P
End DoDot:1
+10 QUIT
P15 ;----- UPDATE IHS XREFS IN FILES 200, 4
+1 ; FROM PATCH 15
+2 ;
+3 IF $$CHKPAT("AVA*93.2*15")
QUIT
+4 DO BMES^XPDUTL("Updating IHS CROSS-REFERENCES in files 4 and 200...")
+5 DO ^AVAP15
+6 QUIT
P17 ;----- ADD/UPDATE RACE FILE ENTRIES
+1 ; FROM PATCH 17
+2 ;
+3 DO ^XBKVAR
+4 NEW RACE
+5 ;
+6 ;KILL 2ND "B" XREF - SHOULD ONLY BE 1
KILL ^DD(10,.01,1,2)
+7 ;
+8 DO BMES^XPDUTL("UPDATING RACE FILE ENTRIES...")
+9 ;
+10 DO BLDLST(.RACE)
+11 ;
+12 SET IEN=0
+13 FOR
SET IEN=$ORDER(RACE("FDA",IEN))
IF 'IEN
QUIT
Begin DoDot:1
+14 NEW FDAROOT,IENROOT,IENS,MSG,MSGROOT
+15 SET RACE=RACE("FDA",IEN,.01)
+16 SET IENS=$ORDER(^DIC(10,"B",$EXTRACT(RACE,1,45),0))
+17 IF 'IENS
SET IENS="+1"
+18 SET IENS=IENS_","
+19 MERGE FDAROOT(10,IENS)=RACE("FDA",IEN)
+20 DO UPDATE^DIE("","FDAROOT","IENROOT","MSGROOT")
+21 SET MSG(1)=RACE("FDA",IEN,.01)_" ** ADDED/UPDATED **"
+22 IF $DATA(MSGROOT)
Begin DoDot:2
+23 SET MSG(1)=" "
+24 SET MSG(2)="** ERROR **"
+25 SET MSG(3)="** Unable to add/update entry for "_RACE("FDA",IEN,.01)
+26 SET MSG(4)="** Entry should be added/updated via FileMan:"
+27 SET MSG(5)="** Name (.01): "_RACE("FDA",IEN,.01)
+28 SET MSG(6)="** Abbrev (2): "_RACE("FDA",IEN,2)
+29 SET MSG(7)=" "
End DoDot:2
+30 DO BMES^XPDUTL(.MSG)
End DoDot:1
+31 QUIT
BLDLST(ARRAY) ;
+1 ;----- BUILT LIST OF VALID RACES
+2 ;
+3 NEW I,TXT
+4 FOR I=1:1
SET TXT=$PIECE($TEXT(RACES+I),";;",2)
IF TXT["$$END"
QUIT
Begin DoDot:1
+5 SET ARRAY("FDA",I,.01)=$PIECE(TXT,U)
+6 SET ARRAY("FDA",I,2)=$PIECE(TXT,U,2)
End DoDot:1
+7 QUIT
RACES ;RACE (#.01)^ABBREVIATION (#2)
+1 ;;AMERICAN INDIAN OR ALASKA NATIVE^3
+2 ;;ASIAN^A
+3 ;;BLACK OR AFRICAN AMERICAN^B
+4 ;;DECLINED TO ANSWER^D
+5 ;;NATIVE HAWAIIAN OR OTHER PACIFIC ISLANDER^H
+6 ;;UNKNOWN BY PATIENT^U
+7 ;;WHITE^W
+8 ;;$$END
+9 ;
PREV ;EP -- INSTALL PREVIOUS PATCHES 1-10
+1 ;
+2 ;PATCH 1 IS ROUTINE ONLY; OBSOLETE
+3 ;PATCH 2
DO ^AVAP2
+4 ;D ^AVAP3 ;PATCH 3; OBSOLETE
+5 ;PATCH 4;PATCH 5;PATCH 6
DO CLASS^AVAP4
+6 ;PATCH 7
DO ^AVAPINIT
+7 ;PATCH 8 IS ROUTINE ONLY
+8 ;PATCH 9
DO INSTALL^AVASLXR
+9 ;PATCH 10
DO ^AVAP10
+10 QUIT