Error compiling RPG

Use this board to ask questions or have discussions with other Rich Displays users.
Post Reply
dlstrawn
New User
Posts: 7
Joined: Tue Oct 05, 2010 2:13 pm
First Name: David
Last Name: Strawn
Company Name: Anvil Knitwear
Contact:

Error compiling RPG

Post by dlstrawn »

Here is my RPG Code:
RPG CODE
H DFTACTGRP(*NO)
     H/DEFINE PROFOUNDUI
     FMRA0100D  CF   E             WORKSTN EXTFILE('APPANV/MRA0100D')
     f                                     infds(kyinfds)
     f                                     indds(indinfds)
     f                                     sfile(GridData:s_GridRow)
     f                                     prefix(s_)

      * fill resource grid parms
      */copy qcpylesrc,mra0109s
      */if not defined(ResourceMasterGrid)
     d rmRwNd          s              3  0                                      rows needed
     d rmRwRt          s              3  0                                      rows returned
     d rmGSts          s              1a                                        table status:
     d                                                                            'S' = table start
     d                                                                            'E' = tablew end
     d                                                                            'W' = within table
     d                                                                            'N' = empty table
     d rmGrid          ds                  qualified dim(gr)                    result set of rows
     d  RescID                       16a                                        resource id
     d  Locatn                       10a                                        location
     d  RunRte                        9  2                                      run rate
      */endif
      */define ResourceMasterGrid

      * application constants
      */copy qcpylesrc,uua1000r
      */if not defined(ApplicationConstants)
      * constants
     d gr              c                   const(999)                           Rows in Grid
     d eof             c                   const(00012)                         End of File
     d on              c                   const('1')                           On
     d off             c                   const('0')                           Off
     d Invalid         c                   const('1')                           Invalid
     d Valid           c                   const('0')                           Valid
     d No              c                   const('0')                           No = off
     d Yes             c                   const('1')                           Yes = on
     d Exit            c                   const('X')                           Exit Condition
     d Cancel          c                   const('C')                           Cancel Condition
     d Continue        c                   const(' ')                           Continue Condition
     d Start           c                   const('S')                           Start of Table
     d End             c                   const('E')                           End of Table
     d Within          c                   const('W')                           Within Table
     d Null            c                   const('N')                           Null Table (empty)
     d Cmp             c                   const('01')                          AppCon Company 01
     d Div             c                   const('00')                          AppCon Division 00

      * working variables
     d Action          s              1a   inz(*blank)                          Action to take:
     d                                                                            'X' = Exit
     d                                                                            'C' = Cancel
     d                                                                            ' ' = Continue
     d Response        s              1a                                        Response to send:
     d                                                                            'X' = Exit
     d                                                                            'C' = Cancel
     d                                                                            ' ' = Continue
     d Compny          s              2a   inz('01')                            AppCon Company 01
     d Divisn          s              2a   inz('00')                            AppCon Division 00
     d ErrNum          s              7a                                        error id
     d ErrDsc          s            132a                                        error description
     d ErrFld          s              2  0                                      error field
     d WinLne          s              2  0                                      window start line
     d WinPos          s              3  0                                      window start pos.

      * boolean defs
     d Errors          s               n   inz(*off)                            Error condition
     d EndPgm          s               n   inz(*off)                            End of Program
     d Refresh         s               n   inz(*off)                            Refresh

      * grid options
     d oView           s              1a   inz('1')                             View Row
     d oSelect         s              1a   inz('1')                             Select Row
     d oEdit           s              1a   inz('2')                             Edit Row
     d oCopy           s              1a   inz('3')                             Copy Row
     d oDelete         s              1a   inz('4')                             Delete Row

      * program status data structure
     d                sds           263
     d UserID                254    263a

      * display file indicator representation
     d indinfds        ds
     d  dClrGrid              87     87n                                        Clear Grid
     d  dHidGrid              88     88n                                        Hide Grid
     d  dEndGrid              89     89n                                        End of Grid

      * representation of which key was pressed on the keyboard
     d kyinfds         ds
     d  KeyPressed           369    369                                         Key Pressed

      * keyboard key constants
     d kExit           c                   x'33'                                Exit Function (F3)
     d kCancel         c                   x'3C'                                Cancel Func. (F12)
     d kPrompt         c                   x'34'                                Refresh Func. (F5)
     d kRefresh        c                   x'35'                                Refresh Func. (F5)
     d kAdd            c                   x'36'                                Add Function (F6)
     d kEnter          c                   x'F1'                                Enter
      */endif
      */define ApplicationConstants

      * work field definitions
     d SavGridRow      s                   like(s_GridRow) inz(1)

      * columns from grid
     d ScrDta          ds
     d  s_RescID
     d  s_Locatn
     d  s_RunRte
      * backup fields from grid
     d bScrDta         ds                  likeds(ScrDta)

      **********************************************************************************************
      * initial processing - begin
      *
      * do one time, at program startup
     c                   exsr      FillGrid
     c                   eval      s_GridRow = 1
     c                   reset                   EndPgm
      * initial processing - end
      **********************************************************************************************

      **********************************************************************************************
      * main program loop - begin
      *
      * process grid options and commands until user presses (f3)exit
     c                   dow       not EndPgm
     c                   exsr      DspWindow

     c                   select

      **********************************************************************************************
      *** (f3)exit key from grid - begin
      ***
      *** if user presses (f3)exit from grid, return to caller
     c                   when      (KeyPressed = kExit)
     c                   eval      EndPgm = Yes
     c                   iter
      *** (f3)exit key from grid - end
      **********************************************************************************************

      **********************************************************************************************
      *** (f6)add key from grid - begin
      ***
      *** if user presses (f6)add from grid, call add program
     c                   when      (KeyPressed = kAdd)
     c                   call      'MRA0140R'
     c                   parm                    WinLne
     c                   parm                    WinPos
     c                   parm                    Action
     c                   if        Action = Exit
     c                   eval      EndPgm = Yes
     c                   endif
     c                   exsr      RfrGrid
     c                   iter
      *** (f6)add key from grid - end
      **********************************************************************************************

      **********************************************************************************************
      *** no rows to display - begin
      ***
      *** if user presses a key other than (f3)exit or f(6)add, when there are no rows in the grid -
      ***   redisplay
     c                   when      (rmGSts = Null)
     c                   eval      dHidGrid = On
      *** no rows to display - end
      **********************************************************************************************

      **********************************************************************************************
      *** (f12)cancel key from grid - begin
      ***
      *** if user presses (f12)cancel from grid, clear all options and redisplay
     c                   when      (KeyPressed = kCancel)
     c                   readc     GridData
     c                   dow       (not %eof)
     c                   eval      s_Opt = *blanks
     c                   update    GridData
     c                   readc     GridData
     c                   enddo
      *** (f12)cancel key from grid - end
      **********************************************************************************************

      **********************************************************************************************
      *** (enter) from grid - begin
      ***
      *** if user presses enter from grid, process all options, if any
     c                   when      (KeyPressed = kEnter)
     c                   exsr      PosCursor
     c                   readc     GridData
     c                   eval      bScrDta  = ScrDta
     c                   dow       (not %eof)

     c                   select
      ***** (1)view option
     c                   when      (s_Opt = oView)
     c                   call      'MRA0110R'
     c                   parm                    WinLne
     c                   parm                    WinPos
     c                   parm                    ScrDta
     c                   parm                    Action
      ******* (f3)exit on view window
     c                   if        Action = Exit
     c                   return
     c                   endif
      ***** (2)edit option
     c                   when      (s_Opt = oEdit)
     c                   call      'MRA0120R'
     c                   parm                    WinLne
     c                   parm                    WinPos
     c                   parm                    ScrDta
     c                   parm                    Action
      ******* (f3)exit on edit window
     c                   if        Action = Exit
     c                   return
     c                   endif
      ***** (4)delete option
     c                   when      (s_Opt = oDelete)
     c                   call      'MRA0130R'
     c                   parm                    WinLne
     c                   parm                    WinPos
     c                   parm                    ScrDta
     c                   parm                    Action
      ******* (f3)exit on delete window
     c                   if        Action = Exit
     c                   return
     c                   endif
     c                   endsl
      ***** get next option
     c                   eval      s_Opt = *blanks
     c                   update    GridData
     c                   readc     GridData
     c                   eval      WinLne = WinLne + 1
     c                   eval      WinPos = WinPos + 2
     c                   enddo
      ***** refresh grid after processing all options, if necessary
     c                   exsr      RfrGrid
      *** (enter) from grid - end
      ***************************************************************************
     c                   endsl

     c                   enddo
     c                   return
      * main program loop - end
      ***************************************************************************

      ***************************************************************************
      * subroutine to fill the grid
     c     FillGrid      begsr

      *** call program to fill the grid
     c                   eval      rmRwNd = gr
     c                   call      'MRA0109R'
     c                   parm                    rmRwNd
     c                   parm                    rmRwRt
     c                   parm                    rmGSts
     c                   parm                    rmGrid
      *** add grid to subfile
     c                   select
      ***** no rows in grid
     c                   when      rmGSts = Null
     c                   eval      dHidGrid = On
      ***** end of grid reached
     c                   other
     c                   if        rmGSts = End
     c                   eval      dEndGrid = On
     c                   endif
      ***** process grid rows
     c     1             do        rmRwRt        s_GridRow
     c                   eval      s_RescID = rmGrid(s_GridRow).RescID
     c                   eval      s_Locatn = rmGrid(s_GridRow).Locatn
     c                   eval      s_RunRte = rmGrid(s_GridRow).RunRte
     c                   write     GridData
     c                   enddo
     c                   if        s_GridRow = *zero
     c                   eval      rmGSts = Null
     c                   eval      dHidGrid = On
     c                   endif
     c                   endsl
     c                   eval      WinLne = 3
     c                   eval      WinPos = 3

     c                   endsr

      **********************************************************************************************
      * subroutine to refresh grid
     c     RfrGrid       begsr

     c                   eval      SavGridRow = s_GridRow
     c                   exsr      ClrGrid
     c                   exsr      FillGrid
     c                   if        SavGridRow > rmRwRt
     c                   eval      s_GridRow = rmRwRt
     c                   endif
     c                   if        SavGridRow < s_GridRow
     c                   eval      s_GridRow = SavGridRow
     c                   endif

     c                   endsr

      **********************************************************************************************
      * subroutine to clear grid and turn off eof
     c     ClrGrid       begsr

     c                   eval      dClrGrid = On
     c                   write     GridCtrl
     c                   eval      dClrGrid = Off
     c                   eval      dEndGrid = Off

     c                   endsr

      **********************************************************************************************
      * subprocedure to position the cursor
     c     PosCursor     begsr

     c                   if        s_CsrLoc > 0
     c                   eval      s_GridRow = s_CsrLoc
     c                   else
     c                   if        s_GetCol = 4 and
     c                             s_GetRow < 25 and
     c                             s_GetRow > 5
     c                   eval      s_GridRow = rmRwRt
     c                   else
     c                   eval      s_GridRow = 1
     c                   endif
     c                   endif

     c                   endsr


      **********************************************************************************************
      * subroutine to display a window

     c     DspWindow     begsr

     c                   write     Title
     c                   write     Options
     c                   if        (dHidGrid = On)
     c                   eval      s_SetRow = 1
     c                   eval      s_SetCol = 2
     c                   write     EmptyGrid
     c                   endif
     c                   write     Functions
     c                   exfmt     GridCtrl
     c                   eval      s_SetRow = *zero
     c                   eval      s_SetCol = *zero
     c                   eval      dHidGrid = Off
     c                   eval      Errors = Off

     c                   endsr
