Release Notes IBM Informix 4GL 7.51.FC4

        _________________________________________________________

                           Release Notes for 
                    IBM Informix 4GL 7.51.xC4
                            March 2025
        ________________________________________________________


Table of Contents
=================

I. Overview of Release Notes for IBM Informix 4GL 7.51

II. Products included in 7.51.xC4

III. New features in 7.50.xC5

IV. New features in 7.50.xC4

V. New features in 7.50.xC3

VI. New features in 7.50.xC2

VII. New features in 7.50.xC1

VIII. Customer-reported defects fixed in 7.51.xC3

IX. Customer-reported defects fixed in 7.51.xC2

X. Customer-reported defects fixed in 7.51.xC1

XI. Known issues and workarounds


=================


I.    Overview of Release Notes for IBM Informix 4GL 7.51
____________________________________________________________

These release notes contain additional information not found in the 
product manuals that are included with the product. You should 
review these notes for critical information.

Due to changes in related functionality, the introduction of new functionality, or the removal of support, some IBM Informix 4GL functionality 
available in earlier releases has been deprecated.  


For Machine Specific settings needed with the 7.51 release refer to 
the MACHINENOTES.751 file.

II.   Products included in 7.51.xC4
___________________________________
The products released are:

      IBM Informix 4GL
      IBM Informix 4GL/Runtime Facility
      IBM Informix 4GL/Rapid Development System
      IBM Informix 4GL/Rapid Development System Runtime Facility     
      IBM Informix 4GL Interactive Debugger
      IBM Informix SQL
      IBM Informix SQL/Runtime Facility

Language Supplements containing the localization requirements are not 
part of the product-suite.

The 4GL product suite contains 4GL and SQL product-specific message 
files. It does not contain the full complement of SDK product-specific 
message files. To access all message files, you must install the 
International Language Supplement (ILS).


III.  New features in 7.50.xC5
______________________________
IBM Informix 4GL 7.50.xC5 provides the following new features:

    * Simultaneous thread handling 
    * NULL handling in inputs and outputs
    * Optional input and output parameters in 4GL
    * Dynamic array support
    
Simultaneous thread handling 
---------------
This release supports simultaneous thread handling with the introduction 
of the FGLD daemon. In previous releases multiple invocations of the same 
IBM Informix 4GL function ran simultaneously in a dedicated Informix 4GL 
environment and share resources. With simultaneous thread handling, clients 
can have their own environment and individual copies of data. The FGLD 
daemon receives a request from the Axis2C client, communicates with 4GL, 
and returns the results to the Axis2C client. The AXIS2C server and FGLD 
daemon must coexist on the same computer. The FGLD daemon requires that 
two new environment variables (FGLD_PORTNUMBER and FGLD_HOSTNAME) be 
set in the same terminal where the AXIS2C server is started. The FGLD daemon 
also can relay errors to the clients.

For more information about this feature, see the 
IBM Informix 4GL Web Services Administration Guide.

NULL handling in inputs and outputs 
----------------
IBM Informix 4GL can handle NULL values as the inputs and outputs within 
an Informix 4GL function. In a web service, the WSDL standard differentiates 
NULL and non-NULL values using the xsi:nil="true" attribute for both inputs 
and outputs. Informix 4GL adheres to the WSDL standards including 
handling NULL values.

For more information about this feature, see the 
IBM Informix 4GL Web Services Administration Guide.

Optional input and output parameters in 4GL
------------------------------------
IBM Informix 4GL does not require input or output parameters when publishing or 
subscribing to a web service. In previous releases of the product, input and output 
parameters were mandatory.

For more information about this feature, see the 
IBM Informix 4GL Web Services Administration Guide.

Dynamic array suppport
----------------------
With dynamic array support, IBM Informix 4GL applications can return multiple rows 
within a table. Informix 4GL supports the ARRAY data type, but you cannot
use the ARRAY data type in inputs or outputs. Informix 4GL clients can process structured data 
such as arrays and records from other 4GL applications, in addition to Informix 4GL 
applications.

For more information about this feature, see the 
IBM Informix 4GL Web Services Administration Guide.


IV.  New features in 7.50.xC4
______________________________
IBM Informix 4GL 7.50.xC4 provides the following new features:

    * File I/O enhancement in 4GL
    * WSDL parser
    * Error handling for 4GL web services
    * RECORD data type in 4GL applications
    * Reporting available as web services
    
