Marc's Place

VMS/Dibol


The contents of the following (sub)pages were copied from a VAX/VMS machine a looonnnggg time ago


For more functions, see also RTL Routines.

DIBOL invokes the VAX DIBOL compiler to compile one or more DIBOL source programs.
This command is described in detail in the VAX DIBOL User's Guide.

Format

      DIBOL file-spec{,...}  (for separate compilations)
      DIBOL file-spec{+...}  (for concatenated compilations)

Alternate functions

      DIBOL/MENU     invokes menu generator
      DIBOL/PDP11 {=value}      invokes cross-compiler

Parameters

        file-spec{,...}
        file-spec{+...}

Specifies one or more DIBOL source program files to be compiled.  If you do not
specify a file type for an input file, DIBOL uses the default file type of DBL.

You can specify more than one input file.  If you separate the file specifications
with commas (,), each file is compiled separately.  If you separate the file
specifications with plus signs (+), the files are concatenated and compiled as a
single input file, producing single object and listing files.  Wild cards are not
allowed in the file specification. You cannot specify the source file to be the
terminal or the input stream (SYS$INPUT).

                                              |,|
        DIBOL{/qualifier}filespec{/qualifier}{| |filespec{/qualifier}...}
                                              |+|

Unless otherwise indicated, all qualifiers are valid for both the VAX-code generating
compiler, and the PDP11-code generating compiler, invoked with /PDP11 qualifier.

Qualifiers

/BIND

     /BIND[=value]
     /NOBIND

Binding

Often  an  application  which  has  been  migrated from a PDP11 DIBOL environment
will consist of many small programs which are chained to using  the  STOP  statement.
This  was  often necessary for a large application  because  of  memory  and disk
limitations.  On VMS image activation  time  is  considerably more than that on the
PDP-11s, but disk space and available memory is also considerably better.  Binding
presents  a  means  by which many small programs may be combined into one image
without having to change the actual code.

Compile the first program with the /BIND=PRIMARY switch.  Compile all the other
programs and subroutines with the /BIND=SECONDARY switch. Link  all  object files
together into one image.  Now, any programs which are referenced in a STOP-chain
statement and included in the link command, control is transferred within the same
image from the first main  routine to the second "bound" main routine. Acceptable
values are:

Value           Effect

PRIMARY         Make this routine "bindable" and generate a transfer
                address. This routine will be the true main routine
                within the bound image. There can be only one PRIMARY
                routine.

SECONDARY       Make this routine "bindable" and do not generate a
                transfer address. This routine can only be activated by
                binding.

If COMMON is used, there are several potential problems. If in the unbound application
the same COMMON variable is used among several images, then when creating the bound
image all but one main program should be compiled /COMMON=EXTERNAL. If each piece of
the application uses the same common variable names, but with different meanings, then
the /COMMON=SUFFIX="string" switch may be useful.


/CHECK

      /CHECK[=(value,...)]
      /NOCHECK

Checks, at runtime, for array and substring bounds or passed arguments. Acceptable
values are:

Value          Effect

BOUNDS         Check, at runtime, that array and substringbounds are not exceeded.

NOBOUNDS       Do not check for array and substring bounds.

ARGUMENTS {= argoption}

             argoption:

                            EQ   The number of passed arguments must be equal
                                   to the number of declared arguments
                                   (default).

                            LE   The number of passed arguments can be less
                                   than or equal to the number of declared
                                   arguments (default).

                            GE   The number of passed arguments can be greater
                                   than or equal to the number of declared
                                   arguments.

                            NE   There is no check.

NOARGUMENTS

The system default is /CHECK=(NOBOUNDS,ARGUMENTS=LE).  If no value is specified when
/CHECK is used, the default is /CHECK=(BOUNDS,ARGUMENTS=EQ).


/COMMON

      /COMMON[=(value,...)]

Changes the properties of a COMMON declaration. See also /BIND. Acceptable values are:

Value           Effect

EXTERNAL        Forces all COMMONS to be external.

GLOBAL          Forces all COMMONS to be global.

SUFFIX[=string]
                Add string as suffix to common name.  Default suffix string is '$'.

NOSUFFIX        Do not add suffix string to common name.

If no value is specified when /COMMON is used, the default is /COMMON=SUFFIX='$'.


