Physical File Member is Full-AS400

Estikurnia
2 min readSep 22, 2021

--

Solution that I found,
There are two cases:

  1. Member size initial number of records ____ 100000
  2. Member size initial numebr of records ____ *NOMAX

How the SIZE atribute works, it has there parts:

  1. Initial number of records
  2. Increment number of records
  3. Maximum number of records

(1) Initial number that is allocated for a file when a member is added to a physica file, by default is 10,000 lines of source.

(2) Determines how many records to add to the file, if a program wants to write more records, more space is added in increments

(3) For example a source file defaults to 499 increments of 1,000 records, so when a specified maximum number of incremetns times, a full source file member defaults to 509,000 records. That is 10,000 + (499 * 1,000). Once a file member is full, any attemp to add a records will cause a message to be placed on the system operators queue requesting permission to increase the file size.

Conclusion: File member can hold more than the record capacity number of records, but manual intervention by the system operator is required for this to happen.

How to do that intervention?

For DDS table each write causes another record to be used up. This can cause the file to fill up with deleted records, mandating manual intervention fo reclaim that space by using SIZE(*NOMAX), ALLOCATE(*NO) and REUSEDLT(*YES). This once and for all, lets the system decide how to allocate disk space. You can get this behavior for DDS defined files by changing the command defaults for CRTPF.

CRTPF FILE(file_lib_location/file_name) SRCFILE(source_file_location/source_name) SIZE(*NOMAX) ALLOCATE(*NO) REUSEDLT(*YES)

CRTPF intervention

You need to recompile the source if using CRTPF,
CHGPF will do the same thing without changing the object creation date, without compiling.

Source :
https://stackoverflow.com/questions/42567433/number-or-nomax-value-in-as400-db2-table-compilation

--

--