Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: XMAPHOCP

XMAPHOCP.m

Go to the documentation of this file.
  1. XMAPHOST ;(WASH ISC)/KMB/CAP-PRINT TO MESSAGE (P-MESSAGE) ;08/05/96 09:16 [ 12/04/96 3:56 PM ]
  1. ;;7.1;Mailman;**1003**;OCT 27, 1998
  1. ;;7.1;MailMan;**7,14,27**;Sep 12, 1994
  1. ;
  1. ;This routine is called as a close execute for the P-Message device
  1. ;to put reports written to host files (DOS,VMS...) into mail messages.
  1. ;
  1. ;It has one idiosyncracy. If the report contains one single line
  1. ;or two lines separated with only a $C(13) instead of a CR/LF that is
  1. ;more than 254 characters long, there will be unexpected results.
  1. ;
  1. ;
  1. K ^TMP("XMY",$J),^TMP("XMY0",$J) I '$D(ZTQUEUED) K XMY,XMY0
  1. S Y=0
  1. N XMDUZ S XMDUZ=DUZ I '$G(XMDUZ) S XMDUZ=.5 I '$D(ZTQUEUED) U IO(0) W !!,*7,"No user identity. Using Postmaster as sender and receiver." U IO
  1. S %=$G(XMSUB) N XMXUSEC,XMSUB,XMR S XMSUB=%
  1. I '$D(^XMB(3.7,$S($D(XMDUZ):XMDUZ,1:DUZ))),'$D(ZTQUEUED) U IO(0) W !,*7,"You do not have a mail box. MailMan will not deliver messages to you." U IO
  1. I '$D(ZTQUEUED) U IO(0) W !!,"Moving text to MailMan message... (Creating now) " U IO
  1. N XMZ D DUN S XMSUB=$S($L($G(XMSUB))>3:XMSUB,$D(ZTQUEUED):"QUEUED MAIL REPORT FROM "_%,1:"")
  1. I '$D(ZTQUEUED) D 0
  1. D GET^XMA2
  1. S XMAPHOST("XMZ")=XMZ,XMAPHOST("XMSUB")=XMSUB
  1. Q
  1. ;
  1. ;Read the host file into a message, send it, erase it
  1. READ ;Read record from file
  1. ;Each time <CR> is found in record it ends a message line
  1. N %,XMA0,XMB0,XMR,XMZ,Y
  1. I $$NEWERR^%ZTER N $ETRAP,$ESTACK S $ETRAP=""
  1. S X="EOF^XMAPHOST",@^%ZOSF("TRAP")
  1. S %=0,I=0,X="",XMZ=XMAPHOST("XMZ"),XMB0=^%ZOSF("OS")
  1. O IO:("/m/XM"_DUZ_"."_$J:"R") ;IHS/MFD added line
  1. U IO F D G EOF:$G(XMAPHOST("EOF"))
  1. . S X=$$GET(),XMA0=$L(X) S:X="" %=%+1 Q:%>999!$G(XMAPHOST("EOF"))
  1. . I X[""!(%<9) F D Q:X=""!$G(XMAPHOST("EOF"))
  1. . . S I=$$PUT(XMZ,$P(X,$C(13)),I),X=$P(X,$C(13),2,999)
  1. . . I $L(X),XMA0>254 S X=X_$$GET(),XMA0=0
  1. . . Q
  1. . Q
  1. Q
  1. PUT(XMZ,X,I) ;Put data into message.
  1. S I=I+1,^XMB(3.9,XMZ,2,I,0)=$$STRIP(X),%=0
  1. I '$D(ZTQUEUED),I#10=0 U IO(0) W "." U IO
  1. Q I
  1. GET() ;Read a record from the file
  1. N Y,X
  1. G:$D(XMAPHOST("EOF")) GETR
  1. I $$NEWERR^%ZTER N $ETRAP,$ESTACK S $ETRAP=""
  1. S X="GETQ^XMAPHOST",@^%ZOSF("TRAP")
  1. GETR R Y#255:1
  1. I XMB0["MSM" G GETQ:$ZC'=0 Q Y
  1. Q Y
  1. GETQ S XMAPHOST("EOF")=1
  1. Q ""
  1. EOF ;
  1. I '$$NEWERR^%ZTER S X="ERR^ZU",@^%ZOSF("TRAP")
  1. I '$D(ZTQUEUED) U IO(0) W !,"END OF FILE",!
  1. S ^XMB(3.9,XMAPHOST("XMZ"),2,0)="^3.92A^"_I_"^"_I
  1. ;Here, send the message to recipient.
  1. N XMZ S XMZ=XMAPHOST("XMZ") I $D(ZTQUEUED) S XMY($S($G(XMDUZ):XMDUZ,$G(DUZ):DUZ,1:.5))="" D REDO^XMA21 G FINAL
  1. ;Here, we ask the user for recipients.
  1. I '$D(ZTQUEUED) U IO(0) D DUN N DIC,XMDUZ,XMDUN S XMDUZ=$S(DUZ:DUZ,1:.5),XMDUN=% D DESTXM^XMA21 G FINAL
  1. FINAL I '$D(^TMP("XMY",$J)) S TMP("XMY",$J,.5)="",^TMP("XMY0",$J,.5)=""
  1. D ENT^XMAD1
  1. I '$D(ZTQUEUED) U IO(0) W !,"Message subject: ",XMAPHOST("XMSUB"),", Message number: ",XMZ,! H 3
  1. Q1 S IONOFF=1 ;Prevent form feed during device close
  1. K %,X,XMAPHOST,XMY,^TMP("XMY",$J),^TMP("XMY0",$J),Y,I Q
  1. STRIP(X) ;Remove Control Characters
  1. N % S %=0 I X'?.ANP N % F %=1:1:$L(X) I $E(X,%)?1C S X=$E(X,1,%-1)_$E(X,%+1,999) Q:X?.ANP S %=%-1
  1. Q X
  1. DUN ;GET NAME IN %
  1. S %=$S($D(^VA(200,DUZ,0))#2:$P(^(0),U),'$D(^DIC(3,DUZ,0)):"POSTMASTER",1:$P(^DIC(3,DUZ,0),U))
  1. Q
  1. 0 U IO(0) S XMAPHOST("XMSUB")=XMSUB D ENTS^XMA20
  1. I X'["^" S XMSUB=$S($L(X):X,1:XMAPHOST("XMSUB")) U IO Q
  1. W !!,"Sorry, I cannot stop the creation of this message at this point.",!,"You must enter a valid SUBJECT.",!
  1. G 0