File I/O enhancement in 4GL
---------------------------
This release introduces direct support for file I/O in Informix 4GL 
applications. Unlike earlier versions that supported file I/O indirectly 
by calls to C or C++ functions, this release supports new Informix 4GL 
statements that can open, read, write, seek, and close report files, 
including any UNIX files. This enhancement provides a standard Informix 
4GL interface for reporting or reading files. This enhancement is 
available to all 4GL users.

For more information about this feature, see the 
Documentation Notes for 4GL Reference Manual.

WSDL parser
-----------
This release contains a parser (wsdl_parser) for the Web Services 
Definition Language (WSDL) that generates a subscriber configuration 
file and simplifies subscribing.

The WSDL parser (wsdl_parser) is integrated with the w4gl utility 
or you can invoke the parser from the command line. When you subscribe 
to (or consume) a web service, this feature parses the WSDL file to 
retrieve all the information that is required to define a web service.

For more information about this feature, see the 
IBM Informix 4GL Web Services Administration Guide.

Error handling for 4GL web services
-----------------------------------
When you enable your 4GL applications to run on the web, you can 
handle errors generated by the application or web services. IBM 
Informix 4GL defines errors by error number (WS_STATUS variable) and 
error message (WS_STATUS_MSG variable). The applications can check 
for error numbers to determine whether certain errors occurred. The 
applications can relay the correct error messages to users who can be 
in different locations on remote clients. Error messages are relayed 
in English only.

For more information about this feature, see the 
IBM Informix 4GL Web Services Administration Guide.

RECORD data type in 4GL applications
------------------------------------
You can use the RECORD data type in 4GL applications to define a 
data type as a structure of member variables. You can avoid 
specifying all individual member variables of a structure. Instead, 
use the RECORD LIKE TABLE.* data type to specify that all columns of 
the table make up the structure. The RECORD data type returns only 
one row at a time. This RECORD type support is the same as the 
RECORD support in 4GL. 

For more information about this feature, see the 
IBM Informix 4GL Web Services Administration Guide.

Reporting available as web services
-----------------------------------
Informix 4GL reports are now available as web services. You can 
transmit any kind of binary or character data across applications 
and to other users who might be in different locations. Use the 
new data type, WS_FILENAME, as an input or output in the w4gl 
interface. Use the VARCHAR(255) data type in 4GL applications to 
handle report parameters. These reports can be generated without 
changing any pseudocode in your 4GL applications. The WS_FILENAME 
data type is a substitute for BYTE or TEXT data types to represent 
printable ASCII data and digitized contents. Currently in Informix 4GL, 
it is not possible to send BYTE or TEXT data types as outputs.

For more information about this feature, see the 
IBM Informix 4GL Web Services Administration Guide.


V.  New features in 7.50.xC3
_____________________________
With IBM Informix 4GL 7.50.xC3, I4GL programs can subscribe to web
services written in I4GL or any modern programming language. The product
contains sample demonstrations on how to publish an I4GL web service and 
how to subscribe to an I4GL web service using an I4GL subscriber. 


VI.   New features in 7.50.xC2
_______________________________
With IBM Informix 4GL 7.50.xC2, you can deploy your 4GL functions on 
the web without rewriting any source code. The w4gl utility uses your 
existing 4GL code to create web services. These web services can be 
used by, for example, Java and .Net applications on the web without 
you doing any Java or .NET programming.  Your business logic is 
maintained in 4GL, and made available to a variety of web clients by 
the web services.        


VII.    New features in 7.50.xC1
_________________________________
Informix 4GL 7.50.xC1 supports UTF-8 character encoding. To convert your 
existing databases to UTF-8, use a standard converter or enter the 
non-English characters manually. English language users can unload data 
from the existing en_us database and reload it into the new utf8 database.

VIII.   Customer-reported defects fixed in 7.51.xC3
___________________________________________________
     Defect #      Description
     ________      ___________

     IC93750     STATEMENTS INSIDE SQL BLOCKS DUPLICATES THE FIRST CHARACTER OF
                  A STRING THAT STARTS WITH AN HYPEN
				  
     IT08899     THE FIXES FOR IDSDB00237833 AND IDSDB00243891 INTRODUCE OTHER
                  PROBLEMS WHEN CURRENT MENU IS USED
				  
     IT10633     TABLE PRIVILEGES ARE NOT DISPLAYED IN IBM INFORMIX SQL INTERFACE
	 
     IT14057     4GL ID DEBUGGER MAY HANG IN AN ENDLESS LOOP DEPENDING ON THE
                  TERMINAL WINDOW SIZE
				  
     IT15243     ISQL DOES NOT DISPLAY TABLE LEVEL PRIVILEGES FOR STANDARD
                  ENGINE TABLES
				  
     IT15753     UNLOADING BYTE DATA USING ISQL CREATES CORRUPTED UNLOAD FILE
	 
     IT16622     COLUMN TITLES DO NOT LINE UP WITH ACTUAL DATA WHEN USING
                  ISQL -> QUERY-LANGUAGE
				  
     IT16989     FGLDB CRASHES WHEN DEBUGGING A SOURCE FILE WITH MORE THAN 32K LINES
	 
     IT18226     COLUMN TITLES DO NOT LINE UP WITH ACTUAL DATA WHEN USING
                  ISQL -> QUERY-LANGUAGE WHEN USING A MULTIBYTE LOCALE
				  
     IT20359     ERRORLOG DOES NOT WRITE DATE / TIME INTO THE LOG FILE



