Note: Revision history for this Document Management product continues in the Release Notes pages.
Report Splitter is ready for V6R1/V7R1 of i5/OS, starting with version 4.60
- Fixed issue with banner page insertion where the banner page would be sent to a separate spooled file
- The minimum OS/400 compatibility is now V6R1
Fixed problem when a spool file did a "Skip before" to a line > 100. The hundreds digit was getting cut off.
Fixed several bugs in Report Distribution Settings Maintenance. Added F10 key to hide/show inactive records. Added F11 to toggle Job/User Data & Form/User Id columns.
Create a new General monitor based on a data queue not based on an output queue. Two commands were created to do this, both need to be running for it to work. GENDTAQMON watches a data queue assigned to an output queue, passing the information onto the GENSPOOLS file in RJSSPLIT. GENMONDQ then reads this file and passes along the information to the user defined exit pgms for processing.
Included fix to SQL processor that was first introduced in WebDocs.
Fixed problem with merge spool files of different sizes. Will now take largest of spool files being merged and uses those dimensions in the merged spool file.
Added a field to decollate on. They can now select any symbolic field to split on not just the first field. Surfaced this change to RJSWRKOUTQ & RJSWRKSPLF commands also
Added @PAGECOUNT as possible field in the New User Defined Data field.
Changed default value of New Spool User Id in the RPTDUPSPL cmd to *CURRENT.
Fixed problem of symbolic names containing a subset of another name and doing the replacing incorrectly.
A minor security issue was resolved. If someone with only a *USER user class tried to split a file, they would get an error msg saying “Not authorized to program RS001R in library RJSSPLIT”.
Fixed problem with spool date/time special variables that was introduced in v4.67.
Added capability to be able to assign destination output queues in a round-robin fashion based on a destination output queue group. This capability will initially be available via the "Pre-Reprint Exit Point" that is set in the "Edit Report Distribution Settings Program - Menu Opt 21). The actual screen setting field is the the "Exit Pgm/Lib" setting.
Added new table RSPQGRP00 to hold a list of output queues that we can auto assign in a round-robin fashion during re-printing. This table is called the "Destination Output Queue Group Table". Currently the table must be maintained via the following DFU command: UPDDTA RJSSPLIT/RSPQGRP01
Example group entry may be:
Outq group name: TEST
Outq group seq: 1
Outq group name: TEST
Outq group seq: 2
This example would round robin to destination output queues RPT01 and RPT02 during report
re-printing if the RPTEXIT2C program is set for a report distribution setting.
**Note: You should still always specify a real output queue in the destination output queue in case your exit program doesn't return any data.
Added new CL command named GETNXTOUTQ. This new CL command supports round-robin assigment of destination output queues during re-printing. Any number of output queues can be assigned to a destination output queue group for level loading documents to selected output queues for printing, emailing, faxing or capture to WebDocs via Batch Report Server. Currently a "Before Print" exit program must be created to take advantage of round-robin destination output queue assignment.
Added a before re-printing exit point sample to illustrate the use of the GETNXTOUTQ cmd. See sample program RPTEXIT2C in source file: SOURCE in library RJSSPLIT.
Added two new exit point parameters to the RPTSPLIT and RPTMON commands. The first one is called the Pre-Split Exit Point. This exit point gets called right after the RPTEXTRACT command and prior to any report re-printing when splitting a report. There are 2 files in QTEMP that can be used for additional processing. RSPPAGE00-This file contains all the page extract info that was extracted by RPTEXTRACT. RPT01-This file contains the original CPYSPLF results. The second exit point is called the Post-Split Exit Point. This exit point gets called right after report splitting, but before the RPTSPLIT command completes. The Post-Split exit does not get called if the RPTSPLIT command fails for any reason. When a Pre-Split or Post-Split exit point is specified on the RPTMON command, the same exit point program is called for each spool file processed via RPTMON. RPTMON simply passes the exit program parameters through to the RPTSPLIT command.
Parameters available to exit programs:
Output queue library
User defined data
Printer device type: *SCS, *AFPDS, *USERASCII, etc.
Program samples are in file RJSSPLIT/SOURCE
Pre-Split Sample: RPTPREEXC
Post-Split Sample: RPTPOSTEXC
Added new exit point that runs AFTER each report section has been re-printed. Ex: If you're decollating a 100 page report and 10 sections are created, then the exit point would run 10 times and would pass the new spool file info for each report to the exit point. This exit point can be used to perform additional inline processing on a spool as it gets split. Sample program can be found in file SOURCE in library RJSSPLIT. Name: RPTEXITAC
We now create a data area named ORIGSPOOL in QTEMP which holds the original spool file name. The data area gets set as each report is split. The reason we passed the value into the data area is that we didn't want to corrupt the parameters for the RPTEXITC program. The code within RPTEXITC is used to retrieve the ORIGSPOOL value for further processing if required. Sample program can be found in file SOURCE in library RJSSPLIT. Name: RPTEXITC
Added RPTIGCDTA data area to RPTMRG cmd. If set to *YES, the text based report converters can copy double-byte data(DBCS). If set to *NO, double-byte data cannot be included in report attachments.
Created a new version of program RS006R to handle reprinting reports with more than 99 lines. The program name is RS006RLE2. The program is NOT currently the default reprint program, so the following steps must be done after library installation if you want to use the new reprint program to handle reports with more than 99 lines.
Run command to make sure backup copy of program does not exist. It's OK if it doesn't
Create backup copy of RS006R
CRTDUPOBJ OBJ(RS006R) FROMLIB(RJSSPLIT) OBJTYPE(*PGM) TOLIB(*FROMLIB) NEWOBJ(RS006RS1)
Delete program RS006R
Copy RS006RLE2 to RS006R
CRTDUPOBJ OBJ(RS006RLE2) FROMLIB(RJSSPLIT) OBJTYPE(*PGM) TOLIB(*FROMLIB) NEWOBJ(RS006R)
Fixed end time to work correctly for the RPTMON command. After 4.60 change it was not ending correctly.
Added CLRSELOUTQ command to allow users to clear selected outq entries. Criteria can be filtered by Spool File, User Data, Job,Job Number, Form Type, User ID, Program name.
Updated RPTMON command to correctly end if it's in the middle of processing when the monitor is running past midnite and misses its end time. We now use date in the end time calculation so if processing is past midnite, the monitor will end the next time it tries to run past midnite. If 000000 is entered for end time, the monitor still run continuously without end.
Updated RPTMON command to have an ENDDAYS parameter. If 1-365 days are specified, the monitor will run until 1-365 days out when the specified end time is reached. If 0 is specified for days, the monitor runs as in the past where it will end at the end of the current day. If 000000 is entered for end time, the monitor still runs continuously without end.
Example: Set days to run: 0, Time to end: 160000 This will run the monitor until today at 4pm.
Example: Set days to run: 1, Time to end: 160000 This will run the monitor until tomorrow at 4pm.
Example: Set days to run: 5, Time to end: 160000 This will run the monitor until 5 days our at 4pm.
NOTE: Minimum OS/400 release is V5R1.
Updated RS005C to do a DLTOVR at the same level as the OVRPRTF command using the RPTSCOPE data area value.
Fixed problem with similar symbolic names - if @PO defined before @PODATE, result was value of @PO followed by 'DATE'.
Fixed problem that literals in new spool, form type, or user data were not used.
Added ability to recognize the replace unprintable characters flag on an original spool file.
Always attempt to clear file RSPPAGE00 before processing reports, even if not *SCS. This insures inadvertent after processing does not occur for *AFPDS or non *SCS reports.
Apply @SPOOL, @USERDATA, @FORMTYPE, and @JOBNAME to user-defined data where specified, as is done now with @USERID.
Make symbolic fields from page definition available in new spool file name, user data, and form type when split option is *NOSPLIT.
Leave spool file name, user data, and form type as is if substitution value is invalid or unavailable. For example, if the form type is *STD and @FORMTYPE is specified for the new spool file name, the original name will be used. Before this the name would have been @FORMTYPE. Validate new spool name for allowed characters. This name has to have a letter, "@", "#", or "$" in position 1 and a letter or numeral, ".", "_", "@", "#", or "$" in the remaining positions.
Add spool date and time in various output formats to user-defined data and banner lines. Valid symbolic names follow with the resulting format, where "m" = month or minute, "d" = day, "y" = year, "c" = century (0 = 1900, etc.), "h" = hour, and "s" = second.
- @DATEMDY mm/dd/yy
- @DATEDMY dd/mm/yy
- @DATEYMD yy/mm/dd
- @DATEJUL yy/ddd
- @DATEISO yyyy-mm-dd
- @DATEUSA mm/dd/yyyy
- @DATEEUR dd.mm.yyyy
- @DATECYMD cyy/mm/dd
- @DATECMDY cmm/dd/yy
- @DATECDMY cdd/mm/yy
- @DATELJUL yyyy/ddd
- @TIMEHMS hh:mm:ss
- @TIMEISO hh.mm.ss
- @TIMEUSA hh:mm AM or PM
Add replace unprintable characters option to the RPTMRG command. The new replace unprintable characters setting is retrieved from the first spool file processed in the output queue list retrieved by RPTMRG.
Fixed problem with *DECOLLATE split option so that @SPOOL, @FORMTYPE, @USERID, @USERDATA, and @JOBNAME can be used for new spool name, user data, or form type.
Added job number filter to RPGMRG command.
Added wildcard capability to RPTLIST and GENOUTQMON commands for spool file filter parameters. Wildcard value is a "?" char. Note: Wildcards cannot be used for the starting character. Otherwise the wildcard search via QCLSCAN does not work correctly.
Added new user defined data value to the RPTMRG command.
Updated RPTSEARCH to use QCLSCAN for pattern scanning of strings with Wildcard characters. This makes RPTSEARCH very flexible for locating string patterns in a spool file when searching the spool. We also now set a data area called RPTSEARCH in QTEMP to 0 if the search was successful. RPTSEARCH also sends a completion message when a report search or an escape message if the search fails, so users know if the command returned an escape message, the search process failed.
Created GENOUTQMON command to act as a generic output queue monitor program where customers control via an exit program what happens when a report is listed in an output queue. Basically the GENOUTQMON command works as follows: It can poll once or multiple times on a delayed basis. It lists all reports in an output queue to file RJSSLIST in QTEMP and then calls a user defined exit processing program to read the report list and do some user defined processing such as RPTSPLIT, RPTMRG, RPTSEARCH, CHGSPLFA, DLTSPLF, etc... There are 4 samples exit programs in file SOURCE in library RJSSPLIT: GENOQEX01-04. The first two samples simply do a sequential read of RJSSLIST for processing. The third program sorts the output queue list by job name and user data via SQL before processing. It then merges all reports for the Job Name and User Data combination via RPTMRG command. The fourth program reads the report list via SQL, searches each spool file for a specified criteria string and simply moves the report to a different output queue if the data was found in the report or not. GENOUTQMON programs can log infomation to the GENOQLOG00 file to create their own audit log mechanism. All of the exit program samples write to the log file.
Changed MOVOUTQ command to use the RPTLIST command to list spool files. Old version used a WRKOUTQ to a file and does not seem to work any more. Also added several new spool file filter parms for a more granular use of the MOVOUTQ command.
Added RPTSEARCH command to report splitter. This command can be used to quickly scan a report for one or more criteria and tell the user if all the criteria was found in the report. Returns message CPF9897 if data was found. Returns CPF9898 for any errors.
Added RPTMON option that, if set to *YES, will force after processing option to always be performed.
Updated RPTLIST command to avoid pointer errors.
Add ability to set new output queue and output queue library on the fly from within the exit point processing if used. Warning: users who have implemented exit point code in existing processes will have to addthe new parms to their exit point programs. See: RPTEXITC in file SOURCE in RJSSPLIT for sample of code changes to exit program.
When using command RPTMON, the ability to monitor all groups has now been added. This is accomplished by setting GROUP to *ALL.
Created RPTSCOPE data area for OVRPRTF command in RS005C. Some users have changed the default override scope value from *ACTGRPDFN to *JOB and this was causing splitting errors when issuing the DLTOVR command in RS005C.
If a split fails during processing for any reason we now clear work file RPT02 in QTEMP to prevent data from duplicating is subsequent splits.
Updated RPTMRG command to set printer drawer to 1 if < 0. Was causing problems in certain scenarios.
We now trim all user data values when they are set during splitting to insure no leading spaces in the user data values.
If new <b>SAVE</b> or HOLD value is not specified, in the report distribution table, the value is now derived from the original spool file attributes.
Updated RPTDUPSPL to allow a new user ID value to be set during spool file duplication. *CURRENT will set the user ID to the current user ID copying the report. *SAME will set the user ID to the original spool user ID. Any existing user ID can also be specified. Also updated error handling so that CPF errors will be generated if a copy fails.
Created data area RPTDUPUSER to set the user ID set in the new spool files when *DUPLICATE option is used. *CURRENT will set the new user to the user ID running the report splitter. *SAME will create the new spool file based on the original spool user. Otherwise a specific user ID can be specified. *CURRENT is the default.
Updated RPTUPG to copy data areas ALLOWDEV and RPTDUPUSER.
Added *DUPLICATE option to RPTSPLIT command. This is a much faster way to duplicate a report than using the *NOSPLIT option.
Device type is now omitted with RPTDUPSPL so the device type duplicates correctly. Created data area ALLOWDEV and default to *IPDS. If user does not want RPTSPLIT to attempt to copy *IPDS files, they need to change the ALLOWDEV value to *SCS instead.
Added *DUPLICATE option which dupes spool with RPTDUPSPL. This also preserves the original AS/400 user ID as well. Converted RPTDUPSPL to use buffered version.
Added user defined exit point opt for table processing. If *USEREXIT is specified for the split option, a user exit program is called and the user must do all split processing themselves. This is a great way to use the output queue monitor but still do custom processing to split or copy a report. Added job name, user, job number and spool number to exit point processing calls. See sample programs RPTEXITC/RPTEXIT1C in source file: SOURCE for examples.
Added RPTIGCDTA data area to RPTUPG process.
Changed RPTIGCDTA data area to *NO. Data can shift by 1 character on CPYSPLF.
Fixed problem with RPTIGCDTA = *YES. When IGCDTA = *YES, the CPYSPLF command was offsetting data by 1 byte, thus causing the splitter to miss info by one byte.
Modified RS001R to prevent errors if a report only has 1 line of data.
Modified RS005C to set drawer to 1 if the drawer number is < 0. This prevents OVRPRTF errors from occurring if *FORMDF or *E1 is specified for the drawer number when splitting.
Added spool file filter selection to RPTMON. Filter criteria is based on: spool file name, user data, user ID, job name, form type, program name and user defined data. The filter criteria are conditioned together on an AND basis. Ex: If spol file and user data are selected, both must match or a report will not be selected for splitting.
Added RPTIGCDTA data area. If set to *YES, the text based report converters can copy double-byte data (DBCS). if set to *NO, double-byte data cannot be included in report attachments.
Added report exit processing for spool file, user data, form type and banner info to report distribution criteria. There is a sample template program: RPTEXITC in the file SOURCE in library RJSSPLIT. This exit program is called right before a report section is re-printed.
Report page definition @ field values can now be substituted for spool file name, user data and form type when using the *DECOLLATE option. This is a nice way to change selected values based on information contained within a page.
Changed RPTLIST to create temporary file with *NOMAX for record count.
RPTSPLIT command now handles *LINE reports. Sometimes reports coming from mainframes will by SCS reports with the *LINE data type.
If last line of report is a skip to line 1-7, we will output one last page record to insure all page records get output. This situation only occurs if a report has a single skip to line as its last page.
Changed QUSRSPLA data area default from 1411 to 1600 so we pick up the user defined options correctly. Thes fields are used for overriding spool file info.
Added new source paper drawer parameter to report distribution criteris table to allow user to set the source drawer for a report.
Fixed some missing parms in the RPTSPLITC program which could have potentially caused an error when splitting a report without using the report distribution criteria table.
Added ability to set up to 3 user defined option fields. This allows users to determine what the user defined option settings will be for a report that gets split. This is a way for users to set PDF options for Email Report Server/400 V2.01 and above.
Fixed pointer error in RS005R if split was called from interactive screen. Had to update RPTSPLITC to handle new parms being passed to RS005R for form type and user data to add to the log info.
Fixed SPL109C to handle 50 character banner field names when splitting interactively. Was only handling up to 48 characters.
The following special substitution keywords can now be used in the new spool file name, user data and form type fields when splitting a report. The new report will contain these new values after being split.
@SPOOL - Original Report Spool File @USERDTA - Original Report User Data @FORMTYPE - Original Report Form Type @JOBNAME - Original Report Job Name @USERID - Original Report User ID
Added user data and form type to log info and also improved error log logic, so an error entry gets added correctly to the log if a split fails.
Added logic to insure after processing options don't occur if errors occur while a report is being split.
Added error email option to RPTMON command. If an email address is specified and the Email Report Server/400 is installed, the output queue monitor will send an error message if a report does not get processed.
If data area RPTERROR is set to *YES, we will now move a report right away to output queue RJSERROR in QUSRSYS so that it does not continue to get processed if it cannot be split or was not selected for splitting. If data area RPTERROR is set to *NO, a report will continue to get processed until it is split or removed from the output queue. Use CL command RPTERRORQ to enable or disable this setting.
RPTUPG command now correctly moves the RJSSPLIT data area during upgrade.
When using the fill option for a page definition, the fill option didn't work correctly on the last report page if a line skip was found instead of a line space on the last line of the report.
Updated report splitter to write INFO message to job log so user knows which report is being processed.
Fixed Report Splitter banner page to not print garbage when only 1 or 2 lines are selected.
Changed RPTDUPSPL command to use the RJSSPLIT data area as it should. This will prevent license errors when using RPTDUPSPL
Added a MONMSG CPF0000 on the CLROUTQ command to clear our temp queue RPTSPLOUTQ. The reason for this fix is that some users do not have acess to the CLROUTQ command and this was causing problems for these users.
Note: This could cause problems if a user sends reports via QSNADS, however if only sending reports to a new output queue, this should not cause a problem.
Major Change: Implemented the ability to handle up to 999999 spool file entries per AS/400 job. This is to comply with V5R1 update to allow this.
Note: If users are using any of the report server commands in their own programs, they will need to test their programs to make sure the programs don't need to be updated to handle the new 6 digit spool file numbers.
Scan and replace @USERID from user defined data if entered. This allows the original report user to be passed to other apps such as Email Report Server for use in setting the From email address based on the original AS/400 user id of a report.
Added initial F1 help panel implementation to selected commands.
Added RPTUPG command to upgrade settings to new library if installed.
Added RPTCOPY command to duplicate report distribution table entries by spool file name. Also added to menu.
Report monitor now only checks first five characters of the user data field when determining if a report is already *SENT. This resolves problems when a reports user data has a value appended to the *SENT value by another spool processing application other than the Report Splitter. Reports were getting selected for processing even after they were already sent because of this. Example problem user data: '*SENT+1'.
Changed RS005R to run in its own activation group named RJSSPLIT. When running in a *NEW activation group, RS005R would cause the following error after approximately 300 splits: MCh3601 Error - Pointer not set for location referenced.
Created command RSMSG2. Only open debug spool file RS005P if debug SQL is enabled. This was causing a maximum spool files reached error in the RPTMON job.
Removed call to RPTPAGES data area in RPT010C. This code is no longer used and was causing error messages in the AS/400 job log, even though this was not causing any real problems.
Added page rotation to the RPTMRG command. The page rotation is determined from the first report in the group of reports processed by the RPTMRG command.
Changed RPTREPRINT command to allow '*' for the job name. This allows reports to be reprinted for the current job.
Changed RPTDUPSPL parm size from 3800 to 4000 bytes for V5R1 support. Reports were not correctly being duplicated by this command when used.
Changed field text labels in RSPPAGE00 to not be the number 1.
After changing criteria fields to 200 characters in v4.09, the *DECOLLATE option would not correctly split reports or place the split criteria into the user data field. this has been resolved by making sure the new 200 character variable length fields are set correctly using eval instead of movel.
Changed report criteria length from 30 to 200.
When extracting data from report lines, only do a trimr on the data to prevent record selection problems during querying. we were doing a trim which was left-justifying all data and causing record select problems.
Fixed report splitter banner page issues. banner date was offset incorrectly by 2 bytes. banner page was printing garbage if less than five banner lines were entered. banner was not printing when report dist table was used.
Added sql debug code to debug queries. created SPLITDBG data area. created SPLDEBUG command to turn on/off debug. when debugging is enabled, a spool file named: RS005P will get created with a dump of the SQL query. the rsppage00 file in QTEMP can also be viewed to see if page info was extracted correctly.
Added RPTSQL command to be able to run SQL queries to display or update files.
Changed position to for edit report distribution settings to now position by spool file, group and key SEQ number. resolved record locking issue, so more than one user can enter records at the same time.
Fixed WRKSPLIT option to allow lower case criteria entry.
If @value is passed for the new spool file name, the value from the split criteria is used to create the new spool file name. this option is meant to be used only with the *DECOLLATE split option. spool name will be 'r' + 9 characters of value.
We now correctly pass the new spool file valuesto a new report. this wasn't working if *TABLE was selected to process a spool file.
Added user defined data field to the edit report distribution settings screen.
Allow spool file name to be specified for generating the sample report with the RPTTEST command.
Removed user data, job name, form type from the "edit report page definition" program main list screen.
Fixed F14 (test criteria) option on the report splitter parameter selection screen. if *DECOLLATE was chosen, an error would occur when testing the selection criteria even though the splitting would work fine.
The report definition name/type parameters are now passed correctly to the RPTSPLIT command from program spl109. this is the report splitter parameter selection screen.
Updated sample report to contain a sales manager field on line 1, columns 7-9.
Enabled the "Use Extended Select" setting on the edit report distribution settings screen. it wasn't working properly to filter report selections.
Added @PAGECOUNT and @PAGENUM replacement keywords.
- @PAGENUM = current page
- @PAGECOUNT = total pages
Changed QLISTLEN defaults to 88
Added F11 key to screen 3 in SPL109D
Fixed grammar in message for RPTDBBLD.