| 1 | XMPG ;(WASH ISC)/THM/CAP-PackMan Global List/Load ;10/07/2003  12:16 | 
|---|
| 2 | ;;8.0;MailMan;**23**;Jun 28, 2002 | 
|---|
| 3 | ; Entry point (DBIA 10071): | 
|---|
| 4 | ; ENT  Load and send a packman message with globals | 
|---|
| 5 | ; | 
|---|
| 6 | ; Entry points used by MailMan options (not covered by DBIA): | 
|---|
| 7 | ; LOAD  XMPGLO - Load global | 
|---|
| 8 | ; | 
|---|
| 9 | ; If you D ^XMPG, you are asked for a global, and it is printed | 
|---|
| 10 | ; to whichever device you choose. | 
|---|
| 11 | S %1="W !,D,""="",@D",%2="W !,%G_I_"")="",%T" | 
|---|
| 12 | D ^%ZIS G K:POP | 
|---|
| 13 | D R | 
|---|
| 14 | I IO(0)'=IO U IO D ^%ZISC | 
|---|
| 15 | D HOME^%ZIS | 
|---|
| 16 | Q | 
|---|
| 17 | R D N G R:K G K:%G="" U IO D EN G R | 
|---|
| 18 | EN K I,R G K:%G="" S %0=0,Q=$C(34),R=1 D GP | 
|---|
| 19 | S D=$P(%G,"(",1) I @("$D("_D_")#2"),$L(@D) X %1 | 
|---|
| 20 | D S Q | 
|---|
| 21 | S S I=Q_Q | 
|---|
| 22 | DISK S @("I=$O("_%G_I_"))") Q:I=""  S D=$D(^(I)),%0=%0+1 S:D#2 %T=^(I) | 
|---|
| 23 | F J=1:1:$L(I) S J=$F(I,Q,J) Q:J=0  S I=$E(I,1,J-1)_Q_$E(I,J,999) | 
|---|
| 24 | I I'?1.N&(I'?.N1"."1.N)!(I?1"0".1"."1.N)!(I?.N1".".N1."0") S I=""""_I_"""" | 
|---|
| 25 | X:D#2 %2 I D>9 D PUSH S %G=%G_I_"," D S,POP | 
|---|
| 26 | G DISK | 
|---|
| 27 | PUSH S R=R+1,I(R)=I,R(R)=%G Q | 
|---|
| 28 | POP S I=I(R),%G=R(R),R=R-1 Q | 
|---|
| 29 | K K %,%0,%1,%2,%D,%G,%GQ,%T,D,I,K,POP,Q,R | 
|---|
| 30 | Q | 
|---|
| 31 | ; | 
|---|
| 32 | LOAD ;LOAD GLOBAL INTO MESSAGE DEFINED IN <DIE> | 
|---|
| 33 | S (DIE,DIF)="^XMB(3.9,XMZ,2," S:'$D(XCNP) XCNP=0 D % | 
|---|
| 34 | L1 D N G L1:K I %G="" S @(DIE_"0)")="^^"_XCNP_U_XCNP G K | 
|---|
| 35 | W "   Loading..." D MOVE G L1 | 
|---|
| 36 | SET S XCNP=XCNP+1,@(DIE_XCNP_",0)")=%D Q | 
|---|
| 37 | GP S R=1,%G=$E("^",$E(%G)'="^")_%G | 
|---|
| 38 | I ",("'[$E(%G,$L(%G)) S %G=%G_$E("(,",%G["("+1) | 
|---|
| 39 | Q | 
|---|
| 40 | N ;GET NAME OF GLOBAL | 
|---|
| 41 | U IO(0) S K=0 R !,"Global: ",%G:DTIME S I=$E(%G) Q:I="" | 
|---|
| 42 | I I="^",I=%G S %G="" Q | 
|---|
| 43 | I I'?1A,I'="%" G N1 | 
|---|
| 44 | I I'?1A,I'="%" S %G="",K=1 W !,"MUST BEGIN WITH % OR LETTER" Q | 
|---|
| 45 | I I="^" S %G=$E(%G,2,99) | 
|---|
| 46 | I $P(%G,"(")'?0.1"%".AN D N1 Q | 
|---|
| 47 | I $E(%G,$L(%G))=")" S %G="",K=1 W !,"DO NOT END GLOBAL REFERENCE WITH ')'" Q | 
|---|
| 48 | S I=$P(%G,"(",2,99) F J=1:1 Q:$P(I,",",J,99)=""  I $P(I,",",J)="" S K=1 W $C(7),!,"EACH SUBSCRIPT MUST HAVE A VALUE" Q | 
|---|
| 49 | F J=1:1 S I=$P($P(%G,"(",2),",",J) Q:I=""  I +I'=I S I=$S($E(I)'=$C(34):1,$E(I,$L(I))'=$C(34):2,$L(I,$C(34))-1#2:3,1:0) I I S K=1 W $C(7),!,"Invalid entry !  Please enter the EXACT values of the subscripts." Q | 
|---|
| 50 | Q | 
|---|
| 51 | N1 S %G="",K=1 W !,"GLOBAL NAME MUST BEGIN WITH '%' OR LETTER" Q | 
|---|
| 52 | ; | 
|---|
| 53 | ENT ;LOAD UP GLOBAL ENTRY POINT FROM OUTSIDE ROUTINES | 
|---|
| 54 | ; Input: | 
|---|
| 55 | ; DUZ    Sender's DUZ | 
|---|
| 56 | ; XMSUB  Message subject | 
|---|
| 57 | ; XMY    Recipient array | 
|---|
| 58 | ; XMTEXT String of open global roots separated by semicolon | 
|---|
| 59 | ; Output: | 
|---|
| 60 | ; XMZ    Message number | 
|---|
| 61 | ; XMMG   Error message, if error | 
|---|
| 62 | ; Kills: | 
|---|
| 63 | ; XMY | 
|---|
| 64 | N XMV,XMDF,XMINSTR,XMPIECE | 
|---|
| 65 | K XMERR,^TMP("XMERR",$J),XMMG | 
|---|
| 66 | S XMDF=1 | 
|---|
| 67 | S XMINSTR("ADDR FLAGS")="R" | 
|---|
| 68 | D INIT^XMVVITAE | 
|---|
| 69 | I $D(XMV("ERROR")) D  Q | 
|---|
| 70 | . S XMMG=@$Q(XMV("ERROR")) | 
|---|
| 71 | D CRE8XMZ^XMXSEND(XMSUB,.XMZ) | 
|---|
| 72 | I $D(XMERR) D  Q | 
|---|
| 73 | . S XMMG=^TMP("XMERR",$J,1,"TEXT",1) | 
|---|
| 74 | . K XMERR,^TMP("XMERR",$J) | 
|---|
| 75 | D NEW^XMP | 
|---|
| 76 | D % | 
|---|
| 77 | S (DIE,DIF)="^XMB(3.9,XMZ,2," | 
|---|
| 78 | F XMPIECE=1:1:$L(XMTEXT,";") D | 
|---|
| 79 | . S %G=$P(XMTEXT,";",XMPIECE) | 
|---|
| 80 | . Q:%G="" | 
|---|
| 81 | . D MOVE | 
|---|
| 82 | K XCNP | 
|---|
| 83 | D K | 
|---|
| 84 | Q:'$O(^XMB(3.9,XMZ,2,1)) | 
|---|
| 85 | D ADDRNSND^XMXSEND(XMDUZ,XMZ,.XMY,.XMINSTR) | 
|---|
| 86 | K:$D(XMERR) XMERR,^TMP("XMERR",$J) | 
|---|
| 87 | K XMY | 
|---|
| 88 | Q | 
|---|
| 89 | MOVE ;MOVE GLOBAL INTO MESSAGE | 
|---|
| 90 | S %D="$GLO "_%G D SET | 
|---|
| 91 | D EN S %D="$END GLO "_%G D SET | 
|---|
| 92 | S $P(@(DIE_"0)"),U,3,4)=XCNP_U_XCNP | 
|---|
| 93 | Q | 
|---|
| 94 | % ;SET UP EXECUTABLE STRINGS | 
|---|
| 95 | S %1="S %D=D D SET S %D=@D D SET" | 
|---|
| 96 | S %2="S %D=%G_I_"")"" D SET S %D=%T D SET W:'(%0#25)&'$D(ZTQUEUED) "".""" | 
|---|
| 97 | Q | 
|---|