%IF %DECLARED ( %BASIC$QUADWORD_DECLARED ) = 0 %THEN RECORD BASIC$QUADWORD LONG FILL ( 2 ) END RECORD %LET %BASIC$QUADWORD_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$OCTAWORD_DECLARED ) = 0 %THEN RECORD BASIC$OCTAWORD LONG FILL ( 4 ) END RECORD %LET %BASIC$OCTAWORD_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$F_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$F_FLOATING_COMPLEX SINGLE REAL_PART SINGLE IMAGINARY_PART END RECORD %LET %BASIC$F_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$D_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$D_FLOATING_COMPLEX DOUBLE REAL_PART DOUBLE IMAGINARY_PART END RECORD %LET %BASIC$D_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$G_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$G_FLOATING_COMPLEX GFLOAT REAL_PART GFLOAT IMAGINARY_PART END RECORD %LET %BASIC$G_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$H_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$H_FLOATING_COMPLEX HFLOAT REAL_PART HFLOAT IMAGINARY_PART END RECORD %LET %BASIC$H_FLOATING_COMPLEX_DECL = 1 %END %IF ! + ! NOTE: ! The tags used in the data structures defined by this file reflect ! the size of the field in the OpenVMS V7.0 ALPHA release. The ! field names have been ported to the VAX release for compatability ! reasons and it is recognized that some of the fields are shorter ! than their tags indicated. If the tags were to be corrected for ! their proper size on VAX it would break our goal of application ! source code compatability for Fast IO. ! - ! + ! Define I/O Status Area ! - DECLARE LONG CONSTANT IOSA$K_LENGTH = 32 ! Length of IOSA DECLARE LONG CONSTANT IOSA$C_LENGTH = 32 ! Length of IOSA DECLARE LONG CONSTANT iosa$S_IOSADEF = 32 ! Size of IOSA DECLARE LONG CONSTANT iosa$s_iosa = 32 record iosa LONG iosa$l_status ! Status LONG iosa$l_resd ! Reserved ( driver ) group iosa$r_bytecount variant case BASIC$QUADWORD iosa$q_count_q ! Force size case LONG iosa$ih_count ! Number of bytes end variant end group iosa$r_bytecount group iosa$r_ctx variant case BASIC$QUADWORD iosa$q_context_q ! Force size case LONG iosa$ph_context_p ! User context area case LONG iosa$ih_context ! User context area end variant end group iosa$r_ctx group iosa$r_reserved ! Just in case we need variant case LONG iosa$l_resl ( 1 to 2 ) ! in the future some case LONG iosa$q_resq ! additional space end variant end group iosa$r_reserved end record iosa ! + ! $IO_SETUP flag bits ! - DECLARE LONG CONSTANT fio$m_expedite = x'00000001' DECLARE LONG CONSTANT fio$m_ast_nofloat = x'00000002' DECLARE LONG CONSTANT fio$s_setup_flags = 4 record setup_flags variant case LONG fio$l_flags_longword case group fio$r_flag_bits ! Make this a high-priority I/O ! The AST routine does not use f.p. regs BYTE expedite_bits ! COMMENT ADDED BY SDL - expedite_bits contains bits expedite through fill_44 end group fio$r_flag_bits end variant end record setup_flags ! ! These entry point definitions were ported from Alpha STARLET.SDL. ! They are applicable only when the IOSA structure definitions are ! present and are not actual system services on VAX. Therefore, they ! will remain in this file (IOSADEF.SDL) for the VAX ! ! $IO_CLEANUP ! ! Cleanup a previously set-up I/O ! ! $IO_CLEANUP fandle ! ! fandle = fandle to clean up ! EXTERNAL LONG FUNCTION SYS$IO_CLEANUP & ( & LONG BY VALUE & ) ! $IO_PERFORM ! ! Transfer data between device and buffer ! ! $IO_PERFORM fandle, chan, iosadr, bufadr, buflen, devdata ! ($IO_PERFORMW) ! ! fandle = fandle from previous $IO_SETUP ! ! chan = standard I/O channel ! ! iosadr = IOSA address ! ! bufadr = address of data buffer (64 bits) ! ! buflen = length of data buffer (64 bits) ! ! devdata= data passed to driver, e.g., media address ! ! EXTERNAL LONG FUNCTION SYS$IO_PERFORM & ( & LONG BY VALUE, & WORD BY VALUE, & LONG BY VALUE, & LONG BY VALUE, & LONG BY VALUE, & LONG BY VALUE & ) EXTERNAL LONG FUNCTION SYS$IO_PERFORMW & ( & LONG BY VALUE, & WORD BY VALUE, & LONG BY VALUE, & LONG BY VALUE, & LONG BY VALUE, & LONG BY VALUE & ) ! $IO_SETUP ! ! Set up a fast I/O ! ! $IO_SETUP func, bufobj, iosobj, astadr, flags, return_fandle ! ! func = function code ! ! bufobj = data buffer object (address of (vector of 2 ints)) ! ! iosobj = IOSA buffer object (address of (vector of 2 ints)) ! ! astadr = completion AST address (address of entry) ! ! flags = flags ! ! return_fandle = address of returned fandle ! EXTERNAL LONG FUNCTION SYS$IO_SETUP & ( & LONG BY VALUE, & LONG BY VALUE, & LONG BY VALUE, & LONG BY REF, & LONG BY VALUE, & LONG BY REF & )