/CROSS_REFERENCE

      /CROSS_REFERENCE (list)
      /NOCROSS_REFERENCE

Generates a cross-reference listing as part of the listing file.  The cross-reference
listing identifies by line number the locations where the following program entities
are defined and used: variables, statement labels, and external references.  The system
default is /NOCROSS_REFERENCE.


/DEBUG

      /DEBUG[=value]
      /NODEBUG

Directs the compiler to include debugging information in the object code. /DEBUG
overrides /OPTIMIZE. Acceptable values are:

Value         Effect

NATIVE      Generate code for use with the VAX Symbolic Debugger (DEBUG).

DDT           Generate code for use with the Dibol Debugging Tool (DDT).

PCA           Generate code for use with the VAX Performance and Coverage Analyzer.

If no value is specified when /DEBUG is used, the default is /DEBUG=NATIVE.  The system
default is /NODEBUG.


/DIAGNOSTICS

      /DIAGNOSTICS[=filespec]
      /NODIAGNOSTICS

Creates a diagnostic file containing compiler messages and diagnostic information.
The diagnostic file is reserved for use by DIGITAL.  The VAX Language-Sensitive Editor
(LSE) uses the diagnostic file to display diagnostic messages and to position the
cursor on the line and column where a source error exists.  The default file type for
a diagnostic file is .DIA.  The system default is /NODIAGNOSTICS.


/ENABLE

     /ENABLE[=value]
     /NOENABLE

     Enables different options.

             Value

             DICTIONARY = option

             option:

             D83      Include from CDD will generate D83 code.

             NOD83  Include from CDD will generate non-standard code (default).


/LIBRARY

      /LIBRARY

Specifies a default text library which will be used if the .INCLUDE compiler directive
does not specify a library name.  The default file type is TLB.  The text library must
be specified as a source file and appended to one of the program source files with a
plus (+) sign. Alternatively, the logical name DIBOL$LIBRARY may be used to specify the
name of the default text library.  If no /LIBRARY qualifier is specified on a source
file, and an .INCLUDE from the default library is encountered, the library specified by
DIBOL$LIBRARY will be searched.


/LIST

      /LIST[=filespec]
      /NOLIST

Creates a listing file with default file type LIS.  If no file is specified, the first
file specification in the command line is used.  The system default is /NOLIST.


/MENU

      /MENU filespec[/qualifier]
      /NOMENU

Invokes the DIBOL menu generator (DBLMNUGEN) to "compile" a menu source file into a
run-time file.  The system default is /NOMENU.


/OBJECT

      /OBJECT[=filespec]
      /NOOBJECT

Creates an object file with default file type OBJ.  If no file is specified, the first
file specification in the command line is used.  The system default is /NOOBJECT.


/OPTIMIZE

      /OPTIMIZE (object)
      /NOOPTIMIZE (object)

Suppresses the output of line numbers as part of the object code.  The resulting
program code is smaller and usually executes more quickly. Line numbers are required
for some DEBUG operations, effective use of the ERROR subroutine, and the interpretation
of error messages and STOP messages.  The system default is /NOOPTIMIZE.


/PAGE_SIZE

      /PAGE_SIZE=value (list)

Specifies the number of lines per page in the listing file.  The specified value
includes 3 lines for the top margin, 3 lines for a header, and 3 lines for the bottom
margin (9 in all).  If this qualifier is omitted, the system default lines per page is
used.  The system default is the value defined by SYS$LP_LINES or 66 if SYS$LP_LINES
is not defined.


/PDP11

      /PDP11[=value]
      /NOPDP

Invokes the VAX native mode cross-compiler that generates object code which can be
task-built on a PDP-11 system.  The value associated with the qualifier specifies the
system on which the object code is to be task-built and executed.  Acceptable values
are:

             CTS300,
             RT
             RSTS
             RSTS51
             RSX11M+
             PRO.

CTS300 and RT are equivalent.  If no value is specified when /PDP11 is used, the
default is /PDP=RSX.  The system default is /NOPDP.


/REFRESH

      /REFRESH
      /NOREFRESH

Reinitializes the Data Division when a routine or subroutine compiled with this switch
is activated.  The system default is /NOREFRESH.


/SHOW

     /SHOW[=(value,...)]
     /NOSHOW

