Differences between Interactive COBOL 5.xx         30-Jan-2020
and previous versions from Data General

NOTE: Envyr offers consulting services to assist with the upgrade
      to ICOBOL 5, if needed.

Differences with Interactive COBOL 1.7x on AOS/VS
-------------------------------------------------

1.  ICOBOL 5.xx no longer supports the Data General Minisam file
    formats in production use, these files must be imported
    using the icreorg utility.  ICOBOL 5 does support all of the
    same sequential file formats.

    The first step with Minisam files is to run icverify on your
    files before you move them just to make sure that everything
    is fine.

    Make sure ALL data files are copy'ed in a BINARY mode.  Do
    not allow any <CR> or <NL> translations!  In particular,
    many FTP programs default to a text translation mode.

    You can also move your sources over to your new platform.
    Once again, it is best to use a BINARY transfer.  You will
    then need to completely re-compile and produce .cx files
    with the new ICOBOL compiler.  Please read the notes in the
    fromicobol2.txt readme file regarding issues that may affect
    re-compiling your application.

    You should then be able to run your COBOL programs.

    Any .cli macros must be rewritten into .bat or shell
    scripts.

2.  All the executables have new names that are the same under
    Linux and Windows.  Switches are totally different.

          OLD                  NEW

        icverify.pr         iccheck
        iccompact.pr        icpack
        <,e>mls.pr          icexec
        reorg.pr            icreorg
        icx.pr              icrun
        icdeb.pr            icrun -z
        icsort.pr           icsort

        icopt.pr            <no counterpart>
        minisam+.pr         <no counterpart>

3.  No COBOL programs FILECALC, CREV, ANALYZE, or CALC.
    ICSTAT provides similar information to ANALYZE, and
    ICREV provides similar information to CREV.

4.  The Help mechanism is different.  All os executabes support
    a help switch (/h).

5.  No options file.  Switches to ICRUN or ICCONFIG selections.

6.  There is no MINISAM REMOTE AGENT (MRA).

7.  When doing a START on a deleted record, previous versions would
    change the current record pointer to point to the deleted
    record before giving the error.  Interactive COBOL 2/3.xx gives
    the error and will not change the current record pointer.

8.  If during a READ <file> NEXT LOCK all configured locks are
    in use (File Status 9E), Interactive COBOL 2/3.xx does not return the
    record.  The current record position is not updated.  (This behavior
    is the same as if a locked record is encountered.)

9.  ICOBOL 3.00 introduced a new format for compiled programs.  The
    .PD/.DD pair of files is replaced by a single .CX file.  The runtime
    system supports only the new .CX format.  Programs must be
    re-compiled from source with an ICOBOL 3 compiler.

10. There are changes to some of the system calls:

        The #A, #M, #O, #P, and #T calls are supported.
        The ##C, ##D, ##E, ##F, ##G, ##M, ##P, ##S, ##T and ##U calls
            have been added.

    See the Interactive COBOL Language Reference and Developer's
    Guide for more details.

11. The default value of the TAB key is a tab and not a terminator.

12. The number of simultaneous ISAM record locks is a configurable
    parameter that can be up to 32767.

13. The PERFORM statement can handle a count up to 2**32 - 2.

14. The down-arrow key can be handled as a unique function key that the
    program can see and handle.

15. The ICCONFIG utility is provided to set and change all system
    parameters. (ICEDCFW under Windows.)

16. Non-DG terminals are supported.

17. ICRUN uses the ICCODEPATH and ICDATAPATH environment variables
    to search for programs and datafiles respectively.

18. There are new ISAM file versions, 7 and 8.  The old DG version
    5 and 6 files can be imported and exported but they are otherwise
    no longer supported.

19. Printer support is enhanced.

20. ICTIMEOUT and the WITH TIME-OUT clause have a maximum timeout value
    of 6300 seconds.

21. Interactive COBOL messages are contained in the system.ms file.
    The text files needed to build this are provided on the release.
    See ICMAKEMS in the Utilities Manual for more information.

22. The Interactive COBOL runtime supports a program library file.

