[613] | 1 | XMXAPI ;ISC-SF/GMB-Message APIs ;03/26/2003 07:56
|
---|
| 2 | ;;8.0;MailMan;**15**;Jun 28, 2002
|
---|
| 3 | ; All entry points covered by DBIA 2729.
|
---|
| 4 | ; Variables input:
|
---|
| 5 | ; XMATTACH Imaging system BLOB attachment array
|
---|
| 6 | ; XMBODY Message text (MUST NOT BE "XMBODY")
|
---|
| 7 | ; (must be closed root, passed by value. See WP_ROOT
|
---|
| 8 | ; definition for WP^DIE(), FM word processing filer)
|
---|
| 9 | ; XMDUZ User's DUZ, or enough of user's name for a positive ID
|
---|
| 10 | ; eg: 1301 or "lastname,firs"
|
---|
| 11 | ; XMK Basket number, or enough of a name for a positive ID
|
---|
| 12 | ; eg: 1 or "IN"
|
---|
| 13 | ; XMKZ Message number in basket XMK
|
---|
| 14 | ; OR
|
---|
| 15 | ; if $G(XMK)="", Message number in ^XMB(3.9
|
---|
| 16 | ; XMKZA Message number list or list array in basket XMK
|
---|
| 17 | ; eg: "1,3,5-7" or ARRAY("1,3")=""
|
---|
| 18 | ; ARRAY("5-7")=""
|
---|
| 19 | ; (list may end in comma)
|
---|
| 20 | ; (ARRAY must be passed by reference)
|
---|
| 21 | ; OR
|
---|
| 22 | ; if $G(XMK)="", Message number list or list array in ^XMB(3.9
|
---|
| 23 | ; (same rules, but number ranges are NOT allowed)
|
---|
| 24 | ; XMSUBJ Message subject
|
---|
| 25 | ; XMTO Addressee or addressee array
|
---|
| 26 | ; (array must be passed by reference)
|
---|
| 27 | ; User's DUZ, or enough of user's name for a positive ID
|
---|
| 28 | ; eg: 1301 or "lastname,firs" or ARRAY(1301)=""
|
---|
| 29 | ; ARRAY("lastname,firs")=""
|
---|
| 30 | ; G.group name (enough for positive ID)
|
---|
| 31 | ; S.server name (enough for positive ID)
|
---|
| 32 | ; D.device name (enough for positive ID)
|
---|
| 33 | ; prefix above (except devices and servers) by:
|
---|
| 34 | ; I: for 'information only' recipient (may not reply)
|
---|
| 35 | ; eg: "I:1301" or "I:lastname,firs"
|
---|
| 36 | ; C: for 'copy' recipient (not expected to reply)
|
---|
| 37 | ; eg: "C:1301" or "C:lastname,firs"
|
---|
| 38 | ; L@datetime: for when (in future) to send to this recipient
|
---|
| 39 | ; (datetime may be anything accepted by FM)
|
---|
| 40 | ; eg: "L@25 DEC@0500:1301" or "L@1 JAN:lastname,firs"
|
---|
| 41 | ; or "L@2981225.05:1301"
|
---|
| 42 | ; (may combine IL@datetime: or CL@datetime:)
|
---|
| 43 | ; To delete recipient, prefix by -
|
---|
| 44 | ; eg: -1301 or "-lastname,firs"
|
---|
| 45 | ; XMZ message number in ^XMB(3.9,
|
---|
| 46 | ;
|
---|
| 47 | ; Variables output (must be passed by reference):
|
---|
| 48 | ; XMFULL expanded address of last addressee
|
---|
| 49 | ; XMMSG simple message telling how many messages were acted on
|
---|
| 50 | ; XMZ message number created in ^XMB(3.9,
|
---|
| 51 | ;
|
---|
| 52 | ; Errors
|
---|
| 53 | ; XMERR if there's any errors, then XMERR is set to the number of
|
---|
| 54 | ; errors, otherwise XMERR is undefined.
|
---|
| 55 | ; ^TMP("XMERR",$J,error number,"TEXT",line number)=error text
|
---|
| 56 | ANSRMSG(XMDUZ,XMK,XMKZ,XMSUBJ,XMBODY,XMTO,XMINSTR,XMZR) ; Answer a msg (Send new msg with copy of original msg inside)
|
---|
| 57 | ; In: User, basket, msg #
|
---|
| 58 | ; Out: XMZR (message number of answer)
|
---|
| 59 | I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
|
---|
| 60 | D ANSRMSG^XMXPARM(.XMDUZ,.XMK,.XMKZ,.XMSUBJ,.XMBODY,.XMTO,.XMINSTR) Q:$D(XMERR)
|
---|
| 61 | D ANSRMSG^XMXANSER(XMDUZ,.XMK,XMKZ,.XMSUBJ,XMBODY,.XMTO,.XMINSTR,.XMZR)
|
---|
| 62 | Q
|
---|
| 63 | DELMSG(XMDUZ,XMK,XMKZA,XMMSG) ; Delete msgs from a basket
|
---|
| 64 | I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
|
---|
| 65 | D ACTMSGS^XMXPARM(.XMDUZ,.XMK,.XMKZA) Q:$D(XMERR)
|
---|
| 66 | D DELMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,.XMMSG)
|
---|
| 67 | Q
|
---|
| 68 | FLTRMSG(XMDUZ,XMK,XMKZA,XMMSG) ; Filters msgs in a basket
|
---|
| 69 | I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
|
---|
| 70 | D ACTMSGS^XMXPARM(.XMDUZ,.XMK,.XMKZA) Q:$D(XMERR)
|
---|
| 71 | D FLTRMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,.XMMSG)
|
---|
| 72 | Q
|
---|
| 73 | FWDMSG(XMDUZ,XMK,XMKZA,XMTO,XMINSTR,XMMSG) ; Forward msgs
|
---|
| 74 | ; XMINSTR("SHARE DATE")
|
---|
| 75 | ; XMINSTR("SHARE BSKT")
|
---|
| 76 | ; XMINSTR("SELF BSKT")
|
---|
| 77 | ; XMINSTR("FWD BY") substitute any string instead of XMDUZ name
|
---|
| 78 | I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
|
---|
| 79 | D FWDMSG^XMXPARM(.XMDUZ,.XMK,.XMKZA,.XMTO,.XMINSTR) Q:$D(XMERR)
|
---|
| 80 | D FWDMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,.XMTO,.XMINSTR,.XMMSG)
|
---|
| 81 | Q
|
---|
| 82 | LATERMSG(XMDUZ,XMK,XMKZA,XMINSTR,XMMSG) ; Later msgs
|
---|
| 83 | ; XMINSTR("LATER")
|
---|
| 84 | I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
|
---|
| 85 | D LATERMSG^XMXPARM(.XMDUZ,.XMK,.XMKZA,.XMINSTR) Q:$D(XMERR)
|
---|
| 86 | D LATERMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,.XMINSTR,.XMMSG)
|
---|
| 87 | Q
|
---|
| 88 | MOVEMSG(XMDUZ,XMK,XMKZA,XMKTO,XMMSG) ; Move msgs from one basket to another
|
---|
| 89 | ; XMKTO Basket number, or enough of a name for a positive ID.
|
---|
| 90 | ; Identifies basket to move to
|
---|
| 91 | I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
|
---|
| 92 | D MOVEMSG^XMXPARM(.XMDUZ,.XMK,.XMKZA,.XMKTO) Q:$D(XMERR)
|
---|
| 93 | D MOVEMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,XMKTO,.XMMSG)
|
---|
| 94 | Q
|
---|
| 95 | NTOGLMSG(XMDUZ,XMK,XMKZA,XMMSG) ; New Toggle msgs
|
---|
| 96 | I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
|
---|
| 97 | D ACTMSGS^XMXPARM(.XMDUZ,.XMK,.XMKZA) Q:$D(XMERR)
|
---|
| 98 | D NTOGLMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,.XMMSG)
|
---|
| 99 | Q
|
---|
| 100 | PRTMSG(XMDUZ,XMK,XMKZA,XMPRTTO,XMINSTR,XMMSG,XMTASK,XMSUBJ,XMTO) ; Print msgs
|
---|
| 101 | ; XMINSTR("HDR"), "RESPS", "RECIPS", "WHEN"
|
---|
| 102 | ; XMPRTTO Printer name
|
---|
| 103 | ; XMSUBJ & XMTO used only if XMPRTTO is a P-MESSAGE device. Even then, they're optional.
|
---|
| 104 | I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
|
---|
| 105 | D PRTMSG^XMXPARM(.XMDUZ,.XMK,.XMKZA,.XMPRTTO,.XMINSTR,.XMSUBJ,.XMTO) Q:$D(XMERR)
|
---|
| 106 | D PRTMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,XMPRTTO,.XMINSTR,.XMMSG,.XMTASK,.XMSUBJ,.XMTO)
|
---|
| 107 | Q
|
---|
| 108 | PUTSERV(XMKN,XMZ) ; Put a message in a server basket
|
---|
| 109 | ; XMKN full server name, including "S."
|
---|
| 110 | D SERV^XMXPARMB(.XMKN,.XMZ) Q:$D(XMERR)
|
---|
| 111 | D PUTSERV^XMXMSGS1(XMKN,XMZ)
|
---|
| 112 | Q
|
---|
| 113 | REPLYMSG(XMDUZ,XMK,XMKZ,XMBODY,XMINSTR,XMZR) ; Reply to msg (Attach reply to original msg)
|
---|
| 114 | ; XMINSTR("NET REPLY") 1=send over the network; 0=don't (default)
|
---|
| 115 | ; XMINSTR("NET SUBJ") Network Reply subject (see XMSUBJ)
|
---|
| 116 | ; Out: XMZR (message number of answer)
|
---|
| 117 | I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
|
---|
| 118 | D REPLYMSG^XMXPARM(.XMDUZ,.XMK,.XMKZ,.XMBODY,.XMINSTR) Q:$D(XMERR)
|
---|
| 119 | D REPLYMSG^XMXREPLY(XMDUZ,.XMK,XMKZ,XMBODY,.XMINSTR,.XMZR)
|
---|
| 120 | Q
|
---|
| 121 | SENDBULL(XMDUZ,XMBN,XMPARM,XMBODY,XMTO,XMINSTR,XMZ,XMATTACH) ; Send a bulletin (returns XMZ)
|
---|
| 122 | ; In: User, bulletin name, bulletin parameters, add'l text,
|
---|
| 123 | ; add'l recipients, send now or later (when?), opt'l BLOB
|
---|
| 124 | I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
|
---|
| 125 | D BULLETIN^XMXPARM(.XMDUZ,.XMBN,.XMPARM,.XMBODY,.XMTO,.XMINSTR,.XMATTACH) Q:$D(XMERR)
|
---|
| 126 | D SENDBULL^XMXBULL(XMDUZ,XMBN,.XMPARM,.XMBODY,.XMTO,.XMINSTR,.XMZ,.XMATTACH)
|
---|
| 127 | Q
|
---|
| 128 | SENDMSG(XMDUZ,XMSUBJ,XMBODY,XMTO,XMINSTR,XMZ,XMATTACH) ; Send a msg
|
---|
| 129 | ; In: User, basket (if you are recipient), all msg parts,
|
---|
| 130 | ; priority?, closed?, (info?,cc?), send now or later (when?),
|
---|
| 131 | ; (KIDS,MIME,text,PackMan), delete date (if to shared,mail)
|
---|
| 132 | ; XMINSTR("RCPT BSKT")
|
---|
| 133 | I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
|
---|
| 134 | D SENDMSG^XMXPARM(.XMDUZ,.XMSUBJ,.XMBODY,.XMTO,.XMINSTR,.XMATTACH) Q:$D(XMERR)
|
---|
| 135 | D SENDMSG^XMXSEND(XMDUZ,XMSUBJ,XMBODY,.XMTO,.XMINSTR,.XMZ,.XMATTACH)
|
---|
| 136 | Q
|
---|
| 137 | TASKBULL(XMDUZ,XMBN,XMPARM,XMBODY,XMTO,XMINSTR,XMTASK,XMATTACH) ; Send a bulletin (Task it - does not return XMZ)
|
---|
| 138 | ; XMBN Bulletin name (must be full name)
|
---|
| 139 | ; XMPARM Array of parameters necessary for bulletin
|
---|
| 140 | ; ARRAY(1)="parameter 1"
|
---|
| 141 | ; ARRAY(2)="parameter 2"
|
---|
| 142 | ; XMBODY Additional text to append to the bulletin text
|
---|
| 143 | ; (must be closed root, passed by value. See WP_ROOT
|
---|
| 144 | ; definition for WP^DIE(), FM word processing filer)
|
---|
| 145 | ; XMTO Additional addressee(s)
|
---|
| 146 | ; XMINSTR("SELF BSKT")
|
---|
| 147 | ; ***ETC.***
|
---|
| 148 | ; In: User, bulletin name, bulletin parameters, add'l text,
|
---|
| 149 | ; add'l recipients, send now or later (when?), opt'l BLOB
|
---|
| 150 | ; Out: XMTASK (task number)
|
---|
| 151 | I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
|
---|
| 152 | D BULLETIN^XMXPARM(.XMDUZ,.XMBN,.XMPARM,.XMBODY,.XMTO,.XMINSTR,.XMATTACH) Q:$D(XMERR)
|
---|
| 153 | D TASKBULL^XMXBULL(XMDUZ,XMBN,.XMPARM,.XMBODY,.XMTO,.XMINSTR,.XMTASK,.XMATTACH)
|
---|
| 154 | Q
|
---|
| 155 | TERMMSG(XMDUZ,XMK,XMKZA,XMMSG) ; Terminate msgs
|
---|
| 156 | I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
|
---|
| 157 | D ACTMSGS^XMXPARM(.XMDUZ,.XMK,.XMKZA) Q:$D(XMERR)
|
---|
| 158 | D TERMMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,.XMMSG)
|
---|
| 159 | Q
|
---|
| 160 | VAPORMSG(XMDUZ,XMK,XMKZA,XMINSTR,XMMSG) ; Set vaporize date for msgs in a basket
|
---|
| 161 | ; XMINSTR("VAPOR")
|
---|
| 162 | I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
|
---|
| 163 | D VAPORMSG^XMXPARM(.XMDUZ,.XMK,.XMKZA,.XMINSTR) Q:$D(XMERR)
|
---|
| 164 | D VAPORMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,.XMINSTR,.XMMSG)
|
---|
| 165 | Q
|
---|
| 166 | ZAPSERV(XMKN,XMZ) ; Delete a message from a server basket
|
---|
| 167 | ; XMKN full server name, including "S."
|
---|
| 168 | D SERV^XMXPARMB(.XMKN,.XMZ) Q:$D(XMERR)
|
---|
| 169 | D ZAPSERV^XMXMSGS1(XMKN,XMZ)
|
---|
| 170 | Q
|
---|
| 171 | ; ***** other actions
|
---|
| 172 | ADDRNSND(XMDUZ,XMZ,XMTO,XMINSTR) ; Build a message part 2 (address and send)
|
---|
| 173 | ; XMZ (in)
|
---|
| 174 | I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
|
---|
| 175 | D ADDRNSND^XMXPARM(.XMDUZ,.XMZ,.XMTO,.XMINSTR) Q:$D(XMERR)
|
---|
| 176 | D ADDRNSND^XMXSEND(XMDUZ,XMZ,.XMTO,.XMINSTR)
|
---|
| 177 | Q
|
---|
| 178 | CRE8XMZ(XMSUBJ,XMZ) ; Build a message part 1 (create)
|
---|
| 179 | ; In: subject
|
---|
| 180 | ; Out: XMZ
|
---|
| 181 | D VSUBJ^XMXPARM(.XMSUBJ) Q:$D(XMERR)
|
---|
| 182 | D CRE8XMZ^XMXSEND(XMSUBJ,.XMZ)
|
---|
| 183 | Q
|
---|
| 184 | MOVEBODY(XMZ,XMBODY) ; Move text to the message
|
---|
| 185 | D MOVEBODY^XMXPARM(.XMZ,.XMBODY) Q:$D(XMERR)
|
---|
| 186 | D MOVEBODY^XMXSEND(XMZ,XMBODY)
|
---|
| 187 | Q
|
---|
| 188 | TOWHOM(XMDUZ,XMZ,XMTYPE,XMTO,XMINSTR,XMFULL) ; Check ONE msg addressee
|
---|
| 189 | ; XMFULL Expanded address of the addressee
|
---|
| 190 | I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
|
---|
| 191 | D TOWHOM^XMXPARM(.XMDUZ,.XMZ,.XMTYPE,XMTO,.XMINSTR) Q:$D(XMERR)
|
---|
| 192 | D TOWHOM^XMXTO(XMDUZ,.XMZ,XMTYPE,XMTO,.XMINSTR,.XMFULL)
|
---|
| 193 | Q
|
---|
| 194 | VSUBJ(XMSUBJ) ; Validate a subject
|
---|
| 195 | D VSUBJ^XMXPARM(.XMSUBJ)
|
---|
| 196 | Q
|
---|