{* {***************************************************************************** {* * {* Copyright 1980 Compaq Computer Corporation * {* * {* Compaq and the Compaq logo Registered in U.S. Patent and Trademark Office.* {* * {* Confidential computer software. Valid license from Compaq required for * {* possession, use or copying. Consistent with FAR 12.211 and 12.212, * {* Commercial Computer Software, Computer Software Documentation, and * {* Technical Data for Commercial Items are licensed to the U.S. Government * {* under vendors standard commercial license. * {* * {***************************************************************************** { {++ { facility: { { SDL (Structure Definition Language) { { abstract: { { These are the beginning declarations in SDLPLI.PLI. The text there is { written in its entirety because that module is a "model" for the { documentation. Those declarations are excerpted here for the { benefit of other language output modules. PL/I comments have been { converted to SDL local comments for brevity { { author: { c.t. pacy { date: { revised 22-DEC-1981 ctp { { C H A N G E L O G { { Date | Name | Description {_______________|_______|______________________________________________________ { 04-May-1987 | jgw | X3.1-0 Added change log; added definition of constant { | | SDL$K_UNKNOWN_LENGTH {_______________|_______|______________________________________________________ { 12-Jan-1988 | PG | X3.2-0 Added SDL$CVTSTR entry {_______________|_______|______________________________________________________ { 13-Jan-1988 | jg | X3.2-1 Added literal_active flag {_______________|_______|______________________________________________________ { 16-Feb-1988 | jg | X3.2-2 Corrected definition of sdl$getline and added { | | new parameter. {_______________|_______|______________________________________________________ { 22-Feb-1988 | PG | X3.2-3 Add flags for SUPPRESSion of PREFIXES and { | | TAGS {_______________|_______|______________________________________________________ { 08-Jul-1988 | jgw | X3.2-4 Added flag for /PLI_DEVELOPMENT qualifier. {_______________|_______|______________________________________________________ { 13-Feb-1990 | WRV | X3.2-5 Modifiers are developers from VMS tools group. { | RHT | William Vales and Robert Thomson. Add variable { | | vde_lang_file to shared data area. Modification { | | is to support the recording of dependency data { | | for the VMS VDE system builder. {_______________|_______|______________________________________________________ { 24-May-1990 | LWW | X3.2-6 Add alpha option {_______________|_______|______________________________________________________ { 4-May-92 | JAK | EV1-8 Add cc_opt option {_______________|_______|______________________________________________________ { 20-May-92 | JAK | EV1-10 Reordered structure, added fields: { | | sdldata_version, nodedef_version, { | | subfield_opt, and fillers for future use. {_______________|_______|______________________________________________________ { 4-Sep-92 | JAK | EV1-18 Add vax option {_______________|_______|______________________________________________________ { 1-Feb-1993 | JAK | EV1-21 Add b64_opt {_______________|_______|______________________________________________________ { 27-Nov-2000 | LJK | EV1-65 Add DIMENSION_STAR_CONTROLLING and { | | get_discriminant. { | | { | | Change copyright notice to Compaq format. {_______________|_______|______________________________________________________ { {-- module $MISCellany ident "EV1-65"; #vsize = 1024; #line_length = 132; #symbol_length = 32; constant LINE_LENGTH equals #line_length; { output file line length constant UNKNOWN_LENGTH equals -999 prefix "SDL$" TAG "K"; { unknown CHARACTER length { DATA and EXTERNAL ROUTINE DECLARATIONS { { This external routine outputs lines to the target language { output file. The first argument is the address of a buffer { with the output text, and the second argument is the maximum { line length for the output file. Output lines are broken off { and output on the next line if they are too long { entry SDL$PUTLINE parameter (any, character length 1024 varying, longword); { { This external routine returns a header giving the name of { the SDL utility and the current time and date { entry SDL$HEADER parameter (any, character length 2 varying, character length 2 varying, longword); entry SDL$getline parameter (any, character length 1024 varying, character length 1024 varying); entry SDL$writelist parameter ( character length 1024 varying , any); { { This external routine takes an integer argument and returns { a character string representation of the digit, stripped of { all leading blanks { entry TRIM parameter (longword) returns character length 32 varying; { { This external routine pads a character string with blanks to { fill it out to the desired column. If the string is already { longer than the requested column, a single space is added. { The routine accepts a character varying string and the column { number as arguments and returns a character varying string { entry "FILL" parameter (character varying descriptor , longword) returns character length #line_length varying; { EV1-65 { This external routine takes a module name and an aggregate name, { returning the name of the member of that aggregate that controls { the dimension of another member encoded as "DIMENSION *". SDL { documentation reserved "DIMENSION *" for a PARAMETER within an { ENTRY statement and never allowed it for an AGGREGATE member. { But the parse table in SDLPAT.PAT was not so discriminating { and certain SDL modules in the VMS Build were inadvertently { written to take advantage of that loophole, producing output { that compiled correctly in lower level languages like Bliss { and C, but not in strongly typed languages like Ada and Pascal. { { At this time (EV1-65, VMS V7.3-1) it is not feasible to change { the SDLPAT.PAT tables to modify the SDL input language, so we { will temporary have the Ada and Pascal back ends share a list { hard-coded into routine DIMENSION_STAR_CONTROLLING indicating { for particular instances in the VMS Build where "DIMENSION *" { will be encountered what member controls the dimension of the { member encoded as "DIMENSION *". { EV1-65 entry DIMENSION_STAR_CONTROLLING parameter (character length #symbol_length varying, character length #symbol_length varying ) returns character length #line_length varying; { EV1-65 { This entrypoint is used to parse the output of DIMENSION_STAR_CONTROLLING. { EV1-65 entry get_discriminant parameter (character length #vsize varying, character length #vsize varying, character length #vsize varying, character length #vsize varying); { PG { This external routine converts a string such that embedded 'quotes' { are converted to two characters dependant upon the language { For example, in CC, " becomes \", \ becomes \\ { entry SDL$CVTSTR parameter (character length 128 varying, character length 128 varying, character length 128 varying); constant sdl$k_shrdata_rev equals 1; aggregate sdl$_shr_data structure ; sdl$gl_options structure prefix sdl$ ; alpha_opt bitfield mask; /* lw vms_opt bitfield mask; pli_opt bitfield mask; cc_opt bitfield mask; /* jak listing_opt bitfield mask; noheader_opt bitfield mask; copyright_opt bitfield mask; global_opt bitfield mask; parse_opt bitfield mask; comment_opt bitfield mask; module_opt bitfield mask; literal_active bitfield mask; /* Set when processing LITERAL /* The above is not a command line option like all the others, /* but this is the only set of common flags available suppress_prefix bitfield mask; /* PG Suppress prefixes suppress_tag bitfield mask; /* PG Suppress tags member_align bitfield mask; /* Align structure members. jak check_align bitfield mask; /* Check alignment. jak subfield_opt bitfield mask; /* BLISS_FIELDS extensions jak vax_opt bitfield mask; /* /VAX sets this EV1-18 b64_opt bitfield mask; /* /B64 sets this EV1-21 /* add any new flags here! (take from unused fill below) unused_opt bitfield length 13 fill; end; shrdata_version word; node_version word; tree_root address; outfile longword; lisfile longword; infile_var longword; incl_file longword; main_return longword; errorcount longword; file_level longword; listline longword; unused_long longword dimension 8 fill; sdl_listing_header character length 132 varying dimension 2; full_source character length 68 varying; vde_lang_file character length 128 varying; sdl_version character length 10; end; end_module;