source: FOIAVistA/trunk/r/HEALTH_LEVEL_SEVEN-HL/HLCSDL.m@ 1397

Last change on this file since 1397 was 628, checked in by George Lilly, 15 years ago

initial load of FOIAVistA 6/30/08 version

File size: 3.6 KB
Line 
1HLCSDL ;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 ;
4EN ;-- 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")
9EN1 ;-- 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
21ENQ D EXIT
22 ;
23 Q
24 ;
25INIT() ;-- 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 ;
50INITQ Q RESULT
51 ;
52XSETUP() ;-- 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 ;
76XSETQ Q RESULT
77 ;
78FILE ;-- 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 ;
89END ;-- 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 ;
98EXIT2 ;
99 D ^%ZISC X ^%ZOSF("EON")
100 Q
101EXIT ;-- 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 ;
107ERROR ;
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
113CTRLS ;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
Note: See TracBrowser for help on using the repository browser.