HLCSDR ;ALB/RJS - INITIALIZE VARIABLES AND OPEN DEVICE FOR RECEIVER ;07/20/99 14:00
;;1.6;HEALTH LEVEL SEVEN;**2,14,49,57**;Oct 13, 1995
;
INIT ;
S HLZER=0
I '$D(HLDP)&($G(%)'="") S HLDP=% ;LAUNCHED FROM VMS
I '$D(HLDP) Q
D DT^DICRW
I HLDP'>0 S HLDP=$O(^HLCS(870,"B",HLDP,""))
I HLDP'>0 G EXIT
;HLDP IEN of LOGICAL LINK file #870
S HLDNODE=$G(^HLCS(870,HLDP,0))
S HLPARM=$G(^HLCS(870,HLDP,200))
;pointer to DEVICE file
S HLDEVPTR=$P(HLPARM,U)
G EXIT:HLDEVPTR'>0
S HLDEVICE=$P($G(^%ZIS(1,HLDEVPTR,0)),"^",1)
G EXIT:HLDEVICE=""
D FILE
INIT1 ;
G END:'HLZER
S HLZER=0
D OPEN G INIT1
FILE ;
D NOW^%DTC
L +^HLCS(870,HLDP,0):DTIME I '$T G FILE
;9=Time Started, 10=Time Stopped, 11=Task Number
;14=Shutdown LLP, 3=Shutdown LLP, 18=Gross Errors
I '$D(ZTSK) S ZTSK=""
S DIE="^HLCS(870,",DA=HLDP,DR="9////^S X=%;10////@;11////^S X=ZTSK;14////0;3////SH;18////@" D ^DIE K DIE,DA,DR
L -^HLCS(870,HLDP,0)
OPEN ;
I $$NEWERR^%ZTER N $ETRAP,$ESTACK S $ETRAP="D ERROR^HLCSDR"
E S X="ERROR^HLCSDR",@^%ZOSF("TRAP")
OPEN1 I $P($G(^HLCS(870,HLDP,0)),U,15) G END
S HLST="OPEN" D STATUS(HLST,HLDP)
S IOP=HLDEVICE,%ZIS=0 D ^%ZIS
I POP S HLST="OPENFAIL" D STATUS(HLST,HLDP) H 5 G OPEN1
INIT2 ;
;Re-transmission attempts, Node, Hang Time, Start character,
;End character, LLP Version Number
S HLDAPP=$P(HLDNODE,U,1)
S HLRETPRM=$P(HLPARM,U,2),HLDBSIZE=$P(HLPARM,U,3),HLDREAD=$P(HLPARM,U,4),HLDWRITE=$P(HLPARM,U,5),HLDSTRT=$P(HLPARM,U,6),HLDEND=$P(HLPARM,U,7),HLDVER=$P(HLPARM,U,8)
;Defaults
I HLRETPRM="" S HLRETPRM=5
I HLDREAD="" S HLDREAD=10
I HLDWRITE="" S HLDWRITE=2
I HLDSTRT="" S HLDSTRT=11
I HLDEND="" S HLDEND=28
I HLDVER="" S HLDVER=21
I HLDBSIZE'>1 S HLDBSIZE=245
;Set up Device Params
S X=255 U IO X ^%ZOSF("EOFF"),^%ZOSF("RM"),^%ZOSF("TRMON")
START ;
D START^HLCSDR1(HLDP,HLRETPRM,HLDREAD,HLDWRITE,HLDSTRT,HLDEND,HLDVER,HLDBSIZE)
END ;
I '$G(HLDP) G EXIT
D NOW^%DTC
L +^HLCS(870,HLDP,0):DTIME I '$T G END
;10=Time Stopped,9=Time Started,11=Task Number
S DIE="^HLCS(870,",DA=HLDP,DR="10////^S X=%;9////@;11////@" D ^DIE K DIE,DA,DR
L -^HLCS(870,HLDP,0)
EXIT ;
D ^%ZISC
K HLDNODE,HLDEVPTR,HLDEVICE,HLRETPRM,HLDAPP,X,HLDEND,HLDSTRT,HLDVER,HLDREAD,HLDWRITE,HLTRACE,ZTSK,HLDBSIZE,HLPARM
Q
STATUS(HLST,HLDP) ;Update field 4
;HLST=Current Status
;HLDP=IEN of Logical Link
S DIE="^HLCS(870,",DA=HLDP,DR="4///^S X=HLST" D ^DIE K DIE,DA,DR
Q
ERROR ;Trap disconnect & read errors
I $$EC^%ZOSV["DSCON"!($$EC^%ZOSV["data set hang-up") S HLST="DSCONECT" D STATUS(HLST,HLDP) H 3 S HLZER=1 I 1
E D ^%ZTER
S IO("C")=1 D ^%ZISC
G UNWIND^%ZTER
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HHLCSDR 2656 printed Nov 22, 2024@17:06:32 Page 2
HLCSDR ;ALB/RJS - INITIALIZE VARIABLES AND OPEN DEVICE FOR RECEIVER ;07/20/99 14:00
+1 ;;1.6;HEALTH LEVEL SEVEN;**2,14,49,57**;Oct 13, 1995
+2 ;
INIT ;
+1 SET HLZER=0
+2 ;LAUNCHED FROM VMS
IF '$DATA(HLDP)&($GET(%)'="")
SET HLDP=%
+3 IF '$DATA(HLDP)
QUIT
+4 DO DT^DICRW
+5 IF HLDP'>0
SET HLDP=$ORDER(^HLCS(870,"B",HLDP,""))
+6 IF HLDP'>0
GOTO EXIT
+7 ;HLDP IEN of LOGICAL LINK file #870
+8 SET HLDNODE=$GET(^HLCS(870,HLDP,0))
+9 SET HLPARM=$GET(^HLCS(870,HLDP,200))
+10 ;pointer to DEVICE file
+11 SET HLDEVPTR=$PIECE(HLPARM,U)
+12 if HLDEVPTR'>0
GOTO EXIT
+13 SET HLDEVICE=$PIECE($GET(^%ZIS(1,HLDEVPTR,0)),"^",1)
+14 if HLDEVICE=""
GOTO EXIT
+15 DO FILE
INIT1 ;
+1 if 'HLZER
GOTO END
+2 SET HLZER=0
+3 DO OPEN
GOTO INIT1
FILE ;
+1 DO NOW^%DTC
+2 LOCK +^HLCS(870,HLDP,0):DTIME
IF '$TEST
GOTO FILE
+3 ;9=Time Started, 10=Time Stopped, 11=Task Number
+4 ;14=Shutdown LLP, 3=Shutdown LLP, 18=Gross Errors
+5 IF '$DATA(ZTSK)
SET ZTSK=""
+6 SET DIE="^HLCS(870,"
SET DA=HLDP
SET DR="9////^S X=%;10////@;11////^S X=ZTSK;14////0;3////SH;18////@"
DO ^DIE
KILL DIE,DA,DR
+7 LOCK -^HLCS(870,HLDP,0)
OPEN ;
+1 IF $$NEWERR^%ZTER
NEW $ETRAP,$ESTACK
SET $ETRAP="D ERROR^HLCSDR"
+2 IF '$TEST
SET X="ERROR^HLCSDR"
SET @^%ZOSF("TRAP")
OPEN1 IF $PIECE($GET(^HLCS(870,HLDP,0)),U,15)
GOTO END
+1 SET HLST="OPEN"
DO STATUS(HLST,HLDP)
+2 SET IOP=HLDEVICE
SET %ZIS=0
DO ^%ZIS
+3 IF POP
SET HLST="OPENFAIL"
DO STATUS(HLST,HLDP)
HANG 5
GOTO OPEN1
INIT2 ;
+1 ;Re-transmission attempts, Node, Hang Time, Start character,
+2 ;End character, LLP Version Number
+3 SET HLDAPP=$PIECE(HLDNODE,U,1)
+4 SET HLRETPRM=$PIECE(HLPARM,U,2)
SET HLDBSIZE=$PIECE(HLPARM,U,3)
SET HLDREAD=$PIECE(HLPARM,U,4)
SET HLDWRITE=$PIECE(HLPARM,U,5)
SET HLDSTRT=$PIECE(HLPARM,U,6)
SET HLDEND=$PIECE(HLPARM,U,7)
SET HLDVER=$PIECE(HLPARM,U,8)
+5 ;Defaults
+6 IF HLRETPRM=""
SET HLRETPRM=5
+7 IF HLDREAD=""
SET HLDREAD=10
+8 IF HLDWRITE=""
SET HLDWRITE=2
+9 IF HLDSTRT=""
SET HLDSTRT=11
+10 IF HLDEND=""
SET HLDEND=28
+11 IF HLDVER=""
SET HLDVER=21
+12 IF HLDBSIZE'>1
SET HLDBSIZE=245
+13 ;Set up Device Params
+14 SET X=255
USE IO
XECUTE ^%ZOSF("EOFF")
XECUTE ^%ZOSF("RM")
XECUTE ^%ZOSF("TRMON")
START ;
+1 DO START^HLCSDR1(HLDP,HLRETPRM,HLDREAD,HLDWRITE,HLDSTRT,HLDEND,HLDVER,HLDBSIZE)
END ;
+1 IF '$GET(HLDP)
GOTO EXIT
+2 DO NOW^%DTC
+3 LOCK +^HLCS(870,HLDP,0):DTIME
IF '$TEST
GOTO END
+4 ;10=Time Stopped,9=Time Started,11=Task Number
+5 SET DIE="^HLCS(870,"
SET DA=HLDP
SET DR="10////^S X=%;9////@;11////@"
DO ^DIE
KILL DIE,DA,DR
+6 LOCK -^HLCS(870,HLDP,0)
EXIT ;
+1 DO ^%ZISC
+2 KILL HLDNODE,HLDEVPTR,HLDEVICE,HLRETPRM,HLDAPP,X,HLDEND,HLDSTRT,HLDVER,HLDREAD,HLDWRITE,HLTRACE,ZTSK,HLDBSIZE,HLPARM
+3 QUIT
STATUS(HLST,HLDP) ;Update field 4
+1 ;HLST=Current Status
+2 ;HLDP=IEN of Logical Link
+3 SET DIE="^HLCS(870,"
SET DA=HLDP
SET DR="4///^S X=HLST"
DO ^DIE
KILL DIE,DA,DR
+4 QUIT
ERROR ;Trap disconnect & read errors
+1 IF $$EC^%ZOSV["DSCON"!($$EC^%ZOSV["data set hang-up")
SET HLST="DSCONECT"
DO STATUS(HLST,HLDP)
HANG 3
SET HLZER=1
IF 1
+2 IF '$TEST
DO ^%ZTER
+3 SET IO("C")=1
DO ^%ZISC
+4 GOTO UNWIND^%ZTER
+5 QUIT