RPGLE Get RRN Number

24 Views


In RPGLE (RPG IV), RECNO is a file specification keyword used in the F-spec (File Specification) when you want to access a file by Relative Record Number (RRN). It allows you to read or write a record directly by its relative number, which is especially useful for physical files organized with RRN access.


RECNO Keyword in F-Spec

FMyFile  IF   E             Disk    RECNO(rrnVar)

Breakdown:

  • MyFile: File name.

  • I: Input-capable file.

  • F: Full procedural file.

  • E: External file description.

  • Disk: Disk file.

  • RECNO(rrnVar): Specifies the variable (rrnVar) that holds the Relative Record Number to be used for direct positioning.


💡 Example

Dcl-f MyFile IF   E           Disk    RECNO(rrn);

Dcl-s rrn Packed(10:0);
Dcl-s someField Char(10);

rrn = 5;  // Position to 5th record
Read MyFile;

If not %eof(MyFile);
   someField = MyField; // process the record
Endif;
  • The RECNO(rrn) positions the file pointer to RRN 5 before the READ.

  • You can also use CHAIN rrn MyFile; to directly retrieve a record by RRN (if supported).


🔁 Updating a Specific RRN

rrn = 8;
Chain rrn MyFile;
If %found(MyFile);
   MyField = 'NewValue';
   Update MyFile;
Endif;

This allows you to read/update a specific record by its position in the file.


🧠 Important Notes

  • The file must be a physical file that supports RRN access.

  • Logical files or keyed files won't work directly with RECNO.


 

Post Comments