Linoma's RPG Toolbox (c) Copyright 1996-2007, LINOMA SOFTWARE LINOMA SOFTWARE is a division of LINOMA GROUP, Inc. *** WHAT's NEW **** ****************************************************************************** If you already have the RPG Toolbox installed on your iSeries (AS/400) and want to see your current installed version, run the command: DSPDTAARA RPGTOOLBOX/VERSION ****************************************************************************** ---------------------------------------------------- | Please read the RPG Toolbox Manual for complete | | details on any of the enhancements listed below. | ---------------------------------------------------- VERSIONS IN DESCENDING ORDER: Version 4.01 (12/18/2007) +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + A new product license key is required when upgrading from a prior + + version of the RPG Toolbox. Please contact Linoma Software at + + sales@linomasoftware.com to request a new product license key. + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ FIX: CLNRPG: When finding unused Prototypes, do not remove Entry Prototypes out of the D specs. These are the Prototypes which have the same name as the program name. FIX: CLNRPG: When removing unused KLISTs, also remove any related KFLD source lines. FIX: CLNRPG: When finding unused stand-alone work fields for member types of SQLRPGLE, do not remove those work fields which are referenced in EXEC SQL statements. FIX: RPGWIZ: When EXAMINEFLD(*YES) is specified on the conversion of a member type of SQLRPG or SQLRPGLE, find the field types/lengths for the compiler-generated SQL* fields (ie SQLCODE). FIX: SEUPLUS: When examining a field with the F7 key, RV or RVK command, find the field types/lengths for the compiler-generated SQL* fields (ie SQLCODE). Version 4.00 (11/15/2007) ENHANCE: Added a new command named CLNRPG (Clean RPG Source). This command will find, and optionally remove, unused definitions and logic found within RPG IV (RPGLE and SQLRPGLE) programs. CLNRPG can be configured to remove unused stand-alone work fields, subroutines, prototypes, key lists, parameter lists and tags. By removing unused definitions and logic from your RPG programs, these programs will compile faster and run more efficiently. The programs will also be easier to maintain and test since you won’t have to work with unused source code. The CLNRPG command has two different actions. The first action called *INSPECT will generate a report of unused definitions and logic in the program, but will not remove any source code. The second action called *CLEAN will generate a report and will additionally remove the unused definitions and logic from the source code. The removed definitions and logic will be placed into a Recycle Bin source file (which you can specify the name of). You can run the CLNRPG command from a command line, PDM or WDSc. The command is named RPGTOOLBOX/CLNRPG. You can create a PDM option for the command using the RPGTOOLBOX/CRTOPT command. If you use WDSc, you can launch the command by configuring a custom compile option. After the CLNRPG command is prompted, press F1 on any parameter for more help. ENHANCE: RPGWIZ - For i5/OS version V5R4 and higher, convert embedded SQL to its /FREE form equivalent when converting to free-form. // Before C/EXEC SQL C+ SELECT * INTO :DS_OEPCM FROM OEPCM WHERE CMCUST = :CUST C/END-EXEC // After EXEC SQL SELECT * INTO :DS_OEPCM FROM OEPCM WHERE CMCUST = :CUST ENHANCE: RPGWIZ - Included instructions in the manual on how to launch the RPG Toolbox commands from WebSphere Development Studio Client (WDSc) by creating your own custom compile commands within the Remote System Explorer. ENHANCE: RPGWIZ - For i5/OS release V5R3 and higher, convert the TIME opcode to %dec(%time) if the result field is numeric and 6,0 in length. // Before C time currtime 6 0 // After currtime = %dec(%time); ENHANCE: RPGWIZ - When in trial mode, allow running RPGWIZ in batch and from within WDSc (WebSphere Development Studio client). ENHANCE: INDENT - Added new parameter to INDNST (Indent Nested Logic) command to allow user to specify the starting column number for the free form source code. Valid starting columns are from 8 to 30. ENHANCE: SNIPPETS - Added new snippets for the %HANDLER and %XML built-in-functions which came out in V5R4. These snippets can be inserted using the SEU PLUS line command of IX. ENHANCE: Delete compile listing if no errors/warnings found during a RPGWIZ conversion and when fields retrieved with RV line command. FIX: INDENT - Ignore constants (surrounded by quotes) when determining the start of a new nesting group. For instance, do not consider a 'FOR' contained within quotes as a true FOR statement. FIX: RPGWIZ - When converting to /Free form, do not add paraenthesis () after a prototype call when the ( starts on the next line. // Before C callp protoA C* C callp protoB C (parm1 : parm2) // After protoA (); protoB (parm1 : parm2); FIX: RPGWIZ - Convert left hand indicators on RETURN statements. // Before C LR return // After if *inlr = *on; return; endif; FIX: INDENT - When indenting source code, do not indent source code under a embedded SQL SELECT statment. FIX: RPGWIZ - When redefining data structure fields, retain the comments in positions 1-5. NOTE: RPG Toolbox works on i5/OS release V5R1 and higher. Version 3.52 (11/12/2006) FIX: RPGWIZ - Calculate field lengths properly for constants which contain double quotes. For instance the length of the constant of '123''' is 4. FIX: RPGWIZ - Do not convert IF statements that contain *ON or *OFF in both factor 1 and factor 2. For instance, *ON *IFEQ *OFF will not convert. Version 3.51 (4/10/2006) FIX: Ignore embedded SQL statements When determining the level of nested logic. FIX: When CVTKLIST(*YES) is specified, properly convert a key list (into a data structure) which is at the very bottom of a program. Version 3.50 (3/10/2006) ENHANCE: SNIPPETS - Created new category of snippets (called SQL) for helping programmers to create embedded SQL operations within RPG IV. New snippet names are SQLSEL1, SQLSEL2, SQLSEL3, SQLSEL4, SQLDEL1, SQLUPD1, and SQLINS1. Snippets can be inserted with the IX line command in SEU. ENHANCE: SNIPPETS - Enhanced the MONITOR snippet to include the ON-ERROR and ENDMON options. ENHANCE: SNIPPETS - Added a new snippet for the %SUBARR built-in-function. ENHANCE: SEUPLUS - Added new SEU line commands of MX and MXB, which allows the user to convert a single line or a block of lines to mixed case. // Before MOVE TEST ORDERS // After Move Test Orders ENHANCE: SEUPLUS - When using a line command (i.e. DFD, SFE, SOP) that acts upon a file name, correctly identify the file name within free-form RPG source. Works with the operations of CHAIN, READ, READE, SETLL, SETGT, READP, READPE, WRITE, UPDATE, OPEN and CLOSE. ENHANCE: SEUPLUS - Enhanced the CMTB (Comment block) line command so user comments are ignored when commenting or reactivating logic. ENHANCE: RPGWIZ - When CVTDO(*YES) is specified to convert DO to FOR operations: If an index variable is not specified within the result field of the DO operation, then the index variable will be defaulted to the name of DO_X within the FOR operation. // Before C DO 20 C ENDDO // After C FOR DO_X = 1 to 20 C ENDFOR ENHANCE: RPGWIZ - When CVTMOVEA(*YES) is specified, additionally convert MOVEA operations which move constants across multiple array elements. // Before C MOVEA '101' *IN(50) // After C EVAL *IN(50) = *ON C EVAL *IN(51) = *OFF C EVAL *IN(52) = *ON ENHANCE: RPGWIZ - When CALCFLD(*YES) is specified, additionally convert calculation-defined data areas into the D specifications. // Before C *DTAARA DEFINE ORDNBR ORDERN 4 0 // After D ORDERN S 4 0 DTAARA(ORDNBR) ENHANCE: RPGWIZ - Convert MOVE opertion if factor 2 is *BLANK(S) and the result field is a data structure. // Before MOVE *BLANK DS1 // After EVAL DS1 = *BLANK FIX: During the product upgrade process, retain any user-specified defaults that were specified on the CHGDFT (Change RPG Wizard Default) command. FIX: When indenting or documenting nested logic, support the error monitoring opcodes of MONITOR, ON-ERROR and ENDMON. Commands of DSPIND, DOCNST and INDNST were modified. SEU line commands of DI and LI were modified. FIX: RPGWIZ - When compressing expressions with CMPEXP(*YES) specified, increase the allowed expression size from 999 to 9999 characters. FIX: RPGWIZ - Do not convert a MVR to a %REM if the corresponding DIV statement contained decimal positions in factor 1 or factor 2. FIX: RPGWIZ - When retrieving field attributes (types/lengths) during the conversion process, do not attempt to retrieve attributes for SQL reserved fields (i.e. SQLCOD, SQLERR, etc). FIX: RPGWIZ - When retrieving field definitions, key lists and parameter lists, specify INDENT(*NONE) when creating the compile listing. Version 3.23 (2/13/2006) FIX: RPGWIZ - When converting source which already contains free-form, make sure asterisk comments immediately following an existing /END-FREE are converted to the slashes (//) free style. FIX: RPGWIZ - Within embedded SQL, do not perform a case conversion of constants enclosed within double quotes (ie. "FileName"). Version 3.22 (9/13/2005) FIX: RPGWIZ - When converting MOVEA operations: If Factor2 is the same length as the Result field (array element), then do not use a FOR loop to assign the values. Instead, use a simple Eval: // Before MOVEA CHAR2 ARRAY2(X) // After EVAL ARRAY2(X) = CHAR2 FIX: RPGWIZ - If a WRITE opcode has an EOF indicator and FILEBIF(*YES) or FILEBIF(*YES2) is specified, then insert the %eof bif. FIX: RPGWIZ - Do not convert the SCAN, CHECK or CHECKR opcodes if the result field is an array, since it produces different behavior. FIX: RPGWIZ - Do not use the %date bif when converting a MOVE operation with date fields in both factor 2 and the result field, even if the date fields have different formats (ie *YMD to *USA). For instance: // Before MOVE USAdate YMDdate // After EVAL YMDdate = USAdate FIX: RPGWIZ - When converting a MOVEA operation with a '1' or '0' in factor 2 and an indicator element in the result field, do not use a FOR loop. Instead, use a simple EVAL. For instance: // Before MOVEA '1' *IN(50) // After EVAL *IN(50) = *ON FIX: RPGWIZ - Do not convert a DIV statement if 1) the same field name is specified in factor 1 and the result and 2) if its followed by a MVR. FIX: RPGWIZ - When converting LOOKUP to %LOOKUP, if the operation had result indicators and long field names, make sure the EVAL opcode is retained within the new IF structure. ENHANCE: RPGWIZ - Changed intro screen when evaluating RPGWIZ with new address and phone numbers. FIX: RPGWIZ - When converting CALLs to CALLPs with CVTCALL(*YES), then retain any CALL statements which have an undefined parameter list name. FIX: RPGWIZ - When converting CALLs to CALLPs with CVTCALL(*YES), then do not create a prototype name that is the same name as an existing PLIST name. Instead, append a sequential number to the prototype name. Version 3.21 (7/9/2004) ENHANCE: SEUPLUS - Expanded the modification marker from 4 to 5 characters, which can be placed in positions 1-5 of a source line when using the CMT, CMTB, MRK and MRKB line commands. The user's modification marker can be specified using the USRDFT line command in SEU. FIX: SEUPLUS - When using the RC and WC line commands for working with compiles, make sure to honor the minimum severity level requested by using the RPG message file. FIX: RPGWIZ - For non-English customers: Convert MOVE, MOVEL and arithmetic operations when EXAMINEFLD(*YES) is also specified. Use message descriptions found in QRPGLEMSG for proper string scanning of the compile listing. Version 3.20 (4/27/2004) ENHANCE: RPGWIZ - Additionally convert CAT operations to EVALs when CVTCAT(*YES) is specified and if the length of the result field is less than or equal to the total length of factor 1, factor 2 and the number of blanks (if specified). ENHANCE: SEUPLUS - Added new line commands of RC (Retrieve Compile Info) and WC (Work with Compile Info) to allow a developer to quickly retrieve and work with compile errors in a popup window, versus having to scan through often-tedious compile listings. This window will also show the status and date of the last compile. As errors are corrected in the source code, the developer can quickly mark them as "fixed" on the screen. ENHANCE: SEUPLUS - Added new line command of RVK to retrieve variable types/lengths, key list fields and parameter list fields for a RPGLE or SQLRPGLE source member. After running RVK, a developer can view this information using the VV line command or by pressin F7 on a variable or list name. ENHANCE: SEUPLUS - Enhanced F7 function key and VV (View Variable) line command to allow the user to quickly display the fields that make up a key list or parameter list within a popup window. ENHANCE: SEUPLUS - Added new line command of VI to display the numbered indicators used in a RPGLE or SQLRPGLE program within a popup window. ENHANCE: SEUPLUS - Enhanced all SEUPLUS line commands to support source records up to 162 bytes in length. Previously, the maximum record length supported was 112 bytes. ENHANCE: SEUPLUS - When a developer requests to view a variable's attributes (VV) or used indicators (VI), and if the source member name has changed since the last time the variable attributes were retrieved, then automatically prompt the developer to retrieve variable attributes for the current member. This automatic feature will be more convenient for developers so they don't have to remember to run the RV or RVK line commands when changing between source member names. ENHANCE: SEUPLUS - Allow a developer to specify where the color hex code should be placed within a free-form RPG comment line when using the color or comment (CMT) line commands. From within the User Defaults screen (line command of USRDFT), the developer can specify to place the color hex code in either position 5 of the source line OR place the hex code immediately after the // comment designator. ENHANCE: SNIPPETS - Added new source code snippets for the V5R2 RPG built-in-functions of %BITAND, %BITNOT, %BITOR, %BITXOR, %FIELDS and %KDS. FIX: SEUPLUS - When breaking extended factor 2 into two lines with the F8 function key or the BR line command, do not duplicate the right-hand comments down to the second line. FIX: SEUPLUS - When highlighting comments in CL source with the HC line command or HLTCMT command, then also highlight any comments on that continued onto a second line. FIX: SEUPLUS - Keep the RPGTOOLBOX library in the library list so the RV and RVK commands continue to work properly. FIX: RPGWIZ - When inserting new stand-alone work fields into the D specs, make sure the new D specs are created after F or H spec blank lines and comment lines. Version 3.15 (3/15/2004) ENHANCE: SEUPLUS - Added new line commands of RM and RRM to allow replacing the selected source line(s) with the contents of the Toolbox memory. FIX: RPGWIZ - Only convert the EXTRCT operation if the result field is numeric and the (E)rror operation extender is not specified. FIX: SEUPLUS - When viewing a variable with F7 or VV, then mark the beginning/ending of a variable name when finding a '+', '-', '=', '>'or '<'. Version 3.14 (10/27/2003) ENHANCE: SEUPLUS - Modified VCB line command so you can also view copy books that use the /INCLUDE statement. Version 3.13 (10/09/2003) ENHANCE: SEUPLUS - Added new line commands of MRK and MRKB to add a user's modification marker to positions 1-4 of source line(s). ENHANCE: SEUPLUS - When viewing an array's attributes with the VV line command or F7, show the number of elements in the array. FIX: RPGWIZ & SEUPLUS - When editing or compressing expressions that contain constants, break long constants in half properly using the hyphen (-) and plus (+) symbols. Previously, there was a scenerio in which a plus was improperly used instead of the hyphen. FIX: RPGWIZ - When converting a SUBST operation to a %SUBST bif and if EXAMINEFLD(*YES) is specified: 1) If the result field length is equal to 1, then don't use %SIZE within the new %SUBST. If the result field length is greater than 1, but less than the length of factor2, then do not convert the SUBST. FIX: RPGWIZ - When converting to free form with FMTCALC(*FREE): If a variable or program name in an EVAL or CALLP has the same name as an RPG opcode, then keep the EVAL or CALLP in front of it. // Before EVAL SELECT = 1 EVAL OPEN = 'YES' EVAL WORKFLD = 2 // After EVAL SELECT = 1; EVAL OPEN = 'YES'; WORKFLD = 2; FIX: RPGWIZ - When documenting nested logic with DOCNEST(*YES) specified, clear out position 5 only if its hex attribute is greater than x'40'. Same fix applies to the DOCNST command. FIX: SEUPLUS - When documenting nested logic with line command DN, clear out position 5 only if its hex attribute is greater than x'40'. FIX: SEUPLUS - Allow reactivating a line with CMT or CMTB when position 6 contains a hex which is less than or equal to x'40' and position 7 is an asterisk. Version 3.12 (8/04/2003) FIX: RPGWIZ - When converting operations to free form and an error indicator is specified, then do not attempt to insert an (e) operation extender if there is not enough room. Version 3.11 (6/26/2003) FIX: RPGWIZ - When converting a MOVE operation with *JOBRUN in factor 1 and UDATE or *DATE in factor2, then do not place the *JOBRUN within the %DATE bif (since it's not needed). FIX: RPGWIZ - If EXAMINEFLD(*NO) is specified and the user specifies to convert CALLs or KLISTs, then let the conversion continue without converting the CALLs and KLISTs (versus disallowing the conversion of the member). FIX: RPGWIZ - When redefining data structures with REDEFINEDS(*YES) specified, then retain a data structure's extra keywords when it has no fields. FIX: RPGWIZ - When redefining data structures with REDEFINEDS(*YES) specified, then only use the from/to positions to determine the order of the fields within the data structure. Do not use the field names as criteria for sorting the fields. Version 3.10 (5/21/2003) ENHANCE: RPGWIZ - Added new keyword named CVTMOVEA which allows the conversion of eligible MOVEA (move array) operations. Read the manual for complete details on the CVTMOVEA keyword. ENHANCE: RPGWIZ - Added new keyword named CVTKLIST which allows the conversion of Key Lists into Data Structures or free-form search arguments within file I/O operations. This feature is valid in OS/400 release V5R2 and higher within the free-form file I/O operations of CHAIN, DELETE, READE, READPE, SETLL and SETGT. Read the manual for complete details on the CVTKLIST keyword. FIX: RPGWIZ - Do not convert a MVR to a %REM if its corresponding DIV operation was not converted. Version 3.09 (5/14/2003) ENHANCE: RPGWIZ - When EXAMINEFLD(*YES) is specified, then additionally retrieve the field lengths and types for constants (CONST) defined in the I or D specs. This additional field information will facilitate the conversion of more MOVE, MOVEL, Z-ADD, Z-SUB, MULT, DIV, ADD and SUB operations. ENHANCE: RPGWIZ - If CVTCAT(*YES) is specified, then additionally convert CAT operations that don't have padding (P) to EVALs when the length of factor1 plus the length of factor2 is greater than or equal to the length of the result field. FIX: RPGWIZ - When converting SUBST operations to %SUBST built-in functions and if the base string is an array element, then calculate the %SIZE on the array name, not the array element. FIX: RPGWIZ - When inserting the header/footer comments around newly inserted stand-alone fields, and if the user specified to convert comments to slashes with CMTDESIG(*SLASHES), then use slash comments instead of asterisk comments. FIX: SEUPLUS - Removed the discontinued line commands of DB and DB2. Version 3.08 (5/4/2003) ENHANCE: RPGWIZ - Provide separate option named CVTSCAN which allows the conversion of SCAN operations to %SCAN built-in-functions. ENHANCE: RPGWIZ - Placed additional intelligence in the conversion of ADD, SUB, MULT and DIV operations, so they will not be converted to EVALs if the result field is not large enough to hold the result. Version 3.07 (4/10/2003) FIX: RPGWIZ - When converting CALL/CALLB operations to CALLPs: 1) If two or more CALLs are using the same named parameter list, then specify the correct prototype name on the new CALLPs. 2) Do not convert a CALL statement that is calling an array variable since that is not allow in a prototype. For instance, CALL PGM(1) will not be converted. FIX: RPGWIZ - When creating new expressions, made sure can accomodate an expression that exceeds 999 characters. Version 3.06 (3/27/2003) ENHANCE: SEUPLUS - Created new line command called USRDFT which allows each developer to specify: 1) Which color to use when commenting out lines with the CMT and CMTB line commands. 2) What mod-marker to place in positions 1 through 4 when commenting or reactivating lines with the CMT and CMTB line commands. 3) Which line commands to run when pressing either F7 or F8. ENHANCE: RPGWIZ - When converting operation codes to BIFs with the OPCODEBIF(*YES) option, then convert qualified SCAN operations to %SCAN BIFs. Works on TGTRLS(V4R1) and up. ENHANCE: RPGWIZ - When converting DIV operations to EVALs with the CVTDIV(*YES) option, then also convert their following MVR operations to %REM BIFs. Works on TGTRLS(V4R4) and up. FIX: RPGWIZ - When converting CALL/CALLB operations to CALLPs with CVTCALL(*YES2), then: 1) Place the DIM statement on the prototype field if it is an array. 2) Strip the parenthesis from the prototype field if it is an array element. 3) Correctly convert "named" parameter lists. FIX: RPGWIZ - When converting *ENTRY PLIST to procedure interface with CVTENTRY(*YES2), then place the DIM statement on the prototype field if it is an array. FIX: RPGWIZ - When converting fixed calculation specifications to free form with FMTCALC(*FREE), make sure the /END-FREE tag is placed before any array data. FIX: RPGWIZ - When converting to free-form RPG, clear out the "C" specification type in position 6 when positions 7-80 are blank. Version 3.05 (1/06/2003) FIX: RPGWIZ - If the AS/400 language id is set to DEU (for German), then properly determine the field types and lengths from a German compile listing, which will allow for the proper conversion of MOVE and MOVEL operations to EVALs. FIX: RPGWIZ - When redefining data structures with REDEFINEDS(*YES) specified, allow for subfields that have blank field names. Version 3.04 (12/23/2002) FIX: RPGWIZ - Retain level break (L0-L9) and last record (LR) indicators when converting CASxx, LOOKUP and CALL/CALLB statements. Version 3.03 (12/09/2002) FIX: RPGWIZ - Determine the nesting correctly for CASxx statements. This was causing a problem when converting a DO loop to a FOR loop which contained CASxx statements within it. It was also not showing indented source listings correctly which contained CASxx statements. Version 3.02 (11/19/2002) FIX: RPGWIZ - Correctly convert left-hand indicators to IF structures when also converting comments to slashes with CMTDESIG(*SLASHES). A comment immediately prior to a left-hand indicator was not being recognized properly. Version 3.01 (10/17/2002) FIX: GENERAL- When upgrading to a new version of the Toolbox, use the correct disk ASP when saving the existing physical files. FIX: GENERAL- When upgrading to a new version of the Toolbox, retain the object authority on the data areas of @SEUPLUS and @SNIPPETS. FIX: RPGWIZ- When converting MOVE, MOVEL, Z-ADD and Z-SUB operations to EVAL operations and if EXAMINEFLD(*YES) is specified, correctly calculate the length of numeric variables when decimal positions are also specified. FIX: RPGWIZ- When converting MOVE operations to EVALs and if EXAMINEFLD(*YES) is specified; DO NOT convert the MOVE if moving numeric to numeric and the result length/decimals are larger than factor 2, unless the (P)added operation extender was specified on the MOVE. Version 3.00 (10/02/2002) FIX: RPGWIZ- When converting opcodes to free-form RPG with FMTCALC(*FREE), remove any extra spaces between the opcode and operation extender or within the operation extender. Example: // Before *MDY TEST ( ED) WORKDATE // After TEST(ED) *MDY WORKDATE FIX: GENERAL- When indenting free form nested logic, do not indent a constant which contains a hyphen for a continuation character. FIX: GENERAL- Save the CHGDFT command into the backup RPGTBnnnnn libary when installing a new version of the Toolbox over an existing installation. Version 2.09 BETA (09/30/2002) ENHANCE: RPGWIZ- When converting MOVE, CAS or COMP operations with result indicators, place parenthesis around the new indicator compare. Example: // Before MOVE CUST_5A WORK_5A 98 // After EVAL WORK_5A = CUST_5A EVAL *IN98 = (WORK_5A = *BLANKS) ENHANCE: RPGWIZ- When inserting file I/O bifs for any CHAIN, DELETE, SETLL or SETGT operations with a not-found indicator, place a space between the inserted NOT and %FOUND. // Before KLIST01 DELETE CUSTMAS 99 // After KLIST01 DELETE(E) CUSTMAS EVAL *IN99 = NOT %FOUND(CUSTMAS) ENHANCE: RPGWIZ- Changed behavior of CASELOGICN(*MIXED2) option to create any new IBM built-in functions in mixed case, versus upper case. ENHANCE: RPGWIZ- When converting to free form RPG with FMTCALC(*FREE), convert a error result indicator to a %ERROR BIF and qualify the opcode with an (E) for the opcodes of ACQ, CLOSE, COMMIT, DEALLOC, DSPLY, FEOD, IN, NEXT, OPEN, OUT, POST, REL, RESET, ROLBK, TEST and UNLOCK. ENHANCE: RPGWIZ- When converting to free form RPG with FMTCALC(*FREE) and if the source already contains some free form logic, then reuse existing /free and /end-free tags when possible. ENHANCE: RPGWIZ- When compressing expressions with CMPEXP(*YES), do not extend the expression beyond column 76 so users with 24x80 sized screens can view the entire expression in SEU without having to window right. ENHANCE: RPGWIZ- When compressing expressions with CMPEXP(*YES), don't break a constant in half if the entire constant can fit into the next line. FIX: RPGWIZ- When compressing expressions with CMPEXP(*YES), properly interpret any existing plus (+) line continuation character within a constant that spans multiple lines. FIX: RPGWIZ- When compressing expressions with CMPEXP(*YES) and if an expression contains a constant that spans multiple lines, use the plus (+) continuation symbol if the next constant character is not blank, otherwise use the minus (-) symbol. FIX: RPGWIZ- When compressing expressions with CMPEXP(*YES), watch out for left hand indicators when determining the last line of an expression. FIX: RPGWIZ- When compressing expressions with CMPEXP(*YES), allow breaking an expression into the next line after a right parenthesis ) is found. FIX: RPGWIZ- When compressing expressions with CMPEXP(*YES), don't change the source date or remove right-hand comments if the expression is not compressed. FIX: RPGWIZ- When converting to free form RPG with FMTCALC(*FREE), do not indent any secondary lines for long expressions if INDNEST(*LEAVE) is also specified. FIX: RPGWIZ- When converting left hand indicators to IF structures with CVTLEFT(*YES) and if a CALL or CALLB operation is encountered with both a left hand indicator and an operation extender, then keep any of its following PARM statements within the new IF structure. ENHANCE: SEUPLUS- When compressing expressions with the COM line command, do not extend the expression beyond column 76 so users with 24x80 sized screens can view the entire expression in SEU without having to window right. ENHANCE: SEUPLUS- When compressing expressions with the COM line command, don't break a constant in half if all of it can fit into the next line. FIX: SEUPLUS- When formatting expressions using the expression editor or the COM (compress expression) line command and if the expression contains a constant that spans multiple lines, use the plus (+) continuation symbol if the next constant character is not blank, otherwise use the minus (-) symbol. FIX: SEUPLUS- When using the line commands of EE (edit expression) or COM (compress expression), properly interpret any existing plus (+) line continuation character within a constant that spans multiple lines. FIX: SEUPLUS- If a user saved the RPGWIZ command settings with SAVECMD(*YES), use the saved target release (TGTRLS) setting the next time the line commands of Z or ZZ are used. FIX: SEUPLUS- By default, do not save the RPGWIZ command settings using SAVECMD(*NO) for the Z, ZZ, ZP and ZZP line commands. Version 2.08 BETA (09/24/2002) ENHANCE: RPGWIZ- Added new keyword of CVTENTRY which allows you to convert the *ENTRY PLIST into a Prototype and Procedure Interface within the D specs. ENHANCE: RPGWIZ- Added new keyword of CVTCALL which allows you to convert CALL and CALLB operations to CALLP operations. RPGWIZ Will also create corresponding prototypes in the D specs. Works with both parameters defined after the CALL/CALLB and parameters defined in a parameter list (PLIST). ENHANCE: RPGWIZ- Added new keyword of CVTDO which allows you to convert DO operations to FORs (if on OS/400 release V4R4 or higher). // Before 5 DO LIMIT INDEX ENDDO // After FOR INDEX = 5 TO LIMIT ENDFOR ENHANCE: RPGWIZ- Added new keyword of CVTLOOKUP which allows you to convert LOOKUP operations to %LOOKUP and %TLOOKUP built-in functions (if on OS/400 release V5R1 or higher). ENHANCE: RPGWIZ- Added new keyword of CVTZADDSUB which allows you to have more finite control over the conversion of Z-ADD and Z-SUB operations (versus controlled through the CVTADDSUB keyword). Available options are *NO, *YES and *YES2. The option *YES2 will ignore potential overflow problems even if EXAMINEFLD(*YES) is specified. ENHANCE: RPGWIZ- Added new keyword of CVTGOTO which allows you to convert any GOTOs which "jump to an end of a subroutine" to either: "LEAVESR" operations if on OS/400 release V4R4 or higher and you also are not converting subroutines to procedures OR "RETURN" operations if you are also converting subroutines to sub-procedures. ENHANCE: RPGWIZ- Added new keyword of CVTCAT which allows you to convert CAT operations to EVALs. The *YES option will convert CAT(P) operations and *YES2 will addtionally convert CAT operations without the (P) extender. // Before FIRST CAT(P) LAST:1 FULLNAME // After EVAL FULLNAME = %TRIM(FIRST) + ‘ ’ + LAST ENHANCE: RPGWIZ- Added new keyword of CMPEXP which allows you to compress all expressions within your source member. This option will remove any extra spaces from each expression and will fit the reformatted expression into the minimum number of lines needed. Works with both extended factor 2 and free form expressions. // Before IF STATE = 'NE' OR STATE = 'IA' // After IF STATE = 'NE' OR STATE = 'IA' ENHANCE: RPGWIZ- Added new keyword called CMTBLANK which allows you to remove the comment designator (* or //) from blank comment lines. ENHANCE: RPGWIZ- Added a new option called *YES2 to the FILEBIF keyword which will allow you to qualify any inserted file I/O BIFs with the name found in factor2. Previously, there was no option to qualify the newly inserted I/O BIFs. // Before KLIST01 CHAIN CUSTMAS 98 // After KLIST01 CHAIN CUSTMAS EVAL *IN98 = NOT%FOUND(CUSTMAS) ENHANCE: RPGWIZ- Support the conversion of MOVE and MOVEL operations which contain both left and right hand indicators. // Before 01 MOVE CUST_5A WORK_5A 98 // After IF *IN01 = *ON EVAL WORK_5A = CUST_5A EVAL *IN98 = WORK_5A = *BLANKS ENDIF ENHANCE: RPGWIZ- When converting subroutines to sub-procedures with CVTSUBR(*YES), also convert existing LEAVESR operations contained within them to RETURN operations. // Before LEAVESR // After RETURN ENHANCE: RPGWIZ- When converting subroutines to sub-procedures with CVTSUBR(*YES), invalidate any existing RETURN statements within them by changing the spec type to an X, since the RETURN's behavior is different within a sub-procedure. ENHANCE: RPGWIZ- When creating new EVALs that span more than 1 line, make better use of the space available in extended factor 2. ENHANCE: RPGWIZ- Changed defaults on the existing RPGWIZ keywords to CASELOGICN(*UPPER), CMTSPECTP(*REMOVE), DOCNEST(*NO). FIX: RPGWIZ- If inserting file I/O BIFs for a file operation which has the same error indicator as the I/O indicator, then combine the compares into just one EVAL operation: // Before KLIST01 DELETE CUSTMAS 9999 // After KLIST01 DELETE(E) CUSTMAS EVAL *IN99 = %ERROR OR NOT%FOUND(CUSTMAS) FIX: RPGWIZ- When converting left hand indicators with CVTLEFT(*YES), do not carry a level break (L1-L9) or last record (LR) indicator into subsequent lines of an expression. // Before LR TEST IFEQ 'A' LR TEST OREQ 'B' LR END // After LR IF TEST = 'A' OR TEST = 'B' LR ENDIF FIX: RPGWIZ- When converting CASxx operations to SELECT/WHEN with CVTCAS(*YES) and if you specify to change the case in the old logic with CASELOGICO, then convert the first WHEN statement properly to the selected case. ENHANCE: GENERAL- Created new DSPIND command to allow you to display or print an indented source listing for a RPG IV source member. Connector lines are also drawn between the beginning and ending of control structures. ENHANCE: GENERAL- Created new HLTCMT command to allow highlighting just the comment lines in CMD, CLP, CLLE, DSPF, LF, PF, PRTF, RPG, RPGLE, RPT, SQLRPG and SQLRPGLE member types. You can also use this command to remove highlighting from comments. ENHANCE: GENERAL- Enhanced the CRTOPT command to allow the creation of PDM options for the HLTCMT (Highlight Comments) and DSPIND (Display Indented Source) commands. ENHANCE: GENERAL- Created a menu which shows all available RPG Toolbox commands, which can be executed right from this menu. To access, type the OS/400 command "GO RPGTOOLBOX/MENU". ENHANCE: GENERAL- Changed CRTOPT command to create PDM option RF with keywords CVTENTRY(*YES) and CVTCALL(*YES) specified to help maximize the conversion to free format. FIX: GENERAL- Do not document or indent the beginning and ending of BEGSR and ENDSR opcodes with the DOCNST and INDNST commands. ENHANCE: SEUPLUS- Created the new block line command of HC to allow highlighting just the comments within a section of source code. ENHANCE: SEUPLUS- Created the new block line command of RH to allow the removal of highlighting from comments within a section of source code. ENHANCE: SEUPLUS- Created the new block line command of DI to display an indented source listing for a section of source code. ENHANCE: SEUPLUS- Created the new block line command of LI to print an indented source listing for a section of source code. ENHANCE: SEUPLUS- Enhanced the existing line commands of CMT and CMTB to allow commenting-out and reactivating lines in CMD, CLP, CLLE, DSPF, LF, PF, PRTF, RPG, RPT and SQLRPG member types. Previously, these line commands only supported RPGLE and SQLRPGLE member types. ENHANCE: SEUPLUS- Enhanced all the existing coloring line commands to allow coloring slash/asterisk comment lines within CLP, CLLE and CMD source member types. ENHANCE: SEUPLUS- Changed the default on the F7 function key within SEU to run the VV (View Variable) command. You can now just position the cursor on a variable and press F7 to view its type and length. ENHANCE: SEUPLUS- Created the new line command of I/* to allow inserting 3 comment lines into CLP, CLLE or CMD source member types. Uses the COMMENT3 snippet. ENHANCE: SEUPLUS- Changed the line command of COM (compress expression) to keep a reformatted expression from extending beyond column 76 so it remains within the SEU display area. ENHANCE: SNIPPETS- Added the following new source code snippets: DDDS - Define standard Data Structure DDDSOC - Define multiple Occurrence Data Structure DDDSEX - Define externally Defined Data Structure DDARRAYRT - Define Run-Time Array DDARRAYCT - Define Compile-Time Array DDARRAYPT - Define Prerun-Time Array DDFIELD - Regular Standalone Field DDCONST - Define Constant DDPI - Define Procedure Interface DDPR - Define Prototype PROC - Define Procedure COMMENT3 - Inserts 3 /* */ comments into a CLP or CLLE source member types COMMENT4 - Inserts 3 /* */ comments into a CMD source member type ENHANCE: SNIPPETS- Made enhancements to the source code snippets of DOU, DOW, IF, ELSEIF, WHEN and SELECT. Version 2.07 (06/28/2002) ENHANCE: RPGWIZ- Allow specifying TOFILE(*FROMFILE) on the RPGWIZ command so the from-file name can be defaulted in for the destination source file name. FIX: RPGWIZ- When EXAMINEFLD(*YES) and CVTMOVEL(*EVAL) is specified, only convert a MOVEL that has numeric types in both factor 2 and the result when the field lengths match. FIX: RPGWIZ- When converting left hand indicators to IF structures with CVTLEFT(*YES), allow for up to 40 left hand indicators on a single operation, versus 20. FIX: RPGWIZ- When converting to free-form syntax with FMTCALC(*FREE), do not truncate positions 79-80 in a converted in-line comment. FIX: RPGWIZ- When converting to free-form syntax with FMTCALC(*FREE), allow for blank or comment lines which may be inserted within multi-line expressions. FIX: SEUPLUS- Properly process the line commands of DB, DB2 or DFD when field exit is pressed after entering the command. Version 2.06 (04/18/2002) ENHANCE: Compressed the RPG Toolbox installation file from 5Mb to 2Mb. ENHANCE: RPGWIZ- Dramatically enhanced the conversion of MOVE and MOVEL operations when EXAMINEFLD(*YES) is specified: -> If moving fields of different lengths, use %SUBST where possible. Examples: // Before MOVEL ORDR_2A WORK_5A MOVE CUST_3A WORK_5A // After EVAL %SUBST(WORK_5A:1:2) = ORDR_2A EVAL %SUBST(WORK_5A:3:3) = CUST_3A // Before MOVE WORK_5A ORDR_2A // After EVAL ORDR_2A = %SUBST(WORK_5A:4:2) -> If result indicator(s) are specified, then convert those indicators to EVAL(s) following the operation. Example: // Before MOVE CUST_5A WORK_5A 98 // After EVAL WORK_5A = CUST_5A EVAL *IN98 = WORK_5A = *BLANKS -> If a MOVE is padded(P) and the result field is larger than factor2, then blank out the field before assigning the value. Example: // Before MOVE(P) CUST_5A WORK_10A // After EVAL WORK_10A = *BLANKS EVAL %SUBST(WORK_10A:6:5) = CUST_5A -> If moving *BLANKS to a numeric field, then convert to use *ZEROS within the resulting EVAL. Example: // Before MOVE *BLANKS WORK_5N // After EVAL WORK_5N = *ZEROS -> If moving *ZEROS to an alphanumeric field, then convert to using a string of 0s instead. Example: // Before MOVE *ZEROS WORK_5A // After EVAL WORK_5A = '00000' -> If moving numeric to an alpha field, use %EDITC(num:'X') Example: // Before MOVE WORK_5N WORK_5A // After EVAL WORK_5A = %EDITC(WORK_5N:'X') -> If moving a non-date field to a DATE field, convert to use the %date bif. Example: // Before MOVE ORDT_10A WORK_D // After EVAL WORK_D = %DATE(ORDT_10A) -> If moving a non-time field to a TIME field, convert to use the %time bif. Example: // Before MOVE ORTM_10A WORK_T // After EVAL WORK_T = %TIME(ORTM_10A) -> If moving a non-timestamp field to a TIMESTAMP field, convert to use the %timestamp bif. Example: // Before MOVE ORTZ_10A WORK_Z // After EVAL WORK_Z = %TIMESTAMP(ORTZ_10A) -> Convert MOVEs containing indicator(*INxx) variables in factor 2 or the result field. Example: // Before MOVE '1' *IN99 MOVE '0' *IN(50) // After EVAL *IN99 = *ON EVAL *IN(50) = *OFF -> Convert MOVEs containing array elements in factor 2 or the result field. Example: // Before MOVE WORK_5A CUST_5A(X) MOVE CUST_5A(X) ORDR_5A // After EVAL CUST_5A(X) = WORK_5A EVAL ORDR_5A = CUST_5A(X) ENHANCE: RPGWIZ- Allow for case conversion of existing free-form RPG logic to lower case, upper case or mixed case with CASELOGICO parameter. ENHANCE: RPGWIZ- Allow for case conversion of in-line and right-hand comments within existing free-form RPG logic to lower case or upper case with CASECMTIN and CASECMTRH parameters. ENHANCE: RPGWIZ- Allow for highlighting of in-line comments within existing free-form RPG logic with HIGHCOMM parameter. ENHANCE: RPGWIZ- When converting CASxx structures with the CVTCAS(*YES) parameter specified, convert CASxx structures to SELECT/WHEN structures if NO right hand indicators are used, otherwise convert to IF/ELSE structures. FIX: RPGWIZ- Correctly determine the length of numeric constants when EXAMINEFLD(*YES) is specified and a decimal point is in the constant. Before the fix, RPGWIZ was only determining the length as the value on the left side of the decimal point. FIX: RPGWIZ- When converting CASxx structures with the CVTCAS(*YES) parameter specified, do not convert CASxx structures if left hand indicators are used within the structure. FIX: RPGWIZ- When converting to free-form RPG, proceed any right-hand comments in the new free-form lines with // notation. FIX: RPGWIZ- When converting to free-form RPG, do not append a () to a CALLP if it already has parameters specified. FIX: RPGWIZ- When converting to free-form RPG, compress out any spaces between the operation code and the operation extender. Example: // Before ADD (H) WORK_5N ORDR_5N // After EVAL(H) ORDR_5N = WORK_5N FIX: RPGWIZ- When converting to free-form RPG, do not convert any ENDSR opcodes which contain a tag value in factor 1. FIX: RPGWIZ- When converting left-hand indicators to IF structures with CVTLEFT(*YES) and if a CALLP operation has a left-hand indicator, then end the new IF structure immediately after the CALLP. This covers the potential scenerio if the procedure called turns on/off indicators and the operation following the CALLP is dependent on one of those indicators. FIX: RPGWIZ- Increased the maximum record limit of the RPGWIZ work file BXP020 from 10,000 records to 50,000 records. FIX: RPGWIZ- Allow the user to convert a block of source containing only *LIKE DEFINEs. FIX: SEUPLUS- When using the SEUPLUS line command of IEX, allow the user to specify the case of the C specification character. C or c. FIX: SEUPLUS- When using the SEUPLUS line commands of E or EE, retain the case of the existing specification type, versus forcing it to capital C. FIX: SEUPLUS- Corrected User Space overflow problems when inserting large snippets of source code with the SEUPLUS IX command. FIX: SEUPLUS- Do not show this error message "FAILED: Snippet name in source member already exists in the database." when bringing up a list of snippets more than one time. Version 2.05 (02/22/2002) ENHANCE: Added new SEU PLUS line command substitution parameters of &SRCMBR, &SRCFIL and &SRCLIB for substituting in the current source member name, file name and library name into the command. See the new SEU PLUS line command called CPYSRC for example of how these new substitution parameters are implemented. ENHANCE: Added the ability to save Toolbox Memory to a source member. ENHANCE: Show the sequence number of any lines copied/deleted into Toolbox Memory through SEU PLUS. FIX: When specifying CMTDESIG(*SLASHES), start the // at position 7. It was incorrectly starting it at position 6. FIX: When converting to *FREE format and if // already used as the fixed format comment designator, only shift the // into position 8 if the // started at position 7. Version 2.04 (01/25/2002) FIX: When converting REALLOC opcode to %REALLOC, make both the pointer and size as parms (not just the size) FIX: When converting a CALLP to free format, put () after the procedure. FIX: Calculate INTEGER lengths properly when converting from/to lengths in a data structure. Version 2.03 (12/17/2001) ENHANCE: Increased the allowable size for a snippet value from 20 to 40. ENHANCE: Added the snippet default values of *TIME, *USER, *MBRNAME and *MBRTEXT. See the STARTRPG4 snippet for an example of how these special values are used. ENHANCE: Allow controlling authority to add/change/delete SEU line commands and Snippets using the @SEUPLUS and @SNIPPETS data areas. FIX: When converting to free format, do not convert lines with level breaks. FIX: User cannot create a SEUPLUS line command which begins with the letter F or P, since reserved for IBM. FIX: Don't allow the snippet variable length to be more than 40 or less than 1. FIX: Allow viewing copy books(VCB) from SEU, even if comments entered on the right side of copy book member name. FIX: Stop overriding the current library in the library list with RPGTOOLBOX. Use a different technique to locate data files. FIX: Remove highlighting from %ABS and %ADDR snippets. INFO: If on V4R2, make sure have IBM PTF SF56369 or SF65048 for 5769PW1. Version 2.02 (09/24/2001) FIX: Do not convert left hand indicators on DO, DOU, DOW and IF operations. FIX: Use different date technique in SEU PLUS and authorization program to accomodate international clients. Version 2.01 (09/07/2001) ENHANCE: Updated the manual to better explain how to use some features. ENHANCE: Convert CAT operations to EVAL operations with OPCODEBIF(*YES) option. FIX: Allow target source file to be a different length than 112. Version 2.00 (09/01/2001) ENHANCE: Product released.