Generates a listing file that contains a symbol table, a label table, and a listing of
the source program that contains all source files, all conditional program segments
(compiled and non-compiled), and all program segments specified with the .INCLUDE
compiler directive.  The system default is /NOSHOW.

The content of the listing file can be modified by user-specified values appended to
the SHOW qualifier.  One or more values can be specified with the SHOW qualifier.
Acceptable values are:

Value                    Effect

[NO]CONDITIONALS         Conditional program segments that were not
                         compiled appear (CONDITIONAL) in the listing or do
                         not appear (NOCONDITIONAL) in the listing.

[NO]INCLUDE              Contents of an included file appear (INCLUDE) in
                         the listing or do not appear (NOINCLUDE) in the
                         listing.

[NO]SOURCE               Contents of the program source files appear
                         (SOURCE) in the listing or do not appear
                         (NOSOURCE) in the listing. SOURCE takes precedence
                         over NOLIST.

[NO]TABLES               A symbol table and a label table appear (TABLES)
                         in the listing or do not appear (NOTABLES) in the
                         listing.

ALL                      Equivalent to SHOW with no user-specified values.

NONE                     Equivalent to NOSHOW (user-specified values not
                         allowed with NOSHOW).



/STANDARD

      /STANDARD[=value]
      /NOSTANDARD

Directs the compiler to insure that the program conforms to the specified syntax.
Acceptable values are:

Value     Effect

D83       Syntax defined in the DIBOL-83 Language Reference Manual.

If no value is specified when /STANDARD is used, the default is /STANDARD=D83.
The system default is /NOSTANDARD.

Controls whether or not VAX-specific language extensions are allowed in the source
program.

Feature                           /STANDARD            /NOSTANDARD
--------------------------------------------------------------------
Maximum channel number            15                   255
Maximum record/field size         16383                65535
XCALL extensions                  none                 %VAL, %REF, %DESCR, %XTRNL
Subroutine names                  6 characters         31 characters
Variable and label names   (P)    6 characters         30 characters
COMMON variable names             5 characters         30 characters
.INCLUDE directive         (P)    files                files, CDD text libraries
Maximum Nested .INCLUDE    (P)    3 levels             10 levels

(Note that DDT on PDP11's does not support long variable names.  If you intend to
debug the program on a PDP11, you should insure that the first 6 characters of the
variable name are unique.)


/VARIANT

      /VARIANT[=value]
      /NOVARIANT

Defines the value of the compiler variant variable.  If no value is specified when
/VARIANT is used, the default value is 1.  The system default is /NOVARIANT. /NOVARIANT
defines the value of the compiler variant variable as 0 (zero).  This qualifier is the
system default.


/WARNINGS

     /WARNINGS
     /NOWARNINGS

Directs the compiler to report warnings and errors in the listing file or at the
terminal (or both).  The system default is /NOWARNINGS.


Linking

Two subroutine libraries have been provided for maintaining source compatibility with
PDP-11 DIBOL.  Subroutines in the Universal External Subroutine Library (DBLUESL) are
available in all PDP-11 DIBOL implementations.  Subroutines in the Operating System
Specific Library (DBLOSSL) are available in one or more PDP-11 DIBOL implementations.

The VAX DIBOL Run-Time Library shareable image is pointed to by the system shareable
image library (SYS$LIBRARY:IMAGELIB.OLB) which is searched by default by the linker.
A program which does not use either the DBLUESL or DBLOSSL libraries may be linked by
entering the following command:

        $ LINK progname

For compatibility with VAX DIBOL Version 1, a linker options file is provided which
links in the DBLUESL library and the DIBOL RTL.  To link using this options file,
enter:

        $ LINK progname, SYS$LIBRARY:DBLRTL/OPTIONS

Or to link the DBLUESL library without using the options file, enter:

        $ LINK progname, SYS$LIBRARY:DBLUESL/LIBRARY

And similarly for the DBLOSSL library:

        $ LINK progname, SYS$LIBRARY:DBLOSSL/LIBRARY

Alternatively, if the DBLUESL and DBLOSSL libraries are defined as linker logicals
(LNK$LIBRARY, LNK$LIBRARY_1, ...), the linker will search these libraries by default.
© 1997- Marc Vos (and others) Contact Me