HSSFCGI CHANGE LOG 2023-11-30 - Fixed programs XLSGENVC and XLSXGENVC. 2023-11-13 - PGM RMVENVVARS no longer requires a usrcls(*SECOFR) user profile. 2023-10-30 - Created command RMVENVVARS, documented command JAVASEL, created and documented command JAVATABUPD. 2023-10-23 - In command TABLEXLS, length of parameter TOXLS raised from 256 to 800. 2023-10-19 - Fixed program RMVWRKF. Fixed parameter INCLUDEXML of command TABLEXLS. 2023-10-08 - Fixed the behaviour of parameter INCLUDEXML of command TABLEXLS. Added more documentation about its use (see the command parameter Help text and the online manual). 2023-09-27 - Command XLSXGEN validation program no longer rejects type *DDIR. 2023-08-25 - In HSSFCGI cmmands the max length of stream file parameters was raised from 200 to 800 char. 2023-08-01 - Validity programs of commands TABLEXLS, TABLEXLS2, XLSGEN and XLSXGEN no longer reject type *DDIR output directories. They now check that the current user profile is authorized to create a stream file in the user-specified output directory. 2023-07-11 - XLSGEN_COM and XLSGEN added a log message telling the number of initial bytes skipped from the the input XLSGEN stream file when a recovery job. 2023-07-08 - New command RMVWRKF removes from IFS directory HSSFCGI/WORK stream files left there because of TABLEXLS / TABLEXLS2 command failures. 2023-06-21 - The validity check programs of commands TABLEXLS, TABLEXLS2, XLSGEN and XLSXGEN have been updated to make sure that the output IFS directory for the Excel file has object type *DIR. For instance: object type *DDIR (Distributed Directory) is not supported. NOTE. POI 3.2 and POI 3.6 cannot work with object type *DDIR. 2023-05-09 - Fixed TABLEXLS bug for keyword SKPFLDS. 2023-03-31 - In commands TABLEXLS and TABLEXLS2, parameter SHEETNAME can now be a string of up to 30 uppercase, lowercase or mixed characters. 2023-03-07 - Checks have been added to make sure that the utility runs with a supported job CCSID. 2023-03-06 - Added new procedure RMVMSG() which invokes a CLLE module to perform the RMVMG CLEAR(*ALL) command. 2023-02-17 - Fixed srvpgm HSSFCGIX procedure CklXmlLine(). 2023-01-02 - HSSFCGI download now available from V6R1M0 (instead of V7R1M0). 2022-12-22 - Some monitor's added to local procedure WrtRptRcd() in XLSGEN_COM and XLSXGEN. - Fixed parameters display sequence in command TABLEXLS. 2022-11-23 - Granted *PUBLIC authority *ALL for file HSSFCGI/MYXMLFILE 2022-11-22 - Worksheet names are now inspected for Excel non-allowed characters \/*?:[] 2022-11-08 - Pgm XLSGEN_1, XLSGEN_2 and XLSXGEN: fixed a bug in handling parameter NOTHSSEP. 2022-11-07 - A new parameter (NOTHSSEP, No-thousand-separator columns) has been added to commands XLSTABLE, XLSTABLE2, XLSGEN and XLSXGEN. It may be used to define the column numbers of the numeric columns where the thousand separator character must not be used. 2022-11-03 - Programs XLSGEN and XLSXGEN, when parameter XMLREFMT(*NO), do not trust it and investigate if the input XML-like stream file needs instead to be reformatted. If they find that the need exists, they proceed as per XMLREFMT(*YES). - In commands TABLEXLS, TABLEXLS2, XLSGEN and XLSXGEN the default value for "Max no. of rows per sheet" was changed from 100,000 to 10,000. This was done to limit performance degradation. 2022-11-01 - Changed the way programs XLSGEN_1, XLSGEN_2 and XLSXGEN provide a *STATUS message. 2022-10-25 - In commands XLSTABLE, XLSTABLE2, XLSGEN and XLSXGEN more values are allowed to paramer CELLBORDER. 2022-10-24 - Found that background color takes off cell border. Fixed by adding a THIN border to all cells, unless keyword BORDER, BORDER2 or NOBORDER specified. - NOBORDER keyword now available for <CELL ...> tag. - While CELL keyword BORDER is used to add a MEDIUM border to a cell, new CELL keyword BORDER2 can now be used to add a DOUBLE border to a cell. 2022-10-23 - Assigned a larger width to character "-". 2022-10-22 - Fixed detection of foreground and background color declarations when data type is "text". 2022-10-18 - Commands TABLEXLS, TABLEXLS2, XLSGEN and XLSXGEN now featuring two new column header parameters: -- HDGSIZE, to select one of three available font sizes -- HDGBOLD, to provide a bold weight font - Commands XLSGEN and XLSXGEN have now a command validation program. - Largely improved the way commands XLSGEN and XLSXGEN compute cell widths. 2022-10-06B- Commands XLSGEN and XLSXGEN are now able to process input XML-lile stream files where end_of_row is x'25' instead of 'x'0d25' . 2022-10-06A- BNDDIR HSSFCGI/HSSFCGI now featuring entry HSSFR4_1 or HSSFR4_2 depending on OS/400 release. 2022-10-01 - Now saved for V7R1 instead of V7R2. 2022-09-25 - New parameter XMLRFMT (Reformat input XML stream file) added to commands XLSGEN and XLSXGEN. It allows to decide whether the input XML-like stream file should be reformatted. Reformatting results to a significantly higher response time. - Enhanced command RPTXLSGEN in order to provide more detailed performance information about XLSGEN, XLSXGEN, TABLEXLS and TABLEXLS2 commands. 2022-09-20 - Fixed a bug which was inhibiting the creation of Excel workbooks containing more than one worksheet. 2022-08-29 - All programs using file QTEMP/SHEETS, before opening it do now check for its existence and, if missing, duplicate it from file HSSFCGI/SHEETS. 2022-08-25 - Program XLSGEN, when the XML input to XLSGEN is provided by program TABLEXLS or TABLEXLS2, no longer calls program XMLFORMAT (reformatting of the XML input), thus saving a lot of processing time. 2022-07-10 - Significantly reduced the quantity of disk space needed to run pgm XLSGEN / XLSXGEN. 2022-06-28 - Updated db file JAVATABLE to support V7R5. 2022-06-25 - Now using binding directory HSSFCGI/HSSFCGI to create all RPG programs. 2022-06-16 - Commands TABLEXLS and TABLEXLS2 are now supporting database text field length up to 20,000 characters. However, only the first 1024 bytes are taken as cell value (S.Klement's servive program restriction). 2022-06-11 - JDK14 and JDK15 java products no longer allowed for V6R1. 2022-04-15 - Fixed procedure ChkLibObj(), it was not working for object type *LIB. 2022-04-14 - It has been found that Scott Klement's HSSFR4 service program used in HSSFCGI can create a maximum of 256 columns (cells) per row. 2022-04-07 - Feedback messages about created Excel workbooks now immediately available after commands TABLEXLS, TABLEXLS2, XLSGEN and XLSXGEN. 2022-04-06 - Service program HSSFCGI_X new procedure ChkLibObj(), now used instead of command CHKOBJ, no longer generates useless joblog messages for non-existing objects, thus significantly reducing joblog sizes. - Changed the way pgms XLSGEN, XLSGEN_COM and XLSXGEN control submitted jobs using now pgm RTVJOBINFO, which runs under a user profile with special authority *JOBCTL. 2022-02-14 - Solved problem with V06R01. Pgm JAVASET was trying to use JAVA_HOME of JDK14 (f.c. 5106) - which is not enough for POI - instead of using for instance the JAVA_HOME of JSE 5.0 32 bit (f.c. 5108) which was also available. 2022-01-22 - It is now possible to run some diagnostics on a XLSGEN XML-like file before using it as input to commands XLSGEN and XLSXGEN. This may be an useful way for checking out new XLSGEN script files before they are used to generate EXCEL files. Use command XLSGENDIAG to perform this check. It provides a printout report named XLSGENDIAP. Use command DSPDIAGRPT to display this report and command DLTDIAGRPT to delete it. Commands TABLEXLS, TABLEXLS2, XLSGEN and XLSXGEN are now featuring a new optional parameter - XLSGENDIAG(*YES) - to run this diagnostic tool before that the EXCEL file generation is started. When this is done, if the diagnostic tool detects severe XLSGEN language errors, the process is interrupted before generating the EXCEL file. 2022-01-14 - Command XLSGEN, XLSXGEN, TABLEXLS and TABLEXLS2, when SBMJOB(*YES), are now able to detect and to notify if the submitted job ended out of control. 2022-01-05 - Programs TABLEXLS and XMLFORMAT2 enhanced to support null field values. 2021-12-09 - In command TABLEXLS, a new parameter named SKPRCDS allows to skip input records when meeting user-defined field values conditions. 2021-11-18 - In commands TABLEXLS, TABLEXLS2, XLSGEN and XLSXGEN, when SBMJOB(*YES) specified, new parameter JOBQ may be used to assign the job queue for the submitted synchronized job. 2021-09-29 - HSSFCGI was not norking on V5R4. After performing this release, it started working also on V5R4. 2021-06-04 - Major redesign of program XLSUPD: -- It allows to update not only XLS spreasheets, but also XLSX spreadsheets. -- Full support for updating numeric "percentage" cells and and formula "percentage" cells. 2021-06-02 - XLSGEN and XLSXGEN commands can now generate data-type numeric "percentage" cells and formula "percentage" cells. See page https://www.easy400.net/hssfcgi/html/page2.htm#percentages . 2021-06-01 - Java products Java Developer Kit 1.4 (option 5106) and Java Developer Kit 1.5 (option 5107) marked as non-POI compatible on V6R1. 2021-05-23 - Command XLSUPD. Fixed problem in updating a date cell (date format change was not supported). 2021-05-17 - When an Excel workbook is imported from PC to IBMi and is then updated via command XLSUPD, formulas referring to updated cells are not automatically re-valuated. As a consequence, when that workbook is exported to PC, formulas still display the old values until the user presses CTRL+SHIT+ALTGR+F9. Now a new HSSFCGI command, REFSWBOOK (Refresh workbook formulas) performs such refresh on the IBMi and should be used when making imported and updated workbooks available for download. Read about it at page http://www.easy400.net/hssfcgi/html/page8.htm#6 . 2021-04-30 - Command XLSUPD was improved in creating new FORMULA cells. - New parameter ACHDG_APY in command TABLEXLS and TABLEXLS2 allows to specify to which files the ALTCOLHDG keyword should apply when multiple database file names are entered in parameter FROMFILE. 2021-04-25 - Besides data-type TEXT, NUMBER and FORMULA, HSSFCGI commands UPDXLS and UPDXLS (update an existing Excel spreadsheet) now also support data types COLUMN-HEADING, DATE and TIME. - In commands TABLEXLS and TABLEXLS2 commands, parameter ROTATE (rotate the generated column headers) now supports also 45 and -45 degrees rotation. 2021-04-22 - Enhancement to command HSSFCGI/XLSUPD: in the stream file specified in parameter INPSTMF, instead of specifying COLNBR="H" ROWNBR="10" you can now specify CELLNAME="H10" . - HSSFCGI/XLSUPD now forced to use POI 3.2 on V5R4. 2021-04-14 - From IBMi V7R4 on, JVM assigns by default CCSID 1208 (UTF-8), instead of CCSID 819, to generated Excel stream files. However, CCSID 819 can still be achieved by running command ADDENVVAR ENVVAR(PASE_DEFAULT_UTF8) VALUE(N) before the job JVM is started. A new parameter, FORCE819, has therefore been added to HSSFCGI commands TABLEXLS, TABLEXLS2, XLSGEN and XLSXGEN. When FORCE819(*YES) specified in these commands, command ADDENVVAR ... above is automatically executed before starting a .XLS or .XLSX Excel book generation. 2021-04-11 - OS/400 V5R4: only POI 3.2 supported, generation of XLSX Excel workbooks not supported. 2021-04-06 - XLSGEN now supports two new dynamic variables: &&DATE; and &&TIME; See page https://www.easy400.net/hssfcgi/html/page2.htm#datetime . 2021-03-14 - Updated WEB page https://www.easy400.net:1220/hssfcgi/html/javatable.html for V7R2. - Fixed pgm JAVASET to properly handle the Java Product selected by the user (via command HSSFCGI/JAVASEL -> file HSSFCGIDTA/JAVATABLES). 2021-02-24 - In case of procedure hssf_formula() or ss_formula() failure in validating a formula, in previous HSSFCGI releases the process used to be terminated through an escape message. Now just a diagnostic message is sent to the joblog and the process is no longer terminated. 2021-01-08 - Programs XLSGEN_1, XLSGEN_2 and XLSXGEN updated to support user failure in specifying </row> tags in a XLSGEN script. 2020-08-25 - Process of procedure "runFormula()" now monitored both in XLSGEN and XLSXGEN commands. 2020-08-01 - The Change Log can now be displayed as an HTML page from the online manual. 2020-07-04 - XLSGEN and XLSXGEN - Fixed bold font option. 2020-07-02 - Implemented a more convenient way to establish the number of sheets per book when - in commands TABLEXLS, TABLEXLS2, XLSGEN, or XLSXGEN - the element "Max no. of sheets per workbook" of parameter SHEETSIZE is set to *AUTO. 2020-04-16 - Fixed procedure RTVRCDFFD() in module XXXRTVFRFD. The HSSFCGIDTA/FLDLST member used to store rcdfmt field descriptions via API QUSLFLD for a given D.B. file is now *EXCL allocated while being updated, to avoid concurrent updates from more than one job. Concurrent updates would infact result to an exception because of duplicated unique key values. 2020-04-15 - Fixed local procedure SkpFldCmp() in pgm TABLEXLS. It was failing when comparing a field value to blank. 2020-04-06 - Program XMLFORMAT2 has been updated to support new parameter INCALLROWS of command SPLECELL/SPLECELL. 2020-04-06 - In module XLPARSERJP, procedure xlparsejp_workbook() has been added two more optional procedure pointer parameters, so that calling program may also receive control on start and end of each spreadsheet row. 2020-03-24 - Fixed an error in module XLPARSERJP of procedure xlparsejp_workbook(). 2020-03-10 - New service program XLPARSERJP. It can successfully parse XLS/XLSX spreadsheets that fail to be parsed with service program XLPARSE2/XLPARSER4. Developed on HSSFCGI for XLPARSE2 users. 2019-11-18 - Updated file JAVATABLE for V7R3 and V7R4. 2019-10-23 - Fixed row-freeze in XLSX spreadsheets. 2019-10-16 - Fixed a bug in pgm XMLFORMAT. - Programs XLSGEN and XLSGENX now detect cell-end from the tag. - Updated parameter SHEETSIZE in commands XLSGEN, XLSXGEN, TABLEXLS, and TABLEXLS2. SHEETSIZE now includes a third element: the maximum number of worksheet rows. 2019-10-07 - Fixed packaging error related to pgm TABLEXLS2V. 2019-10-04 - Enhanced XLSGEN and XLSXGEN programs by passing parameters to recovery submitted jobs. 2019-10-03 - Fixed the following problem with programs XLSGEN_2, XLSGEN1, and XLSXGEN: "when the maximum number of rows per sheet is reached, a new job is submitted, but it fails in creating the first row (because the creation of its worksheet was not performed". Now that worksheet is created and can accept rows. 2019-09-21 - Commands XLSGEN, XLSXGEN, TABLEXLS, and TABLEXLS2 have been added a new parameter: CVTTIME. This parameter is used to set the format of the EXCEL time cells. 2019-08-08 - New TABLEXLS parameter INCLUDEXML allows to include a group of predefined rows in the spreadsheet body generated by command TABLEXLS. See page https://www.easy400.net/hssfcgi/page6b.htm . 2019-08-07 - New parameter NULLDATE added to commands XLSGEN, XLSXGEN and TABLEXLS. It specifies the way a null date field (*ISO 0001-01-01) should be displayed in the corresponding spreadsheet cell. 2019-07-20 - Fixed the way used by pgm TABLEXLS to pass the number of frozen columns to the XLSGEN.../XLSXGEN programs. Done the same for pgm TABLEXLS2. 2019-06-17 - Install procedure: directory /hssfcgi/java removed before been restored. 2019-06-13 - In member JVMSTARTUP fixed a /COPY statement incorrectly referring to library XLPARSE2 2019-06-12 - Maximum length of cell data value raised from 500 to 5000 characters. 2019-05-10 - In command TABLEXLS a new parameter, named SKPFLDS, allows to skip cell generation for fields meeting given conditions. 2019-05-05 - In command TABLEXLS a new parameter, named RCDFMTNBR, now allows to process a record format other than the first one when the input database file contains multiple record formats. 2019-04-19 - In comands XLSGEN and XLSXGEN, when ZERODSP(*NO), numeric cells with zero value are no longer created as text cells containing blank, now they are created as numeric cells containing 0 but the cell value is not displayed. - Keyword HIDE now supported for numeric and for formula cells. 2019-04-17 - A new parameter, PRINTXML, has been added to commands TABLEXLS and TABLEXLS2. It may be used to print the intermediate XML-like XSLGEN script used to generate the EXCEL workbook. This may help in checking out for correctness the XML-like script generated by these two commands. 2019-04-10 - New command JVMSTARTUP allows jobs to execute also other Java applications besides HSSFCGI. See page http://www.easy400.net/hssfcgi/html/jvmstartup.htm . 2019-03-05 - Updated pgm XMLFORMAT2 for appropriate processing of characters "field delimiter" or "string delimiter" found inside fields of the input d.b. file (specified in FROMFILE parameter of command TABLEXLS2). 2019-02-19 - Updated srvpgm HSSFCGIX procedure RtvRCDFFD() (module XXXRTVFRFD). 2019-02-17 - Updated programs XMLFORMAT and XMLFORMAT2 (called by commands XLSTABLE and XLSTABLE2). They were creating file QTEMP/MYXMLFILE with rcdlen(500) instead of rcdlen(5000). 2019-01-16 - Updated program XMLFORMAT to avoid a loop when delimiter ">" is missing. 2018-12-11 - Updated procedure RtvJobType in srvpgm HSSFCGIX. It was creating a MCH problem. 2018-12-10 - Fixed problem with parameter ALTCOLHDG in commands XLSTABLE and XLSTABLE2. 2018-10-27 - A new option was added to parameter COLHDGOPT in commands TABLEXLS and TABLEXLS2: now, if you specify COLHDGOPT(0), no column headings are generated. 2018-10-04 - In pgm XLSGEN and XLSXGEN fixed the case of ZERODSP(*YES) not working as expected. 2018-10-01 - Command, panel group and program XLSGEN2 suppressed: no longer needed to run TABLEXLS2. 2018-09-30 - Greatly simplified the code needed to run command TABLEXLS2. 2018-09-28 - Important updates regarding multi-spreadsheet workbooks and huge workbooks. 2018-09-07 - In XLSGEN, the contents of an Excel spreadsheet cells can now be rotated using keyword "rotate", see page http://www.easy400.net/hssfcgi/html/page2.htm#2 . - In commands TABLEXLS and TABLEXLS2, a new parameter HDGROTATE allows to rotate vertically the columnh headers. See page http://www.easy400.net/hssfcgi/html/page4.htm . 2018-08-12 - Greatly simplified the set up of the environment for the Java Virtual Machine. 2018-08-08 - When DECPOS(*NOC) specified, the XLSGEN program were forcing 2 decimal position. Those directives now have been removed. DECPOS(*NOC) works as DECPOS(*AUTO), but thousand delimiters are not shown. 2018-08-07 - Fixed a severe error in all XLSGEN/XLSXGEN programs: numeric cells were not generated when parameter DECPOS(n) with n=0 to 9 . 2018-07-11 - No-operated references to options of product 5770JV1 which were detected as not compatible with HSSFCGI and XLPARSE2. 2018-06-29 - Important enhancement to cgi WEB programs WEBTABLEXL and WEBTABLEX2. These programs allow to run commands TABLEXLS and TABLEXLS2 from a WEB browser, and to receive on the browser the generated Excel spreadsheet as a download file. The enhancement allows to optionally run the TABLEXLS/TABLEXLS2 command in a batch submitted job, thus avoiding browser timeout problems. Appropriate controls are provided in the WEB page to download the generated Excel spreasheet once the submitted job is ended. 2018-06-14 - Fixed cell border support. 2018-06-06 - Null cells (cells without tags and ) are now NOT generated. 2018-06-01 - Some changes in architecture of rpg sources XLSGEN_COM, XLSXGEN, XLSGEN2_CM and XLSXGEN2. 2018-05-26 - In the previous release, parameter DECPOS(*NOC) was incorrectly displaying thousand separators (example: 14,876.23 instead of 14876.23). That was found to be due to an unexpected result of an overloaded Excel cell style, and has been now fixed. NOTE - In order to work DECPOS(*NOC) requires default cell colors: DFTCELLCOL(BLACK WHITE) . 2018-05-13 - New parameter NEGFMT (negative numbers format) has been added to commands XLSGEN, XLSGEN2, XLSXGEN, XLSXGEN2, TABLEXLS and TABLEXLS2. Three formats sare supported for negative numbers: -- *A provides format -nnn,nnn.nnn -- *B provides format -nnn,nnn.nnn in red color -- *C provides format (nnn,nnn.nnn) in red color In addition, a XLSGEN keyword NEGFMT has been made available to the entry. See page http://www.easy400.net/hssfcgi/html/page2.htm . 2018-02-21 - In the XLSGEN language, formula operators < and > are now correctly translated to characters < and > 2018-02-18 - Added command CLONEBOOK (Clone workbook over itself). This command may be used by XLPARSE2 users / procedures to provide a workbook with cell data properties when they are apparently missing. 2017-11-24 - XLSGEN now handling the case where the user forgot to specify the NAME keyword in the tag. 2017-09-09 - New parameter SKPBLANK (Skip blank text cells) in commands TABLEXLS(2), XLSGEN(2) and XLSXGEN(2) can be used to skip generation of text blank cells. 2017-09-02 - Improved the ability of a CL program, executing command TABLEXLS, to monitor for escape messages returned from this command. See CL test programs MONITORCL in HSSFCGI/QCLSRC. 2017-08-14 - Fixed parameter TGTRLS in some commands of CL source COMPILE. 2017-07-06 - Command CRTBIGXML creates a large XLSGEN input stream file to be used for a performance test. 2017-06-26 - Sheet name maximum length has been raised from 30 to 31 characters. 2017-06-17 - New XLSGEN and XLSXGEN feature: - in and in the new keyword DEC-POS="n" allows to override the number of decimal positions specified in parameter DECPOS of commands XLSGEN and XLSXGEN. See page http://www.easy400.net/hssfcgi/html/page2.htm#numbers . 2017-06-15 - Fixed the case when generating multiple workbooks and the first worksheet in the 2nd, 3rd, etc. workbook shows up with an odd name and no cells. 2017-06-08 - In XLSGEN, XLSGEN_COM, XLSGEN2_CM, XLSXGEN and XLSXGEN2 fixed the way submitted job names are generated. 2017-05-28 - In XLSGEN, XLSXGEN, XLSGEN2 and XLSXGEN2 the maximum number of consecutive recovery jobs was set to 20. 2017-05-24 - Two new parameters (FLDDLM and STRDLM) have been added to command TABLEXLS2. 2017-04-22 - New command ZIPWKB (Zip Excel workbooks) allows to compress into a .zip file the Excel workbooks generated from commands XLSGEN, XLSXGEN, TABLEXLS and TABLEXLS2. See page http://www.easy400.net/hssfcgi/html/page2.htm#zipwkb . 2017-04-18 - In XLSGEN_COM, XLSGEN2_CM, XLSXGEN, XLSXGEN2 calls to function (h)ss(f)_begin_Obj_Capacity() are now monitored for error. 2017-03-31 - Maximum number of supported columns raised from 500 to 1000. 2017-03-30 - Performed a major redesign to support creation of very large spreadsheets (totalling more than 2 million cells) through multiple workbooks, each workbook containing at least two spreadsheets. This process is completely automated and performed by serially submitting multiple batch jobs. WARNING - In commands XLSGEN, XLSXGEN, TABLEXLS and TABLEXLS2, parameter RECOVERY has been replaced by parameter SHEETSIZE. See page http://www.easy400.net/hssfcgi/html/page2.htm#sheetsize . - Fixed a problem in computing the width of a column when more than 500 columns. 2017-03-22 - More code added to XLSGEN_COM and XLSXGEN to manage creation of large spreadsheets. 2017-03-20 - V7R3 enabled. 2017-03-11 - Improved the process of paramater SBMJOB(*YES) in commands XLSGEN/XLSXGEN/TABLEXLS. 2017-03-09 - XLSGEN_COM and XLSXGEN: small but effective changes when creating large stream files. - XLSGEN_COM and XLSXGEN: more control on files OPEN. 2017-02-23 - Prevented attempts to create multiple worksheets with the same name in the same worksheet. 2017-02-15 - Fixed compile problem: some programs failed to be created because of duplicated procedure names. 2017-01-08 - Two new commands, XLSUPD and XLSXUPD, can now be used to update existing Excel spreadsheets. 2016-12-05 - Fixed Java set up in service program HSSFCGIX. 2016-11-19 - A new demo pgm (GOCATALOG) shows how properly handle pictures in generating Excel spreadsheets via XLSGEN. 2016-11-06 - Modified procedure SetJava15() in module HSSFCGIX of srvpgm HSSFCGIX to match the way the environment variable JAVA_HOME is set by procedure SetJava15() in module XLBPROC of service program XLPARSE2/XLPARSER4. 2016-10-10 - Fixed pgm TABLEXLS. It used to send an error message when *LIBL specified in parameter FROMFILE. 2016-10-05 - A new parameter for commands TABLEXLS and TABLEXLS2, COLHDGOPT, establishes whether the colunm heading cells in the Excel spreadsheet shoult be filled in with the field column headers, the field text descriptions or the field names. 2016-09-08 - Commands TABLEXLS and TABLEXLS2 can now add banners to generated XLS and XLSX Excel Spreadsheets. See page http://www.easy400.net/hssfcgi/html/page6.htm . 2016-08-25 - Updated procedure SetJava15() for V7R3. 2016-08-24 - Reviewed all the Scott Klement's Demos. Provided a documentation page for them. 2016-06-29 - Database record fields containing character ">" used to cause command TABLEXLS2 to generate spreadsheets with missing data in several columns. 2016-06-09 - Added warning messages when "display from right to left" requested for XLSX spreadsheet. 2016-05-26 - A new feature allows to force worksheet display from right to left, instead of left to right. See page http://www.easy400.net/hssfcgi/html/rtl.htm . 2016-05-14 - Pgm CRTADHPGM. Updated the logic for creating the name of the AD_HOC program when the db file to be read is in library QTEMP. 2016-05-11 - Pgm TABLEXLSV, validity checker of command TABLEXLS:removed err msg for FROMFILE in library QTEMP. 2016-05-03 - Fixed bug in pgm XLSGEN: date format "dmyy" used to provide a dd/mm/yy cell edit value instead of dd/mm/yyyy . 2016-04-12 - Program CRTADHPGM has now a different process in creating ad-hoc ILE-RPG programs intended to read database files in library QTEMP. 2016-03-31 - Program CRTADHPGM (Create ad-hoc program) - invoked from command TABLEXLS - when simultaneously requested to create ad-hoc programs from two different jobs, had a chance of using the same RPG source member for that, thus failing the program creations. That was fixed. 2016-03-11 - The temporary ..._save... copy of the generated workbook, should have been deleted before returning from commands XLSTABLE and XLSTABLE2. 2016-01-24 - XLSGEN new ; keyword ROW-HEIGHT allows to define the height (in points) of a row. Extremely useful for pictures and headings. - XLSGEN new keyword VALIGN allows to define the vertical alignement of data in a cell. 2016-01-20 - Fixed memory problem in pgm XMLFORMAT. 2016-01-20 - Programs XLSGEN and XLSGEN now reformat their input XML-like stream file so that no problems may any longer arise in detecting <...> tags. 2016-01-15 - A new XLSGEN DATA TYPE has been added: LARGENUMBER. It defines a right aligned large characters number. 2015-11-27 - Fixed the case of row loss when no spaces between tag and tag . 2015-11-25 - Unlimited number of HSPAN/VSPAN-ned cells now supported. 2015-11-24 - Fixed some user errors in the XLSGEN script: 1- tag missing 2- tag without any preceding tag. 2015-11-20 - Fixed some prompt controls in command XLSTABLE. 2015-09-10 - Commands TABLEXLS and TABLEXLS2 now support parameter PRTFIT. 2015-09-08 - Commands TABLEXLS and TABLEXLS2 now support parameter PAPERSIZE. 2015-09-05 - New CGI program WEBTABLEX2 (similar to CGI program WEBTABLEXLS) allows to run TABLEXLS2 from the browser and returns the generated spreadsheet to the client. 2015-09-04 - New program WEBXLSGEN2, similar to WEBXLSGEN, but for interpreting XLSGEN2 stream files. 2015-09-02 - Fixed a TABLEXLS2 case where the input database file contains *null fields. 2015-08-27 - Fixed a problem with programs XLSGEN2_1, XLSGEN2_2 and XLSXGEN2 (used also in command TABLEXLS2). Program-predefined cell styles were getting corrupted during execution, thus causing exceptions during spreadsheet cell creation through POI. 2015-08-18 - A new formula command in XLSGEN language, XVSUM, allows to perform a sum of all the preceding cells in the same column that did perform a VSUM formula. XVSUM therefore may be used in a column to generate a "grand total" from the preceding "subtotals". 2015-08-12 - In srvpgm HSSFCGIX, procedure ChkJavaPrerq() performs more tight controls on JDK prerequisites. - Added command DSPENVVAR. 2015-08-08 - Fixed some VSUM/HSUM/VAVG/HSVG behavior in XLSGEN.../XLSXGEN... programs. - VSUM/HSUM/VAVG/HSVG commands now supporting parameter "noclear". - New procedure "getColName()" added to service program HSSFCGIX. It allows to retrieve the Excel column name from its column number. 2015-08-03 - Program install now deletes all existing "ad-hoc" prograqs in library HSSFCGIDTA. Reason: existing "ad-hoc" programs may raise a signature violation exception if some of the HSSFCGI service programs was updated. 2015-08-01 - In XLSGEN* and XLSXGEN* programs, HSSFR4 procedures hssf_cellname() and ss_cellname() - previously used to retrieve a cell name from row-number and row-cell-number - did not work for spreadsheets containing more than 32767 cells. That caused XLSGEN formulas VSUM/HSUM/VAVG/HAVG not to be reliable in large spreadsheets. Now, to retrieve a cell name, we use a new procedure of ours, getCellName(), and now we have no problems with XLSGEN formulas VSUM/HSUM/VAVG/HAVG in large spreadsheets. 2015-07-14 - Released the HSSFCGIDeveloperGuide.pdf . 2015-06-04 - Fixed program TABLEXLS2 for the case when in system value QDECFMT the decimal point is a comma instead of a period. 2015-06-01 - Command TABLEXLS2 has been given the possibility of just generating the script to be later on processed by command XLSGEN2 or XLSXGEN2. 2015-05-30 - Parameter XLSGENRPT has been added to commands XLSWGEN, XLSGEN2, TABLEXLS and TABLEXLS2. It allows to generate - once the spreadsheet creation is over - a performance report. 2015-04-24 - Improved performance report (prtf and pgm RPTXLSGEN). - Fixed some TABLEXLS2 problems with releases before V6R1: unsupported parameters/values in command CPYTOIMPF. 2015-04-22 - New command TABLEXLS2 is 1.3 times faster than TABLEXLS and does not require ILE-RPG compiler. Note - Library QSYSINC is needed to build Scott Klement's service program HSSFR4. 2015-04-16 - Updated page /hssfcgi/html/altcolhdg.htm . 2014-10-13 - A free trial version (file "hssftry.zip") has been made available for V5R3 and subsequent releases. This version is "object code only" and can be used for 30 days. 2014-09-05 - Solved problem related to XLSGEN commands HSUM, VSUM, HAVG and VAVG (generating Excel formulas). Cells generated from these commands could not participate in a subsequent HSUM, VSUM, HAVG or VAVG commands. Now they can. 2014-09-04 - Fix to XLSGEN and XLSXGEN programs: does no longer generate a text cell containing blank(s), it now generates a numeric cell containing zero. - A new parameter, ZERODSP, was added to commands XLSGEN, XLSXGEN, WEBXLSGEN, TABLEXLS and to CGI WEB program WEBTABLEXL. This parameter tells whether numeric cells containing value zero should display a zero or nothing. When in an Excel worksheet a large number of numeric cells contain zeroes, non displaying the zeroes may result to easier user reading. 2014-03-08 - New command RPTXLSGEN provides detail information about the workbooks created from the current job. 2014-03-06 - Command TABLEXLS will no longer force recreation of the "ad-hoc" program when database creation/last-change dates do not match the ones recorded on file HSSFCGIDTA/ADHOCCTL . This saves useless ad-hoc program regeneration and is also required for using TABLEXLS on a production box without ILE_RPG. 2014-02-08 - Removed limit of 500 characters for conversion of character strings to spreadsheet text-cells (commands XLSGEN, XLSXGEN and TABLEXLS). 2014-01-15 - Fixed a non-relevant error in a CHKOBJ command of pgm XLSXGEN. 2013-12-26 - Updated srvpgm HSSFCGIX for V7R1 5761JV1 product options. 2013-10-17 - In commands XLSGEN, XLSXGEN and TABLEXLS parameter FROZEN extended to include, besides the number of frozen intial rows, also the number of frozen initial columns. 2013-02-04 - Fixed pgm CRTADHPGM for the case when more than one key field are null capable fields. 2013-01-25 - Added TABLEXLS support for datatype "O" (DBCS-Open data) in input database fields. 2012-12-31 - A new parameter (DOWNLOAD) in command TABLEXLS controls whether the Excel stream file generated in a CGI job should be sent or not to the browser. See page http://www.easy400.net/hssfcgi/html/page4.htm . 2012-12-13 - If job CCSID 65535, commands TABLEXLS, WEBXLSGEN, XLSGEN and XLSXGEN will set it to its default value 2012-12-05 - Refreshed service program HSSFCGI/HSSFCGI by duplicating the latest version of service program CGIDEV2/CGISRVPGM2. That was done to get rid of API CEERAN0, giving troubles. 2012-07-15 - Added subprocedure EvaluateCellFormula to service program HSSFCGI/HSSFR4_2. This procedure returns the value of a formula_cell in a XLS or XLSX spreadsheet. Available for POI 3.6 only (V5R4 on). However, apart from two demo/test programs (FORMEVXLS and FORMEVXLSX), this subprocedure is not used in the HSSFCGI utility. 2012-06-21 - XLSGEN and XLSXGEN now provide - in file QTEMP/XLSGENRPT - some data about generated worksheets. 2012-05-02 - In commands XLSGEN and XLSXGEN maximum number of styles raised from 545 to 10051. 2012-04-30 - In commands XLSGEN and XLSXGEN fixed a bug when attempting to generate more cell styles than supported. 2012-03-20 - In command TABLEXLS, when parameter SHEETNAME contains a given name, the sheet names in the workbook used to be added a sequence number. Now, this sequence number (1) is dropped for the first sheet name. 2012-03-09 - In command TABLEXLS, parameter SHEETNAME extended from 8 to 30 characters. 2012-01-15 - Removed the 2011-12/15 restriction "TABLEXLS SBMJOB(*YES) not supported if IGNFLDS or LINKFLDS". 2011-12-16 - Ad-hoc generated programs now can just read (no longer update) database files. That is required by SQL views. 2011-12-15 - TABLEXLS SBMJOB(*YES) not supported if IGNFLDS or LINKFLDS. - Removed "ovrdbf" and "dltovr" commands. 2011-12-05 - Parameter DEC-POS supported also for quick formulas HSUM, VSUM, HAVG and VAVG. 2011-12-02 - In TABLEXLS fixed the editing of some numeric fields with decimal positions. 2011-12-01 - Provided parameter DEC-POS for formulas. Example: < data type="formula" dec-pos="3" > . 2011-11-30 - Fixed the case of multiple consecutive %LF's. 2011-11-29 - Improved number of decimal digits and cell width for < data type="formula" ... > . 2011-11-25 - Provided support for field data type "G" (UCS-2 graphic fields). 2011-11-24 - Files HSSFCGIDTA/ADHOCCTL1 and HSSFCGIDTA/FLDLSTCTL now opened with RCDFMTLCK((... *EXCL)) WAITFILE(32767). 2011-11-21 - Added controls on user profile authorization to access files specified in parameter FROMFILE of command TABLEXLS. 2011-11-19 - Fixed command TABLEXLS (some parameters were no longer visible). - Provided some *PRV messages for TABLEXLS SBMJOB(*YES). 2011-11-19 - Provided an extra page for further ALTCOLHDG documentation. - Provided raise up of XLSGEN/XLSXGEN messages at top of program stack when pgm TABLEXLS in execution. 2011-11-08 - New parameter ALTCOLHDG has been added to command TABLEXLS. In this parameter you may mention a stream file containing an XLSGEN script that provides your own worksheet column headings for the first database file mentioned in parameter FROMFILE. See page http://www.easy400.net/hssfcgi/html/page4.htm . 2011-11-05 - Some fixes in recovery code. 2011-10-27 - Full recovery feature now available with parameter RECOVERY in commands XLSGEN, XLSXGEN and TABLEXLS. Especially useful when facing JVM memory problems during generation of large worksheets. See page http://www.easy400.net/hssfcgi/html/page2.htm#largewks . 2011-10-12 - Added code to XLSGEN and XLSXGEN to provide for saving the generated worksheets before a failure occurs. This allows for partial results in case of memory problems. - Provided command DSPERRS for quick diagnosis after XLSGEN/XLSXGEN failure. 2011-10-10 - XLS (MS Office 2003) and XLSX (MS Office 2010) worksheets have some limits (number of rows, number of cells). See: - http://office.microsoft.com/en-us/excel-help/excel-specifications-and-limits-HP005199291.aspx - http://office.microsoft.com/en-us/excel-help/excel-specifications-and-limits-HP010342495.aspx Whenever program XLSGEN or XLSXGEN reaches one of those limits, it ends the current worksheet and starts a new one. 2011-10-05 - When a formula is not accepted by POI, srvpgm HSSFR4 receives an exception and POI is no longer available until the program returns with *LR *on. In such situations, it was very difficult for the user to know the name of the cell containing the wrong formula which raised the POI exception. Some special messages have been added to commands XLSGEN and XLSXGEN, so that the user now can know the name of the cell and the wrong formula which stopped the process. 2011-09-29 - Fixed a bug in pgm TABLEXLS (executing command XLSGEN). 2011-09-23 - Fixed a bug by which VSPAN/HSPAN-ed cells "booked" status was incorrectly cleared, thus not displaying the cell in a row following the last VSPAN/HSPAN-ed cell. 2011-08-30 - A new parameter ("anchor") has been added to the data type PICTURE. It establishes the behavior of a picture when - the cell is resized - a new column or a new row is added to the worksheet For more information, see page http://www.easy400.net/hssfcgi/html/page2.htm on topic "Picture resizing and relocation". 2011-08-12 - In XLSGEN, date cells containing a date before January 1 1900, are converted to Excel text cells instead of being converted to Excel date cells. This is due to the fact that in Excel dates are represented as the number of days since January 1, 1900 and date cells created with a lower value display value ########## . 2011-07-16 - Commands XLSGEN, XLSXGEN and TABLEXLS have been added parameter LOG. This parameter allows to generate a log file in library QTEMP, where all the generated cells are logged. If the process abnormally terminates, by displaying this file one can easily tell what was the last cell successfully generated. - VSUM, HSUM, VAVG and HAVG formulas can now be requested on previous formula cells. - In XLSGEN language, tag < cell > features a new keyword, COLUMN-MAXWIDTH="number_of_pixel". It may be used to limit the width of a spreadsheet column when the data of its cells cause an excessive column width. - When an XLSX spreadsheet is generated, controls are now active to limit to 30 chars the spreadsheet names. 2011-07-11 - Added parameter SHEETNAME to command TABLEXLS. 2011-07-05 - Fixed bug in XLSGEN_COM/XLSXGEN local subprocedure SaveColWidth. 2011-06-28 - Fixed error in XLSGEN/XLSXGEN: when XLSGEN < data > starting by "%LF ", local subprocedure SaveColWidth would fail after being called from local subprocedure SetLineFeeds. 2011-06-10 - Implemented new features to control cell borders: 1-Commands XLSGEN, XLSXGEN and TABLEXLS are now supporting new parameter CELLBORDER which allows to generate cell borders for all cells, or just for cells displaying a foreground or a background color different from the default values. For more information, see page http://www.easy400.net/hssfcgi/html/page2.htm . 2-In the XLSGEN language, the cell tag now supports the keyword BORDER < CELL BORDER > This is the way to add borders to selected cells. For more information, see page http://www.easy400.net/hssfcgi/html/page4.htm . 2011-05-04 - In command TABLEXLS, parameter LNKFLDS (hyperlink fields) now supports single value *SELECT. This allows the user to select from a list the field pairs making up hyperlinks. - In command TABLEXLS, parameter IGNFLDS (fields to be omitted) now supports single value *SELECT. This allows the user to select from a list the field names to be omitted in the spreadsheet. 2011-05-01 - Some new keywords added to XLSGEN language tag < WORKSHEET >. These keyword are PRINT-HEADER, PRINT-ORIENTATION and PRINT-SCALE. See page http://www.easy400.net/hssfcgi/html/page2.htm . The old XLSGEN tag < HEADER > is still supported but is now deprecated. 2011-04-29 - All spreadsheet cells are now given thin borders (they show up also on printouts). - Changed XLSGEN/XLSXGEN checks on Java configuration. 2011-04-20 - Added command WEBXLSGEN, see page http://www.easy400.net/hssfcgi/html/page3.htm . 2011-04-18 - New parameter ADDTO(*YES) in commands TABLEXLS, XLSGEN and XLSXGEN allows to add new worksheets to an existing workbook. 2011-04-15 - Added support for database null capable fields. 2011-04-07 - Added subprocedure "Get_HSSFCGI_Java()" to service program HSSFCGIX. This subprocedure allows to retrieve the Java environment variables needed by commands XLSGEN, XLSXGEN and TABLEXLS. This allows the Java environment variables to be setup by a program before that a JVM is started. See page http://www.easy400.net/hssfcgi/html/page3.htm#3 . 2011-04-06 - A new parameter SBMJOB has been added to commands XLSGEN, XLSXGEN and TABLEXLS. When SBMJOB(*YES), the entire Java process is executed in a submitted batch job. This allows to avoid conflicts with existing JVM settings in the current job. 2011-03-31 - Added keyword PAGE-BREAK to tag ROW. It causes a print page break before this row. 2011-03-08 - Fixed an error in XLSGEN_COM and in XLSXGEN. When more than 32767 cells, formula-cells would bump out the program. 2011-03-01 - Fixed an error in the HTTP directives ( < LocationMatch ... > directive ). 2011-02-25 - Qualified database file names not supported by the RPG compiler. Error message from TABLEXLS. 2011-02-21 - TABLEXLS and the CGI pgm WEBTABLEXL are now supporting multiple database files. 2011-02-20 - TABLEXLS and the CGI pgm WEBTABLEXL are now supporting multimember database files. - Parameter HEADER in command XLSGEN/XLSXGEN now allows to define a print header. 2011-02-18 - Hyperlink cells can now be generated also for spreadsheets built from command TABLEXLS and from the WEB-CGI program WEBTABLEXL. 2011-02-16 - XLSGEN control statement < header >...< /header > can now be used to generate print header and footer. 2011-02-15 - Frozen rows are now repeated on all print pages. 2011-02-14 - Added HYPERLYNK support in Formula. - Refined the computation of column widths. - Fixed the case where < /worksheet > is omitted. 2011-02-12 - Added keywords UNDERLINE and ITALIC for the XML-like < data ... > statement. 2011-02-10 - Added keyword CELL-WIDTH for the XML-like < cell ... > statement. It allows to size a cell width to a given number of pixels. Example: < cell cell-width="200" > . Maximum cell width is 889 pixel. 2011-01-24 - Changed the way Java is started for V6R1 and V7R1. See subproc SetJava15 in mbr HSSFCGIX . 2010-12-06 - A POI procedure "freeze pane" has been used to keep steady the spreadsheet initial rows. This is very useful when scrolling spreahsheets with a large number of rows. This feature is handled via parameter FROZEN in commands XLSGEN, XLSXGEN and TABLEXLS. CGI program WEBTABLEXL now invokes command TABLEXLS with parameter FROZEN(1). 2010-11-28 - In the previous releases of HSSFCGI, a cell spanning over multiple rows used to force the next row after the last row spanned. That did not allow to have other cells - at the right and left side of the spanning cell - except for the first spanned row. In today release you can have a cell spanning over multiple rows AND surrounded by other cells in all the spanned rows. This can be done by specifying OVERLAY next to the keyword VSPAN. See http://www.easy400.net/hssfcgi/html/page2.htm#figure5 . See also the sample XLSGEN script in stream file /hssfcgi/tmp/zzz.xml . 2010-11-27 - Fixed the error where a cell text was displayed in bold characters when the cell text was containing the word " bold". 2010-11-09 - Programs XLSGEN and XLSXGEN were missing the appropriate style for numeric cell with 6 decimal positions. 2010-10-18 - Added the following types for right alignement: TEXTR, LARGETEXTR, SMALLTEXTR. Added keyword BOLD. 2010-10-16 - If during XLSGEN/XLSXGEN process library HSSFCGI is added to the library list, it is then removed from the library list as soon as it is no longer needed. 2010-10-07 - Fixed a problem that was not allowing XLSGEN to work with OS/400 V5R4. 2010-10-06 - Fixed the problem with more than 32767 cells. - Changed the way Java products level is retrieved. 2010-10-04 - Fixed management of large and small text fonts in XLSGEN/XLSXGEN. 2010-10-02 - If OS release >= V4R4, and Java 1.5 available, Java 1.5 (i/of Java 1.4) is now used to run command XLSGEN (Java 1.4 no longer needed if Java 1.5 available). In this case, the XLSGEN based on HSSFR_2 is run. 2010-10-01 - In commands XLSGEN, XLSXGEN, TABLEXLS and CGI program WEBTABLEXL, parameter DFTCELLCOL can be used to specify the cell default font and background color. Besides, THE XLSGEN language is now supporting keywords (f-color and b-color) to define font and background colors at cell level. 2010-09-20 - In commands XLSGEN, XLSXGEN, TABLEXLS and CGI program WEBTABLEXL, parameter DECPOS(*NOC) can now be used to suppress thousand delimiters in spreadsheet numeric cells. 2010-09-16 - Enabled CGI program WEBTABLEXL to support background colors in the column headers of the generated spreadsheet. 2010-09-15 - Commands XLSGEN, XLSXGEN and TABLEXLS have been added a new parameter, HDGCOLOR, which can be used to set the background color of the column heading cells of the generated spreadsheet. 2010-09-10 - In the XML-like XLSGEN input stream file numeric values can now have been edited with edit code J, L, N or P. 2010-09-09 - Fixed bug in XLSGEN and XLSGEN: they used to assign one extra decimal position to negative numbers with at least one decimal position. 2010-09-06 - In programs XLSGEN and XLSXGEN removed the limit of 16Mb size for the input XLM stream file. 2010-07-28 - Added parameter IGNFLDS (fields to be ignored) to command TABLEXLS. 2010-07-23 - Improved documentation about DATE fields. See page http://www.easy400.net/hssfcgi/html/page4.htm#dateflds 2010-07-22 - You may now specify TABLEXLS TOXLS(*NONE). This can be useful to review the generated XML-like stream file before processing it with command XLSGEN or XLSXGEN. - Some changes in date formats for spreadsheet date cells: FORMAT PREVIOUS EDITING CURRENT EDITING MDY mm/dd/yyyy mm/dd/yy DMY dd/mm/yyyy dd/mm/yy DMYY dd/mm/yyyy YMD yyyy/mm/dd yy/mm/dd YYMD yyyy/mm/dd ISO yyyy-mm-dd yyyy-mm-dd USA mm/dd/yyyy mm/dd/yyyy EUR dd.mm.yyyy dd.mm.yyyy JIS yyyy-mm-dd yyyy-mm-dd JUL yyyy-ddd 2010-07-21 - Added parameter CVTDATE to commands XLSGEN, XLSXGEN and TABLEXLS. This parameter may be used to assign the same format to all the date cells in the spreadsheet. - Support for database date fields (data-type L, several date formats) added to command TABLEXLS. 2010-07-16 - Representation of signed and packed fields with a value lower than zero was wrong; now fixed. 2010-07-14 - Added directives for HTTP instance HSSFCGI. 2010-07-13 - Parameter DECPOS(*AUTO) in commands TABLEXLS, XLSGEN and XLSXGEN will display the original decimal positions in all numeric spreadsheet cells. - In module HSSFXGIX, subprocedure RtvJavaLvl, fixed a bug due to the fact that starting with V7R1, the IBM Java directory is no longer '/QIBM/ProdData/Java400', but is then '/QOpenSys/QIBM/ProdData/JavaVM'. 2010-07-12 - Added support for XLSX Excel spreadsheets (Windows 2007, POI 3.6). - Fixed odd characters in numeric fields (due to CCSID 65535). 2010-07-07 - Parameter DECPOS(*AUTO) supported for command TABLEXLS. - Fixed HTTP directive. - Fixed the case where a character field contains character "<" or character ">". 2010-07-06 - Parameter DECPOS (Decimal positions) added to commands XLSGEN and TABLEXLS. 2010-07-05 - New command TABLEXLS allows to generate XLS Excel spreadsheets from any database file. 2010-06-15 - Diagnostic messages now issued whenever a VSUM/HSUM/VAVG/HAVG formula is missing operators. 2010-06-14 - Supported any valid EXCEL formulas. Besides VSUM an HSUM, two more commands have been added for generating formulas: VAVG and HAVG. - Family-Accounting (FAMACC) CGI sample program has been added. 2010-05-11 - Fix to pgm XLSGEN. It was not closing the .xls stream file after saving the workbook to it. As a result the .xls file could not be copied. Suggested by Richard Davenport, Dallas, TX. 2010-01-26 - POI 3.2 Java classes are back. 2010-01-05 - POI 3.2 Java classes replaced by POI 3.6 ones. 2009-10-13 - Provided support for characters '<' and '>' within a text cell, by using the corresponding HTML entities. 2009-04-21 - First release