IX.   Customer-reported defects fixed in 7.51.xC2
___________________________________________________
     Defect #      Description
     ________      ___________      

     IC96162     4GL CRASHES WHEN A VARIABLE IS DECLARED AS CHAR STRING 
                  LONGER THAN 256 BYTES

     IT09885     SUBSCRIBERS FAIL TO UNDERSTAND EVEN FAULTS RETURNED BY 4GL 
                  WS WITH UNPREDICTABLE CONSEQUENCES

     IT12936     A WS RETURNING AN ARRAY OF DATETIME VALUES DOESN'T HANDLE 
                  NULL PROPERLY AND COULD ALSO CRASH.

     IT09833     4GL SOA : IF A SUBSCRIBER RECEIVES A FAULT MESSAGE AND NEEDS
                 TO RETURN AT LEAST ONE DYNAMIC ARRAY, IT FAILS WITH ERROR -4500

     IT09623     LOG MESSAGES ARE RESTRICTED TO 4KB 

     IT02734     FGLD CANNOT BE RESTARTED FOR A WHILE IF IT HAS SERVICED
                  REQUESTS RECENTLY AND THEN CRASHED OR WAS TERMINATED.

     IT04745     SEGMENTATION FAULT OCCURS IF WE SPECIFY BIG VALUE TO COLUMNS 
                  CLAUSE WITH OPEN WINDOW STATEMENT AND SET JAPANESE LOCALE

     IT03742     THE 'STATUS' GLOBAL VARIABLE SHOULD BE UPDATE WITH EVERY 
                  I/O OPERATION

     IT02648     ON 64BIT LINUX,  DATA CORRUPTION IS POSSIBLE IF STRCPY()
                  IS USED WITH POINTERS TO AREAS THAT OVERLAP

     IT01854     THE NAMESPACE OF SOAP FAULT MESSAGES IS NOT THE SAME 
                  SPECIFIED IN THE WSDL DESCRIPTION

     IT01477     HIDE OPTION KEYWORD DOES NOT WORK PROPERLY WHEN USING       
                  VARIABLES TO SPECIFY WHICH MENU OPTIONS TO HIDE

     IT12384     COLUMN NOT DISPLAYED IN FORM IF END USER HAS NO SELECT   
                  PERMISSION ON COLUMN AS IN PREVIOUS VERSIONS

     IT12512     SPERFORM:  CANNOT UPDATE FIELD WITH WORDWRAP ATTRIBUTE

     IT10507     DATA FROM TEXT COLUMNS IN PLACED IN THE WRONG FIELDS OR IS
                  MISSING IF THERE IS MORE THAN ONE TEXT COLUMN

     IT10509     ISQL FORMS: THE "DOWNSHIFT" FIELD ATTRIBUTE MAKES UPDATES 
                 FAIL SILENTLY.

     IC99563     CUSTOM SPERFORM CRASHES ON PF_GETVAL ON LINUX WHEN 
                 PASSING A STRING LITERAL.

     IT07356     CUSTOM SPERFORM CAUSES SEGMENTATION FAULT OR CORE DUMP 
                 WHEN PERFORMING A QUERY

     IT06174     ADDING A DETAIL RECORD IN A SPERFORM SCREEN RESULTS IN ERROR:
                 '** GLIBC DETECTED *** SPERFORM: FREE(): INVALID POINTER:...'




