PXFSTRUCTCREATE

POSIX Subroutine: Creates an instance of the specified structure.

Module: USE IFPOSIX

Syntax

CALL PXFSTRUCTCREATE (structname, jhandle, ierror)

structname
(Input) Character. The name of the structure.

As for any character string, the name must be specified in single or double quotes; for example, the structure sigaction would be specified as 'sigaction'. (For more information on available structures, see below.)


jhandle
(Output) INTEGER(4). The handle of the newly-created structure.


ierror
(Output) INTEGER(4). The error status.

If successful, ierror is set to zero; otherwise, an error code.

If your application passes information to the system, you should call one of the PXF<TYPE>SET subroutines. If your application needs to get information from the structure, you should call one of the PXF<TYPE>GET subroutines.

The following table shows:

Structure Name Field Names Subroutines for Access
sigset1 Fields are hidden. PXFSIGEMPTYSET1, PXFSIGFILLSET1, PXFSIGADDSET1, or PXFSIGDELSET1
sigaction sa_handler
sa_mask
sa_flags
PXFINTGET/PXFINTSET or PXFINT8GET/PXFINT8SET
PXFINTGET/PXFINTSET or PXFINT8GET/PXFINT8SET
PXFINTGET/PXFINTSET or PXFINT8GET/PXFINT8SET
utsname sysname
nodename
release
version
machine
For all fields:
PXFSTRGET
tms tms_utime
tms_stime
tms_cutime
tms_cstime
For all fields:
PXFINTGET or PXFINT8GET
dirent d_name PXFSTRGET
stat st_mode
st_ino
st_dev
st_nlink
st_uid
st_gid
st_size
st_atime
st_mtime
st_ctime
For all fields:
PXFINTGET or PXFINT8GET
utimbuf actime
modtime
For all fields:
PXFINTGET or PXFINT8GET
flock1 l_type
l_whence
l_start
l_len
l_pid
For all fields:
PXFINTGET or PXFINT8GET
termios1 c_iflag
c_oflag
c_cflag
c_lflag
c_cc
PXFINTGET/PXFINTSET or PXFINT8GET/PXFINT8SET
PXFINTGET/PXFINTSET or PXFINT8GET/PXFINT8SET
PXFINTGET/PXFINTSET or PXFINT8GET/PXFINT8SET
PXFINTGET/PXFINTSET or PXFINT8GET/PXFINT8SET
PXFAINTGET/PXFAINTSET or PXFAINT8GET/PXFAINT8SET
group1 gr_name
gr_gid
gr_nmem
gr_mem
PXFSTRGET
PXFINTGET or PXFINT8GET
PXFINTGET or PXFINT8GET
PXFESTRGET
passwd1 pw_name
pw_uid
pw_gid
pw_dir
pw_shell
PXFSTRGET
PXFINTGET or PXFINT8GET
PXFINTGET or PXFINT8GET
PXFSTRGET
PXFSTRGET
1 L*X only

As for any character string, you must use single or double quotes when specifying a field name in a PXF<TYPE>GET or PXF<TYPE>SET subroutine. For example, field name sysname (in structure utsname) must be specified as 'sysname'.

Compatibility

CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB

See Also

PXFSTRUCTFREE, the example in PXFTIMES

Example

program test4
  use ifposix
  implicit none
  integer(jhandle_size) jhandle1,jhandle2
  integer(4) ierror,ilen1

  print *," Create a first instance for structure 'utsname' "
  call PXFSTRUCTCREATE("utsname",jhandle1,ierror)
  if(ierror.NE.0) STOP 'Error: cannot create structure for jhandle1'

  print *," Create a second instance for structure 'utsname' "
  call PXFSTRUCTCREATE("utsname",jhandle2,ierror)
  if(ierror.NE.0) then
     call PXFSTRUCTFREE(jhandle1,ierror)
     STOP 'test failed - cannot create structure for jhandle2'
  end if

  print *,"Fill the structure associated with jhandle1 with arbitrary data"
  call PXFSTRSET(jhandle1,"sysname","00000000000000",14,ierror)
  if(ierror.NE.0) call Error('Error: can't set component sysname for jhandle1')

  call PXFSTRSET(jhandle1,"Nodename","11111111111111",14,ierror)
  if(ierror.NE.0) call Error('Error: can't set component nodename for jhandle1')

  call PXFSTRSET(jhandle1,"RELEASE","22222222222222",14,ierror)
  if(ierror.NE.0) call Error('Error: can't set component release for jhandle1')

  call PXFSTRSET(jhandle1,"verSION","33333333333333",14,ierror)
  if(ierror.NE.0) call Error('Error: can't set component version for jhandle1')

  call PXFSTRSET(jhandle1,"machine","44444444444444",14,ierror)
  if(ierror.NE.0) call Error('Error: can't set component machine for jhandle1')

  print *,"Fill the structure associated with jhandle2 with arbitary data"
  call PXFSTRSET(jhandle2,"sysname","aaaaaaaaa",7,ierror)
  if(ierror.NE.0) call Error('Error: can't set component sysname for jhandle2')

  call PXFSTRSET(jhandle2,"Nodename","BBBBBBBBB  BBB",14,ierror)
  if(ierror.NE.0) call Error('Error: can't set component nodename for jhandle2')

  call PXFSTRSET(jhandle2,"RELEASE","cCCC cc-cccnc",12,ierror)
  if(ierror.NE.0) call Error('Error: can't set component release for jhandle2')

  call PXFSTRSET(jhandle2,"verSION","ddddd",1,ierror)
  if(ierror.NE.0) call Error('Error: can't set component version for jhandle2')

  call PXFSTRSET(jhandle2,"machine","eeeeeee",6,ierror)
  if(ierror.NE.0) call Error('Error: can't set component machine for jhandle2')

  print *,"Print contents of the structure associated with jhandle1"
  call PRINT_UTSNAME(jhandle1)

  print *,"Print contents of the structure associated with jhandle2"
  call PRINT_UTSNAME(jhandle2)

  print *,"Get operating system info into structure associated with jhandle1"
  call PXFUNAME(jhandle1,ierror)
  if(ierror.NE.0) call Error('Error: call to PXFUNAME has failed')

  print *,"Print contents of the structure associated with jhandle1"
  print*,"  returned from PXFUNAME"
  call PRINT_UTSNAME(jhandle1)

  print *,"Copy the contents of the structure associated with jhandle1"
  print *,"  into the structure associated with jhandle2"
  call PXFSTRUCTCOPY("utsname",jhandle1,jhandle2,ierror)
  if(ierror.NE.0) call Error('Error: can't copy jhandle1 contents into jhandle2')

  print *,"Print the contents of the structure associated with jhandle2."
  print *,"  It should be the same after copying."
  call PRINT_UTSNAME(jhandle2)

  print *,"Free memory for instance of structure associated with jhandle1"
  call PXFSTRUCTFREE(jhandle1,ierror)
  if(ierror.NE.0) STOP 'Error: can't free instance of structure for jhandle1'

  print *,"Free memory for instance of structure associated with jhandle2"
  call PXFSTRUCTFREE(jhandle2,ierror)
  if(ierror.NE.0) STOP 'Error: can't free instance of structure for jhandle2'

  print *,"Program terminated normally"
  call PXFEXIT(0)
end