source: IHS-VA_UTILITIES-XB/XBMAIL.m@ 641

Last change on this file since 641 was 641, checked in by Sam Habiel, 15 years ago

Initial commit of XB, move away from sf.net.
Includes kids file and documentation.

File size: 3.8 KB
Line 
1XBMAIL ; IHS/ADC/GTH - MAIL MESSAGE TO SECURITY KEY HOLDERS ; [ 02/07/97 3:02 PM ]
2 ;;4.0;XB;;Jul 20, 2009;Build 2
3 ;
4 ; This utility generates a mail message to everyone on the
5 ; local machine that holds a security key according to the
6 ; namespace, range, or single key provided in the parameter.
7 ; The text of the mail messages must be provided by you, and
8 ; passed to the utility as a line reference. The utility
9 ; uses the first line after the line reference as the mail
10 ; message subject, and subsequent lines as the body of the
11 ; message, until a null string is encountered. This places
12 ; an implicit limit on your mail messages to the maximum
13 ; size of a routine. Suggested text would be to inform the
14 ; users that a patch has been installed, and describe any
15 ; changes in displays or functionality, or problems
16 ; addressed, and provide a contact number for questions,
17 ; e.g:
18 ; ------------------------------------------------------------------
19 ; Please direct your questions or comments about RPMS software to:
20 ; OIRM / DSD (Division of Systems Development)
21 ; 5300 Homestead Road NE
22 ; Albuquerque NM 87110
23 ; 505-837-4189
24 ; ------------------------------------------------------------------
25 ;
26 ; Call examples are:
27 ;
28 ; D MAIL^XBMAIL("ACHS*","MSG^ACHSP56")
29 ; D MAIL^XBMAIL("AG*,XUMGR-XUPROGMODE,APCDZMENU","LABEL^AGP5")
30 ;
31 ; The second example would deliver a mail message containing
32 ; the text beginning at LABEL+2^AGP5, and continuing to the
33 ; end of routine AGP5, to each local user that holds a
34 ; security key in the AG namespace, in the range from XUMGR
35 ; to XUPROGMODE (inclusive), and to holders of the APCDZMENU
36 ; security key.
37 ;
38 ; If you are indicating a namespace, your namespace must end
39 ; with a star ("*") character.
40 ;
41 ; If you are indicating a range of security keys, the
42 ; beginning and ending keys must be separated with a dash
43 ; ("-"). If the utility encounters a dash in a comma-piece
44 ; of the first parameter, it will consider it to be
45 ; range-indicated, and not part of the name of the key.
46 ; Use caution not to begin or end with a key that has a dash
47 ; in it's name.
48 ;
49 ; If a comma-piece does not contain a star or dash, a single
50 ; key is assumed.
51 ;
52 ; The subject of the message is assumed to be the first line
53 ; after LABEL^AGP5:
54 ; LABEL ;EP - Mail msg text.
55 ; ;;PATIENT REG, PATCH 5 CHANGES.
56 ;
57 ; The utility will return Y=0 if successful, and Y=-1 if not
58 ; successful. The message "Message delivered." will be
59 ; displayed if the routine is called interactively.
60 ;
61 ;
62 Q
63 ;
64MAIL(XBNS,XBREF) ;PEP - XBNS is namespace, XBREF is line reference.
65 ;
66 NEW XBLAB,XBRTN,XMSUB,XMDUZ,XMTEXT,XMY
67 S XBLAB=$P(XBREF,U),XBRTN=$P(XBREF,U,2)
68 I XBLAB=""!(XBRTN="") S Y=-1 Q ; Invalid label reference.
69 I '$L($T(@XBLAB+1^@XBRTN)) S Y=-1 Q ; No text to send.
70 S XMSUB=$P($T(@XBLAB+1^@XBRTN),";",3)
71 KILL ^TMP("XBMAIL",$J)
72 D WRITDESC,GETRECIP
73 I '$D(XMY) S Y=-1 Q ; No recipients.
74 S XMDUZ=$S($G(DUZ):DUZ,1:.5),XMTEXT="^TMP(""XBMAIL"",$J,"
75 D ^XMD
76 KILL ^TMP("XBMAIL",$J)
77 I '$D(ZTQUEUED) W !!,"Message delivered.",!
78 S Y=0
79 Q
80 ;
81GETRECIP ;
82 NEW X,XBCTR,Y
83 F XBCTR=1:1 S %=$P(XBNS,",",XBCTR) Q:%="" D
84 . I %["*" D NS(%) Q
85 . I %["-" D RANGE(%) Q
86 . D SINGLE(%)
87 .Q
88 Q
89 ;
90SINGLE(K) ; Get holders of a single key K.
91 S Y=0
92 Q:'$D(^XUSEC(K))
93 F S Y=$O(^XUSEC(K,Y)) Q:'Y S XMY(Y)=""
94 Q
95 ;
96RANGE(R) ; Get holders of a range of keys.
97 S X=$P(R,"-",1),R=$P(R,"-",2)
98 D SINGLE(X)
99 F S X=$O(^XUSEC(X)) Q:X=R!(X="") S Y=0 F S Y=$O(^XUSEC(X,Y)) Q:'Y S XMY(Y)=""
100 D SINGLE(R)
101 Q
102 ;
103NS(N) ; Get holders of keys in namespace N.
104 S (X,N)=$P(N,"*",1),Y=0
105 D SINGLE(X)
106 F S X=$O(^XUSEC(X)) Q:'($E(X,1,$L(N))=N) S Y=0 F S Y=$O(^XUSEC(X,Y)) Q:'Y S XMY(Y)=""
107 Q
108 ;
109 ;
110WRITDESC ;
111 F %=2:1 S X=$P($T(@XBLAB+%^@XBRTN),";",3) Q:X="" S ^TMP("XBMAIL",$J,%)=X
112 Q
113 ;
Note: See TracBrowser for help on using the repository browser.