X.   Customer-reported defects fixed in 7.51.xC1
___________________________________________________
     Defect #      Description
     ________      ___________      

     IC93105      WSDL_PARSER FAILS TO RETRIEVE A VALUE FOR SOAP_ACTION 
                  IN SOME CASES

     IC92452      WSDL_PARSER CAN BE RATHER SLOW IN GENERATING THE 4CF 
                  FILE IN SOME CASES.

     IC92486      WSDL_PARSER MAY GENERATE A BAD 4CF FILE IF SOME SERVICE
                  PARAMETERS HAVE LONG NAMES

     IC93105      W4GL MAY NOT ADD INFORMATION ABOUT OPERATION TO A 4CF 
                  FILE WHEN COMPILING SUBSCRIBERS

     IC85722      4GL: WARNING #2177-D: LABEL "_EF1CONTINUE" WAS DECLARED 
                  BUT NEVER REFERENCED

     IC94063      WHEN AN FGLD PROCESS EXITS ABRUPTLY OR CRASHES, THE
                  CORRESPONDING THREAD IN AXIS SPINS ON READ() AND CONSUMES CPU

     IC94062      ON AIX AXIS2C THREADS MAY SPIN AND CONSUME CPU TIME IF THE 
                  FGLD DAEMON IS NOT RUNNING

     IC92311      THE FIX FOR IC82311 MAY CAUSE AN ERROR WHERE MKPATH RESULTS
                  UNDEFINED.

     IC83708      THE 4CF FILE OF A SUBSCRIBER HAS NUMERIC CHARACTERS STRIPPED
                  AWAY FROM MESSAGE NAMES
    
     IC90693      4GL WEB SERVICE  SUBSCRIBERS RETURN ERROR 

     IC61446      DISPLAY INCORRECTLY HANDLES ASCII 10 FOR JA_JP

     IC94212      4GL: PRINTING REPORT USING CLIPPED WITH TAB (ASCII 9) HAS
                  CHANGED FROM 7.32 TO 7.50

     IC93179      4GL:  BEHAVIOR OF CLIPPED HAS CHANGED FROM VERSION 7.32 
                  TO 7.50

     IC92216      DEFAULT FORM DISPLAYS GARBAGE / ASTERISKS IN CERTAIN FIELDS
                  WHEN INITIALLY RUN

     IC91232      THE MACHINE NOTES DO NOT LIST ALL THE REQUIRED EXTERNAL 
                  SOFTWARE DEPENDENCIES FOR TOOLS

     IC91308      REPORT OF ISQL RETURNS WRONG RESULTS WITH MULTI-BYTE 
                  CHARACTERS

     IC91565      MESSAGE "ERROR IN FIELD" WHEN ENTERING DATE WITH HYPHENS

     IC91126      THE RUNTIME VERSION OF 4GL DEVELOPMENT DOES NOT CONTAIN 
                  THE WEB SERVICES LIBRARIES

     IC90598      FORM4GL HANGS IF CLIENT_LOCALE SPECIFIES UTF8 AND THE SCREEN
                  SECTION CONTAINS A UTF8 STRING LONGER THAN 255 BYTES

     IC83781      SOME ISQL TOOLS FAIL TO DISPLAY THE TEXT MESSAGE FOR ERRORS

     IC90343      EXTERNAL CALL TO INDEX() IN A 4GL PROGRAM CAUSES ERROR ON
                  COMPILE
     
     IC89387      RESIZING A MULTIDIMENSIONAL ARRAY GIVES UNEXPECTED END OF 
                  FILE DURING COMPILATION

     IC89271      SEGMENTATION FAULT (CORE DUMP) IN 4GL INTERACTIVE DEBUGGER

     IC88206      ISQL FORM RETURNS ERROR "CURSOR NOT OPEN." FOR AN UPDATE 
                  ACTION

     IC86827      DATE FORMAT "YYYY/MM/DD" IN FORM AND DATE INPUT AS YYMMDD 
                  WITH TWO DIGITS FOR YEAR, RETURNS "ERROR IN FIELD".

     IC83701      DATE FORMAT OF "DD.MM.YYYY" IN FORM GIVES "ERROR IN FIELD"
                  MESSAGE

     IC85815      SOMETIMES WHEN A DECIMAL IS PUSHED ONTO THE STACK, THE NULL
                  INDICATOR IS RESET WHEN IT SHOULD NOT BE

     IC83705      FORM SCREEN DISAPPEARS WHEN YOU DISPLAY UTF8 CHARACTER WITH
                  MESSAGE STATEMENT WITHIN INPUT STATEMENT

     IC85296      4GL PROGRAM CORE DUMP

     IC84068      CANNOT RUN R4GL BECAUSE OF MISSING SYMBOL IFX_RSTRDTIME

     IC82010      4GL: WARNING MESSAGE DURING COMPILE ON HP ITANIUM WHEN 
                  SOURCE HAS NEXT FIELD STATEMENT

     IC83418      SEGMENTATION FAULT WHEN WE SET CLIENT_LOCALE=JA_JP.UTF8 AND
                  CURSOR REACHES TO THE END OF SCREEN

     IC82311      THE 4GL/SOA SUBSCRIBER LIBRARY IS GENERATED INTO TMPDIR 
                  INSTEAD OF TARGET_DIR

     IC82009      4GL: WARNING MESSAGES DURING COMPILE WHEN ATTEMPTING TO 
                  PRINT REPORT TO A FILE ON HP ITANIUM

     IC61446      DISPLAY INCORRECTLY HANDLES ASCII 10 FOR JA_JP 




