| 1 | XMRPCTS0 ;(KC-VAMC)/XXX-Send TWIX's to PCTS Host [XMTR] ;03/21/2002  07:49 | 
|---|
| 2 | ;;8.0;MailMan;;Jun 28, 2002 | 
|---|
| 3 | ; Entry points used by MailMan options (not covered by DBIA): | 
|---|
| 4 | ; RQ       XMNET-TWIX-TRANSMIT | 
|---|
| 5 | ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | 
|---|
| 6 | ; Walk through this Domains Transmit Basket and send them. | 
|---|
| 7 | ; If there is an error, record the error message, copy of | 
|---|
| 8 | ; the message, and drop to PCTS Mailgroup. | 
|---|
| 9 | ;------------------------------------------------------------- | 
|---|
| 10 | D DSP^XMRPCTS("==>Checking for PCTS Messages to Transmit<==") | 
|---|
| 11 | ;Get domain # for the PCTS domain | 
|---|
| 12 | S XMINST=$O(^DIC(4.2,"B","VHA.DMIA",0)) | 
|---|
| 13 | S XMK=XMINST+1000,XMDUZ=.5,XMZ=0,U="^" D INIT^XMRPCTSA S XMRPCTS("S")=0 | 
|---|
| 14 | WALK D DSP("==>Checking for messages in basket # "_XMK_"<==") | 
|---|
| 15 | S XMZ=$O(^XMB(3.7,.5,2,XMK,1,XMZ)) G EXIT:XMZ<1 | 
|---|
| 16 | I '$D(^XMB(3.9,XMZ,0)) D ZAPIT^XMXMSGS2(.5,XMK,XMZ) G WALK ;Message is Gone? | 
|---|
| 17 | D DSP("<==MREQ for local "_XMZ) W "MREQ",!,XMZ,!,"PCTS",!,"AMS",!,"TAB",!,XMET,XMCR S %=0 | 
|---|
| 18 | ; | 
|---|
| 19 | MREQ F I=1:1:3 R X:5 Q:$T | 
|---|
| 20 | I X["MAK1" R X:3 S XMMN=$P(X,XMLF,2) G:X[XMET!(XMMN'=XMZ) EXIT G REM | 
|---|
| 21 | I X["MEND"!(X[XMET) D DSP("==>MENDing<==") G EXIT | 
|---|
| 22 | S %=%+1 G MREQ:%<3,EXIT | 
|---|
| 23 | REM R X:3 S XMMN=$P(X,XMLF,2) G:X[XMET!(XMMN'?1N.N) EXIT | 
|---|
| 24 | D DSP("==>MAK1 for REMOTE "_XMMN) | 
|---|
| 25 | MDTA ; | 
|---|
| 26 | D DSP("<==MDTA, Now Sending Message #"_XMZ) | 
|---|
| 27 | S ^XMBS(4.2999,XMINST,3)=$H_"^"_XMZ_"^^^^DMI/MM-SSP" ; mailman status | 
|---|
| 28 | W "MDTA",!,XMZ,!,XMMN,!,XMSH S XMLPC=0 ;Here we go! | 
|---|
| 29 | F X=0:0 S X=$O(^XMB(3.9,XMZ,2,X)) Q:X<1  I $D(^(X,0)) S Z=^(0) D  Q:$E(Z,1,6)["NNNN" | 
|---|
| 30 | . N X,Y S X=$C(XMLPC)_Z_XMCR_XMLF X ^%ZOSF("LPC") S XMLPC=Y W Z,! | 
|---|
| 31 | ;S X=$C(XMLPC)_XMLF) X ^%ZOSF("LPC") S XMLPC=Y ;We like that extra lf calculated | 
|---|
| 32 | S XMLPC=$E(XMDH,XMLPC\16+1)_$E(XMDH,XMLPC#16+1) ;The Magic Code | 
|---|
| 33 | W $C(25),XMLPC,XMET,XMCR S %=1 ;Write the checksum | 
|---|
| 34 | MAK2 F I=1:1:3 R X:5 Q:$T  ;Look for the status of the one we just sent | 
|---|
| 35 | I X["MAK2" S XMSTAT="Sent-> AMS Msg# "_XMMN R X:3 R X:3 D STAT S XMRPCTS("S")=XMRPCTS("S")+1 G WALK | 
|---|
| 36 | I $E(X["MN") R X:3 R X:3 S XMSTAT="Error: "_$P(X,XMLF,2) D STAT,ERR G WALK | 
|---|
| 37 | S %=%+1 G MAK2:%<3 | 
|---|
| 38 | ; | 
|---|
| 39 | D DSP("==>INVALID RESPONSE from RCVR, Expecting MAK2, Closing up") | 
|---|
| 40 | G EXIT | 
|---|
| 41 | ; | 
|---|
| 42 | Q | 
|---|
| 43 | JD() ; Returns today's Julian date | 
|---|
| 44 | N XMDDD,XMHHMM,XMNOW,XMDT | 
|---|
| 45 | S XMNOW=$$NOW^XLFDT | 
|---|
| 46 | S XMDT=$E(XMNOW,1,7) | 
|---|
| 47 | S XMDDD=$$RJ^XLFSTR($$FMDIFF^XLFDT(XMDT,$E(XMDT,1,3)_"0101",1)+1,3,"0") | 
|---|
| 48 | S XMHHMM=$$LJ^XLFSTR($E(XMNOW,9,12),4,"0") | 
|---|
| 49 | Q XMDDD_XMHHMM | 
|---|
| 50 | ; | 
|---|
| 51 | DSP(XMTRAN) ; | 
|---|
| 52 | D TRAN^XMC1 | 
|---|
| 53 | S %="" ;Show us what is going on | 
|---|
| 54 | Q | 
|---|
| 55 | ; | 
|---|
| 56 | STAT ;Update the Mailman Status | 
|---|
| 57 | S X=$O(^XMB(3.9,XMZ,1,"C","XXX@"_$P(^DIC(4.2,+XMINST,0),U),0)) | 
|---|
| 58 | I X>0 S $P(^XMB(3.9,XMZ,1,X,0),U,5,6)=$$DT_U_XMSTAT | 
|---|
| 59 | S ^XMBS(4.2999,XMINST,3)="" ;Mailman Status | 
|---|
| 60 | D ZAPIT^XMXMSGS2(.5,XMK,XMZ) ;Remove it from the Domains Basket | 
|---|
| 61 | Q | 
|---|
| 62 | ERR N %,X,XMSUB,XMTEXT,XMY,Y | 
|---|
| 63 | D DSP("==>Recording Rejected Message #"_XMZ_"  "_XMSTAT) | 
|---|
| 64 | S XMTEXT="^XMB(3.9,"_XMZ_",2," | 
|---|
| 65 | N XMZ,DIC,XMDF | 
|---|
| 66 | S XMSUB="PCTS Message Returned "_XMSTAT,XMDF=1 | 
|---|
| 67 | S XMY("G.PCTS")="" ; Mail group PCTS must be created on the system | 
|---|
| 68 | S XMY(.5)="" | 
|---|
| 69 | D ^XMD | 
|---|
| 70 | Q  ;Send it to the PostMaster anyway | 
|---|
| 71 | ; | 
|---|
| 72 | DT() N X,Y,%DT S %DT="T",X="N" D ^%DT Q (Y) | 
|---|
| 73 | EXIT D DSP("==>Quitting<==") | 
|---|
| 74 | W "MEND",! | 
|---|
| 75 | Q | 
|---|
| 76 | RQ ;Force this domain to play its script, it plays regardless... | 
|---|
| 77 | ;Queue this puppy to run at regular intervals. | 
|---|
| 78 | N XMDUZ,XMSITE,XMINST,XMB,% | 
|---|
| 79 | S XMDUZ=.5 | 
|---|
| 80 | S XMSITE="VHA.DMIA" | 
|---|
| 81 | S XMINST=$O(^DIC(4.2,"B",XMSITE,0)) | 
|---|
| 82 | I $D(ZTQUEUED) D  I $$OBE^XMTDR(XMINST) G QQ | 
|---|
| 83 | . S ZTREQ="@" | 
|---|
| 84 | E  I $$TSKEXIST^XMKPR(XMINST) G QQ | 
|---|
| 85 | D SCRIPT^XMKPR1(XMINST,XMSITE,.XMB) | 
|---|
| 86 | I 'XMB("SCR IEN") G QQ | 
|---|
| 87 | D PLAY^XMTDR(XMINST,XMSITE,.XMB) | 
|---|
| 88 | QQ ; | 
|---|
| 89 | D DSP("Quitting from sending TWIX's") | 
|---|
| 90 | ;D KL1^XMC | 
|---|
| 91 | L | 
|---|
| 92 | K DIC,X,Y,XMDT,ZTPAR | 
|---|
| 93 | Q:'$G(XMRPCTS0) | 
|---|
| 94 | S XMCI=XMRPCTS0 | 
|---|
| 95 | Q | 
|---|