The ALTER AREA operation functions differently depending on whether the area in question has exactly one, or more than one, WITHIN FILE clauses.
If it has exactly one WITHIN FILE clause, the command facility assumes that a WITHIN FILE clause for that file is referring to the same file.
If it has more than one WITHIN FILE clause, the command facility assumes that every WITHIN FILE clause is an attempt to add a new WITHIN FILE clause, even if that file is already included as one of the files to which that the area is allocated. It must do this because it is theoretically possible to distribute sections of an area across the same file more than once.
The DISPLAY AREA xxx VERB ALTER AS SYNTAX command displays an AREA with all of its WITHIN FILE clauses uncommented. When that output is re-submitted through OCF (if there are multiple WITHIN FILE clauses), the DB004043 message is issued:
ALTER PHYSICAL AREA DMLWORK.DML-AREA-3 PRIMARY SPACE 25000 PAGES FROM PAGE 100001 MAXIMUM SPACE 25000 PAGES PAGE SIZE 4276 CHARACTERS WITHIN FILE DMLF3P1 FROM 1 FOR 5000 BLOCKS WITHIN FILE DMLF3P2 FROM 1 FOR 5000 BLOCKS WITHIN FILE DMLF3P3 FROM 1 FOR 5000 BLOCKS WITHIN FILE DMLF3P4 FROM 1 FOR 5000 BLOCKS WITHIN FILE DMLF3P5 FROM 1 FOR 5000 BLOCKS ; *+ Status = -4 SQLSTATE = 64000 Messages follow: *+ DB004043 T513 C-4M6016: WITHIN FILE DMLWORK.DMLF3P1 blocks requested exceeds *+ available pages in the AREA *+ DB004043 T513 C-4M6016: WITHIN FILE DMLWORK.DMLF3P2 blocks requested exceeds *+ available pages in the AREA *+ DB004043 T513 C-4M6016: WITHIN FILE DMLWORK.DMLF3P3 blocks requested exceeds *+ available pages in the AREA *+ DB004043 T513 C-4M6016: WITHIN FILE DMLWORK.DMLF3P4 blocks requested exceeds *+ available pages in the AREA *+ DB004043 T513 C-4M6016: WITHIN FILE DMLWORK.DMLF3P5 blocks requested exceeds *+ available pages in the AREA
The solution is to first EXCLUDE all of the WITHIN FILE clauses:
ALTER PHYSICAL AREA DMLWORK.DML-AREA-3 PRIMARY SPACE 25000 PAGES FROM PAGE 100001 MAXIMUM SPACE 25000 PAGES PAGE SIZE 4276 CHARACTERS EXCLUDE FILE DMLF3P1 EXCLUDE FILE DMLF3P2 EXCLUDE FILE DMLF3P3 EXCLUDE FILE DMLF3P4 EXCLUDE FILE DMLF3P5 WITHIN FILE DMLF3P1 FROM 1 FOR 5000 BLOCKS WITHIN FILE DMLF3P2 FROM 1 FOR 5000 BLOCKS WITHIN FILE DMLF3P3 FROM 1 FOR 5000 BLOCKS WITHIN FILE DMLF3P4 FROM 1 FOR 5000 BLOCKS WITHIN FILE DMLF3P5 FROM 1 FOR 5000 BLOCKS ; *+ Status = 0 SQLSTATE = 00000
Note: The information in this document applies to r17.0. Prior to r17.0 there was an APAR which altered the functionality of the DISPLAY AREA xxx VERB ALTER AS SYNTAX command. Prior to that APAR, areas with multiple WITHIN FILE clauses had the WITHIN FILE clauses output as comments even if AS SYNTAX was requested. See RO01555 (r15.0), RO01556 (r16.0 Sp0 and Sp1) and RO01557 (r16.0 Sp2 and above).