Here is the Display file:
RPG CODE
* display controls
     A                                      DSPSIZ(*DS4)
     A                                      CSRINPONLY
     A                                      INDARA

      * grid data fields
     A          R GRIDDATA
     A                                      SFL
     A            OPT            1A  B  5  3VALUES(' ' '1' '2' '4')
     A            RESCID    R        O  5  8REFFLD(MR01RSC APPLIB/MR0100P)
     A            LOCATN    R        O  5 27REFFLD(MR01LOC APPLIB/MR0100P)
     A            RUNRTE    R        O  5 38REFFLD(MR01RNR APPLIB/MR0100P)
     A                                      EDTCDE(4)

      * grid control fields
     A          R GRIDCTRL
     A                                      SFLCTL(GRIDDATA)
     A                                      CF03 CF12 CF06
     A N87                                  SFLDSPCTL
     A N88                                  SFLDSP
     A                                      SFLSIZ(999)
     A                                      SFLPAG(19)
     A                                      OVERLAY
     A  87                                  SFLCLR
     A  89                                  SFLEND(*MORE)
     A                                      SFLCSRRRN(&CSRLOC)
     A                                      RTNCSRLOC(*WINDOW &GETROW &GETCOL)
     A                                      CSRLOC(SETROW SETCOL)
     A            SETROW         3  0H
     A            SETCOL         3  0H
     A            GETROW         3  0H
     A            GETCOL         3  0H
     A            CSRLOC         5  0H
     A            GRIDROW        4  0H      SFLRCDNBR(CURSOR)

     A                                  4  3'Opt'
     A                                      COLOR(WHT)
     A                                  4  8'Resource ID'
     A                                      COLOR(WHT)
     A                                  4 27'Location'
     A                                      COLOR(WHT)
     A                                  4 40'Run Rate'
     A                                      COLOR(WHT)

      * title
     A          R TITLE
     A                                  1  2'MRA0100D'
     A                                      COLOR(PNK)
     A                                  1 51'Manufacturing Routing Management'
     A                                      COLOR(PNK)
     A                                  1122DATE(*SYS *YY) EDTCDE(Y)
     A                                      COLOR(PNK)

     A                                  2  2USER
     A                                      COLOR(PNK)
     A                                  2 58'Manage Resources'
     A                                      COLOR(PNK)
     A                                  2124TIME
     A                                      COLOR(PNK)

      * options
     A          R OPTIONS
     A                                      OVERLAY
     A                                  3  2'Options:'
     A                                      COLOR(BLU)
     A                                  3 13'1=View'
     A                                      COLOR(BLU)
     A                                  3 23'2=Edit'
     A                                      COLOR(BLU)
     A                                  3 33'4=Delete'
     A                                      COLOR(BLU)

      * no records to display
     A          R EMPTYGRID
     A                                      OVERLAY
     A                                 11 43'There are no Resources to display'

      * functions
     A          R FUNCTIONS
     A                                      OVERLAY
     A                                 26  2'F3=Exit'
     A                                      COLOR(BLU)
     A                                 26 15'F12=Cancel'
     A                                      COLOR(BLU)
     A                                 26 31'F6=Add a Resource'
     A                                      COLOR(BLU)

      * assume display
     A          R ASSUME
     A                                      ASSUME
     A            BLANK          1A     1  2DSPATR(ND)