23. Calling an os executable requires a leading "|".

24. New utilities:

        ICCONFIG
        ICSTAT
        ICFIXUP
        ICMAKEMS
        ICLIB
        ICCREATE
        ICLINK

25. If you currently open "$LPT" or "$LPT1" in your COBOL
    program and you really want it directed to a print queue
    then you should build a linkfile that has "$LPT  @PCQ0",
    "$lpt  @pcq0"; and/or "$LPT1 @PCQ1", "$lpt1 @pcq1", etc.
    ... in it.


Development system differences
------------------------------

1.  The ICOBOL compiler builds .CX files instead of .PD/.DD pairs.

2.  The Interactive COBOL optimizer, ICOPT, no longer exists. The ICOBOL
    compiler always optimizes the object code.

3.  PDROUND and PDUNROUND no longer exist.  .CX files are
    always rounded to a 2KB boundary.

4.  Linking in user-written subroutines is different.  There is no
    NAME_TBL.

5.  New utility:

        ICREVSET

6.  Compiler Differences with pre-2.00 Interactive COBOL compilers:

    A.  Previous Interactive COBOL compilers allowed index identifiers
        to be used as operands in a MOVE statement.  ICOBOL 3.00
        flags these as errors as the ANSI COBOL standard requires.

    B.  Previous Interactive COBOL compilers allowed a file status
        identifier to be part of the record.  The ANSI COBOL standard
        requires a file status identifier be defined in WORKING STORAGE.
        ICOBOL 3.00 enforces this standard.

    C.  Previous Interactive COBOL compilers allowed an identifier to
        be initialized with a value larger than the declared size of the
        identifier and normal MOVE truncation rules applied.  This
        revision flags this condition as an error.

    D.  Previous Interactive COBOL compilers allowed a GO TO to branch
        between a declarative section and a non-declarative section.
        The ANSI COBOL standard does not allow this condition.  This
        revision enforces this standard.  A -G g switch can be given
        to the compiler to cause this to be a warning instead of an
        error.

    E.  Previous Interactive COBOL compilers allocated the maximum
        size buffer (132 or 255) for data-sensitive files.  This
        revision only allocates the maximum size buffer specified.
        (A workaround is to provide another record description with
        the maximum size needed.)

Differences with Interactive COBOL 1.7x on UNIX
-----------------------------------------------

1.  All the executables have new names that are the same under
    Linux and Windows.

          OLD                     NEW

        icverify                iccheck
        iccompact               icpack
        icx                     icrun
        icdeb                   icdeb
        icobol                  icobol
        reorg                   icreorg
        dgmerge/dgsort          icsort
        (all servers-rptdae..)  icexec
           rptdae, kap, kop,
           sm_*
        lgc                     <no counterpart>  (no support for mxdb)
        icopt                   <no counterpart>
        mgs                     <no counterpart>
        ic_*                    <no counterpart>

2.  No COBOL programs FILECALC, CREV, ANALYZE, or CALC.
    icstat provides similar information to ANALYZE, and
    icrev provides similar information to CREV.

3.  All os executables have a help switch (/h or -h).

4.  No options file.  Switches to icrun or icconfig selections.

5.  No config directory.  Switches to icrun or icconfig selections.

6.  There is no support for debugging with mxdb.  Use icrun with
    debug switch.

7.  When doing a START on a deleted record, previous versions
    would change the current record pointer to point to the
    deleted record before giving the error.  Interactive COBOL 2/3
    gives the error and will not change the current record pointer.

8.  If during a READ <file> NEXT LOCK all configured locks are
    in use (File Status 9E), Interactive COBOL does not return the
    record.  The current record position is not updated.  (This behavior
    is the same as if a locked record is encountered.)

9.  OPEN does not support the functionality of reading an environment
    variable in the filename started with a "$".  Use the ##E system
    call to read an environment variable or use the linkfile to
    link the name in the filename "$LPT" for example to the needed
    character string "|>lp -ddest -onobanner" for example.