XI.   Known issues and workarounds
____________________________________

A. Installing 4GL and CSDK into same folder can result in issues with
   4GL at runtime, check the machine notes for platform specific 
   issues and CSDK versions. 

   Workaround : 
   It is highly recommended that 4GL and CSDK/IDS be installed into
   separate folders.

B. The 4GL version 7.50.xC3 web services functionality is not compatible 
   with IBM Informix Dynamic Server version 7.31.
   

C. In IBM Informix 4GL version 7.50.HC1 and later, the compiler "c4gl" returns 
   the following error when trying to compile any 4GL program:

   /usr/ccs/bin/ld: Can't find library: "cur_colr"

   Workaround:      
   In HP-UX 11.31, create a symbolic link for libcur_colr.1 under 
   $INFORMIXDIR/lib/esql and $INFORMIXDIR/lib/tools directories 
   which points to /usr/lib/libcurses.sl.

   For example:
   ln -s /usr/lib/libcurses.sl $INFORMIXDIR/lib/esql/libcur_colr.1
   ln -s /usr/lib/libcurses.sl $INFORMIXDIR/lib/tools/libcur_colr.1
  
D. When using the Development version of 4GL 7.50.xC2 and later to deploy 
   the 4GL function as a web service, if any of the files or 
   directories in the directory pointed to by the $TMPDIR in the 
   configuration file do not have permissions, the PERL script 
   returns this error: 
      
   This is an issue with the application org.apache.axis2.wsdl.WSDL2C 
   used by this deployment tool.
   
   
   Exception in thread "main" org.apache.axis2.wsdl.codegen.
             CodeGenerationException: java.lang.NullPointerException
           at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.
              generate(CodeGenerationEngine.java:278)
           at org.apache.axis2.wsdl.WSDL2Code.main(WSDL2Code.java:35)
           at org.apache.axis2.wsdl.WSDL2C.main(WSDL2C.java:31)
   Caused by: java.lang.NullPointerException
           at org.apache.axis2.wsdl.codegen.extension.JavaPrettyPrinter
              Extension.prettify(JavaPrettyPrinterExtension.java:49)
           at org.apache.axis2.wsdl.codegen.extension.JavaPrettyPrinter
              Extension.prettify(JavaPrettyPrinterExtension.java:50)
           at org.apache.axis2.wsdl.codegen.extension.AbstractPretty
              PrinterExtension.engage(AbstractPrettyPrinterExtension.java:36)
           at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.
              generate(CodeGenerationEngine.java:272)
           ... 2 more
   
   
       This error occurs frequently when /tmp is the designated $TMPDIR
       because /tmp is shared by all the users and all the processes. 
   
       $TMPDIR should be used by one user only and should not contain any files
       or directories that do not have permissions.  

   
   Workaround:
       Option 1: Create a new directory and designate it as a $TMPDIR. For example,

                    mkdir /tmp/w4gl_<loginid>

                 In the example above, <loginid> is the user's login id into the 
                 operating system.


       Option 2: Remove all the files or directories from $TMPDIR for which the 
                 user does not have privileges.


E. Statements inside SQL blocks duplicates the first character of a string that 
    starts with an hypen. 

   For Example : 
   MAIN
   SQL
     UPDATE tab 
        SET col1= col1* -2 WHERE key="key"
   END SQL

   Both 4GL pcode compiler and C compiler generate wrong code for the above  SQL statement,
   for given example above generated 4ec files will have following statement

    update tab set col1 = col1 * - 22  WHERE key = "key"

   Correct translation should be 'col1 * - 2' but generated code is 'col1 * - 22', this 
   happens for all SQL that has 'hypen' inside the SQL..END SQL block.

   Workaround :
   If you have any SQL with hyphen then do not put it inside the SQL... END SQL block.