Differences between Interactive COBOL 5.xx 14-Nov-2014 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 or 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 minisam+.pr 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 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 paramters. (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 support for mxdb) icopt mgs ic_* 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 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 paramters. 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 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 In general, calls to the CLI and system calls will not be supported, although a few calls will be. As part of the evaluation you should create a list of calls you use. This can be compared with the list of currently supported calls. 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 provides optional support for the U/FOS product from Transoft for INFOS compatibility. End of Differences