10. If you currently open "$LPT" or "$LPT1" in your COBOL
    program and you really want it directed to a print queue
    then you should build a linkfile that has "$LPT  @PCQ0",
    "$lpt  @pcq0"; and/or "$LPT1 @PCQ1", "$lpt1 @pcq1", etc.
    ... in it or to an OPEN pipeline as "|>lp -ddest -o...".

11. ICOBOL 3.00 introduces a new format for compiled programs.  The
    .pd/.dd pair of files is replaced by a single .cx file.  The
    runtime system supports only the new .cx format.  Programs
    must be re-compiled from source with an ICOBOL 3 compiler.

12. There are changes to some of the system calls:

        The #A, #M, #O, #P, and #T calls are supported.
        The ##C, ##D, ##E, ##F, ##G, ##M, ##P, ##S, ##T, and ##U
            calls have been added.

    See the Interactive COBOL Language Reference and Developer's
    Guide for more details.

13. The default value of the TAB key is a tab and not a terminator.

14. The number of simultaneous ISAM record locks is a configurable
    parameter that can be up to 32767.

15. The PERFORM statement can handle a count up to 2**32 - 2.

16. The down-arrow key can be handled as a unique function key that
    the program can see and handle.

17. The icconfig utility is provided to set and change all system
    parameters.

18. icrun uses the ICCODEPATH and ICDATAPATH environment variables
    to search for programs and datafiles respectively.

19. New ISAM file versions, 7 and 8, have been added.

20. The runtime system can support file versions 7 and 8
    simultaneously.  Version 5 and 6 must be imported.

21. Printer support is enhanced.

22. ICTIMEOUT and the WITH TIME-OUT clause have a maximum timeout
    value of 6300 seconds.

23. Interactive COBOL messages are contained in the system.ms file.
    The text files needed to build this are provided on the release.
    See icmakems in the Utilities for more information.

24. The Interactive COBOL runtime supports a program library file.

25. OPEN EXCLUSIVE and OPEN INPUT no longer require write permission
    to the file.

26. COBOL Program switches are no longer -switch.  They are the
    same on all platforms as /switch.

27. Calling an os executable requires a leading "|" symbol.

28. Environment variables are vastly different.

        Old name        New name
        -----------     -------------

        IC_ROOT         has been replaced with ICROOT
        ICPATH          has been replaced with ICCODEPATH and ICDATAPATH
        ICREPLACE       has been replaced with the linking mechanism
                            defined by iclink.
        ICERMES and
        ICTERMINFO      requirements are done by ICROOT
        ICOPTION        is not available.

29. There is all new terminal handling support with some internal
    suppport and also terminfo support.  See more on ICTERM.

30. Exception status is set for all errors.

31. I/O is multi-threaded allowing more concurrent operation.

32. New utilities:

        icconfig
        icstat
        icfixup
        icmakems
        iclib
        iccreate
        iclink
        icinfo


Development system differences
------------------------------

1.  The ICOBOL compiler builds .cx files instead of .pd/.dd pairs.

2.  The Interactive COBOL optimizer, icopt, no longer exists. The
    icobol compiler always optimizes the object code.

3.  Linking in user-written subroutines is different.

4.  New utility:

        icrevset

5.  Compiler Differences with pre-2.00 Interactive COBOL compilers:

    A.  Previous Interactive COBOL compilers allowed index identifiers
        to be used as operands in a MOVE statement.  ICOBOL 2/3.00
        flags these as errors as the ANSI COBOL standard requires.

    B.  Previous Interactive COBOL compilers allowed a file status
        identifier to be part of the record.  The ANSI COBOL standard
        requires a file status identifier be defined in WORKING STORAGE.
        ICOBOL 2/3.00 enforces this standard.

    C.  Previous Interactive COBOL compilers allowed an identifier to
        be initialized with a value larger than the declared size of the
        identifier and normal MOVE truncation rules applied.  This
        revision flags this condition as an error.

    D.  Previous Interactive COBOL compilers allowed a GO TO to branch
        between a declarative section and a non-declarative section.
        The ANSI COBOL standard does not allow this condition.  This
        revision enforces this standard.  A switch can be given
        to the compiler to cause this to be a warning instead of an error.

    E.  Previous Interactive COBOL compilers allocated the maximum
        size buffer (132 or 255) for data-sensitive files.  This
        revision only allocates the maximum size buffer specified.
        (A workaround is to provide another record description with
        the maximum size needed.)

