source: FOIAVistA/trunk/r/MAILMAN-XM/XMA2R.m@ 1801

Last change on this file since 1801 was 628, checked in by George Lilly, 15 years ago

initial load of FOIAVistA 6/30/08 version

File size: 4.2 KB
Line 
1XMA2R ;ISC-SF/GMB- Reply to/Answer a message API ;04/19/2002 12:37
2 ;;8.0;MailMan;;Jun 28, 2002
3 ; Was (WASH ISC)/CAP
4 ;
5 ; Entry points (DBIA 1145):
6 ; ENT function for non-interactive reply to a message.
7 ; Reply is sent to all local recipients of the message.
8 ; If message if from a remote sender, the reply is sent to
9 ; the remote sender, too.
10 ; ENTA function for non-interactive answer to a message
11ENT(XMZ,XMSUBJ,XMTEXT,XMSTRIP,XMDUZ,XMNET) ; Send response to a message
12 ;Call as follows:
13 ; S var=$$ENT^XMA2R(XMZ,XMSUBJ,.XMTEXT,XMSTRIP,XMDUZ,XMNET)
14 ;Where: XMZ = Message being responded to
15 ; XMSUBJ = Subject of the response
16 ; (ignored, unless message is from a remote sender)
17 ; .XMTEXT = Array containing text
18 ; XMSTRIP = Characters to be stripped from text
19 ; XMDUZ = Sender of response (DUZ or free text)
20 ; XMNET = Send reply over the net? (0=no (DEFAULT); 1=yes)
21 ; (ignored, unless message is from a remote sender)
22 ;OUTPUT: If results okay = internal pointer to response in file 3.9
23 ; If bad result, the letter "E" followed by a number,
24 ; followed by a space, then a human readable explanation.
25 N XMV,XMZR,XMINSTR,XMMG,XMSECURE,XMZREC
26 K XMERR,^TMP("XMERR",$J)
27 I '$D(^XMB(3.9,XMZ,0)) Q "E5 Message "_XMZ_" does not exist."
28 I '$O(^XMB(3.9,XMZ,1,0)) Q "E6 Message "_XMZ_" has no recipients."
29 I $D(XMTEXT)<9 Q "E2 No message text !"
30 I '$O(XMTEXT(0)) Q "E4 No message text !"
31 S XMDUZ=$G(XMDUZ,DUZ)
32 I XMDUZ'?.N D Q:$D(XMMG) "E10 "_$P(XMMG,"= ",2)
33 . D SETFROM^XMD(.XMDUZ,.XMINSTR)
34 D INITAPI^XMVVITAE
35 D CRE8XMZ^XMXSEND("R"_XMZ,.XMZR) Q:XMZR<1 $$ERR("E9")
36 D MOVETEXT(XMZR,.XMTEXT)
37 D CHEKBODY^XMXSEND(XMZR,$G(XMSTRIP))
38 D DOREPLY^XMXREPLY(XMDUZ,XMZ,XMZR,.XMINSTR)
39 S XMZREC=$G(^XMB(3.9,XMZ,0))
40 I $P(XMZREC,U,2)'["@"!'$G(XMNET) Q XMZR
41 I '$D(XMSUBJ) Q "E1 No subject !"
42 I $L(XMSUBJ)<3!($L(XMSUBJ)>65) Q "E3 Subject too long or short !"
43 S XMSUBJ=$$SCRUB^XMXUTIL1(XMSUBJ)
44 S:XMSUBJ[U XMSUBJ=$$ENCODEUP^XMXUTIL1(XMSUBJ)
45 N XMFROM,XMREPLTO
46 D REPLYTO^XMXREPLY(XMZ,.XMFROM,.XMREPLTO)
47 D INIT^XMXADDR
48 D CHKADDR^XMXADDR(XMDUZ,$$REMADDR^XMXADDR3($G(XMREPLTO,XMFROM)),.XMINSTR) Q:$D(XMERR) $$ERR("E12")
49 D NETREPLY^XMXREPLY(XMDUZ,XMZ,XMZR,XMSUBJ,.XMINSTR)
50 D CLEANUP^XMXADDR
51 Q XMZR
52MOVETEXT(XMZ,XMTEXT,XMAPPEND) ;
53 N I,XMLINE
54 S XMLINE=$S($G(XMAPPEND):$O(^XMB(3.9,XMZ,2,":"),-1),1:0)
55 S I=0
56 F S I=$O(XMTEXT(I)) Q:'I D
57 . S XMLINE=XMLINE+1
58 . S ^XMB(3.9,XMZ,2,XMLINE,0)=$S($D(XMTEXT(I,0)):XMTEXT(I,0),1:XMTEXT(I))
59 S ^XMB(3.9,XMZ,2,0)="^3.92A^"_XMLINE_U_XMLINE
60 Q
61ENTA(XMZ,XMSUBJ,XMTEXT,XMSTRIP,XMDUZ) ; Send Response Only to Sender of Original Message
62 ;Call as follows:
63 ; S var=$$ENT^XMA2R(XMZ,XMSUBJ,.XMTEXT,XMSTRIP,XMDUZ)
64 ;Where: XMZ = Message being responded to
65 ; XMSUBJ = Subject of the response
66 ; .XMTEXT = Array containing text
67 ; XMSTRIP = Characters to be stripped from text
68 ; XMDUZ = Sender of response (DUZ or free text)
69 ;
70 ;OUTPUT: If results okay = internal pointer to response in file 3.9
71 ; If bad result, the letter "E" followed by a number,
72 ; followed by a space, then a human readable explanation.
73 N XMV,XMZR,XMINSTR,XMMG,XMSECURE,XMZSENDR,XMZREC,XMTO
74 K XMERR,^TMP("XMERR",$J)
75 I '$D(^XMB(3.9,XMZ,0)) Q "E5 Message "_XMZ_" does not exist."
76 I '$D(XMSUBJ) Q "E1 No subject !"
77 I $D(XMTEXT)<9 Q "E2 No message text !"
78 I $L(XMSUBJ)<3!($L(XMSUBJ)>65) Q "E3 Subject too long or short !"
79 I '$O(XMTEXT(0)) Q "E4 No message text !"
80 S XMDUZ=$G(XMDUZ,DUZ)
81 I XMDUZ'?.N D Q:$D(XMMG) "E10 "_$P(XMMG,"= ",2)
82 . D SETFROM^XMD(.XMDUZ,.XMINSTR)
83 D INITAPI^XMVVITAE
84 S XMZREC=^XMB(3.9,XMZ,0)
85 S XMZSENDR=$P(XMZREC,U,2)
86 S:XMZSENDR["@" XMZSENDR=$$REPLYTO1^XMXREPLY(XMZ)
87 D CRE8XMZ^XMXSEND(XMSUBJ,.XMZR) Q:XMZR<1 $$ERR("E9")
88 D COPY^XMXANSER(XMZ,$P(XMZREC,U,1),XMZSENDR,$P(XMZREC,U,3),XMZR)
89 D MOVETEXT(XMZR,.XMTEXT,1)
90 D NETSIG^XMXEDIT(XMDUZ,XMZR)
91 D CHEKBODY^XMXSEND(XMZR,$G(XMSTRIP))
92 S XMTO(XMZSENDR)=""
93 S XMTO(XMDUZ)=""
94 S XMINSTR("ADDR FLAGS")="R" ; No addressing restrictions
95 D ADDRNSND^XMXSEND(XMDUZ,XMZR,.XMTO,.XMINSTR)
96 Q:$D(XMERR) $$ERR("E11")
97 Q XMZR
98ERR(XMER) ;
99 S XMER=XMER_" "_^TMP("XMERR",$J,1,"TEXT",1)
100 K XMERR,^TMP("XMERR",$J)
101 Q XMER
Note: See TracBrowser for help on using the repository browser.