/* ***************************************************************************** * * * Copyright (c) 1978, 1993 * * by DIGITAL Equipment Corporation, Maynard, Mass. * * * * This software is furnished under a license and may be used and copied * * only in accordance with the terms of such license and with the * * inclusion of the above copyright notice. This software or any other * * copies thereof may not be provided or otherwise made available to any * * other person. No title to and ownership of the software is hereby * * transferred. * * * * The information in this software is subject to change without notice * * and should not be construed as a commitment by DIGITAL Equipment * * Corporation. * * * * DIGITAL assumes no responsibility for the use or reliability of its * * software on equipment which is not supplied by DIGITAL. * * * ***************************************************************************** facility: SDL (Structure Definition Language) author: Paul A. Calato */ /* C H A N G E L O G Date ! Name ! Description ________________!_______!______________________________________________________ ! ! 23-Nov-1985 | pc | Adding copyright header and change log. ________________!_______!______________________________________________________ 17-Jun-1986 | pc | Adding BASIC$ to QUADWORD and OCTAWORD. ________________!_______!______________________________________________________ 9-Apr-1987 | jgw | X3.1-0 Added BASIC$F_, BASIC$D_, BASIC$G_, and | | BASIC$H_FLOATING COMPLEX data types. ________________!_______!______________________________________________________ 24-Oct-1988 | jgw | V3.2-0 Generated BASIC$xxx record definitions inside | | %IF %DECLARED directives to prevent these | | pre-defined types from being multiply defined. ________________!_______!______________________________________________________ 27-Oct-1988 | jgw | V3.2-1 Correctly indent the %LET directive inside the | | %IF...%END %IF construct for the pre-defined | | BASIC$xxx record types. ________________!_______!______________________________________________________ 11-Nov-1988 | jgw | V3.2-2 Corrected the names of two _DECLARED variables | | which keep track of whether BASIC$xxx records | | have been defined. ________________!_______!______________________________________________________ 30-Sep-1993 | pjh | V3.?-? Change HFLOAT to BASIC$HFLOAT_AXP for Alpha | | AXP, due to the lack hfloat on the Alpha AXP. ________________!_______!______________________________________________________ 01-OCT-1993 | bjm | V3.?-?+1 Use a global to pass bitfield for alpha ________________!_______!______________________________________________________ */ /****************************************************************/ /* */ /* PUT_TYPES puts out the predeclared types for Basic. */ /* */ /****************************************************************/ put_types: proc ; /********************/ /* */ /* PUT_TYPES */ /* */ /********************/ %include 'sdl$library:sdlshr.in'; DCL OUTPUT_BUF ENTRY ( character(1024) VARYING ); dcl alpha_opt bit (1) aligned globalref; call output_buf(' ! *** PREDECLARED TYPES'); call output_buf(' '); call output_buf(' %IF %DECLARED(%BASIC$QUADWORD_DECLARED) = 0 %THEN'); call output_buf(' RECORD BASIC$QUADWORD'); call output_buf(' LONG FILL(2)'); call output_buf(' END RECORD'); call output_buf(' %LET %BASIC$QUADWORD_DECLARED = 1'); call output_buf(' %END %IF'); call output_buf(' '); call output_buf(' %IF %DECLARED(%BASIC$OCTAWORD_DECLARED) = 0 %THEN'); call output_buf(' RECORD BASIC$OCTAWORD'); call output_buf(' LONG FILL(4)'); call output_buf(' END RECORD'); call output_buf(' %LET %BASIC$OCTAWORD_DECLARED = 1'); call output_buf(' %END %IF'); call output_buf(' '); if alpha_opt then do; call output_buf(' %IF %DECLARED(%BASIC$HFLOAT_AXP_DECLARED) = 0 %THEN'); call output_buf(' RECORD BASIC$HFLOAT_AXP'); call output_buf(' LONG FILL(4)'); call output_buf(' END RECORD'); call output_buf(' %LET %BASIC$HFLOAT_AXP_DECLARED = 1'); call output_buf(' %END %IF'); call output_buf(' '); end; call output_buf(' %IF %DECLARED(%BASIC$F_FLOATING_COMPLEX_DECL) = 0 %THEN'); call output_buf(' RECORD BASIC$F_FLOATING_COMPLEX'); call output_buf(' SINGLE REAL_PART'); call output_buf(' SINGLE IMAGINARY_PART'); call output_buf(' END RECORD'); call output_buf(' %LET %BASIC$F_FLOATING_COMPLEX_DECL = 1'); call output_buf(' %END %IF'); call output_buf(' '); call output_buf(' %IF %DECLARED(%BASIC$D_FLOATING_COMPLEX_DECL) = 0 %THEN'); call output_buf(' RECORD BASIC$D_FLOATING_COMPLEX'); call output_buf(' DOUBLE REAL_PART'); call output_buf(' DOUBLE IMAGINARY_PART'); call output_buf(' END RECORD'); call output_buf(' %LET %BASIC$D_FLOATING_COMPLEX_DECL = 1'); call output_buf(' %END %IF'); call output_buf(' '); call output_buf(' %IF %DECLARED(%BASIC$G_FLOATING_COMPLEX_DECL) = 0 %THEN'); call output_buf(' RECORD BASIC$G_FLOATING_COMPLEX'); call output_buf(' GFLOAT REAL_PART'); call output_buf(' GFLOAT IMAGINARY_PART'); call output_buf(' END RECORD'); call output_buf(' %LET %BASIC$G_FLOATING_COMPLEX_DECL = 1'); call output_buf(' %END %IF'); call output_buf(' '); if alpha_opt then do; call output_buf(' %IF %DECLARED(%BASIC$H_FLOAT_AXP_CMPLX_DCL) = 0 %THEN'); call output_buf(' RECORD BASIC$H_FLOATING_COMPLEX_AXP'); call output_buf(' BASIC$HFLOAT_AXP REAL_PART'); call output_buf(' BASIC$HFLOAT_AXP IMAGINARY_PART'); call output_buf(' END RECORD'); call output_buf(' %LET %BASIC$H_FLOAT_AXP_CMPLX_DCL = 1'); call output_buf(' %END %IF'); call output_buf(' '); end; else do; call output_buf(' %IF %DECLARED(%BASIC$H_FLOATING_COMPLEX_DECL) = 0 %THEN'); call output_buf(' RECORD BASIC$H_FLOATING_COMPLEX'); call output_buf(' HFLOAT REAL_PART'); call output_buf(' HFLOAT IMAGINARY_PART'); call output_buf(' END RECORD'); call output_buf(' %LET %BASIC$H_FLOATING_COMPLEX_DECL = 1'); call output_buf(' %END %IF'); call output_buf(' '); end; end put_types;