APAR status
Closed as program error.
Error description
Environment: Windows Product name: IBM? Rational? Business Developer Program Version : 7.1.0.1 Description. When running the EGL debugger and stepping through EGL code that defines the usage of a Serial Record with variable length it fa ils an error is produced if that record consists of Unicode vari ables. The usage of a Serial Record with variable length isn?t possible if that record consists of Unicode variables. When using char as variable type inside the serial record, the l ength needs to be the same amount of bytes (or smaller) then the length of the variable. If you use an amount of bytes that is smaller, the program goes into the OnException. In System Variables Syslib.currentException the following error is shown: (any: string) 'EGL0754E The record length item must co ntain a value that splits non-character data at item boundaries. EGL0002I The error occurred in the y4fn99 program processing the with_Error function.' The same error will be output from the generated Java produced b y the example code segment and this issue is not specific to deb ugger functionality it relates to language restriction developme nt have confirmed via: http://publib.boulder.ibm.com/infocenter/ rbdhelp/v7r5m0/index.jsp?topic=/com.ibm.egl.lr.doc/topics/regl_d ata_file_length_item.html. However the actual generated COBOL code will include the variabl e length record which the COBOL implementation supports so the u ser finds he has to run the debugger with only a fixed length re cord and alter their code to generate as a variable length recor d. The user requests that the debugger should work with any stateme nts which are supported by the language which is being generated . Example code: record utfile1 type SerialRecord {fileName = 'utfile1', lengthI tem = ut_Lgh1} // --------------------- 01 txt char(100); end function correct() wdybok.ut_Lgh1 = 4; set utfile1 empty; utfile1.txt = 'Gery'; try add utfile1; onException SysLib.writeStdout('error utfile1') ; end end When using Unicode as variable type, you can only use the same a mount of bytes for the variable length. record utfile2 type SerialRecord {fileName = 'utfile2', lengthI tem = ut_Lgh2} // --------------------- 01 txt unicode(50); end function with_Error(); wdybok.ut_Lgh2 = 4; set utfile2 empty; utfile2.txt = 'Gery'; try add utfile2; onException SysLib.writeStdout('error utfile2') ; end end
Local fix
Problem summary
EGL was throwing an exception during execution of an add statement, if it used a variable-length record, and the record's lengthItem indicated that the data ended in the middle of a field whose type was not char. This happened in the EGL debugger and generated Java programs.
Problem conclusion
The operation is now allowed when the field is a char, hex, or unicode (but a unicode character may not be cut in half or the exception will still be thrown).
Temporary fix
Comments
APAR Information
APAR number
PK77782
Reported component name
RATL BUS DEV
Reported component ID
5724S5000
Reported release
710
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt
Submitted date
2008-12-19
Closed date
2009-03-20
Last modified date
2009-03-20
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fix information
Fixed component name
RATL BUS DEV
Fixed component ID
5724S5000
Applicable component levels
R710 PSN
UP
[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSMQ79","label":"Rational Business Developer"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7.1","Edition":"","Line of Business":{"code":"LOB35","label":"Mainframe SW"}}]
Document Information
Modified date:
20 March 2009