1 | XMGAPI2 ;(WASH ISC)/JKL-Get Msg Header Info API ;04/17/2002 08:57
|
---|
2 | ;;8.0;MailMan;;Jun 28, 2002
|
---|
3 | ; Entry points (DBIA 1144):
|
---|
4 | ; $$HDR Get message header information
|
---|
5 | ;
|
---|
6 | ;USAGE: S X=$$HDR^XMGAPI2(A,.B,C)
|
---|
7 | ;WHERE: A=message or response #
|
---|
8 | ; .B=array into which data is placed
|
---|
9 | ; C=flag that determines what data is returned as follows:
|
---|
10 | ;Not defined or 0 = returns a function value of 0 if successful, an
|
---|
11 | ; error message if unsuccessful, and a value array:
|
---|
12 | ; L("BROADCAST")= 1 if the message was broadcast; 0 otherwise
|
---|
13 | ; L("BSKT") = basket (of local user)
|
---|
14 | ; L("BSKT IEN") = basket IEN (of local user)
|
---|
15 | ; L("DATE") = origination date
|
---|
16 | ; L("DATE FM") = origination date in FileMan format
|
---|
17 | ; L("LINES") = number of lines in the original message
|
---|
18 | ; L("NEW") = 1 if the message is new; 0 otherwise
|
---|
19 | ; L("PXMZ") = pointer to the original message
|
---|
20 | ; L("SENDER") = sender name
|
---|
21 | ; L("SENDER DUZ") = sender DUZ
|
---|
22 | ; L("SUBJ") = subject
|
---|
23 | ; L("SURROG") = surrogate (DUZ if local user or string if not)
|
---|
24 | ; L("TYPE") = message type(s)
|
---|
25 | ; L("XMZ") = message or response number
|
---|
26 | ;1 = returns function value and value array above, also
|
---|
27 | ; additional value array as follows:
|
---|
28 | ; L("RRED") = responses read
|
---|
29 | ; L("RRCV") = responses received
|
---|
30 | ; L("BLOBCNT") = number of non-textual body parts attached
|
---|
31 | ;91= returns function value, value array as with flag 1,
|
---|
32 | ; and an array of response nodes and values as follows:
|
---|
33 | ; L("RSP",counter)= (pointer to 3.9 file) / array of responses
|
---|
34 | ;92= returns function value, value array as with flag 1,
|
---|
35 | ; and an array of non-textual body parts as follows:
|
---|
36 | ; L("BLOB",counter) = (pointer to 2005 file) array of BLOBS
|
---|
37 | ;93= returns function value, value array as with flag 1,
|
---|
38 | ; response node array, and an array of non-textual body parts.
|
---|
39 | HDR(XMZ,L,F) ;Entry for non-MailMan (documented)
|
---|
40 | GO N %,%0,D,XMBCAST
|
---|
41 | S %=$G(XMZ) I +%'=%!(%<1) S %="1-Undefined message number" G ERR
|
---|
42 | I XMZ="" S %="1-No message number" G ERR
|
---|
43 | S %0=$G(^XMB(3.9,XMZ,0)) I %0="" S %="1-No such message" G ERR
|
---|
44 | S D=$S($G(XMDUZ):XMDUZ,1:DUZ)
|
---|
45 | I $S(+D'=D:1,D'>0:1,'$D(^XMB(3.7,D,0)):1,1:0) S %="4-Invalid user" G ERR
|
---|
46 | S %=$P(%0,U,8),%=$S(%:%,1:XMZ)
|
---|
47 | S XMBCAST=$S($D(^XMB(3.9,%,1,"C","* (Broadcast to all local users)")):1,$D(^XMB(3.9,%,1,"C","* (Broadcast to all local user")):1,1:0)
|
---|
48 | I $S($P(%0,U,2)=D:0,$D(^XMB(3.9,%,1,"C",D)):0,XMBCAST:0,1:1) S %="2-User is not a sender or recipient." G ERR
|
---|
49 | I $G(F)=""!'$G(F) S F=0 ;Default FLAG
|
---|
50 | N %1,%2,XMK
|
---|
51 | S %1=$$NET^XMRENT(XMZ) ;get message information
|
---|
52 | I %1="" S %="4-Message not defined" G ERR
|
---|
53 | S L("BROADCAST")=XMBCAST
|
---|
54 | S L("XMZ")=XMZ ;set message number into array
|
---|
55 | S L("DATE")=$P(%1,U) ;get origination date
|
---|
56 | S %2=$P(%0,U,3)
|
---|
57 | S L("DATE FM")=$S(%2?7N1".".N:%2,%2?7N:%2,1:$$CONVERT^XMXUTIL1(%2))
|
---|
58 | S:L("DATE FM")<2000000 L("DATE FM")=""
|
---|
59 | S L("SENDER")=$P(%1,U,3) ;get sender
|
---|
60 | S L("SENDER DUZ")=$S($P(%0,U,2):$P(%0,U,2),1:"")
|
---|
61 | S L("PXMZ")=$P(%1,U,7) ;get pointer to original message
|
---|
62 | S L("TYPE")=$P(%1,U,8) ;Message Type(s)
|
---|
63 | ;get number of message lines
|
---|
64 | S L("LINES")=$S($D(^XMB(3.9,XMZ,2,0)):$P(^(0),U,4),1:"")
|
---|
65 | S L("SUBJ")=$P(%1,U,6) ;get subject
|
---|
66 | S L("SURROG")=$P(%1,U,5) ;get surrogate
|
---|
67 | S XMK=$O(^XMB(3.7,"M",XMZ,D,0)) ;get basket
|
---|
68 | I XMK,$D(^XMB(3.7,D,2,XMK,0)) D
|
---|
69 | . S L("BSKT")=$P(^(0),U)
|
---|
70 | . S L("BSKT IEN")=XMK
|
---|
71 | E D
|
---|
72 | . S L("BSKT")=""
|
---|
73 | . S L("BSKT IEN")=""
|
---|
74 | I $G(XMK) S L("NEW")=$S($D(^XMB(3.7,D,"N0",XMK,XMZ)):1,1:0)
|
---|
75 | G Q:F=0
|
---|
76 | ;get responses read/received
|
---|
77 | S L("RRED")="",L("RRCV")="",%1=$O(^XMB(3.9,XMZ,1,"C",D,0))
|
---|
78 | I %1 S L("RRED")=$P(^XMB(3.9,XMZ,1,%1,0),U,2)
|
---|
79 | I $D(^XMB(3.9,XMZ,3,0)) S L("RRCV")=$P(^(0),U,4)
|
---|
80 | S L("BLOBCNT")=0 ;get blob count
|
---|
81 | I $D(^XMB(3.9,XMZ,2005,0)) S L("BLOBCNT")=$P(^(0),U,3)
|
---|
82 | G Q:F=1,BLOB:F=92
|
---|
83 | ;flag=91 - get response numbers and values
|
---|
84 | S %1=0 F S %1=$O(^XMB(3.9,XMZ,3,%1)) Q:'%1 S L("RSP",%1)=^(%1,0)
|
---|
85 | I F=91 G Q
|
---|
86 | ;flag=92 - get nodes and values of non-textual body parts
|
---|
87 | BLOB S %1=0 F S %1=$O(^XMB(3.9,XMZ,2005,%1)) Q:'%1 S L("BLOB",%1)=^(%1,0)
|
---|
88 | Q Q 0
|
---|
89 | ERR Q %
|
---|