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

HLCSDL.m

Go to the documentation of this file.
  1. HLCSDL ;ALB/MTC/SF/JC - INITIALIZE VARIABLES AND OPEN DEVICE X3.28 ;08/23/99 13:35 [ 04/02/2003 8:37 AM ]
  1. ;;1.6;HEALTH LEVEL SEVEN;**1004**;APR 1, 2003
  1. ;;1.6;HEALTH LEVEL SEVEN;**2,44,49,57**;Oct 13, 1995
  1. ;THIS ROUTINE CONTAINS AN IHS MODIFICATION BY IHS/TUC/DLR 03/19/97
  1. ;
  1. EN ;-- entry point for X3.28 protocol
  1. ;
  1. ;-- error trap (keepalive for disconnects)
  1. ;----- BEGIN IHS MODIFICATION
  1. ;IHS/TUC/DLR 03/19/97 LINE COMMENTED OUT, no DSM or $ETRAP at IHS
  1. ;I ^%ZOSF("OS")["DSM" N $ETRAP S $ET=""
  1. ;----- END IHS MODIFICATION
  1. S X="ERROR^HLCSDL",@^%ZOSF("TRAP")
  1. EN1 ;-- check device init
  1. ;-- if device error and still running, try again
  1. I $$INIT,$$RUN^HLCSDL2 D EXIT2 H 5 G EN1
  1. ;-- setup X3.28 parameters
  1. I $$XSETUP G ENQ
  1. ;-- file start stats
  1. D FILE
  1. ;-- start LLP
  1. D START^HLCSDL1
  1. ;-- file end stats
  1. D END
  1. ;-- exit
  1. ENQ D EXIT
  1. ;
  1. Q
  1. ;
  1. INIT() ;-- check for device, open
  1. ; This fucntion will return a 1 if it fails else 0
  1. ;
  1. N RESULT
  1. S RESULT=0
  1. I '$D(HLDP)&($G(%)'="") S HLDP=% ;LAUNCHED FROM VMS
  1. I '$D(HLDP) S RESULT=1 G INITQ
  1. D DT^DICRW
  1. I HLDP'>0 S HLDP=$O(^HLCS(870,"B",HLDP,""))
  1. I HLDP'>0 S RESULT=1 G INITQ
  1. ;HLDP IEN of LOGICAL LINK file #870
  1. S HLPARM=$G(^HLCS(870,HLDP,300))
  1. ;pointer to DEVICE file
  1. S HLDEVPTR=$P(HLPARM,U)
  1. ;-- check for valid pointer
  1. I HLDEVPTR'>0 S RESULT=1 G INITQ
  1. ;-- check for device
  1. S HLDEVICE=$P($G(^%ZIS(1,HLDEVPTR,0)),"^",1)
  1. I HLDEVICE="" S RESULT=1 G INITQ
  1. ;-- open device
  1. D MONITOR^HLCSDR2("OPEN",5,HLDP)
  1. K ZTIO S IOP=HLDEVICE D ^%ZIS I POP D MONITOR^HLCSDR2("OPENFAIL",5,HLDP) H 3 S RESULT=1 G INITQ
  1. ;-- set up environment
  1. S X=255 U IO X ^%ZOSF("EOFF"),^%ZOSF("RM"),^%ZOSF("TRMON")
  1. ;
  1. INITQ Q RESULT
  1. ;
  1. XSETUP() ;-- This function will set up all parameters required by the X3.28
  1. ; protocol.
  1. ; This function will return a 1 if it fails, else 0
  1. ;
  1. N RESULT
  1. S RESULT=0
  1. ;-- initialize and set defaults
  1. ;-- max message size
  1. S HLMMS=$P(HLPARM,U,2) S:'HLMMS HLMMS=99999
  1. ;-- block size
  1. S HLDBLOCK=$P(HLPARM,U,3) S:'HLDBLOCK HLDBLOCK=245
  1. ;-- timer a
  1. S HLTIMA=$P(HLPARM,U,4) S:'HLTIMA HLTIMA=6
  1. ;-- timer b
  1. S HLTIMB=$P(HLPARM,U,5) S:'HLTIMB HLTIMB=3
  1. ;-- timer d
  1. S HLTIMD=$P(HLPARM,U,6) S:'HLTIMD HLTIMD=30
  1. ;-- timer e
  1. S HLTIME=$P(HLPARM,U,7) S:'HLTIME HLTIME=180
  1. N I,J,K F I=1:1 S J=$T(CTRLS+I) Q:J["END" D
  1. .S K=$P(J,";",3),@K=$P(J,";",4)
  1. .S HLCTRL(@K)=$P(J,";",5)
  1. I $G(HLTRACE) K ^TMP("HLLOG",$J) S HLLOG=0
  1. ;
  1. XSETQ Q RESULT
  1. ;
  1. FILE ;-- file startup stats
  1. ;
  1. D NOW^%DTC
  1. L +^HLCS(870,HLDP,0):DTIME I '$T G FILE
  1. ;9=Time Started, 10=Time Stopped, 11=Task Number
  1. ;14=Shutdown LLP, 3=Device Type, 18=Gross Errors
  1. I '$D(ZTSK) S ZTSK=""
  1. 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
  1. L -^HLCS(870,HLDP,0)
  1. Q
  1. ;
  1. END ;-- file stats
  1. D NOW^%DTC
  1. D MONITOR^HLCSDR2("SHUTDOWN",5,HLDP)
  1. L +^HLCS(870,HLDP,0):DTIME I '$T G END
  1. ;10=Time Stopped,9=Time Started,11=Task Number
  1. S DIE="^HLCS(870,",DA=HLDP,DR="10////^S X=%;9////@;11////@" D ^DIE K DIE,DA,DR
  1. L -^HLCS(870,HLDP,0)
  1. Q
  1. ;
  1. EXIT2 ;
  1. D ^%ZISC X ^%ZOSF("EON")
  1. Q
  1. EXIT ;-- exit cleanup
  1. D ^%ZISC X ^%ZOSF("EON")
  1. 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
  1. K HLDNODE,HLDEVPTR,HLDEVICE,HLRETPRM,HLDAPP,X,HLDEND,HLDSTRT,HLDVER,HLDREAD,HLDWRITE,HLDP,HLTRACE,ZTSK,HLDBSIZE
  1. Q
  1. ;
  1. ERROR ;
  1. ;-- on disconnect errors, trap and try to reconnect, all others,
  1. ; trap and shut down gracefully
  1. I $$EC^%ZOSV["DSCON" D MONITOR^HLCSDR2("Disconnect",5,HLDP) H 3 G EN1
  1. D ^%ZTER
  1. D END G EXIT
  1. CTRLS ;X3.28 control settings
  1. ;;HLTERM;13;<CR>
  1. ;;HLSOH;1;<SOH>
  1. ;;HLSTX;2;<STX>
  1. ;;HLETB;23;<ETB>
  1. ;;HLETX;3;<ETX>
  1. ;;HLEOT;4;<EOT>
  1. ;;HLENQ;5;<ENQ>
  1. ;;HLRINT;60;<RINT>
  1. ;;HLDLE;16;<DLE>
  1. ;;HLNAK;21;<NAK>
  1. ;;HLACK0;48;<ACK0>
  1. ;;HLACK1;49;<ACK1>
  1. ;;HLACK2;50;<ACK2>
  1. ;;HLACK3;51;<ACK3>
  1. ;;HLACK4;52;<ACK4>
  1. ;;HLACK5;53;<ACK5>
  1. ;;HLACK6;54;<ACK6>
  1. ;;HLACK7;55;<ACK7>
  1. ;;END