| 1 | HLCSDL ;ALB/MTC/SF/JC - INITIALIZE VARIABLES AND OPEN DEVICE X3.28 ;08/23/99 13:35
|
---|
| 2 | ;;1.6;HEALTH LEVEL SEVEN;**2,44,49,57**;Oct 13, 1995
|
---|
| 3 | ;
|
---|
| 4 | EN ;-- entry point for X3.28 protocol
|
---|
| 5 | ;
|
---|
| 6 | ;-- error trap (keepalive for disconnects)
|
---|
| 7 | I ^%ZOSF("OS")["DSM" N $ETRAP S $ET=""
|
---|
| 8 | S X="ERROR^HLCSDL",@^%ZOSF("TRAP")
|
---|
| 9 | EN1 ;-- check device init
|
---|
| 10 | ;-- if device error and still running, try again
|
---|
| 11 | I $$INIT,$$RUN^HLCSDL2 D EXIT2 H 5 G EN1
|
---|
| 12 | ;-- setup X3.28 parameters
|
---|
| 13 | I $$XSETUP G ENQ
|
---|
| 14 | ;-- file start stats
|
---|
| 15 | D FILE
|
---|
| 16 | ;-- start LLP
|
---|
| 17 | D START^HLCSDL1
|
---|
| 18 | ;-- file end stats
|
---|
| 19 | D END
|
---|
| 20 | ;-- exit
|
---|
| 21 | ENQ D EXIT
|
---|
| 22 | ;
|
---|
| 23 | Q
|
---|
| 24 | ;
|
---|
| 25 | INIT() ;-- check for device, open
|
---|
| 26 | ; This fucntion will return a 1 if it fails else 0
|
---|
| 27 | ;
|
---|
| 28 | N RESULT
|
---|
| 29 | S RESULT=0
|
---|
| 30 | I '$D(HLDP)&($G(%)'="") S HLDP=% ;LAUNCHED FROM VMS
|
---|
| 31 | I '$D(HLDP) S RESULT=1 G INITQ
|
---|
| 32 | D DT^DICRW
|
---|
| 33 | I HLDP'>0 S HLDP=$O(^HLCS(870,"B",HLDP,""))
|
---|
| 34 | I HLDP'>0 S RESULT=1 G INITQ
|
---|
| 35 | ;HLDP IEN of LOGICAL LINK file #870
|
---|
| 36 | S HLPARM=$G(^HLCS(870,HLDP,300))
|
---|
| 37 | ;pointer to DEVICE file
|
---|
| 38 | S HLDEVPTR=$P(HLPARM,U)
|
---|
| 39 | ;-- check for valid pointer
|
---|
| 40 | I HLDEVPTR'>0 S RESULT=1 G INITQ
|
---|
| 41 | ;-- check for device
|
---|
| 42 | S HLDEVICE=$P($G(^%ZIS(1,HLDEVPTR,0)),"^",1)
|
---|
| 43 | I HLDEVICE="" S RESULT=1 G INITQ
|
---|
| 44 | ;-- open device
|
---|
| 45 | D MONITOR^HLCSDR2("OPEN",5,HLDP)
|
---|
| 46 | K ZTIO S IOP=HLDEVICE D ^%ZIS I POP D MONITOR^HLCSDR2("OPENFAIL",5,HLDP) H 3 S RESULT=1 G INITQ
|
---|
| 47 | ;-- set up environment
|
---|
| 48 | S X=255 U IO X ^%ZOSF("EOFF"),^%ZOSF("RM"),^%ZOSF("TRMON")
|
---|
| 49 | ;
|
---|
| 50 | INITQ Q RESULT
|
---|
| 51 | ;
|
---|
| 52 | XSETUP() ;-- This function will set up all parameters required by the X3.28
|
---|
| 53 | ; protocol.
|
---|
| 54 | ; This function will return a 1 if it fails, else 0
|
---|
| 55 | ;
|
---|
| 56 | N RESULT
|
---|
| 57 | S RESULT=0
|
---|
| 58 | ;-- initialize and set defaults
|
---|
| 59 | ;-- max message size
|
---|
| 60 | S HLMMS=$P(HLPARM,U,2) S:'HLMMS HLMMS=99999
|
---|
| 61 | ;-- block size
|
---|
| 62 | S HLDBLOCK=$P(HLPARM,U,3) S:'HLDBLOCK HLDBLOCK=245
|
---|
| 63 | ;-- timer a
|
---|
| 64 | S HLTIMA=$P(HLPARM,U,4) S:'HLTIMA HLTIMA=6
|
---|
| 65 | ;-- timer b
|
---|
| 66 | S HLTIMB=$P(HLPARM,U,5) S:'HLTIMB HLTIMB=3
|
---|
| 67 | ;-- timer d
|
---|
| 68 | S HLTIMD=$P(HLPARM,U,6) S:'HLTIMD HLTIMD=30
|
---|
| 69 | ;-- timer e
|
---|
| 70 | S HLTIME=$P(HLPARM,U,7) S:'HLTIME HLTIME=180
|
---|
| 71 | N I,J,K F I=1:1 S J=$T(CTRLS+I) Q:J["END" D
|
---|
| 72 | .S K=$P(J,";",3),@K=$P(J,";",4)
|
---|
| 73 | .S HLCTRL(@K)=$P(J,";",5)
|
---|
| 74 | I $G(HLTRACE) K ^TMP("HLLOG",$J) S HLLOG=0
|
---|
| 75 | ;
|
---|
| 76 | XSETQ Q RESULT
|
---|
| 77 | ;
|
---|
| 78 | FILE ;-- file startup stats
|
---|
| 79 | ;
|
---|
| 80 | D NOW^%DTC
|
---|
| 81 | L +^HLCS(870,HLDP,0):DTIME I '$T G FILE
|
---|
| 82 | ;9=Time Started, 10=Time Stopped, 11=Task Number
|
---|
| 83 | ;14=Shutdown LLP, 3=Device Type, 18=Gross Errors
|
---|
| 84 | I '$D(ZTSK) S ZTSK=""
|
---|
| 85 | S DIE="^HLCS(870,",DA=HLDP,DR="9////^S X=%;10////@;11////^S X=ZTSK;14////0;3////SX;18////@" D ^DIE K DIE,DA,DR
|
---|
| 86 | L -^HLCS(870,HLDP,0)
|
---|
| 87 | Q
|
---|
| 88 | ;
|
---|
| 89 | END ;-- file stats
|
---|
| 90 | D NOW^%DTC
|
---|
| 91 | D MONITOR^HLCSDR2("SHUTDOWN",5,HLDP)
|
---|
| 92 | L +^HLCS(870,HLDP,0):DTIME I '$T G END
|
---|
| 93 | ;10=Time Stopped,9=Time Started,11=Task Number
|
---|
| 94 | S DIE="^HLCS(870,",DA=HLDP,DR="10////^S X=%;9////@;11////@" D ^DIE K DIE,DA,DR
|
---|
| 95 | L -^HLCS(870,HLDP,0)
|
---|
| 96 | Q
|
---|
| 97 | ;
|
---|
| 98 | EXIT2 ;
|
---|
| 99 | D ^%ZISC X ^%ZOSF("EON")
|
---|
| 100 | Q
|
---|
| 101 | EXIT ;-- exit cleanup
|
---|
| 102 | D ^%ZISC X ^%ZOSF("EON")
|
---|
| 103 | K HLMMS,HLBLOCK,HLTIMA,HLTIMB,HLTIMD,HLTIME,HLTERM,HLSOH,HLSTX,HLETB,HLETX,HLEOT,HLENQ,HLRINT,HLDLE,HLNAK,HLACK0,HLACK1,HLACK2,HLACK3,HLACK4,HLACK5,HLACK6,HLACK7
|
---|
| 104 | K HLDNODE,HLDEVPTR,HLDEVICE,HLRETPRM,HLDAPP,X,HLDEND,HLDSTRT,HLDVER,HLDREAD,HLDWRITE,HLDP,HLTRACE,ZTSK,HLDBSIZE
|
---|
| 105 | Q
|
---|
| 106 | ;
|
---|
| 107 | ERROR ;
|
---|
| 108 | ;-- on disconnect errors, trap and try to reconnect, all others,
|
---|
| 109 | ; trap and shut down gracefully
|
---|
| 110 | I $$EC^%ZOSV["DSCON" D MONITOR^HLCSDR2("Disconnect",5,HLDP) H 3 G EN1
|
---|
| 111 | D ^%ZTER
|
---|
| 112 | D END G EXIT
|
---|
| 113 | CTRLS ;X3.28 control settings
|
---|
| 114 | ;;HLTERM;13;<CR>
|
---|
| 115 | ;;HLSOH;1;<SOH>
|
---|
| 116 | ;;HLSTX;2;<STX>
|
---|
| 117 | ;;HLETB;23;<ETB>
|
---|
| 118 | ;;HLETX;3;<ETX>
|
---|
| 119 | ;;HLEOT;4;<EOT>
|
---|
| 120 | ;;HLENQ;5;<ENQ>
|
---|
| 121 | ;;HLRINT;60;<RINT>
|
---|
| 122 | ;;HLDLE;16;<DLE>
|
---|
| 123 | ;;HLNAK;21;<NAK>
|
---|
| 124 | ;;HLACK0;48;<ACK0>
|
---|
| 125 | ;;HLACK1;49;<ACK1>
|
---|
| 126 | ;;HLACK2;50;<ACK2>
|
---|
| 127 | ;;HLACK3;51;<ACK3>
|
---|
| 128 | ;;HLACK4;52;<ACK4>
|
---|
| 129 | ;;HLACK5;53;<ACK5>
|
---|
| 130 | ;;HLACK6;54;<ACK6>
|
---|
| 131 | ;;HLACK7;55;<ACK7>
|
---|
| 132 | ;;END
|
---|