=================================
                                RELEASE NOTES
                                     FOR
                      INFORMIX 4.14.UC1A3 PRODUCT RELEASE
                               DATE: 06/29/95
                      =================================

TABLE OF CONTENTS
I.      OVERVIEW OF RELEASE NOTES
II.     PRODUCTS CONTAINED IN THE 4.14/6.02 TOOLS RELEASE
III.    SPECIAL CONSIDERATIONS FOR DEVELOPERS USING 4.14/6.02 RELEASE SOFTWARE
IV.     BUGS FIXED IN RELEASE 4.14/6.02
V.      KNOWN PRODUCT DEFICIENCIES

I. OVERVIEW OF RELEASE NOTES The purpose of these release notes is to inform the user of changes in products that might affect existing applications. The release notes contain information on changes from previous releases, known problems, and work-arounds. Bug identification numbers are assigned to known problems to assist you in identifying the problems to Technical Support. This document is not all-inclusive but is a tool to assist you in the upgrade process. Please consult Informix product manuals for additional information on product features and for clarification of product behavior. The 6.02 Tools release is basically a 4.14 release that can work with the version 6.00 engines or higher directly (avoiding the overhead of using the Relay Module) and with NLS functionality added. However, the 6.02 tools will not work with any engines earlier than the 6.00 engines. The 4.14 and 6.02 releases have occurred at approximately the same time. We expect that customers who need to work with version 6.00 or higher engines, or who need NLS functionality, will probably skip right over the 4.14 release altogether. For this reason, the 4.14 and 6.02 release notes have been combined for these releases. Customers who have both releases will see the duplications in the release notes. Readers who are upgrading from 4.XX version to 6.XX version should read the release notes contained in TOOLREL_6.0 for details on how the environment change will affect them. Similarly, Readers who are updating from a version earlier than 4.13/6.01 should read the TOOLREL_6.0 or TOOLREL_4.0 notes, as appropriate, for a wealth of information about changes that may affect them. II. PRODUCTS CONTAINED IN THE 4.14/6.02 TOOLS RELEASE The following products are contained in the 4.14/6.02 tools release: Product Name ------------ INFORMIX-4GL INFORMIX-4GL Runtime Facility INFORMIX-4GL/Rapid Development System INFORMIX-4GL/Rapid Development System Runtime Facility INFORMIX-4GL/Interactive Debugger INFORMIX-SQL INFORMIX-SQL Runtime Facility
III. SPECIAL CONSIDERATIONS FOR DEVELOPERS USING 4.14/6.02 RELEASE SOFTWARE NOTATION ======== I4GL refers to (compiled) Informix-4GL. RDS refers to the Informix-4GL Rapid Development System. ID refers to the Informix-4GL Interactive Debugger. 4GL refers to any of the Informix-4GL products. ISQL refers to Informix-SQL. ESQL/C refers to Informix-ESQL/C. I4GL/PE I4GL Programmer's Environment R4GL/PE RDS Programmer's Environment C4GL I4GL Shell script that invokes the compilers. INSTALLATION ============ It is recommended that the 4.14/6.02 Tools are installed in a new directory, along with the appropriate Engines, rather than being installed on top of previous versions of Informix products. Many files have been relocated or renamed. It will be much easier to remove redundant files if the old $INFORMIXDIR directory can be removed completely (after testing the new installation, of course) than if you have to spend time removing old files manually. If you are using the 6.02 Tools with 7.xx server products, the 6.02 Tools should be installed first, followed by the 7.xx server products. COMPATIBILITY ============= The 4.14/6.02 Tools release introduces several new features (itemized below in the "NEW FEATURES" section) which in turn introduce new 4GL syntax. We recommend, therefore, that users recompile and relink all 4GL programs with the new release the next time they make any source changes wherever possible. In very rare scenarios, RDS users will be *required* to either recompile their programs with the new pcode compiler (fglpc) or to utilize a newly-provided mechanism for controlling pcode interpretation; this section describes those situations in detail. Generally speaking, old RDS pcode programs will continue to run properly with a corresponding new RDS runner (4.14 runners for 4.xx-compiled pcode; 6.02 runners for 6.xx-compiled pcode). As with all previous releases, 6.xx- compiled pcode cannot be executed by 4.xx RDS runners, and 4.xx-compiled pcode cannot be executed by 6.xx RDS runners. If the new features itemized in the REPORT/RUN/OPTIONS functionality section under NEW FEATURES are used, new-format pcode is produced by fglpc, and only new 4.14/6.02 runners will be able to execute programs including the new pcode. If these new features are *not* used in a given program, older runners will still be able to execute 4.14/6.02 -compiled pcode, with some significant exceptions for 4.1x users who have migrated from a 4.12 or earlier release of RDS. The RDS 4.12 and 4.13 releases in particular suffered from internal structural changes that introduced some accidental pcode incompatibilities; these in turn forced users to recompile with an exactly-matching version of fglpc. The remainder of this section applies only to the 4.14 release (and subsequent 4.xx releases) of RDS; it describes in detail the compatibility issues relating to 4.1x pcode structural changes with respect to the DISPLAY ... AT, DISPLAY ... TO, and DISPLAY BY NAME. 4.1x users who cannot or choose not to recompile all pcode under 4.14 should read the rest of this section carefully. Scope of Effects of the Pcode Structural Changes ------------------------------------------------ The field that can be optionally added to any DISPLAY BY NAME, DISPLAY TO , or DISPLAY AT was expanded from a short to a long integer effective with the 4.12.UC1 release. This change was fixed in a backward-compatible fashion effective with the 4.12.UD1 release, but it was again expanded to a long integer effective with 4.13. We therefore ended up with two incompatible "families" of pcode formats between versions 4.11 and 4.14: "Family 2" "Family 4" creates/expects 2-byte attribute creates/expects 4-byte attribute Version Pcode Ver Version Pcode Ver -------------------------------- -------------------------------- 1.10.* 6 4.00.* 7 4.10.* 8 4.11.* 8 4.12.UC* 8 4.12.UD* 8 4.12.UE* 8 4.13.UC1 8 4.14.* 414 6.00.* 10 6.01.* 10 6.02.* 602 Note: 6.0x pcode versioning data shown for information only. 6.0x pcode and runners have always been prevented from working with 4.xx pcode and runners for reasons other than attribute size. The symptom that users will see is that pcode compiled with Family 2 compilers is incompatible with Family 4 runners/debuggers, and pcode compiled with Family 4 compilers is incompatible with Family 2 runners/debuggers. The "incompatibility" may show itself in ANY random fashion. Most often, the user will get error -4527 (Undefined opcode in function ) or -4528 (Undefined opcode.), but core dumps and other random behavior can, in theory, result. Before the 4.14 release, the only alternative was for the pcode to be recompiled with a pcode compiler of the other family. The most severe risk is for those cases where the end user is not in close communication with the 4GL programmer, e.g. in the case of a 'packaged' application delivered by a VAR or other developer. In such cases, the end user will have NO means of recompiling, and the developer may well not have an RDS development system of the same family as that of the customer. In the interest of minimizing the burden of recompiling, we have implemented new intelligence in the 4.14 RDS runners (including ID) so that the runners will automatically detect which pcode "family" a given pcode module contains. For the rare cases where this can fail, we are providing a new environment variable that allows the run-time user to coerce the runner to a particular pcode family: INFORMIXFGLPCODESW. Variable: INFORMIXFGLPCODESW Format: Character 1: Switch 1 Type Acceptable values: 'A' - attribute size control Character 2: Switch 1 Value Acceptable values: '0' - automatic mode (DEFAULT) '2' - coerce to 2-byte attribute interpretation '4' - coerce to 4-byte attribute interpretation Character 3: Switch 1 Confirmation (ignored for fgldb debuggers) Acceptable values: '0' - no notification (DEFAULT) '1' - use runner return code Behavior: If INFORMIXFGLPCODESW is unset or valueless, or if the value's first two characters do not fit the pattern "A[024]", the default of A00 (use the intelligent recognition algorithm, no notification) is used. If the first two characters are valid per the above and the third character is not '1' (or there is no third character), the Confirmation feature is left at the default behavior ("no notification" -- e.g., do not alter the fglgo or customized runner return code). Examples: INFORMIXFGLPCODESW=A20; export INFORMIXFGLPCODESW (Bourne/Korn shell) setenv INFORMIXFGLPCODESW A20 (C Shell) result: coerce to Family 2 attribute interpretation (2 bytes) INFORMIXFGLPCODESW=A40; export INFORMIXFGLPCODESW (Bourne/Korn shell) setenv INFORMIXFGLPCODESW A40 (C Shell) result: coerce to Family 4 attribute interpretation (4 bytes) INFORMIXFGLPCODESW=A00; export INFORMIXFGLPCODESW (Bourne/Korn shell) setenv INFORMIXFGLPCODESW A00 (C Shell) result: automatically detect attribute size; do not alter return code behavior INFORMIXFGLPCODESW=A01; export INFORMIXFGLPCODESW (Bourne/Korn shell) setenv INFORMIXFGLPCODESW A01 (C Shell) result: automatically detect attribute size; report back on attribute size(s) found via the runner return code Runner return codes impacts: Normally, the pcode runner (fglgo) has the following possible return values: 0 normal completion (or no pcode file name was provided) 1 immediate errors, such as requested pcode file not found, error reading pcode file, improper/incomplete 4GL-RDS installation; or fatal run-time errors. other explicit value set by programmer using the exit-code variant of the 4GL EXIT PROGRAM statement: EXIT PROGRAM(exit-code). If INFORMIXFGLPCODESW matches the pattern "A?1", the runner will, on normal completion (*except* if the "EXIT PROGRAM(exit-code)" variant of the EXIT PROGRAM statement is executed), set its return value to flag the user with a value designating the attribute family(ies) used for that run: 0 normal completion (or no pcode file name was provided) 1 immediate errors, such as requested pcode file not found, error reading pcode file, improper/incomplete 4GL-RDS installation; or fatal run-time errors. 2 Runner was coerced to family 2 interpretation (e.g. INFORMIXFGLPCODESW=A21) 4 Runner was coerced to family 4 interpretation (e.g. INFORMIXFGLPCODESW=A41) 8 Runner determined that the provided .4go or .4gi file contained only family 2 pcode (explicit notification and automatic mode enabled by INFORMIXFGLPCODESW=A01). 16 Runner determined that the provided .4go or .4gi file contained only family 4 pcode (explicit notification and automatic mode enabled by INFORMIXFGLPCODESW=A01). 24 Runner determined that the provided .4gi file contained *both* family 2 and family 4 pcode (separately compiled .4go files). (Explicit notification and automatic mode had been enabled by INFORMIXFGLPCODESW=A01.) Again, if the 4GL program terminates using "EXIT PROGRAM(value)", that value overrides the notification mechanism regardless of INFORMIXFGLPCODESW setting. If just "EXIT PROGRAM" is used or the program ends naturally at END MAIN, the notification mechanism is not disabled. The RDS debugger (fgldb) has no provision for returning an exit code back to the user; the status returned to the shell is always 0 (or 1 if it fails outright), and the "Program exited" statement in the debugger window does not provide the explicit EXIT PROGRAM(n) value, if it was used. There is at least one known scenario where the runners will not be able to distinguish the pcode family, and it must instead be coerced to family 4: if the very first DISPLAY BY NAME, DISPLAY TO , *or* DISPLAY AT of a .4gl module uses the attribute combination: ATTRIBUTE(LEFT, BLINK, RED) then the intelligent recognition algorithm will fail, and a family 4 module will be mistaken for a family 2 module. For such a case, setting INFORMIXFGLPCODESW to A40 or A41 will coerce the runner to properly interpret the family 4 module (but all modules in the program must be family 4 for this to work properly). NEW FEATURES ============ COLUMN LIMITATION ON ORDER-BYS IN REPORTS HAS BEEN REMOVED ========================================================== This note applies to all character-mode 4GL variants (I-4GL, I-4GL/RDS, 4GL Interactive Debugger). Older versions of 4GL and ISQL products have an 8 column limit on the number of sort columns allowable for a sort in a report. This limit has been removed. There is now no set limit; the only limitation now is system memory constraints. (These are feature request "bugs" 12399 and 37723.) 38489: COMPILING LARGE 4GL PROGRAM GETS WARNING #LINE VALUE TOO LARGE REPEATEDLY ===================================================================== This note applies to I-4GL. ANSI C compilers are required to warn about #line numbers generated from the compilation that are greater than 32767. This can happen in compiled 4gl when the underlying Esql/C compiler works on a large program. The user now has the option to suppress these warnings through the C4GL script using the new option "-nolinenos", which can be set via the C4GLFLAGS environment variable. The default ANSI action, generation of warnings, can also be explicitly set with the option "-linenos". USER CAN NOW HAVE MULTIPLE "GLOBALS" FILES IN THE SAME SOURCE FILE ================================================================== This note applies to I-4GL, I-4GL/RDS, and 4GL Interactive Debugger. Simply, the following code segment: GLOBALS "file1.4gl" GLOBALS "file2.4gl" was previously not allowed; more than one GLOBAL file specification in a 4GL file was not permitted. Now, it is. As an extra feature, files compiled with the 4.14/6.02 compiler can be run by old p-code runners, even if multiple global files have been used (note that this feature is not on the list of features that affect backwards compatibility as described in the COMPATIBILITY section). This is feature request "bug" 31817. NEW REPORT/RUN/OPTION FUNCTIONALITY =================================== This note applies to I-4GL, I-4GL/RDS, and 4GL Interactive Debugger. The following functionality changes related to REPORT statements, RUN statements, and OPTION statements are all related, using some shared new syntax. (These are feature request "bugs" 38729, 26390, and parts of 37714.) NEW REPORT FUNCTIONALITY ------------------------ 1) EXIT REPORT, TERMINATE REPORT There are several new statements allowable in a report, as well as new syntax allowable in existing statements. As part of the fix for B38729, which reported a number of statements that erroneously were permitted, in certain contexts, within report statements, RETURN statements have been disallowed within reports (as they were functionally ambiguous, leaving reports in various stages of being opened or closed depending on which control block used the RETURN). In its place is the new, reliable EXIT REPORT statement, which explicitly exits and closes the report from within the report. An analogous statement to terminate a report while not *in* the report has also been provided: TERMINATE REPORT. A CONTINUE REPORT statement, which would terminate the current control block and resume at the next control block, is a feature under consideration for the next release. syntax: TERMINATE REPORT EXIT REPORT Some of the requested functionality in feature request 37714 has been implemented in this release (still to be implemented: parts of the feature request pertaining to dynamic reconfiguration of the sizes of parts of reports). The START REPORT TO statement and REPORT TO clause in the OUTPUT section of the report have both been extended symmetrically. The clause is now: ::= SCREEN | PRINTER | [ FILE ] | PIPE [ ] ::= | ::= IN { LINE | FORM } MODE ::= The changes are: -- Explicit destination SCREEN (can be used to override a default destination going to somewhere else) -- Optional keyword FILE for file output, which has to be optional to retain backwards compatibility -- Optional mode for PIPE command, with the default being IN FORM MODE for backwards compatibility (again). See also B26390, below. 3) ORDER BY Additionally, the ORDER BY clause in reports is extended marginally so that internal sorting can be specified explicitly by the INTERNAL keyword. In the absence of either, INTERNAL is the default for backwards compatibility. ::= ORDER [ ] BY ::= EXTERNAL | INTERNAL NEW RUN STATEMENT FUNCTIONALITY ------------------------------- Bug 26390, actually a feature request, requested that programs should be able to be run without causing the screen to clear. The screen was only cleared because the RUN code exited from form mode and the termcap entry for the terminal includes a clear screen as part of the terminal reset capability. This code has on occasion been changed so as to exit from form mode automatically and so as to not exit form mode at all, but there have been customer-reported dissatisfactions both ways. This fix now makes the choice optional to provide for the needs of both types of customers. Here is the extended RUN statement: ::= RUN [ ] [ ] ::= | ::= ::= WITHOUT WAITING | RETURNING NEW OPTION STATEMENT FUNCTIONALITY ---------------------------------- The alterations for the new report functionality and the new RUN functionality also suggested the following new functionality for the OPTION statement: ::= [ ... ] | RUN | PIPE SOME NOTES ON FORM VS. LINE MODE -------------------------------- The default behavior for RUN is LINE MODE (ie: the screen will still be cleared by default) because that is backwards compatible with the current behavior. Note that this is the opposite of the default for PIPE! If the statement specifies an explicit screen mode, then that is used. If there is no explicit mode, then the prevailing value from the OPTIONS statement is used. In LINE MODE, the terminal is in the same state (stty options) as when the program was started. This normally means that the terminal input is in cooked (rather than raw) mode, with interrupts enabled, and so on. In FORM MODE, the terminal is in raw mode, so each character is available to the program as it is read, rather than becoming available when the newline character is typed (cooked mode). By default, I4GL programs operate in LINE mode, but so many statements take it into FORM mode -- including the OPTIONS statements which set keys, DISPLAY AT, OPEN WINDOW, DISPLAY FORM, etc. -- that most I4GL programs are actually in FORM most of the time. When the prevailing RUN option specifies FORM MODE, the program will remain in form mode if it is form mode, but it will not enter form mode if it is currently in line mode. When the prevailing RUN option specifies LINE MODE, the program will remain in line mode if it is in line mode, and it will be switched to line mode if it is currently in form mode. The same comments apply to the PIPE option. NEW FEATURE: FOREACH STATEMENT NOW SUPPORTS 'USING' CLAUSE ========================================================== This change affects all character-mode 4GL variants (I-4GL, I-4GL/RDS, 4GL Interactive Debugger). The FOREACH statement now supports an optional USING clause to provide the full flexibility of the OPEN statement to the FOREACH interface. The USING clause is required when the cursor is associated with a prepared SELECT statement that includes '?' placeholders; it is used to specify values to replace those '?' placeholders when opening the cursor. In prior releases, FOREACH could not be used with such cursors. For more details on the cursor USING clause, see your server documentation sections pertaining to the OPEN and PREPARE statements. This is feature request "bug" 37711. Usage Syntax: ------------- FOREACH [ USING ] [ INTO ] Both the USING clause and INTO clauses are optional. If both are used, the USING clause must precede the INTO clause. As with OPEN, the number and data types of placeholders in the prepared SELECT statement must correspond exactly to the number and data types of the values given in the USING variable list. BUG FIXES OF SPECIAL NOTE ========================= 30864: 6.00.UE1 TOOLS DO NOT CONSISTENTLY USE GGETENV() ======================================================= This note applies to all character-mode 4GL variants (I-4GL, I-4GL/RDS, 4GL Interactive Debugger). In 6.02 Tools, a bug that caused the product to fail to read the $INFORMIXDIR/etc/informix.rc and ~/.informix environment variable files has been removed. (This functionality is not available in 4.XX tools). Special Note: The current functionality of searches for the .informix file is more limited than suggested in the manual. The .informix file will only be found if it is in the user's home directory as specified in the password file, *not* as specified by a $HOME environment variable. Both the informix.rc and the .informix file can only be used for INFORMIX environment variables, and only a subset of those at that. 36970: MENU COMMAND KEY CONFLICTS AND NEW ERROR NUMBER -1176 ================================================================ This change affects all character-mode 4GL variants (I-4GL, I-4GL/RDS, 4GL Interactive Debugger). In previous releases, the run-time MENU code would give inconsistent visual results and/or hung menus if a conflict existed between multiple COMMAND KEY clauses or between a COMMAND KEY clause and a COMMAND clause. Since the statements in a COMMAND KEY code structure are activated immediately by a single keystroke (i.e., without waiting for RETURN to be struck afterward), no given key definition used in a COMMAND KEY clause may logically appear more than once in a particular menu. However, nothing in the run-time code checked for such a programming error, and confusing prompts could be issued to the user if such an error existed in a menu. The following examples illustrates the improper coding methods and typical run-time results. First, a conflict between COMMAND KEY clauses: MENU "main 1" COMMAND KEY (F3, "a") MESSAGE "This is F3 or only" SLEEP 1 COMMAND KEY (F3, CONTROL-F) MESSAGE "This is F3 or CONTROL-F" SLEEP 1 If the F3 key was struck while this menu was active, the program would enter an error state from which the user could not recover. A submenu of the style used to resolve collisions on COMMAND clauses (as opposed to COMMAND KEY clauses) appeared inappropriately with two "invisible" prompts, thus: Select: \072 (invisible) (invisible) It always produced two "(invisible)" prompts, regardless of how many keys were acceptable to the COMMAND KEY clause. Any subsequent keystroke only yielded the terminal bell, and the program had to be killed with a signal (e.g., the interrupt or kill key). If instead there is a collision between a COMMAND clause and a COMMAND KEY clause (where the first character of the COMMAND string, whether the string is a constant or a variable, collided with a printable character recognized by a COMMAND KEY clause), e.g.: MENU "main 1" COMMAND KEY (F3, "a", F22, F23) MESSAGE "This is F3, <a>, F22, or F23 only" SLEEP 1 COMMAND KEY (F4, "b") MESSAGE "This is F4 or <b> only" SLEEP 1 COMMAND "bark" "collides with command key (f4, b)" MESSAGE "This collides with command key (f4, b)" SLEEP 1 ... and the colliding keystroke occurred ("b" in this case), a submenu appeared with one side showing "invisible". If the proper second letter was pressed ("a" in this case), the menu proceeded normally; any other keystroke just activated the terminal bell. Such collisions are now detected by the run-time menu library. If such a conflict occurs, error -1176 ("A COMMAND KEY value occurs elsewhere in the current menu.") will be returned, and the program terminates. Implications for Users Upgrading From Earlier Releases ------------------------------------------------------ If a user encounters error -1176, it means that a COMMAND KEY conflict as described above already exists in that menu. The offending COMMAND KEY clause(s) need to be revised to remove the conflict. 38729: INPUT STATEMENTS ARE NOT SYSTEMATICALLY DISALLOWED IN REPORTS ==================================================================== This note applies to I-4GL, I-4GL/RDS, and 4GL Interactive Debugger. Certain types of statements were not intended to be allowed within 4GL reports, but have been syntactically allowable, until now. These include INPUT, INPUT ARRAY, PROMPT, MENU, CONSTRUCT, DISPLAY ARRAY, and RETURN. Within 4GL reports, these statements will now get syntax errors. 39065: CORRECTION OF fgl_getenv() RETURN VALUE FOR VALUELESS ENV VARIABLES ========================================================================== This note applies to all character-mode 4GL variants (I-4GL, I-4GL/RDS, 4GL Interactive Debugger). The documented behavior for the fgl_getenv() function has always been to return a blank string if the specified environment variable is set but has no value. In Versions 4.12.UC1 and 6.00.UC1, a bug was introduced that caused fgl_getenv() to return NULL for environment variables that are set only and have no associated values. This has been corrected effective with the 4.14 and 6.02 releases of 4GL. For example, if the following program is used: MAIN DEFINE xc CHAR(10) LET xc = fgl_getenv("ISEMPTY") IF xc IS NULL THEN DISPLAY "ISEMPTY is null" ELSE DISPLAY "ISEMPTY is <", xc clipped, ">" END IF LET xc = fgl_getenv("ISNOTDEF") IF xc IS NULL THEN DISPLAY "ISNOTDEF is null" ELSE DISPLAY "ISNOTDEF is <", xc clipped, ">" END IF END MAIN and is run with ISEMPTY set (but valueless) and ISNOTDEF not set at all: $ unset ISNOTDEF $ ISEMPTY= $ export ISEMPTY $ fglenvtest.4ge the following is displayed if 4GL Version 4.12, 4.13, 6.00, or 6.01 is used: ISEMPTY is null ISNOTDEF is null but the following is displayed instead if 4GL Version 4.10, 4.11, 4.14, or 6.02 is used: ISEMPTY is < > ISNOTDEF is null
IV.
BUGS FIXED IN RELEASE 4.14/6.02 The following bugs were fixed in I4GL Bug No. Effect Short Description ====================================================================== 8129 WKARND DEMO PROGRAM WIND2.4GL YIELDS ERROR WHEN DETAIL IS OPTIONED FIRST 14363 RESULT AFTER FIELD, GET_FLDBUF PROCESSING WRONG IF DUPLICATE FIELD NAMES 12292 WKARND NUM_ARGS() DOES NOT BRING CORRECT NUMBER ON I4GL IF USING ARGC 12399 MALFUN CANNOT USE MORE THAN 8 COLUMNS IN ORDER BY 12870 WKARND CHOOSING MENU, FIRST CHARACTER IS NOT CASE SENSITIVE, OTHERS ARE 13265 RESULT DBMONEY, MONEY DATATYPE HANDLED DIFFERENT 4.00 / 4.10 14147 ERRMSG FORM WITH INPUT ARRAY ALLOWS USER TO PASS FIELD WITH NOT NULL ATTRIBUTE 17758 WKARND COMMAND NOT SHOWING WITH SHOW OPTIONS CLAUSE IN MENU STATEMENT 21663 RESULT MONEY VALUES GET ROUNDED IF ORDER BY IS USED IN A REPORT 24877 MALFUN FIELD_TOUCHED DOES NOT TEST TRUE AFTER A BEFORE ROW CLAUSE HAS DISPLAYED DATA IN THE FIELD - WORKS CORRECTLY IN 4GL WINDOWS - SEE BUG 21236 25573 MALFUN TODAY KEYWORD USED IN INCLUDE ATTRIBUTE GIVES A GPF IN FGLVCL.DLL WITH 4GL FOR WINDOWS AND A CORE DUMP UNDER UNIX 26390 NA FEATURE REQUEST: TO CHANGE THE FUNCTIONALITY FOR THE RUN COMMAND SO THAT IT DOES NOT CLEAR SCREEN ON RUN, BUT 4GL PROGRAMMER WILL HAVE THE OPTION. 26437 MALFUN YOU CANNOT ENTER THE CURRENCY SYMBOL FOR MONEY FIELDS IN SCREENS IF DBMONEY OR DBFORMAT DEFINES THE CURRENCY SYMBOL WITH LEADING BLANKS: '. $' 26692 COSM C4GL CODE COMPLAINS WHEN HELP KEY MAPPED TO NON-EXISTENT KEY; RDS DOESN'T 26858 RESULT DBFORMATS WITH LONG LEADING MONETARY SYMBOLS (IE. HONG KONG$) CAUSES THE NUMERICAL VALUE TO BE PUSHED OUT OF THE FIELD (NOT PRINTED) 30043 MALFUN FIRST PRINT STATEMENT IN PAGE HEADER IS DIFFERENT IN I4GL AND R4GL 30864 MALFUN 6.00.UE1 TOOLS DO NOT CONSISTENTLY USE GGETENV() 31560 MALFUN IN AN INPUT ARRAY WITH VARCHAR DATA TYPES DEFINED AS NOT NULL, THE DOWN ARROW KEY IS FUNCTIONAL BEFORE DATA IS ENTERED INTO THE NOT NULL FIELDS 31817 MALFUN ALLOW MULTIPLE GLOBALS FILES TO BE USED IN A SINGLE 4GL SOURCE FILE 32032 MALFUN UPDATE TABLE SET COL1=(SUB-SELECT), COL2 = ... GIVES ERROR -522 34725 MALFUN CONSTRUCT WITH NUMERIC FIELD, PUT E IN FIELD, HIT SPACE BAR TO ERASE DATA IN FIELD, HIT ENTER AND ESCAPE, 1213 ERROR ON FIRST FETCH, ONLY WITH E 34783 MALFUN CONSTRUCT GOES BADLY AWRY IF YOU HAVE AN ERROR IN THE RHS OF A SET OF ALTERNATIVE NUMBERS 35290 CORE MEMORY FAULT CORE DUMP WHEN A CALLED FUNCTION RETURNS A CHAR STRING CONTAINING A NUMBER FORMATTED USING A CLIPPED VARIABLE 35513 MALFUN AN UNLOAD STATEMENT WITH A LONG SELECT STATEMENT CAUSES A PHASE 2 COMPILATION ERROR 35740 MALFUN WHEN COMPILING WITH C4GL 6.00.XXX REQUIRES C PROGRAMS TO BE IN SAME DIRECTORY AS WHERE THE COMMAND WAS STARTED FROM 35842 MALFUN USING ON KEY IN A FIELD VALIDATED BY INCLUDE CAN LEAD TO APPARENTLY VALID DATA BEING REJECTED 35966 MALFUN SQL STATEMENT 201 SYNTAX ERROR OCCURS WHEN USING >,<, != WITH NO VALUE FOR NUMERIC FIELD IN A CONSTRUCT (QBE) WHEN HITTING ESC 35974 MALFUN USING ON KEY CLAUSE OF INPUT BY NAME WITH DISPLAY BY NAME TO A FORMONLY FIELD IS NOT VISIBLE UNTIL THE INPUT BY NAME STRUCTURE IS EXITED 36037 MALFUN ERROR MESSAGE CLEARS BORDER WINDOW AND DOES NOT RESTORE IT IN 4GL 36364 WKARND NESTED INPUT CAUSES FIRST WITHOUT DEFAULTS VALUES TO DISAPPEAR, OR DISPLAY GARBAGE 36404 MEM MEMORY LEAK IN FELIB/FELOAD.EC 36413 MEM MEMORY LEAK WHEN FORM HAS CONDITIONAL ATTRIBUTES (EG COLOR) 36609 MALFUN I4GL 6.00 PRODUCES DIFFERENT RESULTS FROM I4GL 4.1X IN STRING MANIPULATION 36936 MALFUN 4.12 GENERATES 7 SPACES FOR FIELD TYPE MONEY(6,2) WHEN YOU HAVE DBMONEY SET TO PERIOD. I.E. SETENV DBMONEY . 36937 ERRMSG I4GL EMITS "-837: THERE IS NOT ENOUGH MEMORY AVAILABLE." ERROR MESSAGE ON A DEC-ALPHA MACHINE. 36970 NA MENU: COMMAND KEY COLLISIONS RESULT IN MENU LOCKUP (NO KEYSTROKE WORKS); "(INVISIBLE)" SHOWS UP IN SUBMENU PROMPT 37060 CORE OPEN WINDOW WITH FORM IN FOR LOOP CORE DUMPS ON 3RD TIME THROUGH 37257 MALFUN USING THE RUN COMMAND CAUSES THE WINDOW FOCUS TO BE LOST AFTER THE COMMAND COMPLETES AND RETURNS TO CALLING PROGRAM 37328 MALFUN C4GL GENERATES INCORRECT CODE WHEN EXPANDING WILDCARD FOR COLUMN LIST AFTER PROCESSING REFERENCE TO REMOTE TABLE 37430 MAINT WHEN PARENT PROCESS DIES THE CHILD PROCESS ACCUMULATES CPU TIME; IT HANGS ON A READ() SYSTEM CALL WHICH RETURNS 0 BYTES (TERMINAL DIES FOR EXAMPLE) 37430 MALFUN WHEN PARENT PROCESS DIES THE CHILD PROCESS ACCUMULATES CPU TIME; IT HANGS ON A READ() SYSTEM CALL WHICH RETURNS 0 BYTES (TERMINAL DIES FOR EXAMPLE) 37433 CORE A "CASE" STATEMENT IN "BEFORE MENU" CLAUSE CAN CAUSE CORE DUMP TO OCCUR WHILE IN "BEFORE MENU" OR LATER IN APPLICATION 37453 MALFUN DEFER INTERRUPT IN CONSTRUCT NOT WORKING CORRECTLY. DUPLICATE OF BUG 13345 EXCEPT REAPPEARED IN 4GL 4.12.UE1. 37692 MALFUN ERROR -1114 RETURNING TO INPUT WINDOW FROM NESTED INPUT WINDOW IF NESTED WINDOW CALLED FROM AFTER INPUT SECTION 37711 WKARND FOREACH DOES NOT ALLOW A USING CLAUSE BUT SHOULD 37855 MALFUN "PRINT PRICE USING FMT CLIPPED" DOES NOT CLIP, PRINTS GARBAGE, OR DUMPS A CORE 37919 WKARND COMPATIBILITY FLAGS NOT SET ON IBM/AIX 38157 CORE USING LOAD COMMAND IN 4GL ON A TABLE WITH BLOBS AND THE LOADING A TABLE WITHOUT BLOBS CAN CAUSE SEGV CORE DUMP. PURIFY REPORTS FUMS. 38316 WKARND IF A CLEAR SCREEN IS USED JUST BEFORE A START REPORT TO PIPE "PG", THE REPORT WILL FAIL WITH A 1114 ERROR 38439 MALFUN CHARACTER VARIABLE IS CORRUPTED IF USED IN A SIMPLE TEST WITH A DECIMAL VARIABLE AND DBMONEY SET TO COMMA 38489 MALFUN COMPILING LARGE 4GL PROGRAM GETS WARNING #LINE VALUE TOO LARGE REPEATEDLY 38490 MALFUN ERROR IN FIELD IN FIRST INPUT ARRAY AFTER RETURNING FROM SECOND INPUT ARRAY. DATA IN FIELD EXISTS AND IS VALID. 38505 MALFUN NOT NULL FIELD WILL NOT ALLOW YOU TO LEAVE FIELD ONCE ENTER IS PRESSED ALTHOUGH NO DATA WAS ENTERED. 38533 MALFUN WITHOUT DEFAULTS IGNORED IN INPUT STATEMENT WHEN FORM USES 'WITHOUT NULL INPUT' 38710 NA CONSTRUCT: INVALID VALUES ENTERED AS PART OF AN "OR"ED QUERY FIELD ENTRY AREN'T CAUGHT UNLESS THEY ARE THE LAST VALUE IN THE EXPRESSION 38729 MALFUN INPUT STATEMENTS ARE NOT SYSTEMATICALLY DISALLOWED IN REPORTS 38766 MALFUN I4GL, RDS, ID AND ISQL DO NOT DISTRIBUTE THE FILE MSG/ITOXMSG.PAM -- THE OLD DESCRIPTION READ: RDS V 6 RETURNS -461 REGARDLESS OF ERROR 38824 MALFUN IF A VALUE IS PLACED INTO AN INPUT ARRAY VIA AN ON-KEY AND IT IS THE LAST ROW ENTERED, ON A SCROLL-UP, THE VALUE WILL DISAPPEAR. 38842 COSM PCODE AND CCODE JUSTIFY (TITLE) FOR FORMAT EVERY ROW (COLUMNAR) DIFFERENTLY FOR INTERVALS AND DATETIMES (DATES ARE LEFT JUSTIFIED BY BOTH) 39060 MALFUN DUPLICATES FIELD INFO IN INPUT ARRAY AFTER RETURNING FROM A POP UP WINDOW AND HITTING THE SPACE BAR 39065 RESULT FGL_GETENV() NOT PROPERLY RETURNING SPACES FOR VARIABLES WHICH ARE SET IN ENVIRONMENT BUT LACK A VALUE 39312 CORE ISQL/I4GL/R4GL/FGLDB CORE DUMPS WHEN INFORMIXTERM=TERMINFO AND TERM=BOGUS 39482 MALFUN WHEN THERE IS A .4GE THAT IS LARGER THAN 2 MILLION BYTES YOUR APPLICATION WILL NOT RUN The following bugs were fixed in ID Bug No. Effect Short Description ====================================================================== 10599 WKARND DBDEMO SCRIPT DOESNT COMPILE ALL COPIED FORMS 39254 CORE COREDUMP IN FGLDB AFTER ENTERING: "VARIABLE I" FOLLOWED BY "VARIABLE GLOBALS" 39494 MALFUN FGLDB DOES NOT STOP ON START REPORT OR FINISH REPORT STATEMENTS The following bugs were fixed in ISQL Bug No. Effect Short Description ====================================================================== 3447 COSM SFORMBLD ERROR 2014 MESSAGE USES BAD GRAMMAR. 9779 COSM ADD INTERVAL QUALIFIER SCREEN GARBLED UP AFTER "FIRST" IS CHOSEN 10378 MALFUN PERFORM HANGS OR ERR "IDENTIFIER TOO LONG" WHEN MANY LOOKUPS USED 11772 MALFUN "IF MATCHES " GIVES -8018 COMPILE ERROR IN ACE 12637 MALFUN TABLE/INFO/COLUMNS DOES NOT DISPLAY NULL/NOT NULL FOR VARCHARS 12644 MALFUN SPERFORM DOESN'T PASS FILE NAME TO VI ON 14TH+ BLOB FIELD 13572 WKARND -8103 ON AFTER GROUP OF WHEN ORDER EXTERNAL ON ASCII FILE IN ACE 18276 MALFUN ISQL CORE DUMPS WHEN USER ACCESSES PRIVS W/O PRIVS ON THAT TABLE 19471 MALFUN -2857 TRYING TO USE MORE THAN ONE VERIFY COMPOSITE JOIN IN FORM 30572 MALFUN STATEMENT INFO TABLES SHOWS ONLY 20 CHARACTERS 34902 MALFUN GARBAGE IN RING MENU OF SQL AND CORE DUMP WITH TABLE-ALTER-ADD-INTERVAL 34971 COSM E3/E3ERRS.C EMITS ASCII NUL '\0' UNNECESSARILY 35013 MALFUN USING AN ACE REPORT HAVING A READ/ASCII LOADING DATA FROM A FILE WHICH HAS A DATETIME AS ONE OF ITS COLUMNS, GET ERROR 201 UPON SACEGO 36221 CORE SACEGO: REPORT RUNNER CORE DUMPS ON SPACES STATEMENT WHEN EVALUATES TO A NEGATIVE NUMBER 36520 CORRPT THE USE OF CONTROL-P PLACES ERRONEOUS DATA INTO FLOAT FIELD OF A FORM. 36801 CORE ISQL CORE DUMPS WHEN WE ENTER CONTROL-P IN AN A SMALL FLOAT FIELD 37605 WKARND "ISQL < " WITH LONG PATH: -802 OR CORE DUMP The following bugs were fixed in RDS Bug No. Effect Short Description ====================================================================== 7525 WKARND MENU OPTIONS WITH THE SAME NAME CANNOT BE RESOLVED 35280 MALFUN BAD FLOAT CONVERSION IN PROMPT AND INPUT STATEMENTS WITH NLS (RDS ONLY) 35807 MALFUN GOT -4339 ERROR ON 4GL REPORT WITH MANY PRINT USING STMTS AFTER UPGRADING FROM 4.11 TO 4.12 36586 MALFUN DECLARE CURSOR FOR NON EXISTENT TABLE GIVES ERROR 206 / 111 WHEN IT SHOULD NOT DO IT UNTIL OPEN CURSOR 36613 MALFUN CURSOR NOT BEING CLOSED AFTER SELECT STATEMENT CAUSING 242/106 ERRORS IF DROP STATEMENT FOLLOWS SELECT STATEMENT. 37648 CORE REPORT CORE DUMPS IN REALFREE() 39478 MALFUN RUNNING TWO REPORTS SIMULTANEOUSLY AND TERMINATING ONE CAN TERMINATE THE WRONG ONE 39492 CORE P-CODE RUNNERS CRASH WHEN RUNNING QA TEST RPT010A The following bugs were fixed in ROFFERR Bug No. Effect Short Description ====================================================================== 11741 WKARND ROFFERR PRODUCES BAD FORMATTING FOR ERROR -103 The following bug is a port specific bug, to be addressed at port time Bug No. Effect Short Description ====================================================================== 39348 MALFUN QUERY/NEXT THROUGH A FORM RETURNS A 408/3450 ERROR AND ABORTS ISQL SESSION ON SCO UNIX
V. KNOWN PRODUCT DEFICIENCIES The following is a listing of bugs we consider most important to report in these release notes. This is not an exhaustive list. It is taken from the priority listing as determined by Informix Customer Services, but is in bug number order, not priority order. The descriptions are taken largely unedited from our Customer Services database. The following bugs exist in 4GL: Bug No. Effect Short Description ------- ------ ----------------- 11223 MALFUN HP 700/XX AND 239X TERMINALS DO NOT WORK WITH GRAPHICS OR ATTR The HP terminals in the same series with the 700/92 and 2392 work such that it is impossible to write a termcap entry that will allow graphics and attributes to be used. The problems with using these terminals with our products stems from the differences in the functionality of the terminal. The differences in their operation that seem to cause the problems follow: 1. Once an attribute is turned on it applies to all characters to the end of the current line. 2. Any subsequent character printed in a terminal position with an attribute applied to it will have this attribute. A normal attribute must be specified. We do not specify normal. 3. Once the alternate character set it invoked it remains until the end of the line. A clear to end of line will negate the attribute. We often send the enter graphics sequence immediately followed by the clear to end of line. 4. The alternate character sequence is invoked in two separate control sequences, one to shift into the alternate character set and another to actually start it. This can not be adequately accommodated in the gs and ge entries. 12881 RESULT DATETIME FIELD FILLED AS 00:00 AS DEFAULT INSTEAD OF CURRENT IN 4GL The date2 field in the test prg is filled as 00:00 as the default. It should fill in the current hour and minute. Problem is similar to bug #5676 in isql. 14380 MALFUN ESCAPING OUT OF AN INPUT ARRAY WITH AN AFTER ROW NEXTFIELD EXITS The 4.1 manual for 4gl states: if the input array terminates by an interrupt, 4gl does not execute the after row clause. (p.S-143) if a next field statement appears in the after row clause, 4gl places the cursor in the specified field and returns control to the user. this does not happen. When the user presses escape the after row clause is executed; however, when it reaches the nextfield it does not return control to the user. It exits the program. 36291 MALFUN IF BACKEND DIES 4GE PROGRAM GETS SIGPIPE AND ABORTS, INSTEAD OF -457 OR -408, ON FURTHER SQL STMTS When backend dies (for example due to a network failure when it was used to conect to a remote DB), 4ge frontend gets SIGCLD (death of child) and ignores it. Further SQL statements sent by the frontend try to write to a broken pipe, geting SIGPIPE, which is caught and generates a call to _exit(1). 37649 MALFUN WHEN USING PICTURE ATTRIBUTE IN FORM, DATA DISAPPEARS WHEN MOVING CURSOR TO DIFFERENT FIELDS Using the PICTURE attribute in a form causes the data to disappear when moving the cursor to different fields. 38236 MALFUN GENERAL LIST OF PROBLEMS TO BE FIXED IN 4.14/6.02 SOURCE CODE This bug supersedes B28678. fgi/fgiesqlc.ec: Either ensure that the MEMORY_NEEDED_AND_AVAILABLE() code works, or (better) remove it. i4glc2/fglc2 must generate accurate prototyped code. Ideally, all code should have prototypes as an option. All prototyped code must have a header which defines the prototype. All uses of the function must be in scope of a prototype. Must remove all MAXIDSIZE problems. Must fix the mess in ecc (fglc2). The only external differences between the nmenu and menu systems are (1) the data structures defined in menu.h/nmenu.h and (2) in the interface to getcode(). This function should be renamed for the new menu handling stuff, and an interface macro defined for the old one. The header menu.h should simply #include nmenu.h. The only code which uses the new style of interface to getcode() is one call in efm/nefrmenu.c and another one call in efm/nhelp.c! This means that with only a minimum of effort, we can eliminate the color directory and the distinction between libforms.a and libnforms.a, and the distinction between (libcolor.a and libncolor.a, librdsterm.a and libnrdsterm.a), reducing our inventory of libraries by a significant amount. libnforms.a is used in the c4gl script. It is interesting to note that efm/nefrhelp.c is used in place of rdsterm/mhelp.c and rdsterm/mhelp2.c. The interface which is shared is two functions: rhtext() and rhelp(). With a little care, we could eliminate any problems with duplicated names (necessary for shared libraries to work satisfactorily). Ultimately, it would be nice if each of the libraries in the product could be made shared in its own right. 38618 MALFUN ASSIGNMENT OF RECORD IN AFTER FIELD CAUSES VALUE TO BE DISPLAYED Using INPUT (either BY NAME or FROM), in the AFTER FIELD clause for field2, the value in field2 is conditionally assigned the value from field1, but the result is not displayed to field2. After hitting ENTER to pass field2, the value of field1 is displayed on field2. 39125 MALFUN DECIMAL EXPRESSION WITH INTEGER DATA GIVES INTEGER RESULTS WHEN ASSIGNED TO DECIMAL VARIABLE An expression such as alpha * (10**beta), where alpha and beta are both decimals assigned integer values, will return an integer instead of a decimal. 39476 MALFUN FIELD REINITIALIZED AFTER ON KEY STATEMENT WHEN DOING A INPUT BY NAME If an ON-KEY action is done (to see remarks, for instance) after input has already begun in a field, the characters entered will be gone after the ON-KEY action is finished. The user will have to re-enter the characters. 39482 MALFUN WHEN THERE IS A .4GE THAT IS LARGER THAN 2 MILLION BYTES YOUR APPLICATION WILL NOT RUN 39521 MALFUN C4GL -C GIVES UNDEFINED LABEL ERROR WITH 6.01.UD1 I4GL BUT NOT WITH 6.00.UE2 c4gl -c xx.4gl gives undefined label error using 6.01.UD1 c4gl. Same code compiles okay with 6.00.UE2. 39559 MALFUN ERROR -4502 DURING EXECUTION OF 4GL APPLICATION WITH R4G/RDS 4.12.UE3 Running a 4GL rds application with recursive functions you can see an enormous performance degradation, and after a long time the error 4502 - program has run out of runtime data space memory 39579 MALFUN CUSTOM RUNNER DISAPPEARS FROM PROGRAM DESIGN MENU UPON EXITING R4GL 6.01.UD2. When you use r4gl and then go to program select new, and place an existing program in there for Program_Runner and put the info. in there for runner or debugger and get out of r4gl and get back in the program will list, but the names and paths will not. 39581 MALFUN IF MORE DATA IS ENTERED INTO A FIELD VIA A FORM THAN IS ALLOCATED FOR THE FIELD, AFTER PASSING A FIELD W/ FIELD CLAUSE ON IT, THE DATA IS TRUNCATED If more data is entered into a field via a form than is allocated for that field, after arrowing past a field with an after/before field clause on it and then back to the original field, the data in the overflow buffer gets truncated. 39847 MALFUN GET_FLDBUF RETURNS NULL VALUE FOR FIELD WITH WORDWRAP IF CURSOR NOT MOVED TO THIS WORDWRAP FIELD AT LEAST ONCE Suppose fld1 is a field declared with wordwrap attribute in a form. If in an input without defaults you try to get the value of fld1 using get_fldbuf(), you will get a NULL if cursor has not been moved at least once to the fld1 field. 39848 MALFUN GET_FLDBUF ON A FORM FIELD THAT HAS BEEN CLEARED RETURNS THE OLD VALUE THAT WAS IN THE FIELD BEFORE THE CLEAR OCCURED Suppose field0 is a field in a form. If you issue a CLEAR for that field, the value disappears. If you perform a get_fldbuf() on that field after the CLEAR, it will return the old value (before clear). It should return nothing since field has been cleared. Worked in 4.12.UE1 39849 MALFUN C4GL FAILS TO DETECT SYNTAX ERROR AFTER "OPEN WINDOW" OR "OPEN FORM" IF NO ATTRIBUTE CLAUSE IS SPECIFIED. THIS LEADS TO UNPREDICATBLE RESULTS If you do an OPEN WINDOW or OPEN FORM without attribute section, c4gl will fail to catch syntax error following. This produces unpredictable results for the compiled program. 39856 MALFUN OPEN A WINDOW USING A FORM, THEN OPEN ANOTHER WINDOW. UPON CLOSING THE SECOND WINDOW, USER CANNOT MOVE OUT OF THE FIELD. Open a window using a form. Now open another window with a form. Then close the secondary window. User is now stuck in the field from which the second window was opened. If there is an explicit exit input, then all works fine. 39865 MALFUN CTRL-D DOES NOT WORK IN FIELDS WITH PICTURE CLAUSES Originally entered as FR, but manual states that this should work I-4GL Reference manual Volume 2 Version 6 page 5-49 Editing Keys During Data Entry Informix-4GL supports CONTROL-D and CONTROL-X in fields that spec the PICTURE attribute : * CONTROL-D deletes characteres from the current cursor position of the field * CONTROL-X deletes the current character. 39868 MEM GETTING -4339 ERROR : 4GL HAS RUN OUT OF DATA SPACE MEMORY WHEN CALL ING A 4GL FUNCTION FROM A C PROGRAM. Possible memory leak. The C program uses the 4gl popquote() function and returns a -4339 error. The original test case used popstring() in place of popquote() and gave the same error. 39870 MALFUN FGL_START, FGL_END CALLING ANY PCODE FILE DOESN'T CLOSE FILE. REPEATING THIS PROGRAM WILL EVENTUALLY RUN OUT OF OPEN FILES. this c program will eventually die: int main() { myfile = fopen("nftest.c","r"); printf("\r\nfile no = %d\r\n", fileno(myfile)); fclose(myfile); fgl_start("nftest.4go"); fgl_end(); exec1("./nftest","nftest",(char *)NULL): } calling this .4gl program: main define i integer let i = 0 end main 39958 MALFUN W/NON ANSI DATABASE GETTING ERROR -259 WHEN CLOSING CURSOR Prepare, Declare cursor, Open cursor, Declare cursor, Close cursor gets this error with -259 -259: "Cursor not open." The following bugs exist in the RDS: Bug No. Effect Short Description ------- ------ ----------------- 08181 MALFUN GET_FLDBUF(MONEY) GETS CONVERSION ERROR USED IN "CALL" SYNTAX When get_fldbuf() is used in "call" syntax and the data type is money, the program aborts with a conversion error. This may be similar to bug number 8168 (4GL) where the program doesn't abort but always returns 0.00. 09514 WKARND HIDDEN OPTIONS DONT PERSIST AFTER RECURSION Hidden options are not persistent (wrongly). Hide a menu option and then recurse, show that option, and then return. Original option is not hidden any more. c4gl also shows the same behavior. 12845 MALFUN -254 AT RUNTIME WHEN DOING "UPDATE TAB1 SET (COL1, COL2) = REC.*" The syntax "UPDATE table SET (col1, col2) = rec.*" is valid in I4GL but returns error -254 in RDS at runtime. The 5.0 Guide to SQL Reference Manual pages 7-317 to 318 indicate this is valid; however RDS requires, "UPDATE table SET (col1, col2) = (rec.*)". 14169 ERRMSG WITH RDS ERROR 4373 USING THROUGH TO REFER TO RECORD ELEMENTS When using RDS and using the keyword THROUGH (English spelling) instead of THRU (American spelling) to refer to elements of a record or columns of a table, an error -4373 is generated at compile time. This compiles ok with I4GL. 14198 MALFUN DIFFERENT DATABASES USED IN DIFFERENT 4GL MODULES GIVES -4304 WITH FGLPC If different 4gl modules use different databases and DEFINE LIKE statements, the fglpc compilation gets -4304. It does compile with I-4GL. 32740 CORE NESTED IF STATEMENTS WITH ERRONEOUS PROMPT STATEMENTS CAUSE FGLPC TO DUMP CORE The code below causes FGLPC to dump core. C4GL detects the syntax error on the PROMPT statements. The code below is minimal. The conditions do not matter. The MESSAGEs are do-nothing statements. All the IF, ELSE and PROMPT statements are necessary to produce the core dump. FUNCTION add_st() IF (STATUS = NOTFOUND )THEN IF (STATUS = NOTFOUND )THEN PROMPT "Press to continue" ELSE IF (STATUS = NOTFOUND) THEN PROMPT "Press to continue" ELSE MESSAGE "Hi" END IF END IF ELSE MESSAGE "Hi" END IF END FUNCTION The following bugs exist in the DEBUGGER: Bug No. Effect Short Description ------- ------ ----------------- 09727 MALFUN BREAK/TRACE FAIL ON ARRAY[I].RECORD IF RECORD INITIALIZED WITH .* FORMAT, "FETCH CURS INTO ARRAY[I].*" OR "FETCH CURS INTO ARRAY [I].RECORD" FORMAT. Define an array of records and initialize the array: let array[1].* = table[5].* Set a break command to break on one of the array records (such as: "break array[1].column2") and print out the column's value. The program will not recognize the break point and print no value. 10567 MALFUN DEBUGGER PRINT COMMAND IGNORES DBFORMAT ENVIRONMENT VAR. SETTING Given the following program: main define m money let m = 1234.567 display m { set bkpt here } end main If a breakpoint is set at line 4, the program run, and then a "PRINT m" command issued from the debugger command line prompt, the value of m will be printed using the DBMONEY environment variable, but not the DBFORMAT variable. The 4GL display statement will still work as expected. I suspect that the bug lies within the dbrvalstr() function. Although I have given the bug a consequence of 13, it doesn't seem all that serious. 11958 WKARND BANG-OUT CMD LINES SENSITIVE TO SPECIAL CHARS (BACKQUOTE,TAB,ETC) The debugger's bang-out command (!) should pass command lines to the shell unmolested. Instead, it applies some syntax criteria to the command. As a result, characters such as back- quote and tab result in error -16302, "An illegal character has been found in the command" The following bugs exist in ISQL: Bug No. Effect Short Description ------- ------ ----------------- 7587 WKARND UPDATING A RECORD THAT JUST GOT INSERTED CAUSES 3450 ERROR If you insert a record into the table and then immediately try to update that same record, the user will receive a 3450 error (someone deleted a row which is in your list). If you drop the index on the serial field or re-query the record the record and then try to update it everything will work out fine. 14098 MALFUN PERFORM LIMITS IF THEN ELSE NESTING TO 44 LEVELS IF/THEN/ELSE statements can only be nested 44 levels in the instructions section of a perform .per file. If a 45th level is added, a -2018 error will be received when compiling. The error message is inappropriate; a different message will be generated indicating that the nesting is too deep. 15223 MALFUN MORE THAN 29 SELECT INTO TEMP CAUSES 8018 USING SACEPREP Using ISQL 4.1, writing an ACE report with more than 29 SELECT INTO TEMP causes SACEPREP to return 8018 36742 MALFUN "ISQL->QUERY LANGUAGE->RUN" : IF A SYNTAX ERROR OCCURS, THE MODIFY OPTION WILL WRONGLY PLACE THE CURSOR BECAUSE COMMENT LINES ARE NOT HANDLED 38725 RESULT INTEGER AND MONEY VALUES OF A FORM WILL BE ROUNDED IF YOU CALCULATE THE VALUE WITH A MULTIPLICATION 37819 WKARND ACE REPORT WITH MORE THAN 257 COLUMNS OUTPUTS WRONG RESULTS WHEN USING SELECT *. EXPLICITLY NAMING THE COLUMNS GIVES CORRECT RESULTS. 39479 RESULT WRONG VALUES RETURNED BY SELECT ON FLOAT FIELD WHEN DBMONEY=, If DBMONEY=, is set, SELECT statements on a FLOAT field with <, = or > condition return wrong results. -- End of File --