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

HLCSTCPA.m

Go to the documentation of this file.
  1. HLCSTCPA ;OI&T-OAKLAND/RJH TCP/IP FOR VMS/LINUX(UNIX) ;08/02/2011 16:31
  1. ;;1.6;HEALTH LEVEL SEVEN;**84,122,157**;Oct 13, 1995;Build 8
  1. ;Per VHA Directive 2004-038, this routine should not be modified.
  1. ;
  1. ; 1. port number is input from VMS COM file, or Linux/UNIX xinetd service file.
  1. ; example: (file: /etc/xinetd.d/fey_hlot)
  1. ; #default: on
  1. ; #description: VA HL7 Listener for DEVFEY - port 5000
  1. ; #
  1. ; service fey_hlst
  1. ; {
  1. ; type = UNLISTED
  1. ; disable = no
  1. ; flags = REUSE
  1. ; socket_type = stream
  1. ; protocol = tcp
  1. ; port = 5000
  1. ; wait = no
  1. ; user = feytcpip
  1. ; env = TZ=/usr/share/zoneinfo/US/Eastern
  1. ; env += port=5000
  1. ; server = /usr/local/cachesys/devfey/bin/csession
  1. ; server_args = devfey -ci -U DEVFEY PORT^HLCSTCPA
  1. ; instances = UNLIMITED
  1. ; per_source = UNLIMITED
  1. ; }
  1. ; #end
  1. ;
  1. ; 2. find the ien of #870(logical link file) for the multi-listener
  1. Q
  1. ;
  1. GTMPORT(%) ; From tcpip ZFOO for GT.M
  1. ; %: device^port number
  1. N HLPORT
  1. S HLPORT=$P($G(%),"^",2)
  1. I $G(^%ZOSF("OS"))'["GT.M" D ^%ZTER Q
  1. D IEN
  1. Q
  1. ;
  1. PORT ;
  1. ; HLPORT: port number of multi-listener
  1. ; input of DSM: % = device^port number of multi-listener
  1. ; input of Cache: port number of TCPIP
  1. ;
  1. N HLPORT
  1. S HLPORT=0
  1. ; patch HL*1.6*157 start, supports both OpenVMS/TCPIP and Linux/xinetd
  1. ; I ^%ZOSF("OS")["OpenM" D
  1. N HLOSYS
  1. S HLOSYS=$$OS^%ZOSV
  1. I HLOSYS["UNIX" D G IEN
  1. . ; Cache system call
  1. . S HLPORT=$System.Util.GetEnviron("port")
  1. . Q:HLPORT
  1. . I 'HLPORT S HLPORT=$System.Util.GetEnviron("PORT")
  1. . Q:HLPORT
  1. . S ^XTMP("HL7-LINUX: No port from O.S.",0)=$$FMADD^XLFDT($$NOW^XLFDT,30)_"^"_$$NOW^XLFDT
  1. ;
  1. I HLOSYS["VMS" D G IEN
  1. . S HLPORT=$ZF("GETSYM","PORT")
  1. ; patch HL*1.6*157 end
  1. ;
  1. I ^%ZOSF("OS")["DSM" D
  1. . S HLPORT=$P(%,"^",2)
  1. ;
  1. IEN ;
  1. ; HLIEN870: ien in #870 (logical link file)
  1. ; HLPRTS: port number in entry to be tested
  1. ;
  1. N HLIEN870
  1. I 'HLPORT D ^%ZTER Q
  1. S HLIEN870=0
  1. F S HLIEN870=$O(^HLCS(870,"E","M",HLIEN870)) Q:'HLIEN870 D Q:(HLPRTS=HLPORT)
  1. . S HLPRTS=$P(^HLCS(870,HLIEN870,400),"^",2)
  1. ;
  1. I 'HLIEN870 D ^%ZTER Q
  1. ;
  1. K HLPORT,HLPRTS
  1. ; patch 122
  1. S U="^"
  1. ;
  1. ; patch HL*1.6*157 start, supports both OpenVMS/TCPIP and Linux/xinetd
  1. ; I ^%ZOSF("OS")["OpenM" D Q
  1. I $G(HLOSYS)="" S HLOSYS=""
  1. I (HLOSYS["UNIX") D Q
  1. . D LINUX(HLIEN870)
  1. I (HLOSYS["VMS") D Q
  1. . D CACHEVMS(HLIEN870)
  1. ; patch HL*1.6*157 end
  1. ;
  1. ;for DSM
  1. I ^%ZOSF("OS")["DSM" D Q
  1. . S $P(%,"^",2)=HLIEN870 ;set % = device^ien of #870
  1. . K HLIEN870
  1. . D EN
  1. ;
  1. ;for GT.M
  1. I ^%ZOSF("OS")["GT.M" D Q
  1. . S HLDP=HLIEN870 ;set HLDP = ien of #870
  1. . K HLIEN870
  1. . D GTMUCX
  1. ;
  1. D ^%ZTER
  1. Q
  1. GTMUCX ; GT.M /VMS tcpip
  1. ;listener, % = device^port
  1. S U="^",IO=$P(%,U)
  1. ; S IO(0)=$P O IO(0) ;Setup null device
  1. ; GTM specific code
  1. S @("$ZINTERRUPT=""I $$JOBEXAM^ZU($ZPOSITION)""")
  1. X "O IO:(RECORDSIZE=512)"
  1. D LISTEN^HLCSTCP
  1. C IO
  1. Q
  1. ;
  1. ; $ x=f$trnlnm("sys$net") !This is our MBX device
  1. ; $!
  1. ; $! for GT.M
  1. ; $ assign 'f$trnlnm("SYS$NET")' SYS$NET
  1. ; $! Depending on how your command files are set up, you may need to
  1. ; $! run the GT.M profile file.
  1. ; $ @<user$:[gtmmgr]>gtmprofile.com
  1. ; $ forfoo="$" + f$parse("user$:[gtmmgr.r]ZFOO.exe")
  1. ; $ PORT=5000
  1. ; $ data="''x'^''PORT'"
  1. ; $ forfoo GTMPORT^HLCSTCPA("''data'")
  1. ;
  1. CACHEVMS(%) ;Cache'/VMS tcpip
  1. ;listener, % = HLDP
  1. I $G(%)="" D ^%ZTER Q
  1. ; patch 133
  1. S IO="SYS$NET",U="^",HLDP=%
  1. S IO(0)="_NLA0:" O IO(0) ;Setup null device
  1. ; **Cache'/VMS specific code**
  1. O IO::5 E D MON^HLCSTCP("Openfail") Q
  1. X "U IO:(::""-M"")" ;Packet mode like DSM
  1. D LISTEN^HLCSTCP
  1. C IO
  1. Q
  1. ;
  1. LINUX(%) ;
  1. ; patch HL*1.6*157, Cache/UNIX for Linux
  1. ; listener, % = HLDP
  1. I $G(%)="" D ^%ZTER Q
  1. S IO=$P,U="^",HLDP=%
  1. S IO(0)="/dev/null" O IO(0) ;Setup null device
  1. ;
  1. O IO::5 E D MON^HLCSTCP("Openfail") Q
  1. X "U IO:(::""-M"")" ;Packet mode like DSM
  1. D LISTEN^HLCSTCP
  1. C IO
  1. Q
  1. ;
  1. EN ; DSM/VMS tcpip
  1. ;listener, % = device^HLDP
  1. I $G(%)="" D ^%ZTER Q
  1. ; patch 122
  1. ; S IO="SYS$NET",U="^",HLDP=$P(%,U,2)
  1. S U="^",IO=$P(%,U),HLDP=$P(%,U,2)
  1. ; patch 133
  1. S IO(0)="_NLA0:" O IO(0) ;Setup null device
  1. ; **VMS specific code, need to share device**
  1. O IO:(TCPDEV):60 E D MON^HLCSTCP("Openfail") Q
  1. ; patch 122
  1. D LISTEN^HLCSTCP
  1. C IO
  1. Q