OpenVMS Source Code Demos

VMS_STRUCTURES.INC

!
!23456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
!        1         2         3         4         5         6         7         8         9
!=========================================================================================
! Title  : VMS_Structures.inc
! Author : Neil S. Rieck
! History:
! 100 NSR 000208 1. original work (from "[.inc]VMS_externals.inc")
!     NSR 001222 5. made the declaration of ItemRec identical to SysItems
!=========================================================================================
!
!	/// Item Record for system calls ///
!
%if %declared (%ITEMREC) = 0 %then
	record ItemRec								! structure of item record
	    variant
		case
		    group one
			word	BuffLen
			word	ItemCode
			long	BuffAddr
			long	RtnLenAdr
		    end group one
		case
		    group two
			long	List_Terminator
			long	Junk1
			long	Junk2
		    end group two
	    end variant
	end record ItemRec
%let %ITEMREC = 1
%end %if
!
!	/// Item Record for system calls ///
!
%if %declared (%SYSITEMS) = 0 %then
	record SysItems								! structure of item record
	    variant
		case
		    group one
			word	BuffLen
			word	ItemCode
			long	BuffAddr
			long	RtnLenAdr
		    end group one
		case
		    group two
			long	List_Terminator
			long	Junk1
			long	Junk2
		    end group two
	    end variant
	end record SysItems
%let %SYSITEMS = 1
%end %if
!
!	/// I/O Status Block	///
!
%if %declared (%IOSBREC) = 0 %then
	record IosbRec								! structure of I/O Status Block
	    variant
		case
		    group one							! this variation is used with I/O transfers
			word		rc					! return code
			word		xfer_count				! transfer count
			long		long_0					! device specific info
		    end group one
		case
		    group two							! this variation is used to satisfy the compiler
			basic$quadword	quad_0					! this QUAD must be used in the call
		    end group two
		case
		    group three							! this variation is used in $SNDJBC + $SNDJBCW
			long		job_status				! job status
			long		long_3					! device specific info
		    end group three
	    end variant
	end record IosbRec
%let %IOSBREC = 1
%end %if
!
!	/// Terminator Descriptor Block (for qio_read) ///
!
%if %declared (%TDB_REC) = 0 %then
	record TDB_Rec								! terminator descriptor block
		long	mask_type						! mask type
		long	mask							! character bit mask
	end record								!
%let %TDB_REC = 1
%end %if
!

Back to OpenVMS
Back to OpenVMS Demo Index
Back to Home
Neil Rieck
Kitchener - Waterloo - Cambridge, Ontario, Canada.