=================================
                                RELEASE NOTES
                                     FOR
                      INFORMIX 6.04.UC1 PRODUCT RELEASE
                               DATE: 05/13/96
                      =================================

TABLE OF CONTENTS
I.      OVERVIEW OF RELEASE NOTES 
II.     PRODUCTS CONTAINED IN THE 4.16/6.04 TOOLS RELEASE
III.    SPECIAL CONSIDERATIONS FOR DEVELOPERS USING 4.16/6.04 RELEASE SOFTWARE
IV.     BUGS FIXED IN RELEASE 4.16/6.04
V.      KNOWN PRODUCT DEFICIENCIES
VI.     RELEASE NOTES AND NEW DOCUMENTATION

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.04 Tools release is feature-equivalent to the 4.16 release, but it adds the ability to communicate directly with version 6.00 or higher Servers releases (avoiding the overhead of using the Relay Module), and it adds National Language Support (NLS). However, the 6.04 tools will not work with any servers releases earlier than 6.00. Because 4.16 and 6.04 are concurrent releases, we expect that customers who need to work with version 6.00 or higher servers, or who need NLS functionality, will probably skip the 4.16 release altogether. For this reason, the 4.16 and 6.04 release notes have been combined into this common document. Customers who have both releases will notice the inherent duplication 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, and users updating from 4.13/6.01 should read TOOLREL_4.14/TOOLREL6.02 as appropriate, for a wealth of information about changes that may affect them.
II. PRODUCTS CONTAINED IN THE 4.16/6.04 TOOLS RELEASE The following products are contained in the 4.16/6.04 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.16/6.04 RELEASE SOFTWARE INSTALLATION ============ We recommend that the 4.16/6.04 Tools be installed in a newly created directory, followed by the appropriate Servers product(s), 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. COMPATIBILITY ============= There is no new 4gl syntax introduced in this release, nor has the RDS pcode level been changed. There should be no problems recompiling older applications to take advantage of the bugfixes in this release, and Interpreter pcode generated by 4.16/6.04 should be runnable by a 4.14/6.02 Interpreter runner, and vice versa. There have been significant compatibility problems with RDS pcode in the past that might affect users upgrading from releases older than 4.14/6.02; users in that situation should be sure to refer to the "COMPATIBILITY" sections in the other TOOLREL_X.XX documents, as mentioned in section I. As in the past, customers should not mix different versions of different products of the Tools releases within the same directory. For example, if a customer were to install a INFORMIX-4GL 6.04 Rapid Development System in the same directory as an existing 6.02 INFORMIX-4GL Compiler System, errors may result in the older product. This is because the products share some libraries, but not other libraries, and overwriting an older existing library with a newer library can lead to a mismatch between the older product's call to a function within that library and the new library's function signature. Though the example given is between the two flavors of INFORMIX-4GL, this situation is true for any combination of INFORMIX-4GL, INFORMIX-SQL, INFORMIX-4GL/Interactive Debugger, and INFORMIX-4GL/Rapid Development System. BUG FIXES OF SPECIAL NOTE ========================= 8534: PRINTING A BLOB IN A AFTER GROUP BY DISPLAYS A WRONG BLOB ================================================================== The method by which 4GL passes an argument between the calling routine and the function depends on the data type of the argument. Except for variable of data type BYTE and TEXT, arguments are passed to the function by value. That is, a copy of the argument is passed. In this case, changing the value of a formal argument within the function has no effect in the calling routine. In contrast, 4GL passes arguments of data type BYTE and TEXT by reference. In this case, the function works directly with the actual variable, rather than a copy. That is, changing a reference to a formal argument in a function changes the corresponding variable in the calling routine and vice versa. The call-by-reference nature of 4GL in dealing with the BYTE/TEXT type arguments had caused some problems in 4GL/ACE reports where the AFTER GROUP OF clause mandates that when 4GL/ACE executes the statements in an AFTER GROUP OF control block, the local variable should have the value from the last record of the current group. With call by reference, the value of the BYTE/TEXT field of the first record from next group would have already been retrieved into the corresponding report variable when the AFTER GROUP OF block is executed, To fix this problem, a report needs to receive BYTE/TEXT type arguments by value; this new, changed behavior is implemented on 4GL/ACE reports only starting with 4.16/6.04 release. Non-report type 4GL functions still receive arguments of BYTE or TEXT data type by reference as before. 15821: PROMPT WITH COLOR ATTRIBUTE DOES NOT WORK ================================================ (This in not a bug; what follows is an addendum to documentation on this subject.) The PROMPT statement produces output in whatever is the current display mode, i.e. either Line Mode or Formatted Mode. Users should be aware that when executing in Line Mode, 4GL ignores any display attributes specified in the PROMPT statement -- the prompt string as well as the prompt response will be displayed in default attributes as if no attributes were specified. This behavior, although not explicitly pointed out in previous documentation, has been consistent in all releases of 4GL. 25377: VERSION 6.00 AND EARLIER ISQL FAILS WHEN RUN AGAINST 7.00 FRAGMENTED TABLES ================================================================ (This is not a bug; the information that follows is available in other documentation, but is re-presented here because customer's have shown particular interest in this topic.) ISQL does not support those server features that are specific to server versions 5.0 and greater (except that ISQL Version 6.0 provides National Language Support (NLS) functionality). A specific example of 5.0+ server feature that is not supported by ISQL is the INFORMIX-OnLine Dynamic Server's Fragmented Tables feature. However, the 7.X INFORMIX-OnLine Dynamic Server provides a method for making fragmented tables which are usable with ISQL, using the WITH ROWIDS option. If the user or DBA creates all affected tables using the CREATE TABLE or ALTER TABLE statement with the ADD ROWIDS option, the server will add an artificial ROWID column to that table. The addition of this column will allow ISQL to work with fragmented tables. 35959: INPUT ARRAY: SPURIOUS SCROLL-DOWN OF PREVIOUSLY DISPLAYED DATA (FROM FIELD DEFAULTS OR MANUAL DISPLAYS) OCCURS WHEN INPUT ARRAY TAKES CONTROL 42072: INPUT ARRAY SCROLLS ROW BELOW CURRENT ROW; IF "WITH DEFAULTS", DEFAULTS ARE COPIED INTO TOP *TWO* ROWS OF ARRAY. BAD FIX TO BUG 12268 =============================================================== For versions 4.13/6.01 through 4.15/6.03, INPUT ARRAY improperly initialized an extra row below the row currently being operated on. The most visible manifestation of this problem came during INPUT ARRAY (with defaults) operations; if default values existed in the screen attributes or in the column defaults as defined using the UPSCOL utility, the user would be presented with an array that had *two* rows initialized rather than just one. Each time the user created a new row by any means (e.g. via the INSERT key or by navigating downward and "creating" a new row below the just-completed row), that another "phantom row" below the current row would persist. Only when the user completed the INPUT ARRAY using the Accept key would the phantom row disappear. This problem has been corrected in the 4.16/6.04 release of 4GL. 36983: GET_FLDBUF DOESN'T RECOGNIZE ALL THE FIELD-NAME VARIANT CASES IT USED TO =============================================================== For versions 4.13/6.01 through 4.15/6.03, the internal field-name lookup mechanism was made more strict than ever before. As with certain INPUT and CONSTRUCT behaviors (see the note for Bug 45471 on page 10), get_fldbuf() no longer worked if there was not an exact match between the field name(s) in the form and the parameter(s) in the get_fldbuf() call. If a superfluous record name was provided in a get_fldbuf() call, or if a record name was omitted but the field name was inherently unique, or if .* was used, it failed. This is fixed so that only those cases that cannot be resolved due to ambiguity now produce an error. 39848: GET_FLDBUF ON A FORM FIELD THAT HAS BEEN CLEARED RETURNS THE OLD VALUE THAT WAS IN THE FIELD BEFORE THE CLEAR OCCURRED =============================================================== CLEARing a form field (using CLEAR or CLEAR FORM) failed to clear the corresponding zone in the internal query buffer in all versions prior to the 4.15/6.03 release. This had the following effect: executing get_fldbuf() on a field that had been cleared could retrieve old data rather than blanks. 4GL correctly handled fields cleared via CLEAR effective with the 4.15/6.03 release. The problem with fields cleared via CLEAR FORM is fixed effective with the 4.16/6.04 release. 41359: P4GL_CALL IS AN UNDEFINED SYMBOL WHEN CREATING A CUSTOM DEBUGGER. IT IS DEFINED WHEN CREATING A CUSTOM PCODE RUNNER. ======================================================================= (This in not a bug; what follows is an addendum to documentation on this subject.) The method by which you compile a C program that calls a 4GL function, as indicated in Appendix C of the 4GL Reference Manual, is using c4gl or fglpc/cfglgo/cfgldb commands. 4GL does not provide any commands or utilities for creating a customized 4GL Debugger to run a C program that calls 4GL functions; you debug such programs the same way you do regular C programs, and you cannot step into the 4GL functions. 43144: CAN'T USE LONG CURSOR NAME (18 CAR) WITH 4GL 6.XX, WORKS FINE WITH FAMILY 4. ================================================================ (This is not a bug; the following information is an expansion upon information available in earlier release notes.) Previous release notes (see TOOLREL_4.1 or TOOLREL_6.0, as applicable for your release) document the -globcurs option but don't fully expand on its usefulness. Beginning with version 5.0, the SQL interface which underlies all INFORMIX tools and embedded languages (ESQL/C) changed its cursor naming paradigm: cursor names went from being local to a "compilation unit" (module) to being local to an "execution unit" (i.e. global to a program/process). 4GL has provided a behind-the-scenes mechanism that will, in most cases, allow 4GL programmers to continue to code as if cursor names were local to a module; this mechanism involves actually adding characters to the cursorname to make it unique, then hashing the characters to a smaller size to remain within the 18-character maximum length. This will be satisfactory to most users, but it can cause cursor names that are *not* the same to be reported as if they were duplicates. This will happen most often when long (18 character) cursor names are used and are similar except for the last few characters. In such cases, the -globcurs flag may turn out to be useful. It turns off the hashing algorithm completely, so that only true duplicates will be reported as duplicates; however, the cost is that the user must accept the new paradigm that cursor names are global to a program. 45573: CLIPPED OPERATOR DOES NOT REMOVE TRAILING BLANK SPACES IN 4GL VER 6.02.UC1 ==================================================================== When directing report output to a file specified in the "START REPORT..." or "OUTPUT REPORT TO..." statement, 4GL would truncate any trailing blanks in the file name specified as the output destination. This applies to both 4GL and ACE reports. Before this release, the resulting file name may or may not contain trailing blanks depending on where the output file is specified. For example, execution of any of the following statements would result in a file named "report.out" being created in the current directory: LET filename = "report.out " (In 4GL function) START REPORT rep TO "report.out " or START REPORT rep TO filename (In 4GL report routine) OUTPUT REPROT TO "report.out " or OUTPUT REPORT TO filename (In ACE report) OUTPUT REPORT TO "report.out " 44806: ONKEY(RETURN) IS IGNORED UNDER SOME CIRCUMSTANCES, BUT OTHER KEYS DO MISTAKENLY THIS WHAT RETURN SHOULD DO. ONLY WITHIN: PROMPT ... END PROMPT ================================================================ Neither RETURN nor CONTROL-K (for UNIX products) should have been allowed in ON KEY clauses for CONSTRUCT, DISPLAY ARRAY, INPUT, MENU, or PROMPT. However, attempts to do so were not flagged as errors, and in some areas of the documentation these were erroneously listed as acceptable keys for ON KEY. Future documentation will specify that RETURN and CONTROL-K are not allowed. 45471: ERROR -1129 ON AFTER FIELD CLAUSE USING FORMONLY. ================================================================ Backward-compatibility issue for CONSTRUCT/INPUT SYNTAX: field qualifier name checking and use of the IXOLDFLDSCOPE environment variable. Before the 4.13/6.01 release, the syntax {BEFORE|AFTER} FIELD <.fieldname> used to run successfully even if the "" name *did not match* the name of the field qualifier in the form (table name, screen record name, or the literal "FORMONLY" as applicable). The fix for bug 12521, introduced in the 4.13/6.01 release, required that the qualifiers for field names be correct when they were specified by the 4GL programmer so that ambiguous field names could be properly resolved. As a result, some users' long-working 4GL programs would now terminate with error -1129 at run time because the qualifier names were stated explicitly but did not match. Example: In form: ... attributes a = FORMONLY.myfield1; ... INSTRUCTIONS SCREEN RECORD f_scrn_rec (FORMONLY.myfield1 THRU FORMONLY.myfieldn) In 4GL program: ... DEFINE progrec RECORD ... END ... INPUT progrec.* WITHOUT DEFAULTS FROM f_scrn_rec.* AFTER FIELD FORMONLY.myfield1 LET mykeyval = fgl_lastkey() END INPUT Note that in the example, the INPUT source uses the screen record as the qualifier, but the AFTER FIELD clause references the inherent qualifier "FORMONLY". (Had the fields been based on database columns, the table name would replace "FORMONLY" in this example.) The field-matching code for CONSTRUCT/INPUT considers the proper qualifier to be the one given in the FROM clause; in this case, a mismatch results, and the -1129 error ("Field in BEFORE/AFTER clause not found in form") is issued. When users encounter this error, Informix recommends that these incorrect references be corrected. In case doing so presents a significant barrier to upgrading, a backward-compatible mechanism to disable the qualifier test has been provided effective with the 4.16/6.04 release. To activate this backward-compatible (no checking) mode, the user must set and export the variable name "IXOLDFLDSCOPE" in their environment at *run time* (not *compile* time). It can be set to any value. Having IXOLDFLDSCOPE in your calling environment disables the qualifier check. Note that you lose the benefits of the fix for bug 12521 (for example, being able to use fields from multiple records in an INPUT statement even if the same field name occurs in more than one record) while IXOLDFLDSCOPE is set in your calling environment. 46021: IF 4GL MENU COMMAND STRINGS ARE VARIABLES, '{HIDE|SHOW} OPTION ""' COMMANDS REQUIRE BLANK-PADDED CONSTANTS IN VERSION 4.14/6.02 AND 4.15/6.03 =============================================================== There was a minor problem introduced in version 4.14/6.02 which can result in unwarranted -1168 errors ("Command does not appear in the menu"). If character variables are used for COMMAND strings in MENU statements, the values of those variables at the time the MENU statement begins are used as the COMMAND values. This feature allows 4GL developers to precisely control the run-time appearance of their menu commands. Any given COMMAND can be made invisible or visible again using the HIDE OPTION and SHOW OPTION statements. Like the COMMAND statements, HIDE OPTION and SHOW OPTION accept either character variable name(s) (in which case the values of those variables are used) or literal strings enclosed in quotes. If, however, a 4GL program uses literal strings in the HIDE OPTION and SHOW OPTION statements in the 4.14/6.02 or 4.15/6.03 versions, those literals must *exactly* match the values in the character strings used in the COMMAND statements, *including any trailing spaces needed to fill the length of the character variable*. If they do not, error -1168 is returned, flagging the MENU statement. This restriction should not have been introduced, and it is fixed in this release. Example: DEFINE menu_opt_1, menu_opt_2, menu_opt_3 CHAR(10) LET menu_opt_1 = "Item-1" LET menu_opt_2 = "Item-2" LET menu_opt_3 = "Quit" MENU "Test" BEFORE MENU HIDE OPTION ALL SHOW OPTION menu_opt_1 -- This works OK SHOW OPTION "Item-2" -- This FAILS in the affected versions -- but works in 4.16/6.04 and above SHOW OPTION "Item-2 " -- Blank-padding the literal to the -- full length of the variable used in -- COMMAND works as a workaround in the -- 4.14/6.02 and 4.15/6.03 versions. COMMAND menu_opt_1 COMMAND menu_opt_2 COMMAND menu_opt_3 EXIT MENU EXIT MENU 48486: NO WAY TO WORK AROUND BUG 31661 FROM WITHIN RDS PROGRAMMERS ENVIRONMENT ================================================================ (This is not a bug; this is an expansion upon information in previous release notes.) In earlier release notes (see TOOLREL4.1 or TOOLREL6.0, as applicable for your release) the environment variable FGLPCFLAGS was documented. It can be used to automatically pass optional flags to the RDS compiler (fglpc) without having to type them on every fglpc command line. One case where this can prove exceptionally useful is when programs are being compiled within the RDS Programmer's environment (r4gl). Unlike the (compiled) INFORMIX-4GL's Programmer's environment, R4gl has no provision to specify "Compile Options" that can be used by fglpc. However, the user can use FGLPCFLAGS to pass options such as "-anyerr" and "-globcurs" to the fglpc compiler. Be sure to have FGLPCFLAGS set to the desired value *before* entering the r4gl command; you cannot set FGLPCFLAGS *from within* the RDS Programmer's Environment. 48766: PICTURE ATTRIBUTE GIVES ERROR 1303 OR 1505 WHEN USING CONTROL-D OR CONTROL-X =============================================================== Ignore the section "Editing Keys During Data Entry" from p. 5-49 of 6.0 4GL Reference Manual; CONTROL-D and CONTROL-X editing keys are not supported in form fields with PICTURE attribute. 52959: RESULT IN ACE REPORT GENERATION, USAGE OF "SKIP TO TOP OF PAGE" CLAUSE WHEN ALREADY AT THE TOP OF PAGE , SKIPS TO TOP OF *NEXT* PAGE =============================================================== The "SKIP TO TOP OF PAGE" clause, in both 4GL and ISQL, was not intended to be a "SKIP TO NEXT PAGE" functionality. Upon encountering this clause, the report would skip to the next page if it were not already logically at the top of a page (disregarding headers), but if the clause when invoked when the report was already logically at the top of a page, then no action would be taken. This avoids the "empty body" syndrome, a problem where pages blank except for header and trailer information could be issued, seemingly randomly, within a report. For instance, if an AFTER GROUP BY clause contained "SKIP TO TOP OF PAGE", and the group had finished printing on the last line of the previous page so that the report was logically at the top of the current page, then if the functionality was to skip to the next page regardless of the content of the body portion of the current page, the report would issue a page empty of all but header/trailer content. In contrast, the intended "SKIP TO TOP OF PAGE" functionality would take no action, preventing a page from being wasted. However, under some circumstances and in some products, "SKIP TO TOP OF PAGE" was acting like "SKIP TO NEXT PAGE". The "SKIP TO TOP OF PAGE" functionality has now been implemented across all products and in all known situations. Because some customers have reports that rely on the defective behavior, there is a new environment variable, "FGLSKIPNXTPG", that will cause "SKIP TO TOP OF PAGE" to act like "SKIP TO NEXT PAGE". Of course, users using this new environment variable will be subject to the "empty body" syndrome described above. 2288: FORM FIELD'S "REQUIRED" ATTRIBUTE IS IGNORED DURING INPUT WITHOUT DEFAULTS 12854: INPUT ARRAY: BEFORE ROW CLAUSE WORKS INCORRECTLY 18726: SPACES OVERRIDES THE REQUIRED ATTRIBUTE IN FORM ON AN INPUT ARRAY 42524: INPUT ARRAY WITHOUT DEFAULTS AND REQUIRED FIELD. WITHIN THE BEFORE FIELD STMT BLOCK, LET FIELD EQUAL VALUE. HAVE TO RE-ENTER THE VALUE. 43172: INPUT ARRAY: SATISFACTION OF "REQUIRED" ATTRIBUTE IS NOT PERSISTENT: IT IS ENFORCED AGAIN IF A ROW IS COMPLETED, LEFT, RETURNED TO, THEN LEFT AGAIN. =============================================================== Various fixes affecting usage of the REQUIRED attribute in INPUT and INPUT ARRAY statements The bugs listed above are resolved in the 4.16/6.04 release of I4GL. These are interrelated and are discussed as a group. For versions 4.13/6.01 through 4.15/6.03, INPUT ARRAY improperly enforced the REQUIRED attribute in several contexts. The most obvious example was that if a user had correctly entered a row, satisying all REQUIRED fields for that row, then navigated the cursor away from that row and later returned to it, INPUT ARRAY would force the user to re-enter the REQUIRED fields. These problems are corrected. To clarify how REQUIRED is processed for each variation of INPUT statement, the behavior as of the 4.16/6.04 release is documented here. When a field has a "REQUIRED" attribute, the field is REQUIRED in the sense that it cannot be simply omitted -- it has to be "satisfied" by an explicit action. This "satisfaction" can be accomplished in a number of ways. These include: - user entry of a non-null value (blanks are preserved only if WITHOUT NULL INPUT is specified in the form header and: a) the corresponding column does not accept nulls, or b) the column is a FORMONLY column -and- the NOT NULL attribute is included in the field attributes) or - automatic entry of a value using the "DEFAULT=" form attribute or - programmatically, by the program explicitly displaying a value to the field using DISPLAY TO or DISPLAY BY NAME. If the REQUIRED attribute is satisfied by any of the above means, then it need not be satisfied again for the duration of that INPUT statement, even if the value in that field is changed to NULL by later user or program action. INPUT ARRAY WITHOUT DEFAULTS behaviors: For INPUT ARRAY WITHOUT DEFAULTS, "initial" rows upon beginning the statement (the first N rows of the program array, as specified by calling set_count(N) immediately before the INPUT ARRAY WITHOUT DEFAULTS) are *exempt* from any REQUIRED checks. The REQUIRED attribute has meaning *only* for "added" rows -- that is, those rows inserted via the INSERT KEY or those added to the end beyond the "existing" rows. For "added" rows, REQUIRED can only be satisfied by either manually entering a value in the field or if the programmer DISPLAYs a value into the field. Once a created row is "completed" (all REQUIREDs and programmatic tests for that row's fields are satisfied, and the user indicates completion of the row by moving the cursor off the row using a navigation key or by pressing the ACCEPT key), the REQUIRED attribute(s) are "satisfied" for that row for the duration of the INPUT ARRAY statement. (This represents a fix from the 4.15/6.03 release.) In contrast, "initial" rows are completely exempt from REQUIRED checks -- even if the variable that corresponds to a REQUIRED field for an initial row is NULL, the REQUIRED test is not applied. If a value is assigned via a LET statement in a BEFORE ROW clause, that value is *never* made visible to the user. If a value is assigned via a LET statement in a BEFORE FIELD clause, that value is made visible upon the cursor entering that field, but for "added" rows, it will not satisfy the REQUIRED unless it is also DISPLAYed or unless the user types a value into the field. INPUT ARRAY (with defaults) behaviors: Since all rows are considered "added" rows until they have been completely entered and the cursor has left the row, the REQUIRED test(s) are applied for each row during its creation. REQUIRED can only be satisfied by either manually entering a value in the field or by the programmer DISPLAYing a value into the field. Once a REQUIRED field has been "satisifed" in this manner, the REQUIRED check has no further effect; even if the field's underlying variable's value is changed or a new value DISPLAYED, and even if that value is NULL or blank, the REQUIRED check is not reapplied. Once a row is "completed" (all REQUIREDs and programmatic tests for that row's fields are satisfied, and the row is departed via a navigation key or ACCEPT key), REQUIRED attribute(s) are "satisfied" for that row for the duration of the statement. (This represents a fix from the 4.15/6.03 release.) If a value is assigned via a LET statement in a BEFORE ROW or BEFORE INPUT clause, that value is *never* made visible to the user until or unless the cursor traverses that field. If a value is assigned via a LET statement in a BEFORE FIELD clause, that value is visible upon the user context entering that field, but it will not satisfy the REQUIRED unless it is DISPLAYed. INPUT WITHOUT DEFAULTS behaviors: REQUIRED test(s) are considered unsatisfied if the underlying variable has a NULL value. Even if a manual DISPLAY has occurred to the field, the REQUIRED test prevents a NULL value from surviving the validation stage. This differs from INPUT ARRAY WITHOUT DEFAULTS behavior. Otherwise, REQUIRED is "satisfied" whether or not the field is traversed or DISPLAY touches the field. Unlike INPUT ARRAY WITHOUT DEFAULTS, INPUT does not require a subsequent DISPLAY to make a nonnull value satisfy a REQUIRED. If a value is assigned via a LET statement in a BEFORE INPUT clause, that value is *never* made visible to the user. If a value is assigned via a LET statement in a BEFORE FIELD clause, that value is visible upon the user context entering that field. INPUT (with defaults) behaviors: REQUIRED test(s) are considered unsatisfied if: 1) the field has not had a value entered by the user -and- has not been DISPLAYed to, or 2) the underlying variable has a NULL value. For NULLs, even if a manual DISPLAY has occurred to the field, the REQUIRED test prevents a NULL value from surviving the validation stage. This differs from INPUT ARRAY behavior. The fact that a nonnull value assigned via LET also needs a DISPLAY to satisfy the REQUIRED also differs from INPUT WITHOUT DEFAULTS (see above). If a value is assigned via a LET statement in a BEFORE INPUT clause, that value is *never* made visible to the user. If a value is assigned via a LET statement in a BEFORE FIELD clause, that value is visible upon the user context entering that field.
IV. BUGS FIXED IN RELEASE 4.16/6.04 The following bugs were fixed in 4GL Bug No. Effect Short Description ====================================================================== 10379 MALFUN DISPLAY AT CORE DUMPS IN AN ERRONEOUS SITUATION 15096 ERRMSG RUNTIME ERROR 1213 FROM REPORT WITH PRINT COLUMN "TEXT" 25112 MALFUN LINENO NOT ACTING SAME IN RDS AND COMPILED, 1ST LINENO IS 0 AFTER PAGE HEADER IN COMPILED, BUT IN RDS IT IS GETTING SET TO CORRECT LINE NUMBER 29883 MALFUN BLOB DISPLAY AND INPUT USING A FORM ACTS DIFFERENTLY IN C4GL AND FGLPC/GO. DISCOVERED 7/25 THAT 29883 OCCURS WITH BONSAI ALSO 31925 MALFUN CONTROL-O DOES NOT WORK IN AN ON KEY CLAUSE ON A DATA GENERAL 35959 MALFUN INPUT ARRAY: SPURIOUS SCROLL-DOWN OF PREVIOUSLY DISPLAYED DATA (FROM FIELD DEFAULTS OR MANUAL DISPLAYS) OCCURS WHEN INPUT ARRAY TAKES CONTROL 36983 MALFUN GET_FLDBUF DOESN'T RECOGNIZE ALL THE FIELD-NAME VARIANT CASES IT USED TO 39594 MALFUN USING A RECORD FIELD VAR2.VAR3 AS SELECT STATEMENT VARIABLE IN AN UNLOAD IN 4GL GIVES SYNTAX ERROR IN FGLC2 COMPILATION 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 39966 RESULT AN INCORRECT VALIDATE STATEMENT IS NOT CAUGHT BY THE COMPILER, NOR DOES IT GET DETECTED AT RUNTIME (RETURNS "VALID" ERROR CODE) 40044 MALFUN USING ERROR ROUTINE DISPLAYS ONLY 79 CHARS - WHERE MESSAGE DOES 80 40193 CORE I4GL-ID DEBUGGER IS HANGING TERMINAL WHEN DEBUGGING PROGRAMS ON NCR 3450 USING TABS 40798 COSM ERRATIC CURSOR MOVEMENT WHEN MOVING BETWEEN FIELDS WITH INPUT STATEMENT AND BEFORE FIELD CLAUSE. 41651 CORE I-4GL COMPILE FAILS WITH MEMORY FAULT ( COREDUMP ) ON CONSTRUCT STATEMENT THAT REFERENCES DATABASE:TABLE.COLUMN 42072 CORRPT INPUT ARRAY SCROLLS ROW BELOW CURRENT ROW; IF "WITH DEFAULTS", DEFAULTS ARE COPIED INTO TOP *TWO* ROWS OF ARRAY. BAD FIX TO BUG 12268 42524 MALFUN INPUT ARRAY WITHOUT DEFAULTS AND REQUIRED FIELD. WITHIN THE BEFORE FIELD STMT BLOCK LET FIELD EQUAL VALUE. HAVE TO RE-ENTER THE VALUE. 42906 MALFUN COMPILATION OF A 4GL MODULE WITH A REPORT WITH A LOT OF PARAMETERS AND VARIABLES FAILS. 1RST PHASE MANGLES THE PARAMETER NAMES. 43172 MALFUN INPUT ARRAY: SATISFACTION OF "REQUIRED" ATTRIBUTE IS NOT PERSISTENT: IT IS ENFORCED AGAIN IF A ROW IS COMPLETED, LEFT, RETURNED TO, THEN LEFT AGAIN. 43190 MALFUN I-4GL LIBRARIES ARE REGARDING INT VARIABLES AS LONG'S, WHICH IS A PROBLEM ON DEC ALPHA AS AN INT IS 4 BYTES AND A LONG IS 8 BYTES. RELATED TO B42697. 43973 MALFUN WHEN USING RUN COMMAND IN 4GL DEFUNCT PROCCESSES ARE CREATED WHICH DO NOT DIE BUT ACCUMULATE 44224 MALFUN IN AN INPUT ... FROM REC.COL1, GET_FLDBUF(REC.*) FAILS WITH ERROR -1320 THOUGH THE RECORD JUST HAVE ONE COLUMN COL1. 44228 MALFUN IF ERRORLINE AND COMMENT LINE ARE THE SAME. BOTH ERRORMESSAGE AND COMMENT DISSAPEARS WHEN A KEY IS PRESSED. ONLY THE ERRORMESSAGE SHOULD DISSAPEAR. 44551 MALFUN FIELD_TOUCHED() SHOWS TRUE FOR REMAINING FIELDS IN ROW IF ON-KEY CLAUSE BRINGS UP POP-UP WINDOW WITH ANOTHER INPUT STATEMENT (INPUT ARRAY ONLY) 44734 MALFUN C4GL LOSES TRACK OF DATABASE NAME WHEN GENERATING ESQLC CODE 44897 MEM GETTING -4339 ERROR : 4GL HAS RUN OUT OF DATA SPACE MEMORY WHEN CALLING A 4GL FUNCTION FROM A C PROGRAM. (MORE MANIFESTATIONS OF B39868) 45471 MALFUN ERROR -1129 ON AFTER FIELD CLAUSE USING FORMONLY. ON 4GL 6.0X 45573 MALFUN CLIPPED OPERATOR DOES NOT REMOVE TRAILING BLANK SPACES IN 4GL VER 6.02.UC1 45841 MALFUN WORDWRAP ONLY DISPLAYS FIRST LINE WHEN USING WORDWRAP WITH A CONSTRUCT STATEMENT. WORKS FINE WHEN NOT USING A CONSTRUCT STATEMENT. 45917 MALFUN SKIP TO TOP OF PAGE DEACTIVATED IF IT OCCURS PRIOR TO A PRINT STATEMENT IN THE ON EVERY ROW CLAUSE (ONLY IF THERE IS A FIRST PAGE HEADER CLAUSE). 46021 MALFUN IF 4GL MENU COMMAND STRINGS ARE VAR,'{HIDE|SHOW} OPTION ""' COMMANDS REQUIRE BLANK-PADDED CONSTANTS IN VERSION 4.14/6.02 AND 4.15/6.03 46223 MALFUN GROUP COUNT(*) WHERE FUNCTION IN 4GL REPORT RETURNS BLANK OR NULL VALUES 47060 CORE CORE DUMP WHEN USING FORM WITH 2 TABLE "JOIN" CODE. 47060 MALFUN CORE DUMP WHEN USING FORM WITH 2 TABLE "JOIN" CODE. 47145 MAINT REGRESSION DUE TO BUG FIX 33743. INCORRECT BEHAVIOUR WHEN USING SIGNALS 47831 CORE INPUT, INPUT ARRAY WITHOUT DEFAULTS CORE DUMPS WITH SEGMENTATION VIOLATION 48323 MALFUN DEFINE VARIABLE AS VARCHAR WITH A RESERVE SIZE CAUSING COMPILE ERROR 52030 MALFUN SCREEN REDRAW PROBLEM: ON SOME TERMINALS, IF ANY CONTENT IS DISPLAYED IN RIGHTMOST FORM COLUMN (E.G. COL 80), REDRAWS/DISPLAYS CORRUPTED THEREAFTER The following bugs were fixed in DEBUGGER Bug No. Effect Short Description ====================================================================== 43929 MALFUN ERROR -16304 WHEN STARTING FGLDB WITH DBMONEY=, AND INITIALIZATION FILE WITH BREAK The following bugs were fixed in ISQL Bug No. Effect Short Description ====================================================================== 7587 WKARND UPDATING A RECORD THAT JUST GOT INSERTED CAUSES 3450 ERROR 8534 RESULT PRINTING A BLOB IN A AFTER GROUP BY DISPLAYS A WRONG BLOB 15223 MALFUN MORE THAN 29 SELECT INTO TEMP CAUSES 8018 USING SACEPREP 17433 MALFUN ISQL GOES INTO INFINITE LOOP ON COMMAND LINE OPTION 25553 MALFUN PERFORM LOSES DATA IN 2ND PART OF SUBSCRIPTED FIELD IF 1ST PART IS NULL 33513 CORE ISQL: CORE DUMP: WHEN TRYING TO UPDATE A LOCKED RECORD 37819 WKARND ACE REPORT WITH MORE THAN 257 COLUMNS OUTPUTS WRONG RESULTS WHEN USING SELECT *. EXPLICITLY NAMING THE COLUMNS GIVES CORRECT REUSLTS. 41760 CORE COMPOSITES IN INSTRUCTION SECTION CAUSES CORE DUMP USING PERFORM 52031 MALFUN SCREEN REDRAW PROBLEM: ON SOME TERMINALS, IF ANY CONTENT IS DISPLAYED IN RIGHTMOST FORM COLUMN (E.G. COL 80), REDRAWS/DISPLAYS CORRUPTED THEREAFTER 52959 RESULT IN ACE REPORT GENERATION, USAGE OF "SKIP TO TOP OF PAGE" CLAUSE WHEN ALREADY AT THE TOP OF PAGE , SKIPS TO TOP OF *NEXT* PAGE The following bugs were fixed in RDS Bug No. Effect Short Description ====================================================================== 11760 WKARND FGLGO DISPLAYS ***... FOR VARCHAR FIELD IN 4GL FORM 39296 MALFUN ERROR -4448 WHEN HITTING INTERRUPT ON R4GL RUN PROGRAM SCREEN. IT TRIES TO RUN NULL PROGRAM ".4GO" AND GENERATES ERROR 42571 CORE RUN PROGRAM RETURNING INTEGER VALUE DUMPS CORE WITH SEGMENTATION FAULT 43326 PERF SLOW RDS PERFORMANCE OF SINGLETON SELECTS DUE TO EARLIER FIX TO B25389 43382 CORE INITIALIZING LARGE NESTED ARRAYS CAN LEAD TO -1326 OR SEGMENTATION FAULT(COREDUMP). FAILS AT NULLVAR FUNCTION. 46672 MALFUN PROMPT, DISPLAY, ERROR, AND MESSAGE ATTRIBUTES ARE NOT CONSISTENT OR CORRECT 52370 MALFUN EXECUTING STEP OR CONTINUE COMMAND THE DEBUGGER PUT ISSUES A "-16338: CAN NOT CONTINUE EXECUTION."
V. KNOWN PRODUCT DEFICIENCIES There are no known priority 1, 2, or 3 bugs outstanding at code freeze.
VI. RELEASE NOTES AND NEW DOCUMENTATION If you are using 4GL Version 4.1X --------------------------------- If you are using 4GL Version 4.1, you received a supplemental manual (4GL Supplement) with your product. If your supplement is dated February 1992 (Rev A), read the release notes for additional information about the release. (The information in the release notes does NOT appear in your hardcopy documentation set; it ONLY appears in the release notes.) If your supplement is dated June or July 1996 (Rev B), this 4GL Supplement supersedes the technical information contained in the release notes. Thus, for technical information, you should use this supplemental manual rather than the release notes. In either case, you should continue to use the release notes for information on bug fixes, outstanding bugs, and the like. If you are using 4GL Version 6.0X --------------------------------- If you are using 4GL Version 6.0 AND you have received a supplemental manual (4GL Supplement) with your product, this 4GL Supplement supersedes the technical information contained in the release notes. Thus, for technical information, you should use this supplemental manual rather than the release notes. If you are using 4GL Version 6.0 and you have NOT received a supplemental manual with your product, read the release notes for more information about the release than is contained in the hardcopy documentation set. (The information in the release notes does NOT appear in your hardcopy documentation set; it ONLY appears in the release notes.) In either case, you should continue to use the release notes for information on bug fixes, outstanding bugs, and the like.