× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Hi Sunil!

>And I guess perrcd will come to place
>when we use compile time arrays right?

Either compile time or prerun time tables/arrays will use PERRCD.  That's
how we tell the compiler how many elements are on each input record.  For
instance, you can define an array of month names like this:

FPF2       IT   F   80        DISK
D MON             S              3    DIM(12) FROMFILE(PF2)
D                                     PERRCD(1)

and the file PF2 contains 12 records (12 elements, 1 on each record)
JAN
FEB
MAR
APR
MAY
JUN
JUL
AUG
SEP
OCT
NOV
DEC

If you define the array this way:

FPF3       IT   F   80        DISK
D MON             S              3    DIM(12) FROMFILE(PF3)
D                                     PERRCD(12)

then the file contains one record (12 elements, 12 on a record)
JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC

>Has precompile type arrays and Tables runout of steam?

Well, it depends a lot on what you intend to use them for.  The big problem
is that it is difficult to change the size of the array without changing the
program.  Imagine having a table of US States.  Today (and since 1960) there
have been 50 states, so the table would have 50 elements.  Imagine the
difficulty if Puerto Rico becomes a state.  Now, every RPG program that has
the table of states needs to be changed!  If we stored the names in a file
instead, then no code would have to change, only add the new state into the
file and all the programs work properly.

>Also regrading my earlier doubts can you just
>explain significance what a table is?
>Is it related to the table that we can
>create using strsql?

No.  It is not related to an SQL table.
A table in RPG is a way to quickly store a small amount of data that you
refer to very often in the program.  Often, this is for converting a code to
a meaningful name, like month abbreviations into the month name.

FPF4       IT   F   80        DISK
D TABABR          S              3    DIM(12) FROMFILE(PF4) PERRCD(1)
D TABNAM          S             20    DIM(12) ALT(TABABR)
c     'JUL'         LOOKUP    TABABR        TABNAM                   20
c                   if        %found
c...

File PF4 looks like this
JANJanuary
FEBFebruary
MARMarch
APRApril
MAYMay
JUNJune
JULJuly
AUGAugust
SEPSeptember
OCTOctober
NOVNovember
DECDecember

You might use this when a file contains month abbreviations, but you want to
print the full name on a report, or show it on the display.

The other place tables are used is to see if data is 'in a list.'  For
instance, if you were writing a program to print labels for cola bottles,
some states charge a bottle return deposit fee.  So you put the states that
charge a fee in a table, and do a lookup.  If the state you're working with
is in the table (don't care what element; it's only important to know that
it's in there somewhere) then print the fee:

fPF5       IT   F   80        DISK
d TABDeposit      S              2    DIM(2) FROMFILE(PF5)
d                                     PERRCD(1)
c     'NY'          lookup    TABDeposit                             20
c   20'Deposit!'    dsply
c  n20'No deposit'  dsply
c     'CA'          lookup    TABDeposit                             20
c   20'Deposit!'    dsply
c  n20'No deposit'  dsply
c                   seton                                        LR

PF5 contains:
NJ
NY

Of course, you would use a field from your database instead of the literals
'NY' and 'CA'.
Does this help?
  --buck


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.