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

XMCTLK.m

Go to the documentation of this file.
  1. XMCTLK ;(WASH ISC)/CAP-TalkMan ;04/18/2002 07:29
  1. ;;8.0;MailMan;;Jun 28, 2002
  1. ; Entry points used by MailMan options (not covered by DBIA):
  1. ; TALK XMTALK
  1. I '$D(DUZ) W !,$C(7),"You don't have a DUZ." Q
  1. N XMABORT,XMDUZ,XMV
  1. D INIT
  1. S XMABORT=0
  1. D HELP(.XMABORT) Q:XMABORT
  1. GO K XMG0
  1. GO1 K %ZIS
  1. S %ZIS=""
  1. D ^%ZIS Q:POP
  1. I '$D(XMDUZ) Q:'$D(DUZ) D INIT
  1. I IO=IO(0) D ^%ZISC W !,"YOU MUST CHOOSE ANOTHER DEVICE" Q
  1. ENT ;
  1. N XMZ,XMSUB,TN,TL,TP,TK
  1. W @IOF,"<<<< You are now talking through device ",IO," >>>>"
  1. X ^%ZOSF("NBRK"),^("PRIINQ") S XMP=Y,X=Y+3,XME0(0)="S R=0,XME0=$$TSTAMP^XMXUTIL1" S:X>10 X=10
  1. X ^%ZOSF("PRIORITY")
  1. I $$NEWERR^%ZTER N $ETRAP,$ESTACK S $ETRAP=""
  1. S X="ABEND^XMCTLK",@^%ZOSF("TRAP")
  1. W !,"===== Enter <control>A to stop. =====",$C(7),!
  1. S XM="",D="",XMD0=0,A=""
  1. S XMB0=^%ZOSF("EOFF"),XMB0("RM")="S X=0 "_^("RM"),XMC0=^("EON"),XMF0=^("TYPE-AHEAD"),XMA=^("TRMRD") F I="TRMON","TRMOFF","NBRK" S XMG0(I)=^(I)
  1. S TN=$P($H,",",2),TL=TN,(TP,TK)=0 ; Times & Timed reads Port/Keyboard
  1. D T
  1. S D=""
  1. U IO
  1. G G
  1. ;
  1. ;MAIN LOOP / DIALOG OCCURS HERE
  1. R ;
  1. W:$D(XMC("TALKMODE")) *17
  1. U IO
  1. R A#150:$S($G(R)>20:1,1:0)
  1. W:$D(XMC("TALKMODE")) *19
  1. S D=D_A
  1. X XMA
  1. S TN=$P($H,",",2)
  1. S:(TN-TL>5) TP=1 ;ihs Time Now TP adjustment
  1. S R=$G(R)+1
  1. I Y>0 D T0 U IO(0) W A,*Y S TP=0,TL=TN X XME0(0) G R
  1. D T0
  1. U IO(0)
  1. W A
  1. I $L(A) S TP=0,TL=TN X XME0(0) D T0 G R
  1. S ;
  1. S Y=0
  1. U IO(0)
  1. R A:TK S TK=0 E U IO W A S:$L(A) TP=0,TL=TN G R:$L(A),Q:$$TSTAMP^XMXUTIL1-XME0>$S($D(DTIME):DTIME,1:300),R ;ihs timer adjustment
  1. X XMA
  1. G Q:Y=1
  1. S:Y=27 TK=1
  1. S TP=0
  1. I Y=13,$D(XMG0("EON")) S TP=0 U IO(0) W ! ;ihs timer adjustment
  1. U IO
  1. W A,*Y
  1. W:$D(XMG0("EON"))&(Y=13) !
  1. S:$L(A) TP=0
  1. X XME0(0)
  1. G R
  1. Q ;
  1. U IO(0)
  1. W $C(7)
  1. H 1
  1. W $C(7)
  1. X XMC0,XMF0,XMG0("TRMOFF"),XMG0("NBRK")
  1. K DIR
  1. S DIR("T")=9
  1. S DIR(0)="S^E:END TalkMan session;C:begin CAPTURE TalkMan dialog in message;N:do NOT end TalkMan session.;K:KERMIT Transfer Files"
  1. S DIR("B")="N"
  1. S DIR("??")="XMTALK"
  1. I '$D(XMDUZ) S $P(DIR(0),";",2,3)=$P(DIR(0),";",3) G D
  1. I $D(XMSUB) S $P(DIR(0),";",2)="S:STOP capture"
  1. D ;
  1. S XMA0=D
  1. D ^DIR S:$D(DTOUT) X="^" I '$D(X) W " ???? " G D
  1. S D=XMA0
  1. I "N"[X D T S A=" <Continue in TalkMan Mode >" D T0 W !,A,! G G
  1. ;
  1. ;Using Kermit !
  1. I "K"=X D G G
  1. . N X
  1. . I $G(^DIC(15,0,"VR"))'>7.1 W !," <No Kermit use yet. The correct Kernel tools version is not installed !>",! Q
  1. . D KERM^XTKERMIT,T
  1. . W !," <Continue in TalkMan Mode >",!
  1. . D U
  1. . S D="",Y=1
  1. I "S"=X K XMSUB W ! G G
  1. G DQ:"^E"[$E(X)
  1. I $D(XMZ) W ! S XMSUB=1 G G
  1. S XMD0=0
  1. K %I,%H
  1. S XMSUB=XMDUN_" DIALOG CAPTURE "_$$HTE^XLFDT($H,5)
  1. D GET^XMA2
  1. W !
  1. G G
  1. ;
  1. G ;RETURN TO TALKMAN MODE
  1. U IO
  1. X XMB0("RM"),XMB0,XMF0,XMG0("NBRK"),XMG0("TRMON")
  1. X:$D(XMG0("EON")) XMC0
  1. D T
  1. X XME0(0)
  1. G R
  1. ;
  1. ABEND ;Handle abnormal end
  1. D ^%ZISC
  1. U IO(0)
  1. W $C(7)
  1. H 1
  1. W $C(7)
  1. X XMC0,XMF0,XMG0("TRMOFF"),XMG0("NBRK")
  1. G DQ
  1. ;
  1. ;END TALKMAN SESSION
  1. DQ ;
  1. W $C(7),!!,"End of Talkman session."
  1. W !,"You are back at your starting place.",!
  1. H 1
  1. W $C(7)
  1. W !!
  1. U IO
  1. W *17
  1. X XMG0("TRMOFF")
  1. D ^%ZISC,HOME^%ZIS
  1. D N
  1. G QQ:'$D(XMZ),QQ:'XMZ
  1. I 'XMD0 D KILLMSG^XMXUTIL(XMZ) G QQ
  1. I $P(XMD0,U,2,999)'="" S XMSUB=1,Y=999,D=$P(XMD0,U,2,999) D T0
  1. S XMD0=+XMD0
  1. I XMD0 D NOW^%DTC D K %I,%H G QQ
  1. . S ^XMB(3.9,XMZ,2,0)="^3.92A^"_XMD0_U_XMD0_U_%
  1. . K XMY,^TMP("XMY",$J),^TMP("XMY0",$J)
  1. . S XMY($G(XMDUZ,DUZ))=""
  1. . D ENT1^XMD W !,"TalkMan dialog capture being delivered now."
  1. D KILLMSG^XMXUTIL(XMZ)
  1. QQ ;
  1. W !
  1. D CHK^XM
  1. W !
  1. S X=XMP
  1. X ^%ZOSF("PRIORITY")
  1. K %,X1,X2,XMA0,XMB0,XMC0,XMD0,XME0,XMF0,XMG0,XMA,XMP,XMSUB,DIR
  1. S XMZ=0
  1. Q
  1. N ;
  1. U IO(0)
  1. X XMC0
  1. I $D(DUZ) S X=$G(^VA(200,DUZ,200)) Q:X#10'=1 Q:$P(^(200),U,9)="Y"
  1. S A="NO-TYPE-AHEAD" Q:'$D(^%ZOSF(A)) X ^(A)
  1. Q
  1. T ;
  1. U IO(0)
  1. S X=0
  1. X ^%ZOSF("RM"),XMF0,XMB0,XMG0("TRMON"),XMG0("NBRK")
  1. I $D(XMG0("EON")) X XMC0
  1. Q
  1. T0 ;
  1. I '$D(XMSUB)!(D=""&(Y'=9)) S D="" Q
  1. I D'?.ANP F I=1:1 I $E(D,I)?1C S D=$E(D,1,I-1)_$S($A(D,I)=9:"",1:" ")_$E(D,I+1,999) Q:$E(D,I,999)?.ANP S I=I-1
  1. T1 ;
  1. I Y'=13&($L(D)<81)!(Y>0&(D="")) S XMD0=+XMD0_U_D Q:Y'=9 S D=$E(D_" ",1,$L(D)\9+1*9),$P(XMD0,U,2)=D Q
  1. I D="" S D=" "
  1. S XMD0=XMD0+1,^XMB(3.9,XMZ,2,XMD0,0)=$E(D,1,80),D=$E(D,81,999)
  1. G T1
  1. U ;
  1. S XME0=$$TSTAMP^XMXUTIL1
  1. Q
  1. ;
  1. ;GET INITIAL VALUES
  1. ECHO ;ENTRY TO ECHO
  1. K XMG0
  1. S XMG0("EON")=1
  1. G GO1
  1. INIT ;
  1. D INIT^XMVVITAE
  1. K XMA0,XMB0,XMC0,XMD0,XME0,XMF0
  1. G H^XUS:'$D(XMDUZ),H^XUS:'$D(XMDUN) K XMZ
  1. Q
  1. HELP(XMABORT) ;
  1. N DIR,X,Y
  1. S DIR(0)="Y"
  1. S DIR("A")="Do you want help"
  1. S DIR("B")="NO"
  1. D ^DIR I $D(DIRUT) S XMABORT=1 Q
  1. Q:'Y
  1. S XQH=$S($G(DUZ(0))="@":"XMTALK",$D(^XUSEC("XMMGR",DUZ)):"XMTALK",1:"XMTALK-USER")
  1. D EN^XQH
  1. Q
  1. TALK ; Talk mode entry
  1. I '$D(DUZ) W !,$C(7),"You don't have a DUZ." Q
  1. N XMC,XMDUZ,XMV,XMOKTYPE,XMINST,XMSITE,XMIO,XMB,XMABORT
  1. N XMLER,XMLINE,XMCNT,DIC,XMA0,XMB0,XMC0,XMD0,XME0,XMF0,XMG0
  1. D INIT^XMVVITAE
  1. S XMC("TALKMODE")=1,XMABORT=0
  1. D HELP(.XMABORT) Q:XMABORT
  1. ;Ask Domain / get defaults
  1. ;S (XMOKTYPE("SMTP"),XMOKTYPE("TELNET"))=""
  1. S XMOKTYPE("TELNET")=""
  1. D ASK^XMCXU(.XMINST,.XMSITE,.XMB,.XMABORT,"I $P(^(0),U,2)[""T""",.XMOKTYPE) Q:XMABORT
  1. S XMIO=$P(XMB("SCR REC"),U,5)
  1. S XM=""
  1. W !,"Attempting to connect...."
  1. S XMDUZO=XMDUZ
  1. D ENT^XMC1
  1. S XMDUZ=XMDUZO K XMDUZO
  1. I ER D Q
  1. . D ^%ZISC
  1. . W !,$C(7),"Could not connect to ",XMSITE,"."
  1. . W !,"You are back at ",^XMB("NETNAME"),"."
  1. . D KILL^XMC
  1. U IO(0)
  1. D ENT
  1. D KILL^XMC
  1. Q