Most I/O issues have to do with performing full scans of entire database files. If your RPG program is reading every record in a large database and checking each against criteria coded in the program, it will run long and consume a lot of resources. It does not take a complete rewrite to make this program do less I/O. You just need to make sure a permanent index or logical file exists on the system keyed by the fields in your selection criteria. Using a SETLL or CHAIN operation in the RPG code, you can position to the first record that meets your criteria. Continue to read through the data until the criteria is no longer met. Even in examples where the selection criteria is variable and not as predictable, there is always a different and more efficient data access method. Again, less I/O means less disk activity, less memory, less CPU and a more efficient process.