Increasing Max record size on a variable length RMS Indexed file
Posted: Thu Apr 15, 2021 11:53 pm
We have a few hundred different RMS files as part of a mission critical COBOL application running on OpenVMS 8.3 on ALPHA Servers. We need to expand the maximum record length of a RMS indexed file with variable length records from 4500 to 4600 bytes. The file contains two different records, one that is 4500 bytes which is a header and one that is 700 bytes which are the details associated with the header. It is a one to many relationship. The 100 bytes is being added to the end of the Header record as "FILLER" for now. All the COBOL programs accessing the file will be re-complied using the expanded record layout. The application will be modified in the near future to add and start populating new fields.
When we increase the record size of a file with fixed length records we use the "/PAD" qualifier on the CONVERT command to expand short records for the new file. This option is not allowed when converting an indexed file with variable length records. Therefore the new file will allow 4600 byte records but will only have 4500 bytes records immediately after the CONVERT.
Current file contains almost 20 Million records and Current Bucket Size in Area 0 is 9. All DATA and INDEX COMPRESSION is "YES" and FILL is "100".
Used output of $ANAL/RMS/FDL in $EDIT/FDL to change record size to 4600, then used INVOKE-OPTIMIZE to generate new FDL. New Bucket Size in Area 0 is 10.
We plan to use the convert utility with the new FDL to create the file with the 4600 max record size.
Is there any issue doing it this way or anything to watch out for?
Especially performance related as this file is central to the application. For example, when the application updates an existing record in the new file it will Read in 4500 byte records and REWRITE out 4600 byte records.
When we increase the record size of a file with fixed length records we use the "/PAD" qualifier on the CONVERT command to expand short records for the new file. This option is not allowed when converting an indexed file with variable length records. Therefore the new file will allow 4600 byte records but will only have 4500 bytes records immediately after the CONVERT.
Current file contains almost 20 Million records and Current Bucket Size in Area 0 is 9. All DATA and INDEX COMPRESSION is "YES" and FILL is "100".
Used output of $ANAL/RMS/FDL in $EDIT/FDL to change record size to 4600, then used INVOKE-OPTIMIZE to generate new FDL. New Bucket Size in Area 0 is 10.
We plan to use the convert utility with the new FDL to create the file with the 4600 max record size.
Is there any issue doing it this way or anything to watch out for?
Especially performance related as this file is central to the application. For example, when the application updates an existing record in the new file it will Read in 4500 byte records and REWRITE out 4600 byte records.