JCC Help.

JCC is an ANSI compliant C Compiler that generates '370 assembly language.

JCC uses the JCC-Library which has optimisations for '390 processors which are automatically switched on when running on that equipment. For Hercules users running MVS3.8j who have compiled Hercules with 390 extensions-enabled, there is a global variable to allow manual switching to the faster library code.


Utilities that come with JCC:

asmscan - Replaces identifiers in assembly listings with STnnnnn where n is a unique 5 digit number. This has the effect of allowing long-names within C programs to be assembled with older assemblers. ALIAS statements are also no longer required, and are removed along with AMODE & RMODE directives.

A mapping file is generated by asmscan to allow the new short names to be remapped back to their original names. It is intended to be used as input to objscan.

Warning: To use this utility, the source file must not contain global variables or function names in this list ['STnnnnn', 'ENTRY', 'A', 'C', 'DL8', 'E', 'F', 'H', 'V' or 'X'] which are asmscan specific or assembler-codes generated for data definitions. Lowercase versions are accepted. Changes to asmscan may allow some support.

Usage: asmscan input.asm output.asm output.nam
 Converts longnames to shortnames and creates a translation file.
objscan - Takes an older ESD style object and replaces ESD records with XSD records, based on a mapping file. This produces a new object which can contain both short names and long names for correct linker name resolving.
Usage: objscan input.obj input.nam output.obj
 Takes a pre-built name file and converts ESDs to XSDs
prelink - Combines a list of source objects into a single target object, using a directory of library objects for automatic name resolution. The library directory must contain a plain text file listing the object filenames within the library directory and in the order of resolution desired.

The JCC-Library supplies both the objects and plain text file. The library may be updated by adding new objects to both the directory and the text file.

Options to rename external indentifiers enable older linkers to build the resulting object into a LoadLibrary member. The options are: to replace all names with STnnnnnn where n is a unique 6 digit number, replace only the long-names (longer than 8 characters) or replace no names at all (just combining the required objects into a normal XSD object.)

Once processed, the entry point may become ST000000 instead of @crt0 (or @@CRT0) if the linker needs to be given that option. Also, both prelink and objscan reidentify the objects processed as AMODE=ANY, RMODE=ANY leaving the final decision up to the linker.

Usage: prelink -test=file -r|s|x libdir target.obj user1.obj...
 All parameters are position specific and only the flags are optional,
 -test=file appends debugging information to the JCC test file.
 -r renames all symbols to STnnnnnn to hide their meanings,
 -s performs the default function of only renaming longnames,
 -x performs no renames at all, and leaves XSD records as-is.
 libdir must contain the file liblst.txt listing all objects.
 Additionally, libdir may be specified as 'nolib' to exclude the library.
 user1.obj may be replaced with -file.txt which lists all the user objects.