Differences with Interactive COBOL 1.6x on MS-DOS
-------------------------------------------------

1.  All the executables have new names that are the same under
    Linux and Windows.

          OLD               NEW

        ICVERIFY           ICCHECK
        ICCOMPACT          ICPACK

        ICX                ICRUN

2.  New utilities:

        ICCONFIG
        ICSTAT
        ICFIXUP
        ICMAKEMS
        ICLIB
        ICCREATE
        ICLINK
        ICINFO

3.  No COBOL programs FILECALC, CREV, ANALYZE, or CALC.
    ICSTAT provides similar information to ANALYZE, and
    ICREV provides similar information to CREV.

4.  No options file.  Use ICCONFIG or switches to ICRUN.

5.  When doing a START on a deleted record, previous versions
    would change the current record pointer to point to the
    deleted record before giving the error.  Interactive COBOL 2.xx
    gives the error and will not change the current record pointer.

6.  If during a READ <file> NEXT LOCK all configured locks are
    in use (File Status 9E), Interactive COBOL does not return the
    record.  The current record position is not updated.  (This
    behavior is the same as if a locked record is encountered.)

7.  Network support.

8.  Larger user counts.

9.  Non-DG terminals supported.

10. Virtual console support (multiple terminal sessions on the
    master console under Windows).

11. Development capability (including debugging) is available.

12. If you currently open "$LPT" or "$LPT1" in your COBOL
    program and you really want it directed to a print queue
    then you should build a linkfile that has "$LPT  @PCQ0",
    "$lpt  @pcq0"; and/or "$LPT1 @PCQ1", "$lpt1 @pcq1", etc.
    ... in it.

Differences with AOS/VS COBOL when using the VXCOBOL dialect


The following features are not supported, at this time, under ICOBOL.


1.  Floating Point data (COMP-1 and COMP-2) - check to see if these
    can be converted to decimal items.

2.  DG/DBMS extensions - the compiler will not syntax these statements.

3.  INFOS request groups - The START REQUEST-GROUP, FINISH REQUEST-GROUP,
    MODIFY REQUEST-GROUP, and LOCK RESOURCES statements are syntaxed
    but will generate a feature not implemented error.

4.  ACCEPT FROM/DISPLAY UPON

5.  PROGRAM COLLATING SEQUENCE

6.  COMPUTE with non-numeric target - in some cases you can work around
    this by creating a REDEFINES item that is numeric.

7.  Mon-numeric literals in expressions - change to the equivalent
    numeric value.

8.  Labeled tape support

9.  Calls to the CLI will need to be replaced with appropriate calls
    to the Linux shell if under Linux, or the Windows command processor
    if under Windows.

10. System calls

As of version 5.40, the limited set of AOS compatible CLI and system
calls that were supported were removed from the system due to
incompatibilities with 64-bit systems.  As part of the evaluation you
should create a list of calls you use and determine suitable replacements.


CHANGES
-------

ICOBOL provides for dynamic binding of compiled programs
(.CX files) so there is no linkage step.  One implication of this
is that a CALL can fail under ICOBOL because a program.cx cannot
be found that was not possible under AOS/VS COBOL since the
program had been bound into to executable at bind time.

ICOBOL uses ICISAM files for ALTERNATE KEY indexed files instead
of INFOS files.  Using the "-G s" option to the compiler causes
single-keyed files to use ICISAM.  Files using ICISAM will have
different semantics than when using INFOS.

ICOBOL implements the SEARCH ALL statement as if the COBDRIVER
patch had been installed into the AOS/VS COBOL compiler.  To do
the other syntax you should remove the ALL keyword.

ICOBOL does not allow a different subprogram to OPEN a file that
has been opened exclusively by another program within the same
process.

ICOBOL no longer supports INFOS compatibility.



End of Differences
