computer program stores the same information in two different
computer languages. The first is called the source language
and consists of English-like instructions which can be understood
by humans. If a programmer wishes to change the task which
a program is to perform s/he changes the instructions contained
in the source. However, these instructions cannot be understood
by the computer. The computer can only process instructions
written in machine language. In order to run the program,
the source instructions must be run through a language translator
called a compiler. The compiler creates a new version of the
program, one written in machine language. In other words,
the compiler translates programs written in a language understandable
by humans into a language understood by the computer.
As long as the machine language version of the program exists
on the computer system, the program can be run, and as long
as the source language version exists on the system, the program
can be modified, enhanced or debugged by the programmer. If
the machine language version is accidentally destroyed, the
source can be run through the computer again, and a new machine
instruction version is generated. But, if the source is accidentally
destroyed, it can only be reached by the use of a decompiler,
a programmer's tool which reverses the process of the original
AS/400 ENVIRONMENT: The JGS utility will run on all models
of the AS/400 system. Version 3 Release 1 or above of OS/400
The AS/400 COBOL compiler produces not only executable code,
but also a number of structures and tables which contain information
associating the source member to the executable program object.
An ODT (object definition table) is constructed containing
information (length, type, decimal positions) about variables
and constants. A BOM (break offset mapping) table is constructed
associating a source statement with an MI instruction number.
At that MI instruction number, a string of MI instructions
are performed corresponding to the original COBOL source instruction.
A symbol table is constructed, containing the names of source
fields, tables and arrays. Altogether, the program template
contains almost all of the information from the original source
member. The decompiler, then, has the capacity to generate
a new source member identical to the original, except for
internal comments, for any program object which has not had
Current benchmarks put the time required to decompile a program
at approximately three times (3x) longer than the time required
to compile the source program. That is, a program which would
take 1 minute to compile would take 3 minutes to decompile.
user programmer productivity in several problem solving areas:
which of several source members corresponds to currently
running object programs.
modifications in current object missing from current source.
Best Price/Performance for Recreating Existing Code.
Migration to New Platforms.
Investment in Existing Software for Which Source is Not
of JGS COBOL/400 is tied to a particular CPU via the system's
unique serial number to prevent unauthorized duplication of
the software. In order to decompile a program object, the
user must have *ALLOBJ authority over the object to be restored
and *CHANGE authority to the source physical file where the
new member is to reside.
currently supports decompilation of program objects compiled
under CPF release 8 through OS/400 V5R2 for those objects
which have not had observability removed.