COBOL program restrictions

When generating COBOL code using EGL there are some restrictions on what you can do.

If you are generating COBOL code, the following restrictions are in effect:

  • COBOL program names have the following restrictions:
    • For zSeries®, names are limited to 8 characters.
    • For iSeries®, called program names are limited to 8 characters, main program names to 7 characters.
    • For services, names are limited to 7 characters.
    • Names can contain alphanumeric characters plus @, #, and $ only.
  • A CICS® application can only call a common batch application if the following conditions are met:
    • The batch application does not initiate file I/O;
    • The batch application is called using the DYNAMIC and OSLINK linkage option settings;
    • The called application must be generated for batch (not CICS®).
  • Set-values blocks are supported only for setting property values in part definitions and variable declarations and for initializing field values in variable declarations.
  • The validValues property supports only a single range of numbers.
  • For both text and print forms:
    • Do not include the following field types:
      • HEX
      • FLOAT
      • SMALLFLOAT
      • TIME
      • TIMESTAMP
    • If you are using a field as a date, you specify a date-format string or constant in the dateFormat field property, and these restrictions are in effect:
      • If you specify the form field as type DATE, NUM(8) or NUM(10) and intend to present a date in Gregorian format, you must specify the field length as 10 and may use your own 8 or 10-character format (either "yy/MM/dd" or "yyyy/MM/dd", with a separator of your choice and with the years, months, and days in any order); or any of the following date formats:
        • usaDateFormat
        • eurDateFormat
        • isoDateFormat
        • jisDateFormat
        • systemGregorianDateFormat
      • If you specify the form field as type NUM(8) and intend to present a date in Julian format, you must specify the field length as 8 and can use either the Julian format "yy/ddd" or "yyyy/ddd" (with a separator of your choice) or the date format systemJulianDateFormat
      • If you specify the form field as type NUM(6) and intend to present a date in Julian format, you must specify the field length as 6 and can use either the Julian format "yy/ddd" (with a separator of your choice) or the date format systemJulianDateFormat
      • If you specify the form field as type CHAR(8), you must specify the field length as 8 and may use either the Gregorian format "yy/MM/dd" (with a separator of your choice and with the years, months, and days in any order) or either of the following date formats:
        • systemGregorianDateFormat
        • systemJulianDateFormat
      • If you specify the form field as type CHAR(10), you must specify the field length as 10 and may use your own 8 or 10-character format (either "yy/MM/dd" or "yyyy/MM/dd", with a separator of your choice and with the years, months, and days in any order); or any of the following date formats:
        • usaDateFormat
        • eurDateFormat
        • isoDateFormat
        • jisDateFormat
        • systemGregorianDateFormat
        • systemJulianDateFormat
  • The following capabilities are not supported:
    • ArrayDictionaries, Dictionaries, Delegates, report processing, and consoleUI
    • The sysVar.currentException system variable; you cannot identify which exception was thrown most recently in the run unit, although use of the OnException block is supported
    • Multidimensional arrays or the array-specific functions resizeAll and setMaxSizes. However, multidimensional structured field arrays are supported.
    • The primitive types CLOB and BLOB (but literals and the substring syntax are supported)
    • Conversion of text to SMALLFLOAT or FLOAT (but conversion of FLOAT or SMALLFLOAT to text is permitted)
  • The following system functions are not supported:
    • Functions in the system libraries consoleLib, javaLib, and lobLib
    • The following functions in sysLib:
      • callCmd
      • errorLog
      • getCmdLineArg
      • getCmdLineArgCount
      • getMessage
      • getProperty
      • setError
      • setErrorForComponentID
      • setLocale
      • setRemoteUser
      • startCmd
      • startLog
  • The type property in the callLink element of the linkage options part does not support the use of remoteCall on the iSeries® platform

Language Considerations

When you generate COBOL on a Windows machine running in the Turkish locale, no output is created. You can develop EGL applications that run in Turkish by following these steps:
  1. Set your Windows locale to English.
  2. Set file encoding to Turkish by starting the Eclipse IDE with the following VM arguments:
    • VMArgs=-Dfile.encoding=Cp1254
    • VMArgs=-Dibm.system.encoding=Cp1254
    You can set these values in the rationalsdp.ini file found in the product installation directory.