Here is the error:
Message . . . . : The call to GETPARAMET ended in error (C G D F).
Cause . . . . . : RPG procedure PUI0001300 in program PROFOUNDUI/PUI0001300
at statement 2971 called program or procedure GETPARAMET, which ended in
error. If the name is *N, the call was a bound call by procedure pointer.
Recovery . . . : Check the job log for more information on the cause of the
error and contact the person responsible for program maintenance.
Possible choices for replying to message . . . . . . . . . . . . . . . :
D -- Obtain RPG formatted dump.
S -- Obtain system dump.
G -- Continue processing at *GETIN.
C -- Cancel.
F -- Obtain full formatted dump.

Let me know what you find. Thanks.
dlstrawn
New User
Posts: 7
Joined: Tue Oct 05, 2010 2:13 pm
First Name: David
Last Name: Strawn
Company Name: Anvil Knitwear
Contact:

Re: Error compiling RPG

Post by dlstrawn »

More info:

it replaces my F spec with:
F%%%%%%%%%%CF E WORKSTN EXTFILE('APPANV/MRA0100D')
a
*RNF2002 30 a the file-name entry is not valid
User avatar
Rob
Profound Logic Staff Member
Posts: 135
Joined: Fri Jan 04, 2008 12:12 pm
First Name: Rob
Last Name: Ferguson
Company Name: Profound Logic Software
Contact:

