From: Hiroyuki_Tanaka4@excite.co.jp Sent: Wednesday, November 14, 2001 3:37 PM To: Info-VAX@Mvb.Saic.Com Subject: Re: Using INETACP_FUNC$C_GETHOSTBYNAME using fortran- examples? PROGRAM DRIVER IMPLICIT NONE INTEGER*4 UCX_GETHOSTBYNAME INTEGER*4 IP_ADDR !*** Reverse byte order *** INTEGER*4 STATUS CHARACTER*(80) HOSTNAME HOSTNAME='TEST' ! IP = 10.1.1.1 STATUS = UCX_GETHOSTBYNAME(IP_ADDR, HOSTNAME) WRITE (6,'(1X,Z8.8)') IP_ADDR ! 0101010A STOP END INTEGER*4 FUNCTION UCX_GETHOSTBYNAME(IP_ADDR, HOSTNAME) IMPLICIT NONE INCLUDE '($IODEF)' INCLUDE '($SSDEF)' INCLUDE '($SYSSRVNAM)' PARAMETER INET_DEVNAME = 'UCX$DEVICE:' INCLUDE 'SYS$LIBRARY:UCX$INETDEF.FOR' INTEGER*2 CHANNEL INTEGER*2 IHOST INTEGER*4 IP_ADDR INTEGER*4 STATUS INTEGER*4 RETLEN CHARACTER*(*) HOSTNAME STRUCTURE /IOSBLK/ INTEGER*2 STATUS INTEGER*2 SIZE INTEGER*4 RETADR END STRUCTURE STRUCTURE /ADDR_BUFF/ UNION MAP INTEGER*4 IP_ADDR INTEGER*4 %FILL(7) END MAP MAP CHARACTER*32 STRING END MAP END UNION END STRUCTURE STRUCTURE /ACPCOMMAND/ UNION MAP INTEGER*1 SUBFUNCTION INTEGER*1 CALLCODE INTEGER*2 %FILL END MAP MAP CHARACTER*4 STRING END MAP END UNION END STRUCTURE RECORD /IOSBLK/ IOSB RECORD /ACPCOMMAND/ COMM RECORD /ADDR_BUFF/ ADDR_BUFF ! IP_ADDR = 0 ! ! Setup the INETACP command to do a GETHOSTBYNAME and ! return an IP address as an integer longword ! COMM.SUBFUNCTION = INETACP_FUNC$C_GETHOSTBYNAME COMM.CALLCODE = INETACP$C_TRANS ! ! Assign a channel to the internet device. ! STATUS = SYS$ASSIGN(INET_DEVNAME,CHANNEL,,) ! IF (.NOT. STATUS) THEN UCX_GETHOSTBYNAME = STATUS RETURN END IF ! CALL STR$TRIM(HOSTNAME, HOSTNAME, IHOST) ! STATUS = SYS$QIOW(, - %VAL(CHANNEL), - %VAL(IO$_ACPCONTROL), - IOSB, - , - , - %DESCR(COMM.STRING), ! P1 = ACP command - %DESCR(HOSTNAME(1:IHOST)), ! P2 = host name to lookup - RETLEN, ! P3 = length of returned - %DESCR(ADDR_BUFF.STRING), ! P4 = return address - ,) ! ! Close the channel to the INET device ! CALL SYS$DASSGN(CHANNEL) ! ! Check the status and the IOSB.STATUS block ! IF (.NOT. STATUS) THEN UCX_GETHOSTBYNAME = STATUS RETURN END IF IF (.NOT. IOSB.STATUS) THEN UCX_GETHOSTBYNAME = IOSB.STATUS RETURN END IF ! IP_ADDR = ADDR_BUFF.IP_ADDR UCX_GETHOSTBYNAME = SS$_NORMAL ! RETURN END I think this is what you want. I just wish I could get it to work in C.