Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: A1VSLPC

A1VSLPC.m

Go to the documentation of this file.
  1. A1VSLPC ;Albany FO/GTS - VistA Package Sizing Manager; 17-NOV-2016
  1. ;;1.0;VistA Package Sizing;;Oct 10, 2016;Build 25
  1. EN(CMPRFNME) ; -- main entry point for A1VS PKG MGR PARAM COMPARE
  1. ; Input: CMPRFNME - File to compare current XTMPSIZE.DAT file
  1. ;
  1. IF CMPRFNME'["XTMPSIZE" DO QUIT
  1. . DO JUSTPAWS^A1VSLAPI("Comparison XTMPSIZE.DAT file NOT selected!")
  1. ;
  1. D EN^VALM("A1VS PKG MGR PARAM COMPARE")
  1. Q
  1. ;
  1. HDR ; -- header code
  1. NEW DEFDIR,SPCPAD,DIRHEAD
  1. SET SPCPAD=""
  1. SET DEFDIR=$$GET^XPAR("SYS","A1VS PACKAGE MGR DEFAULT DIR",1,"I")
  1. SET VALMHDR(1)=" VistA Package Size Analysis Manager - Parameter Compare"
  1. SET VALMHDR(2)=" Version: "_$$VERNUM^A1VSLM()_" Build: "_$$BLDNUM^A1VSLM()
  1. SET DIRHEAD="Default Directory: "_DEFDIR
  1. SET $P(SPCPAD," ",(80-$L(DIRHEAD))/2)=""
  1. SET VALMHDR(3)=SPCPAD_DIRHEAD
  1. SET SPCPAD=""
  1. SET DIRHEAD="Current [New] file: "_A1VPSPRM
  1. SET $P(SPCPAD," ",(80-$L(DIRHEAD))/2)=""
  1. SET VALMHDR(4)=SPCPAD_DIRHEAD
  1. SET DIRHEAD="Comparison [Old] file: "_CMPRFNME
  1. SET $P(SPCPAD," ",(80-$L(DIRHEAD))/2)=""
  1. SET VALMHDR(5)=SPCPAD_DIRHEAD
  1. QUIT
  1. ;
  1. INIT ; - Build Current and Comparison XTMPSIZE parameter arrays
  1. NEW DEFDIR,NODENUM,NODECUR,CURNDNM,CPRNDNM,PKGRPTD,PKGDEL,DELSTATE
  1. DO KILL ;Kill all processing & data arrays and video attributes & control arrays
  1. SET DEFDIR=$$GET^XPAR("SYS","A1VS PACKAGE MGR DEFAULT DIR",1,"I")
  1. ;
  1. ;Build current XTMPSIZE parameter array
  1. DO OPEN^%ZISH("XTMP",DEFDIR,A1VPSPRM,"R")
  1. U IO
  1. SET NODENUM=0
  1. FOR S LINEITEM="" READ LINEITEM:5 Q:$$STATUS^%ZISH DO
  1. . IF LINEITEM]"" DO
  1. .. SET NODENUM=NODENUM+1
  1. .. SET ^TMP("A1VS CUR PARAM",$JOB,NODENUM)=LINEITEM ;Creates ^TMP("A1VS CUR PARAM",$JOB) array
  1. D CLOSE^%ZISH("XTMP")
  1. ;
  1. ;Build comparison XTMPSIZE parameter array
  1. DO OPEN^%ZISH("XTMP2",DEFDIR,CMPRFNME,"R")
  1. U IO
  1. SET NODENUM=0
  1. FOR S LINEITEM="" READ LINEITEM:5 Q:$$STATUS^%ZISH DO
  1. . IF LINEITEM]"" DO
  1. .. SET NODENUM=NODENUM+1
  1. .. SET ^TMP("A1VS CPR PARAM",$JOB,NODENUM)=LINEITEM ;Creates ^TMP("A1VS CPR PARAM",$JOB) array
  1. D CLOSE^%ZISH("XTMP2")
  1. ;
  1. ;Create ^TMP("A1VS PKG MAN PARM COMPARE",$JOB) comparison result array for ListMan display
  1. SET (PKGRPTD,VALMCNT)=0
  1. ;
  1. DO ADD^A1VSLAPI(.VALMCNT," ")
  1. DO ADD^A1VSLAPI(.VALMCNT,"CHANGED PACKAGES",1,1,16) ;Output Header for Changed Package list
  1. ;Loop through each "Current" (latest) Package Lineitem
  1. SET CURNDNM=0
  1. FOR SET CURNDNM=$O(^TMP("A1VS CUR PARAM",$JOB,CURNDNM)) QUIT:CURNDNM="" SET NODECUR=^TMP("A1VS CUR PARAM",$JOB,CURNDNM) DO
  1. . SET DELSTATE=0
  1. . IF NODECUR=$G(^TMP("A1VS CPR PARAM",$JOB,CURNDNM)) DO DELPKG(CURNDNM,CURNDNM) SET DELSTATE=1 ;;Remove unedited package from CPR & CUR globals
  1. . IF (NODECUR'=$G(^TMP("A1VS CPR PARAM",$JOB,CURNDNM))),('DELSTATE) DO ;;If Current Package '= same node on Compare Package lineitem
  1. .. SET (PKGDEL,CPRNDNM)=0
  1. .. FOR SET CPRNDNM=$O(^TMP("A1VS CPR PARAM",$JOB,CPRNDNM)) QUIT:CPRNDNM="" QUIT:PKGDEL DO COMPARE(CPRNDNM,NODECUR,.VALMCNT,.PKGDEL,.PKGRPTD)
  1. IF PKGRPTD=0 DO
  1. . DO ADD^A1VSLAPI(.VALMCNT," No edited packages!")
  1. ;
  1. DO ADDDELRP("CUR",.VALMCNT) ;Report packages added new to Current package extract
  1. DO ADDDELRP("CPR",.VALMCNT) ;Report packages deleted from Current package extract
  1. SET PKGRPTD=0
  1. ;
  1. QUIT
  1. ;
  1. COMPARE(CPRNDNM,NODECUR,VALMCNT,PKGDEL,PKGRPTD) ; Compare current & selected parameter files, report diff's and cleanup ^TMP globals
  1. NEW NODECPR,CURPKG,CPRPKG,FNDCHG,CPRPCS,CURPCS
  1. SET CURPKG=$P(NODECUR,"^")
  1. SET NODECPR=^TMP("A1VS CPR PARAM",$JOB,CPRNDNM)
  1. SET CPRPKG=$P(NODECPR,"^")
  1. ;
  1. ; Set CPRPCS and CURPCS to compare new Parameter file to Old Parameter file
  1. ; (pce 10 = * on old parameter files indicated circular Parent/Child relationship)
  1. SET CPRPCS=$L(NODECPR,"^")
  1. SET CURPCS=$L(NODECUR,"^")
  1. IF $P(NODECPR,"^",CPRPCS)="*" SET CPRPCS=CPRPCS-1
  1. IF $P(NODECUR,"^",CURPCS)="*" SET CURPCS=CURPCS-1
  1. ;
  1. IF ($P(NODECUR,"^",1,CURPCS)=$P(NODECPR,"^",1,CPRPCS)) DO DELPKG(CURNDNM,CPRNDNM) SET PKGDEL=1 ;Remove unedited Pkg from TMP globals, set PKGDEL to QUIT CPR loop
  1. IF ($P(NODECUR,"^",1,CURPCS)'=$P(NODECPR,"^",1,CPRPCS)),(CPRPKG=CURPKG) DO
  1. . SET FNDCHG=$$CHNGCHK(NODECUR,NODECPR,.VALMCNT) ;NOTE: FNDCHG not used
  1. . DO DELPKG(CURNDNM,CPRNDNM) ;Remove edited Pkg from globals
  1. . SET PKGRPTD=1 ;PKGRPTD prevents 'No edited packages' msg
  1. . SET PKGDEL=1 ; Quit CPR Node loop
  1. QUIT
  1. ;
  1. CHNGCHK(NODECUR,NODECPR,VALMCNT) ; Check latest extract (CUR) against a comparison extract (CPR)
  1. NEW FNDCHNG,PKGHDRPT,PKGNAME
  1. NEW CURPPFX,CPRPPFX,CURHF,CPRHF,CURLF,CPRLF,CURADPFX,CPRADPFX,CUREXPFX,CPREXPFX,CURFL,CPRFL,CURFRL,CPRFRL,CURPP,CPRPP
  1. ;Variable doc key:
  1. ; CPR* is compare file data
  1. ; CUR* is current file data
  1. ; *PPFX - Primary Prefix
  1. ; *HF - *Highest file number
  1. ; *LF - *Lowest file number
  1. ; *ADPFX - Additional Prefices
  1. ; *EXPFX - Excluded Prefices
  1. ; *FL - File List
  1. ; *FRL - File Range List
  1. ; *PP - Parent Package
  1. ;
  1. SET (FNDCHNG,PKGHDRPT)=0
  1. SET PKGNAME=$P(NODECUR,"^")
  1. SET STRVLMCT=VALMCNT
  1. ;
  1. ;Prefix
  1. SET CURPPFX=$P(NODECUR,"^",2)
  1. SET CPRPPFX=$P(NODECPR,"^",2)
  1. IF CURPPFX'=CPRPPFX DO
  1. .DO:'PKGHDRPT HDROUT(PKGNAME,.PKGHDRPT,.VALMCNT)
  1. .DO ADD^A1VSLAPI(.VALMCNT,"New Prefix: "_$S(CURPPFX]"":CURPPFX,1:"{none}")_" Old Prefix: "_$S(CPRPPFX]"":CPRPPFX,1:"{none}"))
  1. ;
  1. ;Low File
  1. SET CURLF=$P(NODECUR,"^",3)
  1. SET CPRLF=$P(NODECPR,"^",3)
  1. IF CURLF'=CPRLF DO
  1. .DO:'PKGHDRPT HDROUT(PKGNAME,.PKGHDRPT,.VALMCNT)
  1. .DO ADD^A1VSLAPI(.VALMCNT,"New Low File #: "_$S(CURLF]"":CURLF,1:"{none}")_" Old Low File #: "_$S(CPRLF]"":CPRLF,1:"{none}"))
  1. ;
  1. ;High File
  1. SET CURHF=$P(NODECUR,"^",4)
  1. SET CPRHF=$P(NODECPR,"^",4)
  1. IF CURHF'=CPRHF DO
  1. .DO:'PKGHDRPT HDROUT(PKGNAME,.PKGHDRPT,.VALMCNT)
  1. .DO ADD^A1VSLAPI(.VALMCNT,"New High File #: "_$S(CURHF]"":CURHF,1:"{none}")_" Old High File #: "_$S(CPRHF]"":CPRHF,1:"{none}"))
  1. ;
  1. ;Additional Prefixes
  1. SET CURADPFX=$P(NODECUR,"^",5)
  1. SET CPRADPFX=$P(NODECPR,"^",5)
  1. IF CURADPFX'=CPRADPFX DO
  1. .DO:'PKGHDRPT HDROUT(PKGNAME,.PKGHDRPT,.VALMCNT)
  1. .DO LISTDIF("Additional Prefixes",CURADPFX,CPRADPFX,.VALMCNT)
  1. ;
  1. ;Excluded Prefixes
  1. SET CUREXPFX=$P(NODECUR,"^",6)
  1. SET CPREXPFX=$P(NODECPR,"^",6)
  1. IF CUREXPFX'=CPREXPFX DO
  1. .DO:'PKGHDRPT HDROUT(PKGNAME,.PKGHDRPT,.VALMCNT)
  1. .DO LISTDIF("Excepted Prefixes",CUREXPFX,CPREXPFX,.VALMCNT)
  1. ;
  1. ;File List
  1. SET CURFL=$P(NODECUR,"^",7)
  1. SET CPRFL=$P(NODECPR,"^",7)
  1. IF CURFL'=CPRFL DO
  1. .DO:'PKGHDRPT HDROUT(PKGNAME,.PKGHDRPT,.VALMCNT)
  1. .DO LISTDIF("Files",CURFL,CPRFL,.VALMCNT)
  1. ;
  1. ;File Range List
  1. SET CURFRL=$P(NODECUR,"^",8)
  1. SET CPRFRL=$P(NODECPR,"^",8)
  1. IF CURFRL'=CPRFRL DO
  1. .DO:'PKGHDRPT HDROUT(PKGNAME,.PKGHDRPT,.VALMCNT)
  1. .DO LISTDIF("File Ranges",CURFRL,CPRFRL,.VALMCNT)
  1. ;
  1. ;Parent
  1. SET CURPP=$P(NODECUR,"^",9)
  1. SET CPRPP=$P(NODECPR,"^",9)
  1. IF CURPP'=CPRPP DO
  1. .DO:'PKGHDRPT HDROUT(PKGNAME,.PKGHDRPT,.VALMCNT)
  1. .DO ADD^A1VSLAPI(.VALMCNT,"Parent")
  1. .DO ADD^A1VSLAPI(.VALMCNT," New: "_$S(CURPP]"":CURPP,1:"{none}"))
  1. .DO ADD^A1VSLAPI(.VALMCNT," Old: "_$S(CPRPP]"":CPRPP,1:"{none}"))
  1. ;
  1. IF VALMCNT'=STRVLMCT SET FNDCHNG=1
  1. QUIT FNDCHNG
  1. ;
  1. ADDDELRP(EXTRCT,VALMCNT) ;Report packages Added/Deleted to/from current extract
  1. NEW HDRTXT,NODENM,NODEVAL,DATAELMT,PKGFND
  1. ;
  1. SET HDRTXT=$S(EXTRCT="CUR":"ADDED",1:"DELETED")_" PACKAGES:"
  1. DO ADD^A1VSLAPI(.VALMCNT," ")
  1. DO ADD^A1VSLAPI(.VALMCNT," ")
  1. DO ADD^A1VSLAPI(.VALMCNT,HDRTXT,1,1,$L(HDRTXT))
  1. ;
  1. SET PKGFND=0
  1. SET NODENM=""
  1. FOR SET NODENM=$O(^TMP("A1VS "_EXTRCT_" PARAM",$JOB,NODENM)) QUIT:NODENM="" SET NODEVAL=^TMP("A1VS "_EXTRCT_" PARAM",$JOB,NODENM) DO
  1. . SET PKGFND=1
  1. . DO HDROUT($P(NODEVAL,"^",1),.PKGHDRPT,.VALMCNT) ;Output package name
  1. . ;
  1. . SET DATAELMT=$P(NODEVAL,"^",2)
  1. . DO ADD^A1VSLAPI(.VALMCNT,"Prefix: "_$S(DATAELMT]"":DATAELMT,1:"{none}"))
  1. . ;
  1. . SET DATAELMT=$P(NODEVAL,"^",3)
  1. . DO ADD^A1VSLAPI(.VALMCNT,"Low File #: "_$S(DATAELMT]"":DATAELMT,1:"{none}"))
  1. . ;
  1. . SET DATAELMT=$P(NODEVAL,"^",4)
  1. . DO ADD^A1VSLAPI(.VALMCNT,"High File #: "_$S(DATAELMT]"":DATAELMT,1:"{none}"))
  1. . ;
  1. . DO ADD^A1VSLAPI(.VALMCNT,"Additional Prefixes: ")
  1. . SET DATAELMT=$P(NODEVAL,"^",5)
  1. . DO EVENSPLT(.VALMCNT,$S(DATAELMT]"":DATAELMT,1:"{none}"))
  1. . ;
  1. . DO ADD^A1VSLAPI(.VALMCNT,"Excepted Prefixes: ")
  1. . SET DATAELMT=$P(NODEVAL,"^",6)
  1. . DO EVENSPLT(.VALMCNT,$S(DATAELMT]"":DATAELMT,1:"{none}"))
  1. . ;
  1. . DO ADD^A1VSLAPI(.VALMCNT,"File List: ")
  1. . SET DATAELMT=$P(NODEVAL,"^",7)
  1. . DO EVENSPLT(.VALMCNT,$S(DATAELMT]"":DATAELMT,1:"{none}"))
  1. . ;
  1. . DO ADD^A1VSLAPI(.VALMCNT,"File Range list: ")
  1. . SET DATAELMT=$P(NODEVAL,"^",8)
  1. . DO EVENSPLT(.VALMCNT,$S(DATAELMT]"":DATAELMT,1:"{none}"))
  1. . ;
  1. . SET DATAELMT=$P(NODEVAL,"^",9)
  1. . DO ADD^A1VSLAPI(.VALMCNT,"Parent: "_$S(DATAELMT]"":DATAELMT,1:"{none}"))
  1. ;
  1. DO:'PKGFND ADD^A1VSLAPI(.VALMCNT," No "_$S(EXTRCT="CUR":"added",EXTRCT="CPR":"deleted",1:"")_" packages!")
  1. QUIT
  1. ;
  1. HELP ; -- help code
  1. SET X="?" D DISP^XQORM1
  1. ;SET VALMBCK="R"
  1. Q
  1. ;
  1. EXIT ; -- exit code
  1. DO KILL
  1. Q
  1. ;
  1. EXPND ; -- expand code
  1. Q
  1. ;
  1. REFRESH ; -- refresh display
  1. DO INIT
  1. SET VALMBCK="R"
  1. QUIT
  1. ;
  1. MSG(TEXT) ; -- set default message
  1. ;SET VALMSG=TEXT
  1. QUIT
  1. ;
  1. KILL ; - Cleanup local and global display arrays
  1. DO CLEAN^VALM10 ;Kill data and video control arrays
  1. DO KILL^VALM10() ;Kill Video attributes
  1. DO CLNTMPGB
  1. KILL ^TMP("A1VS PKG MAN PARM COMPARE",$JOB)
  1. KILL DIR,X,Y,DTOUT,DIRUT,DUOUT
  1. QUIT
  1. ;
  1. CLNTMPGB ;Kill temporary globals
  1. KILL ^TMP("A1VS CUR PARAM",$JOB),^TMP("A1VS CPR PARAM",$JOB)
  1. QUIT
  1. ;
  1. HDROUT(PKGNAME,PKGHDRPT,VALMCNT) ; Output package header
  1. SET PKGHDRPT=1
  1. DO ADD^A1VSLAPI(.VALMCNT," ")
  1. DO ADD^A1VSLAPI(.VALMCNT,"Package: "_PKGNAME,1,10,$L(PKGNAME)) ;ADD^A1VSLAPI parameters: VALMCNT,MSG,LRBOLD,STRTBLD,ENDBLD
  1. QUIT
  1. ;
  1. LISTDIF(ELMTNME,CURDAT,CPRDAT,VALMCNT) ; Output differences in parameter lists
  1. NEW PCENUM,DATAELMT
  1. DO ADD^A1VSLAPI(.VALMCNT," "_ELMTNME)
  1. ;
  1. IF (CURDAT]""),(CPRDAT']"") DO
  1. . DO EVENSPLT(.VALMCNT,"Added entire list in New file: ",1)
  1. . DO EVENSPLT(.VALMCNT,CURDAT)
  1. IF (CURDAT']""),(CPRDAT]"") DO
  1. . DO EVENSPLT(.VALMCNT,"Deleted entire list in New file: ",1)
  1. . DO EVENSPLT(.VALMCNT,CPRDAT)
  1. ;
  1. IF (CURDAT]""),(CPRDAT]"") DO ;List changes as lineitems
  1. . DO EVENSPLT(.VALMCNT,"Old List: "_$S(CPRDAT]"":CPRDAT,1:"{none}"),1)
  1. . ;
  1. . ;Check for deletions
  1. . FOR PCENUM=1:1 SET DATAELMT=$P(CPRDAT,"|",PCENUM) Q:DATAELMT="" DO
  1. .. IF CURDAT'[DATAELMT_"|" DO EVENSPLT(.VALMCNT,DATAELMT_" ...deleted in New file")
  1. . IF PCENUM=1 DO ADD^A1VSLAPI(.VALMCNT," {none} ...deleted in New file")
  1. . ;
  1. . ;Check for additions
  1. . FOR PCENUM=1:1 SET DATAELMT=$P(CURDAT,"|",PCENUM) Q:DATAELMT="" DO
  1. .. IF CPRDAT'[DATAELMT_"|" DO EVENSPLT(.VALMCNT,DATAELMT_" ...added in New file")
  1. . IF PCENUM=1 DO ADD^A1VSLAPI(.VALMCNT," {none} ...added in New file")
  1. . ;
  1. . DO EVENSPLT(.VALMCNT,"New List: "_$s(CURDAT]"":CURDAT,1:"{none}"),1)
  1. ;
  1. QUIT
  1. ;
  1. EVENSPLT(VALMCNT,MSG,DTANODE) ; Add line to build display split on piece
  1. ; VALMCNT - Current array node number
  1. ; MSG - Message to add to ListMan Display
  1. ; DTANODE - Indicates raw data node or data element changed
  1. ; 1 : Raw data node
  1. ; 0 : data element changed
  1. ;
  1. NEW PCENUM,MSGPCE,LINEOUT,START
  1. SET DTANODE=+$G(DTANODE)
  1. SET LINEOUT=""
  1. SET START=1
  1. ;
  1. FOR PCENUM=1:1 SET MSGPCE=$P(MSG,"|",PCENUM) SET LINEOUT=LINEOUT_MSGPCE_$$DELIMEND(MSGPCE) QUIT:MSGPCE="" DO
  1. . IF ($L(LINEOUT)>$S(DTANODE:75,1:73))!(LINEOUT["...") DO ;$Select DTANODE determines if leading spaces are added to LINEOUT
  1. .. IF $L(LINEOUT)>$S(DTANODE:75,1:73) DO
  1. ... SET PCENUM=PCENUM-1
  1. ... SET LINEOUT=$P(MSG,"|",START,PCENUM)
  1. .. DO ADD^A1VSLAPI(.VALMCNT," "_$S('DTANODE:" ",1:"")_LINEOUT)
  1. .. SET LINEOUT=""
  1. .. SET START=PCENUM+1
  1. DO:LINEOUT]"" ADD^A1VSLAPI(.VALMCNT," "_$S('DTANODE:" ",1:"")_LINEOUT)
  1. ;
  1. QUIT
  1. ;
  1. DELIMEND(MSGPCE) ; Return ending delimiter for LINEOUT in EVENSPLT^A1VSLPC
  1. NEW RESULT
  1. SET RESULT=$S((MSGPCE'["...")&(MSGPCE'="")&(MSGPCE'["{none}")&(MSGPCE'["file:"):"|",1:"")
  1. QUIT RESULT
  1. ;
  1. DELPKG(CURNDNM,CPRNDNM) ; Delete Package from Current and Compare parameter files
  1. KILL ^TMP("A1VS CUR PARAM",$JOB,CURNDNM),^TMP("A1VS CPR PARAM",$JOB,CPRNDNM)
  1. QUIT
  1. ;
  1. ;PROTOCOL entry points
  1. ;
  1. MAILRPT ; Email ^TMP("A1VS PKG MGR PARAM ERROR DISP") comparison report
  1. ; -- Protocol: A1VS PKG MGR PARAM COMPR MAIL ACTION
  1. NEW A1INSTMM,A1TOMM,XMERR,XMZ,A1TYPE,SUBSCPT
  1. DO FULL^VALM1
  1. KILL XMERR
  1. SET A1INSTMM("ADDR FLAGS")="R" ;Do not Restrict addressing
  1. SET A1TYPE="S"
  1. DO TOWHOM^XMXAPIU(DUZ,,A1TYPE,.A1INSTMM)
  1. IF +$G(XMERR)'>0 DO
  1. . NEW XMY,XMTEXT,XMDUZ,XMSUB,A1LPCNT
  1. . SET A1LPCNT=""
  1. . FOR SET A1LPCNT=$O(^TMP("XMY",$J,A1LPCNT)) QUIT:A1LPCNT="" SET XMY(A1LPCNT)=""
  1. . SET XMDUZ=DUZ
  1. . SET XMSUB=$P(VALMHDR(4),":",2)_" ("_$P(VALMHDR(1)," - ",2)_")"
  1. . ;SET XMTEXT="^TMP(""A1VS PKG MAN PARM COMPARE"","_$JOB_","
  1. . SET ^TMP("A1VS PKG MAN CMPR MSG",$JOB,1)="Parameter Files comparison: "_$P(VALMHDR(4),":",2)_" [New] vs "_$P(VALMHDR(5),":",2)_" [Old]"
  1. . SET SUBSCPT=0
  1. . FOR SET SUBSCPT=$O(^TMP("A1VS PKG MAN PARM COMPARE",$JOB,SUBSCPT)) QUIT:+SUBSCPT=0 DO
  1. .. SET ^TMP("A1VS PKG MAN CMPR MSG",$JOB,SUBSCPT+1)=^TMP("A1VS PKG MAN PARM COMPARE",$JOB,SUBSCPT,0)
  1. . SET XMTEXT="^TMP(""A1VS PKG MAN CMPR MSG"","_$JOB_","
  1. . DO ^XMD
  1. . IF +XMZ>0 DO JUSTPAWS^A1VSLAPI($P(VALMHDR(1)," - ",2)_" E-Mailed. [MSG #:"_XMZ_"]")
  1. . IF +XMZ'>0 DO JUSTPAWS^A1VSLAPI("Error: "_$P(VALMHDR(1)," - ",2)_" not E-Mailed! ["_XMZ_"]")
  1. . KILL ^TMP("A1VS PKG MAN CMPR MSG",$JOB)
  1. ;
  1. SET VALMBCK="R"
  1. QUIT