Re: Error compiling RPG

Post by Rob »

If your FSpec is :F%%%%%%%%%%CF E WORKSTN then the pre-processor could not find your display file.

The first thing to look at is the display file. The pre-processor is expecting a rich display file. Try converting your display file to a rich display file with the DDS converter in the Designer, and then re-compile the RPG program (with the pre-processor).
dlstrawn
New User
Posts: 7
Joined: Tue Oct 05, 2010 2:13 pm
First Name: David
Last Name: Strawn
Company Name: Anvil Knitwear
Contact:

Re: Error compiling RPG

Post by dlstrawn »

I have already compiled it with the dds converter and it did not work, hence the raw dds and rpg so that you guys can compile it yourself and figure out why it is not working. Alex asked me to send the source code so you guys could figure it out. I've given up trying to get it to work.
User avatar
Rob
Profound Logic Staff Member
Posts: 135
Joined: Fri Jan 04, 2008 12:12 pm
First Name: Rob
Last Name: Ferguson
Company Name: Profound Logic Software
Contact:

Re: Error compiling RPG

Post by Rob »

I have found the problem causing the error message. The pre-processor searches for keywords in the F-Spec. These include INFDS and INDDS. It has incorrectly found INFDS in indds(indinfds)

This will be corrected for the next release. In the meantime, if you change indds(indinfds) to indds(indinfd) and also change the name of the data structure, this will avoid the error.

RPG CODE
FMRA0100DD CF   E             WORKSTN EXTFILE('APPANV/MRA0100D')                                                               
     f                                     infds(kyinfds)                                                                           
     f                                     indds(indinfds)                                                                          
     f                                     sfile(GridData:s_GridRow)                                                                
     f                                     prefix(s_)
Post Reply

Who is online

Users browsing this forum: No registered users and 6 guests