I/O

  1. In ILE RPG you can read a record in a file opened for update, and created or overridden with SHARE(*YES), and then update this locked record in another program that has opened the same file for update.
  2. If a program performs a sequential input operation, and it results in an end-of-file condition, the normal operation is for any subsequent sequential input operation in the same module to immediately result in an end-of-file condition without any physical input request to the database. However, if the file is shared, the RPG runtime will always send a physical input request to the database, and the input operation will be successful if the file has been repositioned by a call to another program or module using the shared file.
  3. You cannot modify the MR indicator using the MOVE or SETON operations. (RPG III only prevents using SETON with MR.)
  4. The File Type entry on the File specification no longer dictates the type of I/O operations that must be present in the calculation specifications.

    For example, in RPG III, if you define a file as an update file, then you must have an UPDAT operation later in the program. This is no longer true in RPG IV. However, your file definition still must be consistent with the I/O operations present in the program. So if you have an UPDATE operation in your source, the file must be defined as an update file.

  5. ILE RPG will allow record blocking even if the COMMIT keyword is specified on the file description specification.
  6. In RPG IV, a file opened for update will also be opened as delete capable. You do not need any DELETE operations to make it delete capable.
  7. In RPG IV, you do not have to code an actual number for the number of devices that will be used by a multiple-device file. If you specify MAXDEV(*FILE) on a file description specification, then the number of save areas created for SAVEDS and SAVEIND is based on the number of devices that your file can handle. (The SAVEDS, SAVEIND, and MAXDEV keywords on an RPG IV file description specification correspond to the SAVDS, IND, and NUM options on a RPG III file description specification continuation line, respectively.)

    In ILE RPG, the total number of program devices that can be acquired by the program cannot be different from the maximum number of devices defined in the device file. OPM RPG/400 allows this through the NUM option.

  8. In ILE RPG, the ACQ and REL operation codes can be used with single device files.
  9. In ILE RPG, the relative record number and key fields in the database-specific feedback section of the INFDS are updated on each input operation when doing blocked reads.
  10. When a referential constraint error occurs in OPM RPG/400, the status code is set to "01299" (I/O error). In ILE RPG, the status code is set to "01022", "01222", or "01299", depending on the type of referential constraint error that occurs:
  11. In ILE RPG, the database-specific feedback section of the INFDS is updated regardless of the outcome of the I/O operation. In OPM RPG/400, this feedback section is not updated if the record-not-found condition is encountered.
  12. ILE RPG relies more on data-management error handling than does OPM RPG/400. This means that in some cases you will find certain error messages in the job log of an ILE RPG program, but not an OPM RPG/400 program. Some differences you will notice in error handling are:
  13. When doing READE, REDPE (READPE in ILE), SETLL on a database file, or when doing sequential-within-limits processing by a record-address-file, OPM RPG/400 does key comparisons using the *HEX collating sequence. This may give different results than expected when DDS features are used that cause more than one search argument to match a given key in the file.

    For example, if ABSVAL is used on a numeric key, both -1 and 1 would succeed as search arguments for a key in the file with a value of 1. Using the hexadecimal collating sequence, a search argument of -1 will not succeed for an actual key of 1.

    ILE RPG does key comparisons using *HEX collating sequence only for pre-V3R1 DDM files. See Using Pre-V3R1 DDM Files for more information.

  14. ILE RPG allows the To File and the From File specified for prerun-time arrays and tables to be different. In OPM RPG, both file names must be the same; if they are different the diagnostic message QRG3038 is issued.
  15. When translation of a RAF-Controlled file is specified, the results using ILE RPG may differ from OPM RPG/400, depending on the translation table. This is due to the different sequence of operations. In OPM RPG/400 the sequence is: retrieve record, translate and compare; in ILE RPG the sequence is: translate, compare and retrieve record.
  16. The RPG/400 compiler considers the DELET operation to be an output operation. If an update-capable record format has a DELET operation and a CLEAR or RESET operation, but no UPDAT operation, the RPG/400 compiler will clear or reset the fields of the record format, but the ILE RPG compiler will not clear or reset the fields. To have the ILE RPG compiler clear or reset the fields, *ALL can be specified in Factor 2 of the operation, or an UPDATE operation can be added to the program.


[ Top of Page | Previous Page | Next Page | Contents | Index ]