1 | HLCSLNCH ;ALB/MTC/JC - START AND STOP THE LLP ;07/26/2007 17:10
|
---|
2 | ;;1.6;HEALTH LEVEL SEVEN;**6,19,43,49,57,75,84,109,122**;Oct 13, 1995;Build 14
|
---|
3 | ;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | ;This program is callable from a menu
|
---|
6 | ;It allows the user to Start and Stop the Lower Layer
|
---|
7 | ;Protocol in the Background or in the foreground
|
---|
8 | ;
|
---|
9 | ;Required or Optional INPUT PARAMETERS
|
---|
10 | ; None
|
---|
11 | ;
|
---|
12 | ;
|
---|
13 | ;Output variables
|
---|
14 | ; HLDP=IEN of Logical Link in file #870
|
---|
15 | ;(optional)HLTRACE=if SET it launches the LLP in the Foreground
|
---|
16 | ;(optional) ZTSK=if defined LLP was launched in the
|
---|
17 | ;background
|
---|
18 | ;
|
---|
19 | ;
|
---|
20 | START ; Start up the lower level protocol
|
---|
21 | N DIC,DIRUT,DTOUT,DUOUT,HLDP,HLDAPP,HLJ,HLQUIT,HLTRACE
|
---|
22 | N HLPARM0,HLPARM4,HLTYPTR,HLBGR,X,Y,ZTCPU,ZTSK,ZTRTN,ZTDESC
|
---|
23 | W !!,"This option is used to launch the lower level protocol for the"
|
---|
24 | W !,"appropriate device. Please select the node with which you want"
|
---|
25 | W !,"to communicate",!
|
---|
26 | ; patch HL*1.6*122
|
---|
27 | S POP=0
|
---|
28 | S DIC="^HLCS(870,",DIC(0)="QEAMZ" D ^DIC G:Y<0 STARTQ
|
---|
29 | S HLDP=+Y,HLDAPP=Y(0,0),HLTYPTR=+$P(Y(0),U,3),HLPARM0=Y(0)
|
---|
30 | ;-- check if parameter have been setup
|
---|
31 | ;-- check for LLP type
|
---|
32 | I 'HLTYPTR W !!,$C(7),"A Lower Layer Protocol must be selected before start-up can occur." G STARTQ
|
---|
33 | ;-- get TCP information
|
---|
34 | S HLPARM4=$G(^HLCS(870,HLDP,400))
|
---|
35 | ;-- get routine (background job for LLP)
|
---|
36 | S HLBGR=$G(^HLCS(869.1,HLTYPTR,100))
|
---|
37 | ;-- get environment check routine (HLQUIT should be defined in fails)
|
---|
38 | S HLENV=$G(^HLCS(869.1,HLTYPTR,200))
|
---|
39 | ;
|
---|
40 | I HLBGR="" W !!,$C(7),"No routine has been specified for this LLP." G STARTQ
|
---|
41 | ;
|
---|
42 | ;-- execute environment check routine if HLQUIT is defined then terminate
|
---|
43 | I HLENV'="" X HLENV G:$D(HLQUIT) STARTQ
|
---|
44 | ; patch HL*1.6*122 start
|
---|
45 | ; Multi-Servers: TCP service (GT.M, DSM, and Cache/VMS) is controlled
|
---|
46 | ; by the external service
|
---|
47 | I $P(HLPARM4,U,3)="M",$S(^%ZOSF("OS")'["OpenM":1,1:$$OS^%ZOSV["VMS") D G STARTQ
|
---|
48 | . W !,$C(7),"This LLP is a multi-threaded server. It is controlled by external service, i.e. TCPIP/UCX. You must use the external service to start this LLP."
|
---|
49 | . Q
|
---|
50 | ; patch HL*1.6*122 end
|
---|
51 | ;
|
---|
52 | I $P(HLPARM0,U,10) W !,$C(7),"The LLP was last started on ",$$DAT2^HLUTIL1($P(HLPARM0,U,10)),"." G STP1:$P(HLPARM0,U,5)'="Error"
|
---|
53 | I $P(HLPARM0,U,11) W !,"The LLP was last shutdown on ",$$DAT2^HLUTIL1($P(HLPARM0,U,11)),"."
|
---|
54 | ; patch HL*1.6*122 start
|
---|
55 | ; comment out-should be taken care of by the code 2 line above
|
---|
56 | ; I $P(HLPARM0,U,5)'="Error",'($P(HLPARM4,U,3)="C"&("N"[$P(HLPARM4,U,4))),$P(HLPARM0,U,10)]""&($P(HLPARM0,U,11)=""),$P(HLPARM0,U,12) W !,"The LLP appears to be online already !"
|
---|
57 | ; I $$TASK^HLUTIL1($P(HLPARM0,U,12)) D G STARTQ
|
---|
58 | ; . W !,$C(7),"NOTE: The lower level protocol for this application is already running."
|
---|
59 | N HLTEMP
|
---|
60 | S HLTEMP=0
|
---|
61 | I $P(HLPARM0,U,12) D G:HLTEMP STARTQ
|
---|
62 | . N ZTSK
|
---|
63 | . S ZTSK=$P(HLPARM0,U,12)
|
---|
64 | . D STAT^%ZTLOAD
|
---|
65 | . I "12"[ZTSK(1) D
|
---|
66 | .. W !,$C(7),"NOTE: The lower level protocol for this application is already running."
|
---|
67 | .. I '$P(^HLCS(870,HLDP,0),"^",10) S $P(^HLCS(870,HLDP,0),"^",10)=$$NOW^XLFDT
|
---|
68 | .. S HLTEMP=1
|
---|
69 | ; patch HL*1.6*122 end
|
---|
70 | I $P(HLPARM4,U,3)="C"&("N"[$P(HLPARM4,U,4)) D G STARTQ
|
---|
71 | .;4=status 9=Time Started, 10=Time Stopped, 11=Task Number
|
---|
72 | .;14=Shutdown LLP, 3=Device Type, 18=Gross Errors
|
---|
73 | .N HLJ,X
|
---|
74 | . ; patch HL*1.6*122-comment out
|
---|
75 | . ; I $P(HLPARM0,U,15)=0 W !,"This LLP is already enabled!" Q
|
---|
76 | .L +^HLCS(870,HLDP,0):2
|
---|
77 | .E W !,$C(7),"Unable to enable this LLP !" Q
|
---|
78 | .S X="HLJ(870,"""_HLDP_","")"
|
---|
79 | .S @X@(4)="Enabled",@X@(9)=$$NOW^XLFDT,@X@(14)=0
|
---|
80 | .D FILE^HLDIE("","HLJ","","START","HLCSLNCH") ;HL*1.6*109
|
---|
81 | .L -^HLCS(870,HLDP,0)
|
---|
82 | .W !,"This LLP has been enabled!"
|
---|
83 | .Q
|
---|
84 | I $P(HLPARM4,U,6),$D(^%ZIS(14.7,+$P(HLPARM4,U,6),0)) S ZTCPU=$P(^(0),U) W !,"This LLP will start on node ",ZTCPU," if it is run in the Background.",!
|
---|
85 | ;
|
---|
86 | ; patch HL*1.6*122 start, for tcp link
|
---|
87 | I HLTYPTR=4 D Q
|
---|
88 | . S Y="B"
|
---|
89 | . D STARTJOB
|
---|
90 | ; patch HL*1.6*122 end
|
---|
91 | ;
|
---|
92 | W ! S DIR(0)="SM^F:FOREGROUND;B:BACKGROUND;Q:QUIT"
|
---|
93 | S DIR("A")="Method for running the receiver"
|
---|
94 | S DIR("B")="B"
|
---|
95 | S DIR("?",1)="Enter F for Foreground (and trace)"
|
---|
96 | S DIR("?",2)=" B for Background (normal) or"
|
---|
97 | S DIR("?")=" Q to quit without starting the receiver"
|
---|
98 | D ^DIR K DIR
|
---|
99 | Q:(Y=U)!(Y="Q")
|
---|
100 | ;
|
---|
101 | STARTJOB ;
|
---|
102 | S HLX=$G(^HLCS(870,HLDP,0))
|
---|
103 | ;-- foreground
|
---|
104 | I Y="F" S HLTRACE=1 D G STARTQ
|
---|
105 | . S $P(^HLCS(870,HLDP,0),"^",10)=$$NOW^XLFDT
|
---|
106 | . D MON^HLCSTCP("Start")
|
---|
107 | . X HLBGR
|
---|
108 | ;-- background
|
---|
109 | I Y="B" D G STARTQ
|
---|
110 | . S ZTRTN=$P(HLBGR," ",2),HLTRACE="",ZTIO="",ZTDTH=$H
|
---|
111 | . S ZTDESC=HLDAPP_" Low Level Protocol",ZTSAVE("HLDP")=""
|
---|
112 | . D ^%ZTLOAD
|
---|
113 | . ; patch HL*1.6*122 start
|
---|
114 | . I $D(ZTSK) D
|
---|
115 | .. K HLTRACE
|
---|
116 | .. D MON^HLCSTCP("Tasked")
|
---|
117 | .. S $P(^HLCS(870,HLDP,0),"^",10)=$$NOW^XLFDT
|
---|
118 | . ; patch HL*1.6*122 end
|
---|
119 | . W !,$S($D(ZTSK):"Job was queued as "_ZTSK_".",1:"Unable to queue job.")
|
---|
120 | ;
|
---|
121 | Q
|
---|
122 | ;
|
---|
123 | STARTQ ;
|
---|
124 | I $G(POP) W !,?5,"-Unable to Open the Device !",!,!,?6,"Check that Port is Logged Out, and that the",!,?6,"Lower Level Protocol is not Already Running."
|
---|
125 | Q
|
---|
126 | ;
|
---|
127 | STOP ; Shut down a lower level protocol..
|
---|
128 | N DIC,DIRUT,DTOUT,DUOUT,HLDP,HLDAPP,HLJ,HLPARM0,HLPARM4,X,Y
|
---|
129 | W !!,"This option is used to shut down the lower level protocol for the"
|
---|
130 | W !,"appropriate device. Please select the link which you would"
|
---|
131 | W !,"like to shutdown.",!
|
---|
132 | S DIC="^HLCS(870,",DIC(0)="QEAMZ" D ^DIC K DIC Q:Y<0
|
---|
133 | S HLDP=+Y,HLDAPP=Y(0,0),HLPARM0=Y(0),HLPARM4=$G(^HLCS(870,HLDP,400))
|
---|
134 | ; patch HL*1.6*122
|
---|
135 | ; Multi-Servers: TCP service (GT.M, DSM, and Cache/VMS) is controlled
|
---|
136 | ; by the external service
|
---|
137 | I $P(HLPARM4,U,3)="M",$S(^%ZOSF("OS")'["OpenM":1,1:$$OS^%ZOSV["VMS") D Q
|
---|
138 | . W !,$C(7),"This LLP is a multi-threaded server. It is controlled by external service, i.e. TCPIP/UCX. You must use the external service to disable this LLP."
|
---|
139 | . Q
|
---|
140 | ;
|
---|
141 | I $P(HLPARM0,U,15) W !,$C(7),"The lower level protocol is already ",$P(HLPARM0,U,5),"." Q
|
---|
142 | I $P(HLPARM0,U,10) W !,$C(7),"The lower level protocol was started on ",$$DAT2^HLUTIL1($P(HLPARM0,U,10)),"."
|
---|
143 | STP1 ;
|
---|
144 | W ! S DIR(0)="Y",DIR("A")="Okay to shut down this job" D ^DIR K DIR
|
---|
145 | I 'Y!($D(DIRUT))!($D(DUOUT)) W !!,"The job will not be shut down." Q
|
---|
146 | S ;
|
---|
147 | F L +^HLCS(870,HLDP,0):2 Q:$T
|
---|
148 | ;4=status,10=Time Stopped,9=Time Started,11=Task Number,3=Device Type,14=shutdown
|
---|
149 | S X="HLJ(870,"""_HLDP_","")",@X@(4)="Halting",@X@(10)=$$NOW^XLFDT,(@X@(11),@X@(9))="@",@X@(14)=1
|
---|
150 | I $P(HLPARM4,U,3)="C"&("N"[$P(HLPARM4,U,4)),'$P(HLPARM0,U,12) S @X@(4)="Shutdown"
|
---|
151 | D FILE^HLDIE("","HLJ","","STOP","HLCSLNCH") ; HL*1.6*109
|
---|
152 | ; patch HL*1.6*122 start
|
---|
153 | ; I ^%ZOSF("OS")["OpenM",(($P(HLPARM4,U,3)="M"&($$OS^%ZOSV'["VMS"))!($P(HLPARM4,U,3)="S")) D
|
---|
154 | ; I ^%ZOSF("OS")'["DSM",(($P(HLPARM4,U,3)="M"&($$OS^%ZOSV'["VMS"))!($P(HLPARM4,U,3)="S")) D
|
---|
155 | I ($P(HLPARM4,U,3)="S")!(($P(HLPARM4,U,3)="M")&($S(^%ZOSF("OS")'["OpenM":0,1:$$OS^%ZOSV'["VMS"))) D
|
---|
156 | . ;pass task number to stop listener
|
---|
157 | . S:$P(HLPARM0,U,12) X=$$ASKSTOP^%ZTLOAD(+$P(HLPARM0,U,12))
|
---|
158 | . ; D CALL^%ZISTCP($P(HLPARM4,U),$P(HLPARM4,U,2),10)
|
---|
159 | . ; I POP D HOME^%ZIS U IO W !,"Unable to shutdown logical link!!!",$C(7),$C(7) Q
|
---|
160 | . ; U IO W "**STOP**"
|
---|
161 | . ; W !
|
---|
162 | . ; D CLOSE^%ZISTCP
|
---|
163 | . ; patch HL*1.6*122 end
|
---|
164 | L -^HLCS(870,HLDP,0)
|
---|
165 | W !,"The job for the "_HLDAPP_" Lower Level Protocol will be shut down."
|
---|
166 | Q
|
---|
167 | ;
|
---|
168 | STOPQ Q
|
---|