Search code examples
rpgle

RPGLE: RNF2120, dont know why I keep getting this error


I'm trying to compile my RPGLE program and I keep getting errors stating that a file i declared at the top is ignored due to no external description. What does this mean? I've been trying to figure it out and still can't come up with a solution. The errors are below the code.

 FSHIFTRATESIF   E             DISK    RENAME(SHIFTRATES:SHIFTRATER)
 FALLSHIFT  IF   E           K DISK    RENAME(ALLSHIFT:ALLSHIFTER)
 FCONFIRMPAYCF   E             WORKSTN
 FPAYRPT    O    E             PRINTER OFLIND(*IN01)
 DHOURSOVER        S              3  0
  /FREE

   READ SHIFTRATES;
   WRITE TITLE;
   WRITE COLHDG;
   READ ALLSHIFT;
   DOW NOT %EOF;
     EXSR PAYSR;
     IF *IN01;
       WRITE TITLE;
       WRITE COLHDG;
       *IN01 = *OFF;
       ENDIF;
       WRITE EMPDETAIL;
       READ ALLSHIFT;
   ENDDO;

       WRITE TOTALS;
       EXFMT RECORD1;
       *INLR = *ON;
       RETURN;

       BEGSR PAYSR;
       SELECT;
         WHEN WORKSHIFT = 'D';
           HOURLYRATE = DAYRATE;
           WHEN WORKSHIFT = 'A';
             HOURLYRATE = AFTRATE;
             WHEN WORKSHIFT = 'N';
               HOURLYRATE = NIGHTRATE;
       ENDSL;

       SELECT;
         WHEN PAYGRADE = '1';
           HOURLYRATE = HOURLYRATE * 1.07;
           WHEN PAYGRADE = '2';
             HOURLYRATE = HOURLYRATE * 1.05;
             WHEN PAYGRADE = '3';
               HOURLYRATE = HOURLYRATE * 0.95;
       ENDSL;

       IF HRSWORKED > 40;
         REGULARPAY = 40 * HOURLYRATE;
         HOURSOVER = HRSWORKED - 40;
         OVERPAY = HOURSOVER * HOURLYRATE * 1.5;
         TOTREGPAY = TOTREGPAY + REGULARPAY;
         TOTOVTPAY = TOTOVTPAY + OVERPAY;

         ELSE;
           REGULARPAY = HRSWORKED * HOURLYRATE;
           TOTREGPAY = TOTREGPAY + REGULARPAY;
           TOTALPAY = OVERPAY + REGULARPAY;
           OVERPAY = 0;
           ENDIF;
           TOTEMPPAY = TOTREGPAY + TOTOVTPAY;
           ENDSR;

           /END-FREE

      FSHIFTRATESIF   E             DISK    RENAME(SHIFTRATES:SHIFTRATER)
 FALLSHIFT  IF   E           K DISK    RENAME(ALLSHIFT:ALLSHIFTER)
 FCONFIRMPAYCF   E             WORKSTN
 FPAYRPT    O    E             PRINTER OFLIND(*IN01)
 DHOURSOVER        S              3  0
  /FREE

   READ SHIFTRATES;
   WRITE TITLE;
   WRITE COLHDG;
   READ ALLSHIFT;
   DOW NOT %EOF;
     EXSR PAYSR;
     IF *IN01;
       WRITE TITLE;
       WRITE COLHDG;
       *IN01 = *OFF;
       ENDIF;
       WRITE EMPDETAIL;
       READ ALLSHIFT;
   ENDDO;

       WRITE TOTALS;
       EXFMT RECORD1;
       *INLR = *ON;
       RETURN;

       BEGSR PAYSR;
       SELECT;
         WHEN WORKSHIFT = 'D';
           HOURLYRATE = DAYRATE;
           WHEN WORKSHIFT = 'A';
             HOURLYRATE = AFTRATE;
             WHEN WORKSHIFT = 'N';
               HOURLYRATE = NIGHTRATE;
       ENDSL;

       SELECT;
         WHEN PAYGRADE = '1';
           HOURLYRATE = HOURLYRATE * 1.07;
           WHEN PAYGRADE = '2';
             HOURLYRATE = HOURLYRATE * 1.05;
             WHEN PAYGRADE = '3';
               HOURLYRATE = HOURLYRATE * 0.95;
       ENDSL;

       IF HRSWORKED > 40;
         REGULARPAY = 40 * HOURLYRATE;
         HOURSOVER = HRSWORKED - 40;
         OVERPAY = HOURSOVER * HOURLYRATE * 1.5;
         TOTREGPAY = TOTREGPAY + REGULARPAY;
         TOTOVTPAY = TOTOVTPAY + OVERPAY;

         ELSE;
           REGULARPAY = HRSWORKED * HOURLYRATE;
           TOTREGPAY = TOTREGPAY + REGULARPAY;
           TOTALPAY = OVERPAY + REGULARPAY;
           OVERPAY = 0;
           ENDIF;
           TOTEMPPAY = TOTREGPAY + TOTOVTPAY;
           ENDSR;

           /END-FREE

  FSHIFTRATESIF   E             DISK    RENAME(SHIFTRATES:SHIFTRATER)
 FALLSHIFT  IF   E           K DISK    RENAME(ALLSHIFT:ALLSHIFTER)
 FCONFIRMPAYCF   E             WORKSTN
 FPAYRPT    O    E             PRINTER OFLIND(*IN01)
 DHOURSOVER        S              3  0
  /FREE

   READ SHIFTRATES;
   WRITE TITLE;
   WRITE COLHDG;
   READ ALLSHIFT;
   DOW NOT %EOF;
     EXSR PAYSR;
     IF *IN01;
       WRITE TITLE;
       WRITE COLHDG;
       *IN01 = *OFF;
       ENDIF;
       WRITE EMPDETAIL;
       READ ALLSHIFT;
   ENDDO;

       WRITE TOTALS;
       EXFMT RECORD1;
       *INLR = *ON;
       RETURN;

       BEGSR PAYSR;
       SELECT;
         WHEN WORKSHIFT = 'D';
           HOURLYRATE = DAYRATE;
           WHEN WORKSHIFT = 'A';
             HOURLYRATE = AFTRATE;
             WHEN WORKSHIFT = 'N';
               HOURLYRATE = NIGHTRATE;
       ENDSL;

       SELECT;
         WHEN PAYGRADE = '1';
           HOURLYRATE = HOURLYRATE * 1.07;
           WHEN PAYGRADE = '2';
             HOURLYRATE = HOURLYRATE * 1.05;
             WHEN PAYGRADE = '3';
               HOURLYRATE = HOURLYRATE * 0.95;
       ENDSL;

       IF HRSWORKED > 40;
         REGULARPAY = 40 * HOURLYRATE;
         HOURSOVER = HRSWORKED - 40;
         OVERPAY = HOURSOVER * HOURLYRATE * 1.5;
         TOTREGPAY = TOTREGPAY + REGULARPAY;
         TOTOVTPAY = TOTOVTPAY + OVERPAY;

         ELSE;
           REGULARPAY = HRSWORKED * HOURLYRATE;
           TOTREGPAY = TOTREGPAY + REGULARPAY;
           TOTALPAY = OVERPAY + REGULARPAY;
           OVERPAY = 0;
           ENDIF;
           TOTEMPPAY = TOTREGPAY + TOTOVTPAY;
           ENDSR;

           /END-FREE

RNF2120: External descriptions for file ALLSHIFT not found. file is ignored

RNF2120: External desciptions for file SHIFTRATE not found. file is ignored


Solution

  • The most common cause would be that those files are not on the library list when compiling.