From: Carter Combs To: All
I have a subfile payroll maintenance program with a bug that I haven't been able to fix, and hope someone out there can help me with. When an employee number is keyed in, data from the master file is displayed on the top half of the screen for maintenance, and miscellaneous deductions are listed on the bottom (subfile) half, that can also be changed. The program works great except when there are no deductions (i.e., zero records in the subfile). The messages are RPG1255 ("Session or device error occurred") and CPF5012 ("Cannot process sub-file request for file").
The RPG line that causes the error is EXFMT SBFLCTL (subfile control format). Does anyone know of a way to allow maintenance on my non-subfile master file top half, even though there are no records in the subfile on the bottom half? And when there are subfile records, I want all the changeable fields on the same screen at the same time, just as I have already.
From: David Knittle To: Carter Combs
The problem is that OS/400 does not like to display empty subfiles that were initialized with SFLCLR. In the subfile definition, you can put an indicator on the SFLDSP keyword to condition the display. If the subfile has records, set the indicator on; else set it off. I use this all the time, and it works fine.
From: Pete Hall To: Carter Combs
I generally use the following procedure for displaying a subfile:
1. Output (WRITE) a footer with the function key map. This record clears all lines on the display.
2. Turn on the indicator which controls the SFLDSPCTL keyword. This will cause the subfile control record to be written.
3. If there are any records in the subfile, turn on the indicator which controls the SFLDSP keyword. This will cause the subfile data to be output, only if there are records in the subfile.
4. If there are no records in the subfile, output (WRITE) a record which contains the text "No data meets selection criteria" or something similar. The text is positioned where the first or second subfile record would be displayed if there was data in the subfile. The record has the OVERLAY keyword. It does not clear any lines on the display.
5. EXFMT the subfile control record. This record also contains the OVERLAY keyword, so everything which has been previously written to the display is left unmolested. The subfile data will be displayed only if there are records in the subfile. Otherwise, the "No data..." message is left in place.
6. After processing the data returned on the display, turn off the SFL-DSPCTL and SFLDSP indicators, turn on the SFLCLR keyword, and WRITE the subfile control record. This clears the subfile so that it can be rebuilt again from scratch.
This procedure gives you a display which is consistent with OS/400 (except for the "More...").
LATEST COMMENTS
MC Press Online