XMXAPI ;ISC-SF/GMB - Message APIs ; 4/2/09 10:11am
;;8.0;MailMan;**15,41,47**;Jun 28, 2002;Build 6
; All entry points covered by DBIA 2729.
; Variables input:
; XMATTACH Imaging system BLOB attachment array
; XMBODY Message text (MUST NOT BE "XMBODY")
; (must be closed root, passed by value. See WP_ROOT
; definition for WP^DIE(), FM word processing filer)
; XMDUZ User's DUZ, or enough of user's name for a positive ID
; eg: 1301 or "lastname,firs"
; XMK Basket number, or enough of a name for a positive ID
; eg: 1 or "IN"
; XMKZ Message number in basket XMK
; OR
; if $G(XMK)="", Message number in ^XMB(3.9
; XMKZA Message number list or list array in basket XMK
; eg: "1,3,5-7" or ARRAY("1,3")=""
; ARRAY("5-7")=""
; (list may end in comma)
; (ARRAY must be passed by reference)
; OR
; if $G(XMK)="", Message number list or list array in ^XMB(3.9
; (same rules, but number ranges are NOT allowed)
; XMSUBJ Message subject
; XMTO Addressee or addressee array
; (array must be passed by reference)
; User's DUZ, or enough of user's name for a positive ID
; eg: 1301 or "lastname,firs" or ARRAY(1301)=""
; ARRAY("lastname,firs")=""
; G.group name (enough for positive ID)
; S.server name (enough for positive ID)
; D.device name (enough for positive ID)
; prefix above (except devices and servers) by:
; I: for 'information only' recipient (may not reply)
; eg: "I:1301" or "I:lastname,firs"
; C: for 'copy' recipient (not expected to reply)
; eg: "C:1301" or "C:lastname,firs"
; L@datetime: for when (in future) to send to this recipient
; (datetime may be anything accepted by FM)
; eg: "L@25 DEC@0500:1301" or "L@1 JAN:lastname,firs"
; or "L@2981225.05:1301"
; (may combine IL@datetime: or CL@datetime:)
; To delete recipient, prefix by -
; eg: -1301 or "-lastname,firs"
; XMZ message number in ^XMB(3.9,
;
; Variables output (must be passed by reference):
; XMFULL expanded address of last addressee
; XMMSG simple message telling how many messages were acted on
; XMZ message number created in ^XMB(3.9,
;
; Errors
; XMERR if there's any errors, then XMERR is set to the number of
; errors, otherwise XMERR is undefined.
; ^TMP("XMERR",$J,error number,"TEXT",line number)=error text
ANSRMSG(XMDUZ,XMK,XMKZ,XMSUBJ,XMBODY,XMTO,XMINSTR,XMZR) ; Answer a msg (Send new msg with copy of original msg inside)
; In: User, basket, msg #
; Out: XMZR (message number of answer)
N DIERR ; ADDED IN PATCH XM*8.0*41 JDG
I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
D ANSRMSG^XMXPARM(.XMDUZ,.XMK,.XMKZ,.XMSUBJ,.XMBODY,.XMTO,.XMINSTR) Q:$D(XMERR)
D ANSRMSG^XMXANSER(XMDUZ,.XMK,XMKZ,.XMSUBJ,XMBODY,.XMTO,.XMINSTR,.XMZR)
Q
DELMSG(XMDUZ,XMK,XMKZA,XMMSG) ; Delete msgs from a basket
N DIERR ; ADDED IN PATCH XM*8.0*41 JDG
I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
D ACTMSGS^XMXPARM(.XMDUZ,.XMK,.XMKZA) Q:$D(XMERR)
D DELMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,.XMMSG)
Q
FLTRMSG(XMDUZ,XMK,XMKZA,XMMSG) ; Filters msgs in a basket
N DIERR ; ADDED IN PATCH XM*8.0*41 JDG
I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
D ACTMSGS^XMXPARM(.XMDUZ,.XMK,.XMKZA) Q:$D(XMERR)
D FLTRMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,.XMMSG)
Q
FWDMSG(XMDUZ,XMK,XMKZA,XMTO,XMINSTR,XMMSG) ; Forward msgs
; XMINSTR("SHARE DATE")
; XMINSTR("SHARE BSKT")
; XMINSTR("SELF BSKT")
; XMINSTR("FWD BY") substitute any string instead of XMDUZ name
N DIERR ; ADDED IN PATCH XM*8.0*41 JDG
I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
D FWDMSG^XMXPARM(.XMDUZ,.XMK,.XMKZA,.XMTO,.XMINSTR) Q:$D(XMERR)
D FWDMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,.XMTO,.XMINSTR,.XMMSG)
Q
LATERMSG(XMDUZ,XMK,XMKZA,XMINSTR,XMMSG) ; Later msgs
; XMINSTR("LATER")
N DIERR ; ADDED IN PATCH XM*8.0*41 JDG
I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
D LATERMSG^XMXPARM(.XMDUZ,.XMK,.XMKZA,.XMINSTR) Q:$D(XMERR)
D LATERMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,.XMINSTR,.XMMSG)
Q
MOVEMSG(XMDUZ,XMK,XMKZA,XMKTO,XMMSG) ; Move msgs from one basket to another
; XMKTO Basket number, or enough of a name for a positive ID.
; Identifies basket to move to
N DIERR ; ADDED IN PATCH XM*8.0*41 JDG
I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
D MOVEMSG^XMXPARM(.XMDUZ,.XMK,.XMKZA,.XMKTO) Q:$D(XMERR)
D MOVEMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,XMKTO,.XMMSG)
Q
NTOGLMSG(XMDUZ,XMK,XMKZA,XMMSG) ; New Toggle msgs
N DIERR ; ADDED IN PATCH XM*8.0*41 JDG
I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
D ACTMSGS^XMXPARM(.XMDUZ,.XMK,.XMKZA) Q:$D(XMERR)
D NTOGLMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,.XMMSG)
Q
PRTMSG(XMDUZ,XMK,XMKZA,XMPRTTO,XMINSTR,XMMSG,XMTASK,XMSUBJ,XMTO) ; Print msgs
; XMINSTR("HDR"), "RESPS", "RECIPS", "WHEN"
; XMPRTTO Printer name
; XMSUBJ & XMTO used only if XMPRTTO is a P-MESSAGE device. Even then, they're optional.
N DIERR ; ADDED IN PATCH XM*8.0*41 JDG
I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
D PRTMSG^XMXPARM(.XMDUZ,.XMK,.XMKZA,.XMPRTTO,.XMINSTR,.XMSUBJ,.XMTO) Q:$D(XMERR)
D PRTMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,XMPRTTO,.XMINSTR,.XMMSG,.XMTASK,.XMSUBJ,.XMTO)
Q
PUTSERV(XMKN,XMZ) ; Put a message in a server basket
; XMKN full server name, including "S."
N DIERR ; ADDED IN PATCH XM*8.0*41 JDG
D SERV^XMXPARMB(.XMKN,.XMZ) Q:$D(XMERR)
D PUTSERV^XMXMSGS1(XMKN,XMZ)
Q
REPLYMSG(XMDUZ,XMK,XMKZ,XMBODY,XMINSTR,XMZR) ; Reply to msg (Attach reply to original msg)
; XMINSTR("NET REPLY") 1=send over the network; 0=don't (default)
; XMINSTR("NET SUBJ") Network Reply subject (see XMSUBJ)
; Out: XMZR (message number of answer)
N DIERR ; ADDED IN PATCH XM*8.0*41 JDG
I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
D REPLYMSG^XMXPARM(.XMDUZ,.XMK,.XMKZ,.XMBODY,.XMINSTR) Q:$D(XMERR)
D REPLYMSG^XMXREPLY(XMDUZ,.XMK,XMKZ,XMBODY,.XMINSTR,.XMZR)
Q
SENDBULL(XMDUZ,XMBN,XMPARM,XMBODY,XMTO,XMINSTR,XMZ,XMATTACH) ; Send a bulletin (returns XMZ)
; In: User, bulletin name, bulletin parameters, add'l text,
; add'l recipients, send now or later (when?), opt'l BLOB
N DIERR ; ADDED IN PATCH XM*8.0*41 JDG
I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
D BULLETIN^XMXPARM(.XMDUZ,.XMBN,.XMPARM,.XMBODY,.XMTO,.XMINSTR,.XMATTACH) Q:$D(XMERR)
D SENDBULL^XMXBULL(XMDUZ,XMBN,.XMPARM,.XMBODY,.XMTO,.XMINSTR,.XMZ,.XMATTACH)
Q
SENDMSG(XMDUZ,XMSUBJ,XMBODY,XMTO,XMINSTR,XMZ,XMATTACH) ; Send a msg
; In: User, basket (if you are recipient), all msg parts,
; priority?, closed?, (info?,cc?), send now or later (when?),
; (KIDS,MIME,text,PackMan), delete date (if to shared,mail)
; XMINSTR("RCPT BSKT")
N DIERR ; ADDED IN PATCH XM*8.0*41 JDG
I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
; ** XM*8*47 Adds code to automatically truncate subject line if too long or concatenate if too short. **
I $L(XMSUBJ)<3,XMSUBJ'="" S XMSUBJ=XMSUBJ_"..."
I $L(XMSUBJ)>65 S XMSUBJ=$E(XMSUBJ,1,65)
D SENDMSG^XMXPARM(.XMDUZ,.XMSUBJ,.XMBODY,.XMTO,.XMINSTR,.XMATTACH) Q:$D(XMERR)
D SENDMSG^XMXSEND(XMDUZ,XMSUBJ,XMBODY,.XMTO,.XMINSTR,.XMZ,.XMATTACH)
Q
TASKBULL(XMDUZ,XMBN,XMPARM,XMBODY,XMTO,XMINSTR,XMTASK,XMATTACH) ; Send a bulletin (Task it - does not return XMZ)
; XMBN Bulletin name (must be full name)
; XMPARM Array of parameters necessary for bulletin
; ARRAY(1)="parameter 1"
; ARRAY(2)="parameter 2"
; XMBODY Additional text to append to the bulletin text
; (must be closed root, passed by value. See WP_ROOT
; definition for WP^DIE(), FM word processing filer)
; XMTO Additional addressee(s)
; XMINSTR("SELF BSKT")
; ***ETC.***
; In: User, bulletin name, bulletin parameters, add'l text,
; add'l recipients, send now or later (when?), opt'l BLOB
; Out: XMTASK (task number)
N DIERR ; ADDED IN PATCH XM*8.0*41 JDG
I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
D BULLETIN^XMXPARM(.XMDUZ,.XMBN,.XMPARM,.XMBODY,.XMTO,.XMINSTR,.XMATTACH) Q:$D(XMERR)
D TASKBULL^XMXBULL(XMDUZ,XMBN,.XMPARM,.XMBODY,.XMTO,.XMINSTR,.XMTASK,.XMATTACH)
Q
TERMMSG(XMDUZ,XMK,XMKZA,XMMSG) ; Terminate msgs
N DIERR ; ADDED IN PATCH XM*8.0*41 JDG
I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
D ACTMSGS^XMXPARM(.XMDUZ,.XMK,.XMKZA) Q:$D(XMERR)
D TERMMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,.XMMSG)
Q
VAPORMSG(XMDUZ,XMK,XMKZA,XMINSTR,XMMSG) ; Set vaporize date for msgs in a basket
; XMINSTR("VAPOR")
N DIERR ; ADDED IN PATCH XM*8.0*41 JDG
I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
D VAPORMSG^XMXPARM(.XMDUZ,.XMK,.XMKZA,.XMINSTR) Q:$D(XMERR)
D VAPORMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,.XMINSTR,.XMMSG)
Q
ZAPSERV(XMKN,XMZ) ; Delete a message from a server basket
; XMKN full server name, including "S."
N DIERR ; ADDED IN PATCH XM*8.0*41 JDG
D SERV^XMXPARMB(.XMKN,.XMZ) Q:$D(XMERR)
D ZAPSERV^XMXMSGS1(XMKN,XMZ)
Q
; ***** other actions
ADDRNSND(XMDUZ,XMZ,XMTO,XMINSTR) ; Build a message part 2 (address and send)
; XMZ (in)
N DIERR ; ADDED IN PATCH XM*8.0*41 JDG
I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
D ADDRNSND^XMXPARM(.XMDUZ,.XMZ,.XMTO,.XMINSTR) Q:$D(XMERR)
D ADDRNSND^XMXSEND(XMDUZ,XMZ,.XMTO,.XMINSTR)
Q
CRE8XMZ(XMSUBJ,XMZ) ; Build a message part 1 (create)
; In: subject
; Out: XMZ
N DIERR ; ADDED IN PATCH XM*8.0*41 JDG
D VSUBJ^XMXPARM(.XMSUBJ) Q:$D(XMERR)
D CRE8XMZ^XMXSEND(XMSUBJ,.XMZ)
Q
MOVEBODY(XMZ,XMBODY) ; Move text to the message
N DIERR ; ADDED IN PATCH XM*8.0*41 JDG
D MOVEBODY^XMXPARM(.XMZ,.XMBODY) Q:$D(XMERR)
D MOVEBODY^XMXSEND(XMZ,XMBODY)
Q
TOWHOM(XMDUZ,XMZ,XMTYPE,XMTO,XMINSTR,XMFULL) ; Check ONE msg addressee
; XMFULL Expanded address of the addressee
N DIERR ; ADDED IN PATCH XM*8.0*41 JDG
I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
D TOWHOM^XMXPARM(.XMDUZ,.XMZ,.XMTYPE,XMTO,.XMINSTR) Q:$D(XMERR)
D TOWHOM^XMXTO(XMDUZ,.XMZ,XMTYPE,XMTO,.XMINSTR,.XMFULL)
Q
VSUBJ(XMSUBJ) ; Validate a subject
N DIERR ; ADDED IN PATCH XM*8.0*41 JDG
D VSUBJ^XMXPARM(.XMSUBJ)
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HXMXAPI 10450 printed Dec 13, 2024@02:14:02 Page 2
XMXAPI ;ISC-SF/GMB - Message APIs ; 4/2/09 10:11am
+1 ;;8.0;MailMan;**15,41,47**;Jun 28, 2002;Build 6
+2 ; All entry points covered by DBIA 2729.
+3 ; Variables input:
+4 ; XMATTACH Imaging system BLOB attachment array
+5 ; XMBODY Message text (MUST NOT BE "XMBODY")
+6 ; (must be closed root, passed by value. See WP_ROOT
+7 ; definition for WP^DIE(), FM word processing filer)
+8 ; XMDUZ User's DUZ, or enough of user's name for a positive ID
+9 ; eg: 1301 or "lastname,firs"
+10 ; XMK Basket number, or enough of a name for a positive ID
+11 ; eg: 1 or "IN"
+12 ; XMKZ Message number in basket XMK
+13 ; OR
+14 ; if $G(XMK)="", Message number in ^XMB(3.9
+15 ; XMKZA Message number list or list array in basket XMK
+16 ; eg: "1,3,5-7" or ARRAY("1,3")=""
+17 ; ARRAY("5-7")=""
+18 ; (list may end in comma)
+19 ; (ARRAY must be passed by reference)
+20 ; OR
+21 ; if $G(XMK)="", Message number list or list array in ^XMB(3.9
+22 ; (same rules, but number ranges are NOT allowed)
+23 ; XMSUBJ Message subject
+24 ; XMTO Addressee or addressee array
+25 ; (array must be passed by reference)
+26 ; User's DUZ, or enough of user's name for a positive ID
+27 ; eg: 1301 or "lastname,firs" or ARRAY(1301)=""
+28 ; ARRAY("lastname,firs")=""
+29 ; G.group name (enough for positive ID)
+30 ; S.server name (enough for positive ID)
+31 ; D.device name (enough for positive ID)
+32 ; prefix above (except devices and servers) by:
+33 ; I: for 'information only' recipient (may not reply)
+34 ; eg: "I:1301" or "I:lastname,firs"
+35 ; C: for 'copy' recipient (not expected to reply)
+36 ; eg: "C:1301" or "C:lastname,firs"
+37 ; L@datetime: for when (in future) to send to this recipient
+38 ; (datetime may be anything accepted by FM)
+39 ; eg: "L@25 DEC@0500:1301" or "L@1 JAN:lastname,firs"
+40 ; or "L@2981225.05:1301"
+41 ; (may combine IL@datetime: or CL@datetime:)
+42 ; To delete recipient, prefix by -
+43 ; eg: -1301 or "-lastname,firs"
+44 ; XMZ message number in ^XMB(3.9,
+45 ;
+46 ; Variables output (must be passed by reference):
+47 ; XMFULL expanded address of last addressee
+48 ; XMMSG simple message telling how many messages were acted on
+49 ; XMZ message number created in ^XMB(3.9,
+50 ;
+51 ; Errors
+52 ; XMERR if there's any errors, then XMERR is set to the number of
+53 ; errors, otherwise XMERR is undefined.
+54 ; ^TMP("XMERR",$J,error number,"TEXT",line number)=error text
ANSRMSG(XMDUZ,XMK,XMKZ,XMSUBJ,XMBODY,XMTO,XMINSTR,XMZR) ; Answer a msg (Send new msg with copy of original msg inside)
+1 ; In: User, basket, msg #
+2 ; Out: XMZR (message number of answer)
+3 ; ADDED IN PATCH XM*8.0*41 JDG
NEW DIERR
+4 IF '$DATA(XMV)
NEW XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
+5 DO ANSRMSG^XMXPARM(.XMDUZ,.XMK,.XMKZ,.XMSUBJ,.XMBODY,.XMTO,.XMINSTR)
if $DATA(XMERR)
QUIT
+6 DO ANSRMSG^XMXANSER(XMDUZ,.XMK,XMKZ,.XMSUBJ,XMBODY,.XMTO,.XMINSTR,.XMZR)
+7 QUIT
DELMSG(XMDUZ,XMK,XMKZA,XMMSG) ; Delete msgs from a basket
+1 ; ADDED IN PATCH XM*8.0*41 JDG
NEW DIERR
+2 IF '$DATA(XMV)
NEW XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
+3 DO ACTMSGS^XMXPARM(.XMDUZ,.XMK,.XMKZA)
if $DATA(XMERR)
QUIT
+4 DO DELMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,.XMMSG)
+5 QUIT
FLTRMSG(XMDUZ,XMK,XMKZA,XMMSG) ; Filters msgs in a basket
+1 ; ADDED IN PATCH XM*8.0*41 JDG
NEW DIERR
+2 IF '$DATA(XMV)
NEW XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
+3 DO ACTMSGS^XMXPARM(.XMDUZ,.XMK,.XMKZA)
if $DATA(XMERR)
QUIT
+4 DO FLTRMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,.XMMSG)
+5 QUIT
FWDMSG(XMDUZ,XMK,XMKZA,XMTO,XMINSTR,XMMSG) ; Forward msgs
+1 ; XMINSTR("SHARE DATE")
+2 ; XMINSTR("SHARE BSKT")
+3 ; XMINSTR("SELF BSKT")
+4 ; XMINSTR("FWD BY") substitute any string instead of XMDUZ name
+5 ; ADDED IN PATCH XM*8.0*41 JDG
NEW DIERR
+6 IF '$DATA(XMV)
NEW XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
+7 DO FWDMSG^XMXPARM(.XMDUZ,.XMK,.XMKZA,.XMTO,.XMINSTR)
if $DATA(XMERR)
QUIT
+8 DO FWDMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,.XMTO,.XMINSTR,.XMMSG)
+9 QUIT
LATERMSG(XMDUZ,XMK,XMKZA,XMINSTR,XMMSG) ; Later msgs
+1 ; XMINSTR("LATER")
+2 ; ADDED IN PATCH XM*8.0*41 JDG
NEW DIERR
+3 IF '$DATA(XMV)
NEW XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
+4 DO LATERMSG^XMXPARM(.XMDUZ,.XMK,.XMKZA,.XMINSTR)
if $DATA(XMERR)
QUIT
+5 DO LATERMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,.XMINSTR,.XMMSG)
+6 QUIT
MOVEMSG(XMDUZ,XMK,XMKZA,XMKTO,XMMSG) ; Move msgs from one basket to another
+1 ; XMKTO Basket number, or enough of a name for a positive ID.
+2 ; Identifies basket to move to
+3 ; ADDED IN PATCH XM*8.0*41 JDG
NEW DIERR
+4 IF '$DATA(XMV)
NEW XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
+5 DO MOVEMSG^XMXPARM(.XMDUZ,.XMK,.XMKZA,.XMKTO)
if $DATA(XMERR)
QUIT
+6 DO MOVEMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,XMKTO,.XMMSG)
+7 QUIT
NTOGLMSG(XMDUZ,XMK,XMKZA,XMMSG) ; New Toggle msgs
+1 ; ADDED IN PATCH XM*8.0*41 JDG
NEW DIERR
+2 IF '$DATA(XMV)
NEW XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
+3 DO ACTMSGS^XMXPARM(.XMDUZ,.XMK,.XMKZA)
if $DATA(XMERR)
QUIT
+4 DO NTOGLMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,.XMMSG)
+5 QUIT
PRTMSG(XMDUZ,XMK,XMKZA,XMPRTTO,XMINSTR,XMMSG,XMTASK,XMSUBJ,XMTO) ; Print msgs
+1 ; XMINSTR("HDR"), "RESPS", "RECIPS", "WHEN"
+2 ; XMPRTTO Printer name
+3 ; XMSUBJ & XMTO used only if XMPRTTO is a P-MESSAGE device. Even then, they're optional.
+4 ; ADDED IN PATCH XM*8.0*41 JDG
NEW DIERR
+5 IF '$DATA(XMV)
NEW XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
+6 DO PRTMSG^XMXPARM(.XMDUZ,.XMK,.XMKZA,.XMPRTTO,.XMINSTR,.XMSUBJ,.XMTO)
if $DATA(XMERR)
QUIT
+7 DO PRTMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,XMPRTTO,.XMINSTR,.XMMSG,.XMTASK,.XMSUBJ,.XMTO)
+8 QUIT
PUTSERV(XMKN,XMZ) ; Put a message in a server basket
+1 ; XMKN full server name, including "S."
+2 ; ADDED IN PATCH XM*8.0*41 JDG
NEW DIERR
+3 DO SERV^XMXPARMB(.XMKN,.XMZ)
if $DATA(XMERR)
QUIT
+4 DO PUTSERV^XMXMSGS1(XMKN,XMZ)
+5 QUIT
REPLYMSG(XMDUZ,XMK,XMKZ,XMBODY,XMINSTR,XMZR) ; Reply to msg (Attach reply to original msg)
+1 ; XMINSTR("NET REPLY") 1=send over the network; 0=don't (default)
+2 ; XMINSTR("NET SUBJ") Network Reply subject (see XMSUBJ)
+3 ; Out: XMZR (message number of answer)
+4 ; ADDED IN PATCH XM*8.0*41 JDG
NEW DIERR
+5 IF '$DATA(XMV)
NEW XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
+6 DO REPLYMSG^XMXPARM(.XMDUZ,.XMK,.XMKZ,.XMBODY,.XMINSTR)
if $DATA(XMERR)
QUIT
+7 DO REPLYMSG^XMXREPLY(XMDUZ,.XMK,XMKZ,XMBODY,.XMINSTR,.XMZR)
+8 QUIT
SENDBULL(XMDUZ,XMBN,XMPARM,XMBODY,XMTO,XMINSTR,XMZ,XMATTACH) ; Send a bulletin (returns XMZ)
+1 ; In: User, bulletin name, bulletin parameters, add'l text,
+2 ; add'l recipients, send now or later (when?), opt'l BLOB
+3 ; ADDED IN PATCH XM*8.0*41 JDG
NEW DIERR
+4 IF '$DATA(XMV)
NEW XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
+5 DO BULLETIN^XMXPARM(.XMDUZ,.XMBN,.XMPARM,.XMBODY,.XMTO,.XMINSTR,.XMATTACH)
if $DATA(XMERR)
QUIT
+6 DO SENDBULL^XMXBULL(XMDUZ,XMBN,.XMPARM,.XMBODY,.XMTO,.XMINSTR,.XMZ,.XMATTACH)
+7 QUIT
SENDMSG(XMDUZ,XMSUBJ,XMBODY,XMTO,XMINSTR,XMZ,XMATTACH) ; Send a msg
+1 ; In: User, basket (if you are recipient), all msg parts,
+2 ; priority?, closed?, (info?,cc?), send now or later (when?),
+3 ; (KIDS,MIME,text,PackMan), delete date (if to shared,mail)
+4 ; XMINSTR("RCPT BSKT")
+5 ; ADDED IN PATCH XM*8.0*41 JDG
NEW DIERR
+6 IF '$DATA(XMV)
NEW XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
+7 ; ** XM*8*47 Adds code to automatically truncate subject line if too long or concatenate if too short. **
+8 IF $LENGTH(XMSUBJ)<3
IF XMSUBJ'=""
SET XMSUBJ=XMSUBJ_"..."
+9 IF $LENGTH(XMSUBJ)>65
SET XMSUBJ=$EXTRACT(XMSUBJ,1,65)
+10 DO SENDMSG^XMXPARM(.XMDUZ,.XMSUBJ,.XMBODY,.XMTO,.XMINSTR,.XMATTACH)
if $DATA(XMERR)
QUIT
+11 DO SENDMSG^XMXSEND(XMDUZ,XMSUBJ,XMBODY,.XMTO,.XMINSTR,.XMZ,.XMATTACH)
+12 QUIT
TASKBULL(XMDUZ,XMBN,XMPARM,XMBODY,XMTO,XMINSTR,XMTASK,XMATTACH) ; Send a bulletin (Task it - does not return XMZ)
+1 ; XMBN Bulletin name (must be full name)
+2 ; XMPARM Array of parameters necessary for bulletin
+3 ; ARRAY(1)="parameter 1"
+4 ; ARRAY(2)="parameter 2"
+5 ; XMBODY Additional text to append to the bulletin text
+6 ; (must be closed root, passed by value. See WP_ROOT
+7 ; definition for WP^DIE(), FM word processing filer)
+8 ; XMTO Additional addressee(s)
+9 ; XMINSTR("SELF BSKT")
+10 ; ***ETC.***
+11 ; In: User, bulletin name, bulletin parameters, add'l text,
+12 ; add'l recipients, send now or later (when?), opt'l BLOB
+13 ; Out: XMTASK (task number)
+14 ; ADDED IN PATCH XM*8.0*41 JDG
NEW DIERR
+15 IF '$DATA(XMV)
NEW XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
+16 DO BULLETIN^XMXPARM(.XMDUZ,.XMBN,.XMPARM,.XMBODY,.XMTO,.XMINSTR,.XMATTACH)
if $DATA(XMERR)
QUIT
+17 DO TASKBULL^XMXBULL(XMDUZ,XMBN,.XMPARM,.XMBODY,.XMTO,.XMINSTR,.XMTASK,.XMATTACH)
+18 QUIT
TERMMSG(XMDUZ,XMK,XMKZA,XMMSG) ; Terminate msgs
+1 ; ADDED IN PATCH XM*8.0*41 JDG
NEW DIERR
+2 IF '$DATA(XMV)
NEW XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
+3 DO ACTMSGS^XMXPARM(.XMDUZ,.XMK,.XMKZA)
if $DATA(XMERR)
QUIT
+4 DO TERMMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,.XMMSG)
+5 QUIT
VAPORMSG(XMDUZ,XMK,XMKZA,XMINSTR,XMMSG) ; Set vaporize date for msgs in a basket
+1 ; XMINSTR("VAPOR")
+2 ; ADDED IN PATCH XM*8.0*41 JDG
NEW DIERR
+3 IF '$DATA(XMV)
NEW XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
+4 DO VAPORMSG^XMXPARM(.XMDUZ,.XMK,.XMKZA,.XMINSTR)
if $DATA(XMERR)
QUIT
+5 DO VAPORMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,.XMINSTR,.XMMSG)
+6 QUIT
ZAPSERV(XMKN,XMZ) ; Delete a message from a server basket
+1 ; XMKN full server name, including "S."
+2 ; ADDED IN PATCH XM*8.0*41 JDG
NEW DIERR
+3 DO SERV^XMXPARMB(.XMKN,.XMZ)
if $DATA(XMERR)
QUIT
+4 DO ZAPSERV^XMXMSGS1(XMKN,XMZ)
+5 QUIT
+6 ; ***** other actions
ADDRNSND(XMDUZ,XMZ,XMTO,XMINSTR) ; Build a message part 2 (address and send)
+1 ; XMZ (in)
+2 ; ADDED IN PATCH XM*8.0*41 JDG
NEW DIERR
+3 IF '$DATA(XMV)
NEW XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
+4 DO ADDRNSND^XMXPARM(.XMDUZ,.XMZ,.XMTO,.XMINSTR)
if $DATA(XMERR)
QUIT
+5 DO ADDRNSND^XMXSEND(XMDUZ,XMZ,.XMTO,.XMINSTR)
+6 QUIT
CRE8XMZ(XMSUBJ,XMZ) ; Build a message part 1 (create)
+1 ; In: subject
+2 ; Out: XMZ
+3 ; ADDED IN PATCH XM*8.0*41 JDG
NEW DIERR
+4 DO VSUBJ^XMXPARM(.XMSUBJ)
if $DATA(XMERR)
QUIT
+5 DO CRE8XMZ^XMXSEND(XMSUBJ,.XMZ)
+6 QUIT
MOVEBODY(XMZ,XMBODY) ; Move text to the message
+1 ; ADDED IN PATCH XM*8.0*41 JDG
NEW DIERR
+2 DO MOVEBODY^XMXPARM(.XMZ,.XMBODY)
if $DATA(XMERR)
QUIT
+3 DO MOVEBODY^XMXSEND(XMZ,XMBODY)
+4 QUIT
TOWHOM(XMDUZ,XMZ,XMTYPE,XMTO,XMINSTR,XMFULL) ; Check ONE msg addressee
+1 ; XMFULL Expanded address of the addressee
+2 ; ADDED IN PATCH XM*8.0*41 JDG
NEW DIERR
+3 IF '$DATA(XMV)
NEW XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
+4 DO TOWHOM^XMXPARM(.XMDUZ,.XMZ,.XMTYPE,XMTO,.XMINSTR)
if $DATA(XMERR)
QUIT
+5 DO TOWHOM^XMXTO(XMDUZ,.XMZ,XMTYPE,XMTO,.XMINSTR,.XMFULL)
+6 QUIT
VSUBJ(XMSUBJ) ; Validate a subject
+1 ; ADDED IN PATCH XM*8.0*41 JDG
NEW DIERR
+2 DO VSUBJ^XMXPARM(.XMSUBJ)
+3 QUIT