MAGVAQ02 ;WOIFO/MAT - Archiver Options for Queues ; 29 Aug 2012 10:35 PM
;;3.0;IMAGING;**118**;Mar 19, 2002;Build 4525;May 01, 2013
;; Per VHA Directive 2004-038, this routine should not be modified.
;; +---------------------------------------------------------------+
;; | Property of the US Government. |
;; | No permission to copy or redistribute this software is given. |
;; | Use of unreleased versions of this software requires the user |
;; | to execute a written test agreement with the VistA Imaging |
;; | Development Office of the Department of Veterans Affairs, |
;; | telephone (301) 734-0100. |
;; | The Food and Drug Administration classifies this software as |
;; | a medical device. As such, it may not be changed in any way. |
;; | Modifications to this software may result in an adulterated |
;; | medical device under 21CFR820, the use of which is considered |
;; | to be a violation of US Federal Statutes. |
;; +---------------------------------------------------------------+
;;
Q
;
; OPTIONS for the MAGV HDIG MENU.
; SORT template is MAGVA-ASYNC-STORAGE-ERRORS.
;
;+++++ OPTION: MAGVA ASYNC STORAGE ERR LIST
;
QERRLIST ;
;
;--- Quit if SEARCH template not found.
N MAGTEMPL S MAGTEMPL=$$ZCONST01()
N TMPLIEN S TMPLIEN=$$YNDIBT(MAGTEMPL) I TMPLIEN<0 D Q
. W !!,?2,"Search template ",MAGTEMPL," not found."
. Q
;--- Quit if SEARCH template empty.
I $D(^DIBT(TMPLIEN,1))'=10 W !!,?2,"Search template has no entries." Q
;
;--- Output.
N TMPLDATA S TMPLDATA=$G(^DIBT(TMPLIEN,"QR"))
N CTITEM,TMPLDTTM S (CTITEM,TMPLDTTM)=""
S:$P(TMPLDATA,U)'="" TMPLDTTM=$$FMTE^XLFDT($P(TMPLDATA,U))
S:$P(TMPLDATA,U,2)'="" CTITEM=$P(TMPLDATA,U,2)
W !!,"Detail of ",CTITEM," item(s)" W:TMPLDTTM'="" " selected on "_TMPLDTTM
W ":",!!
;
N MAGIEN S MAGIEN=0
F S MAGIEN=$O(^DIBT(TMPLIEN,1,MAGIEN)) Q:MAGIEN="" D
. ;
. W "Number ",$J(MAGIEN,8)," queued on: ",$$GET1^DIQ(2006.928,MAGIEN,3),!
. D QERRLISU(MAGIEN)
. W !
. Q
D YNEXIT
Q
;+++++ Output for tag QERRLIST.
QERRLISU(MAGQIEN) ;
;
;--- Validate parameter or quit.
I $G(MAGQIEN)="" W !,"Undefined QUEUE MESSAGE file entry." Q
N MAGARY S MAGARY=$NA(^TMP("MAGVAQ02",$J))
K @MAGARY
;
;--- Load WP field data to temp global array; quit if empty.
N MAGWP S MAGWP=$$GET1^DIQ(2006.928,MAGQIEN,6,,MAGARY)
I MAGWP="" W !,?18,"MESSAGE field is empty." Q
;
;--- Initialize the MXMLDOM or quit. (All calls: Supported IA #3561)
N MAGNDX S MAGNDX=$$EN^MXMLDOM(MAGARY)
I MAGNDX=0 W !,?18,"Error processing MESSAGE field data." Q
;
;--- Traverse child(ren) node(s) for element(s).
N CT S CT=1 F S CT=$$CHILD^MXMLDOM(MAGNDX,1,CT) Q:CT=0 D
. ;
. N MAGNAME S MAGNAME=$$NAME^MXMLDOM(MAGNDX,CT)
. ;--- Process element lastError.
. D:MAGNAME="lastError"
. . N OUT S OUT=""
. . N TXT S:$$TEXT^MXMLDOM(MAGNDX,CT,"TXT") OUT=TXT(1)
. . W !,?36,MAGNAME_": "_OUT
. . Q
. ;--- Process element artifactToken.
. D:MAGNAME="artifactToken"
. . ;
. . ;--- Quit if no artifactToken value.
. . N ARTTKN S ARTTKN=$$QERRXML2(MAGNDX,CT) I +ARTTKN<0 W !,?18,$P(ARTTKN,"`",2) Q
. . W !,?32,MAGNAME,": ",ARTTKN
. . ;
. . ;--- Quit if no IEN in ARTIFACT file (#2006.919).
. . N ARTIEN,MAGERR S ARTIEN=$$FIND1^DIC(2006.916,,"X",ARTTKN,,,"MAGERR")
. . I $D(MAGERR) W !,?18,$G(MAGERR("DIERR",1,"TEXT",1)) Q
. . W !,?26,"ARTIFACT File entry: ",$S(ARTIEN=0:"Record not found.",1:ARTIEN)
. . ;
. . ;--- Get [SUCCESS=0] STORAGE TRANSACTION entries for ARTIFACT IEN.
. . W !,?18,"STORAGE TRANSACTION MESSAGE: "
. . K MAGERR
. . N MAGMSG
. . N MAGX S MAGX=$$GET1^DIQ(2006.926,ARTIEN,7,,"MAGMSG","MAGERR")
. . I $D(MAGERR) W "FileMan error: ",MAGERR("DIERR",1,"TEXT",1) Q
. . ;
. . ;--- Output entry's MESSAGE field.
. . W $S(MAGMSG(1)="":"[null]",1:MAGMSG(1))
. . Q
. Q
W !
;--- Cleanup.
D DELETE^MXMLDOM(MAGNDX)
K @MAGARY
Q
;
QERRXML2(MAGNDX,CT) ;
N OUT,TXT S OUT=-1_"`Element value not found."
S:$$TEXT^MXMLDOM(MAGNDX,CT,"TXT") OUT=TXT(1)
Q OUT
;+++++ OPTION: MAGVA ASYNC STORAGE ERR REQU
;
;--- Re-queue QUEUE MESSAGE (#2006.928) async storage request error queue
; entries as async storage request queue entries.
;
; Changes: #.01 QUEUE value to 'Async Storage Request Queue'.
; #3 ENQUEUED DATE/TIME
; #4 EARLIEST DELIVERY DATE/TIME
;
; Remaining fields are unchanaged.
;
QERRREQ ;
;
;--- Initialize.
N NOW S NOW=$$NOW^XLFDT
N FILE S FILE=2006.927
N MAGQUEUE S MAGQUEUE=$$ZCONST02()
;--- Quit if target QUEUE not found.
N MAGQIEN S MAGQIEN=$$YNQUEUE(FILE,MAGQUEUE)
I MAGQIEN<0 W !,"QUEUE: '"_MAGQUEUE_"' not found." Q
;--- Get target QUEUE's TRIGGER DELAY IN SECONDS.
N MAGDELAY S MAGDELAY=$$GET1^DIQ(FILE,MAGQIEN,"TRIGGER DELAY IN SECONDS","I")
;--- Set EARLIEST DELIVERY DATE/TIME. IA #10103 (Supported).
N MAGDLVRY S MAGDLVRY=$$FMADD^XLFDT(NOW,0,0,0,MAGDELAY)
;
;--- Quit if SEARCH template not found.
N MAGTEMPL S MAGTEMPL=$$ZCONST01()
N TMPLIEN S TMPLIEN=$$YNDIBT(MAGTEMPL)
I TMPLIEN<0 W !,?2,"Search template ",MAGTEMPL," not found." Q
;--- Quit if SEARCH template empty.
I $D(^DIBT(TMPLIEN,1))'=10 W !!,?2,"Search template has no entries." Q
;
;--- Initialize.
N FILE1 S FILE1=2006.928
N DIE S DIE="^MAGV("_FILE1_","
N DA,DR S DR=".01////^S X=MAGQIEN;3////^S X=NOW;4////^S X=MAGDLVRY;"
;
;--- Requeue each IEN in the sort template.
W !,?3,"Requeuing entry ... Result",!
N CTREQUE,QMSGIEN S (CTREQUE,QMSGIEN)=0
F S QMSGIEN=$O(^DIBT(TMPLIEN,1,QMSGIEN)) Q:QMSGIEN="" D
. ;
. ;--- Quit if not found.
. W !,?10,$J(QMSGIEN,8) I '$D(^MAGV(FILE1,QMSGIEN)) W " ... not found." Q
. ;
. ;--- Quit if already requeued.
. I MAGQIEN=$$GET1^DIQ(FILE1,QMSGIEN,"QUEUE","I") W " ... already requeued." Q
. ;
. ;--- Requeue.
. N DA S DA=QMSGIEN D ^DIE W " ... requeued." S CTREQUE=CTREQUE+1
. Q
;--- Output total requeue count.
W !!,$J(CTREQUE,8)," Async Storage Request Errors requeued."
;--- Prompt to exit.
D YNEXIT
Q
;+++++ OPTION: MAGVA ASYNC STORAGE ERR QURY
;
;--- Find QUEUE MESSAGE (#2006.928) async error request queue entries and
; store in template.
;
QERRQURY ;
;--- Quit if SEARCH template not found.
N MAGTEMPL S MAGTEMPL=$$ZCONST01()
N MAGQUEUE S MAGQUEUE=$$ZCONST03()
N TMPLIEN S TMPLIEN=$$YNDIBT(MAGTEMPL)
I TMPLIEN<0 W !,?3,"Search template not found." Q
;--- Quit if target QUEUE not found.
N MAGQIEN S MAGQIEN=$$YNQUEUE(2006.927,MAGQUEUE)
I MAGQIEN<0 W !,"QUEUE: '"_MAGQUEUE_"' not found." Q
;--- Lock template and re-initialize matching entries matching QUEUE.
L +^DIBT(TMPLIEN):3 I $T D
. K ^DIBT(TMPLIEN,1)
. M ^DIBT(TMPLIEN,1)=^MAGV(2006.928,"B",MAGQIEN)
. N CT,ND S (CT,ND)=0 F S ND=$O(^DIBT(TMPLIEN,1,ND)) Q:ND="" S CT=CT+1
. S $P(^DIBT(TMPLIEN,"QR"),U)=$$NOW^XLFDT,$P(^DIBT(TMPLIEN,"QR"),U,2)=CT
. W !!,?3,$J(CT,5)," entries selected."
. L -^DIBT(TMPLIEN)
. Q
E D
. W !!,"Template is locked."
. Q
D YNEXIT
Q
;--- Internal Utility: Return IEN of input SORT template X.
YNDIBT(X) ;
N DIC,Y S DIC="^DIBT(",DIC(0)="BX" D ^DIC
Q +Y
;--- Internal Utility: Call ^DIR for exit prompt.
YNEXIT ;
W !
N DIR S DIR("A")="Enter or '^' to exit"
S DIR(0)="E"
D ^DIR
Q
;--- Internal Utility: Return IEN of input FILE entry X.
YNQUEUE(FILE,X) ;
N DIC,Y S DIC="^MAGV("_FILE_",",DIC(0)="BX" D ^DIC
Q +Y
;--- Template Name
ZCONST01() ;
Q "MAGVA-ASYNC-STORAGE-ERRORS"
;--- QUEUE file (#2006.927) entry name for requests.
ZCONST02() ;
Q "Async Storage Request Queue"
;--- QUEUE file entry name for errors.
ZCONST03() ;
Q "Async Storage Request Error Queue"
;
; MAGVAQ02
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HMAGVAQ02 7843 printed Nov 22, 2024@17:19:34 Page 2
MAGVAQ02 ;WOIFO/MAT - Archiver Options for Queues ; 29 Aug 2012 10:35 PM
+1 ;;3.0;IMAGING;**118**;Mar 19, 2002;Build 4525;May 01, 2013
+2 ;; Per VHA Directive 2004-038, this routine should not be modified.
+3 ;; +---------------------------------------------------------------+
+4 ;; | Property of the US Government. |
+5 ;; | No permission to copy or redistribute this software is given. |
+6 ;; | Use of unreleased versions of this software requires the user |
+7 ;; | to execute a written test agreement with the VistA Imaging |
+8 ;; | Development Office of the Department of Veterans Affairs, |
+9 ;; | telephone (301) 734-0100. |
+10 ;; | The Food and Drug Administration classifies this software as |
+11 ;; | a medical device. As such, it may not be changed in any way. |
+12 ;; | Modifications to this software may result in an adulterated |
+13 ;; | medical device under 21CFR820, the use of which is considered |
+14 ;; | to be a violation of US Federal Statutes. |
+15 ;; +---------------------------------------------------------------+
+16 ;;
+17 QUIT
+18 ;
+19 ; OPTIONS for the MAGV HDIG MENU.
+20 ; SORT template is MAGVA-ASYNC-STORAGE-ERRORS.
+21 ;
+22 ;+++++ OPTION: MAGVA ASYNC STORAGE ERR LIST
+23 ;
QERRLIST ;
+1 ;
+2 ;--- Quit if SEARCH template not found.
+3 NEW MAGTEMPL
SET MAGTEMPL=$$ZCONST01()
+4 NEW TMPLIEN
SET TMPLIEN=$$YNDIBT(MAGTEMPL)
IF TMPLIEN<0
Begin DoDot:1
+5 WRITE !!,?2,"Search template ",MAGTEMPL," not found."
+6 QUIT
End DoDot:1
QUIT
+7 ;--- Quit if SEARCH template empty.
+8 IF $DATA(^DIBT(TMPLIEN,1))'=10
WRITE !!,?2,"Search template has no entries."
QUIT
+9 ;
+10 ;--- Output.
+11 NEW TMPLDATA
SET TMPLDATA=$GET(^DIBT(TMPLIEN,"QR"))
+12 NEW CTITEM,TMPLDTTM
SET (CTITEM,TMPLDTTM)=""
+13 if $PIECE(TMPLDATA,U)'=""
SET TMPLDTTM=$$FMTE^XLFDT($PIECE(TMPLDATA,U))
+14 if $PIECE(TMPLDATA,U,2)'=""
SET CTITEM=$PIECE(TMPLDATA,U,2)
+15 WRITE !!,"Detail of ",CTITEM," item(s)"
if TMPLDTTM'=""
WRITE " selected on "_TMPLDTTM
+16 WRITE ":",!!
+17 ;
+18 NEW MAGIEN
SET MAGIEN=0
+19 FOR
SET MAGIEN=$ORDER(^DIBT(TMPLIEN,1,MAGIEN))
if MAGIEN=""
QUIT
Begin DoDot:1
+20 ;
+21 WRITE "Number ",$JUSTIFY(MAGIEN,8)," queued on: ",$$GET1^DIQ(2006.928,MAGIEN,3),!
+22 DO QERRLISU(MAGIEN)
+23 WRITE !
+24 QUIT
End DoDot:1
+25 DO YNEXIT
+26 QUIT
+27 ;+++++ Output for tag QERRLIST.
QERRLISU(MAGQIEN) ;
+1 ;
+2 ;--- Validate parameter or quit.
+3 IF $GET(MAGQIEN)=""
WRITE !,"Undefined QUEUE MESSAGE file entry."
QUIT
+4 NEW MAGARY
SET MAGARY=$NAME(^TMP("MAGVAQ02",$JOB))
+5 KILL @MAGARY
+6 ;
+7 ;--- Load WP field data to temp global array; quit if empty.
+8 NEW MAGWP
SET MAGWP=$$GET1^DIQ(2006.928,MAGQIEN,6,,MAGARY)
+9 IF MAGWP=""
WRITE !,?18,"MESSAGE field is empty."
QUIT
+10 ;
+11 ;--- Initialize the MXMLDOM or quit. (All calls: Supported IA #3561)
+12 NEW MAGNDX
SET MAGNDX=$$EN^MXMLDOM(MAGARY)
+13 IF MAGNDX=0
WRITE !,?18,"Error processing MESSAGE field data."
QUIT
+14 ;
+15 ;--- Traverse child(ren) node(s) for element(s).
+16 NEW CT
SET CT=1
FOR
SET CT=$$CHILD^MXMLDOM(MAGNDX,1,CT)
if CT=0
QUIT
Begin DoDot:1
+17 ;
+18 NEW MAGNAME
SET MAGNAME=$$NAME^MXMLDOM(MAGNDX,CT)
+19 ;--- Process element lastError.
+20 if MAGNAME="lastError"
Begin DoDot:2
+21 NEW OUT
SET OUT=""
+22 NEW TXT
if $$TEXT^MXMLDOM(MAGNDX,CT,"TXT")
SET OUT=TXT(1)
+23 WRITE !,?36,MAGNAME_": "_OUT
+24 QUIT
End DoDot:2
+25 ;--- Process element artifactToken.
+26 if MAGNAME="artifactToken"
Begin DoDot:2
+27 ;
+28 ;--- Quit if no artifactToken value.
+29 NEW ARTTKN
SET ARTTKN=$$QERRXML2(MAGNDX,CT)
IF +ARTTKN<0
WRITE !,?18,$PIECE(ARTTKN,"`",2)
QUIT
+30 WRITE !,?32,MAGNAME,": ",ARTTKN
+31 ;
+32 ;--- Quit if no IEN in ARTIFACT file (#2006.919).
+33 NEW ARTIEN,MAGERR
SET ARTIEN=$$FIND1^DIC(2006.916,,"X",ARTTKN,,,"MAGERR")
+34 IF $DATA(MAGERR)
WRITE !,?18,$GET(MAGERR("DIERR",1,"TEXT",1))
QUIT
+35 WRITE !,?26,"ARTIFACT File entry: ",$SELECT(ARTIEN=0:"Record not found.",1:ARTIEN)
+36 ;
+37 ;--- Get [SUCCESS=0] STORAGE TRANSACTION entries for ARTIFACT IEN.
+38 WRITE !,?18,"STORAGE TRANSACTION MESSAGE: "
+39 KILL MAGERR
+40 NEW MAGMSG
+41 NEW MAGX
SET MAGX=$$GET1^DIQ(2006.926,ARTIEN,7,,"MAGMSG","MAGERR")
+42 IF $DATA(MAGERR)
WRITE "FileMan error: ",MAGERR("DIERR",1,"TEXT",1)
QUIT
+43 ;
+44 ;--- Output entry's MESSAGE field.
+45 WRITE $SELECT(MAGMSG(1)="":"[null]",1:MAGMSG(1))
+46 QUIT
End DoDot:2
+47 QUIT
End DoDot:1
+48 WRITE !
+49 ;--- Cleanup.
+50 DO DELETE^MXMLDOM(MAGNDX)
+51 KILL @MAGARY
+52 QUIT
+53 ;
QERRXML2(MAGNDX,CT) ;
+1 NEW OUT,TXT
SET OUT=-1_"`Element value not found."
+2 if $$TEXT^MXMLDOM(MAGNDX,CT,"TXT")
SET OUT=TXT(1)
+3 QUIT OUT
+4 ;+++++ OPTION: MAGVA ASYNC STORAGE ERR REQU
+5 ;
+6 ;--- Re-queue QUEUE MESSAGE (#2006.928) async storage request error queue
+7 ; entries as async storage request queue entries.
+8 ;
+9 ; Changes: #.01 QUEUE value to 'Async Storage Request Queue'.
+10 ; #3 ENQUEUED DATE/TIME
+11 ; #4 EARLIEST DELIVERY DATE/TIME
+12 ;
+13 ; Remaining fields are unchanaged.
+14 ;
QERRREQ ;
+1 ;
+2 ;--- Initialize.
+3 NEW NOW
SET NOW=$$NOW^XLFDT
+4 NEW FILE
SET FILE=2006.927
+5 NEW MAGQUEUE
SET MAGQUEUE=$$ZCONST02()
+6 ;--- Quit if target QUEUE not found.
+7 NEW MAGQIEN
SET MAGQIEN=$$YNQUEUE(FILE,MAGQUEUE)
+8 IF MAGQIEN<0
WRITE !,"QUEUE: '"_MAGQUEUE_"' not found."
QUIT
+9 ;--- Get target QUEUE's TRIGGER DELAY IN SECONDS.
+10 NEW MAGDELAY
SET MAGDELAY=$$GET1^DIQ(FILE,MAGQIEN,"TRIGGER DELAY IN SECONDS","I")
+11 ;--- Set EARLIEST DELIVERY DATE/TIME. IA #10103 (Supported).
+12 NEW MAGDLVRY
SET MAGDLVRY=$$FMADD^XLFDT(NOW,0,0,0,MAGDELAY)
+13 ;
+14 ;--- Quit if SEARCH template not found.
+15 NEW MAGTEMPL
SET MAGTEMPL=$$ZCONST01()
+16 NEW TMPLIEN
SET TMPLIEN=$$YNDIBT(MAGTEMPL)
+17 IF TMPLIEN<0
WRITE !,?2,"Search template ",MAGTEMPL," not found."
QUIT
+18 ;--- Quit if SEARCH template empty.
+19 IF $DATA(^DIBT(TMPLIEN,1))'=10
WRITE !!,?2,"Search template has no entries."
QUIT
+20 ;
+21 ;--- Initialize.
+22 NEW FILE1
SET FILE1=2006.928
+23 NEW DIE
SET DIE="^MAGV("_FILE1_","
+24 NEW DA,DR
SET DR=".01////^S X=MAGQIEN;3////^S X=NOW;4////^S X=MAGDLVRY;"
+25 ;
+26 ;--- Requeue each IEN in the sort template.
+27 WRITE !,?3,"Requeuing entry ... Result",!
+28 NEW CTREQUE,QMSGIEN
SET (CTREQUE,QMSGIEN)=0
+29 FOR
SET QMSGIEN=$ORDER(^DIBT(TMPLIEN,1,QMSGIEN))
if QMSGIEN=""
QUIT
Begin DoDot:1
+30 ;
+31 ;--- Quit if not found.
+32 WRITE !,?10,$JUSTIFY(QMSGIEN,8)
IF '$DATA(^MAGV(FILE1,QMSGIEN))
WRITE " ... not found."
QUIT
+33 ;
+34 ;--- Quit if already requeued.
+35 IF MAGQIEN=$$GET1^DIQ(FILE1,QMSGIEN,"QUEUE","I")
WRITE " ... already requeued."
QUIT
+36 ;
+37 ;--- Requeue.
+38 NEW DA
SET DA=QMSGIEN
DO ^DIE
WRITE " ... requeued."
SET CTREQUE=CTREQUE+1
+39 QUIT
End DoDot:1
+40 ;--- Output total requeue count.
+41 WRITE !!,$JUSTIFY(CTREQUE,8)," Async Storage Request Errors requeued."
+42 ;--- Prompt to exit.
+43 DO YNEXIT
+44 QUIT
+45 ;+++++ OPTION: MAGVA ASYNC STORAGE ERR QURY
+46 ;
+47 ;--- Find QUEUE MESSAGE (#2006.928) async error request queue entries and
+48 ; store in template.
+49 ;
QERRQURY ;
+1 ;--- Quit if SEARCH template not found.
+2 NEW MAGTEMPL
SET MAGTEMPL=$$ZCONST01()
+3 NEW MAGQUEUE
SET MAGQUEUE=$$ZCONST03()
+4 NEW TMPLIEN
SET TMPLIEN=$$YNDIBT(MAGTEMPL)
+5 IF TMPLIEN<0
WRITE !,?3,"Search template not found."
QUIT
+6 ;--- Quit if target QUEUE not found.
+7 NEW MAGQIEN
SET MAGQIEN=$$YNQUEUE(2006.927,MAGQUEUE)
+8 IF MAGQIEN<0
WRITE !,"QUEUE: '"_MAGQUEUE_"' not found."
QUIT
+9 ;--- Lock template and re-initialize matching entries matching QUEUE.
+10 LOCK +^DIBT(TMPLIEN):3
IF $TEST
Begin DoDot:1
+11 KILL ^DIBT(TMPLIEN,1)
+12 MERGE ^DIBT(TMPLIEN,1)=^MAGV(2006.928,"B",MAGQIEN)
+13 NEW CT,ND
SET (CT,ND)=0
FOR
SET ND=$ORDER(^DIBT(TMPLIEN,1,ND))
if ND=""
QUIT
SET CT=CT+1
+14 SET $PIECE(^DIBT(TMPLIEN,"QR"),U)=$$NOW^XLFDT
SET $PIECE(^DIBT(TMPLIEN,"QR"),U,2)=CT
+15 WRITE !!,?3,$JUSTIFY(CT,5)," entries selected."
+16 LOCK -^DIBT(TMPLIEN)
+17 QUIT
End DoDot:1
+18 IF '$TEST
Begin DoDot:1
+19 WRITE !!,"Template is locked."
+20 QUIT
End DoDot:1
+21 DO YNEXIT
+22 QUIT
+23 ;--- Internal Utility: Return IEN of input SORT template X.
YNDIBT(X) ;
+1 NEW DIC,Y
SET DIC="^DIBT("
SET DIC(0)="BX"
DO ^DIC
+2 QUIT +Y
+3 ;--- Internal Utility: Call ^DIR for exit prompt.
YNEXIT ;
+1 WRITE !
+2 NEW DIR
SET DIR("A")="Enter or '^' to exit"
+3 SET DIR(0)="E"
+4 DO ^DIR
+5 QUIT
+6 ;--- Internal Utility: Return IEN of input FILE entry X.
YNQUEUE(FILE,X) ;
+1 NEW DIC,Y
SET DIC="^MAGV("_FILE_","
SET DIC(0)="BX"
DO ^DIC
+2 QUIT +Y
+3 ;--- Template Name
ZCONST01() ;
+1 QUIT "MAGVA-ASYNC-STORAGE-ERRORS"
+2 ;--- QUEUE file (#2006.927) entry name for requests.
ZCONST02() ;
+1 QUIT "Async Storage Request Queue"
+2 ;--- QUEUE file entry name for errors.
ZCONST03() ;
+1 QUIT "Async Storage Request Error Queue"
+2 ;
+3 ; MAGVAQ02