× 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 Group

 

Why is it that the simplest programs always give the most trouble?

 

I'm trying to create what should be a simple program that reads through a
compile time table and writes/updates a physical file with the content.  The
source of which is shown below:

 

     FSYSP900A  UF A E           K Disk 

     F* User Defined Tables             

 

     D* Work Fields                                                  

     D ix              s              5p 0 Inz(2)                    

                                                                     

     D MaxSize         s              5p 0 Inz(0035)                 

 42  D Tables          s                   Like(ArrEntry) Dim(0035) CtData

                                                                     

     D ArrEntry        ds                                            

     D  TableID                       5a                             

     D  TableKey                     15a


     D  TableData                    60a


 


     C* Key List


     C     keySYSP900A   KList


     C                   KFld                    TableID


     C                   KFld                    TableKey


 


     C* Read through the table until all records have been read or a blank
element

     C* is found...


74   C                   DoW       (ix <= MaxSize) and (Tables(ix) <>
*Blanks)    

 


     C* Retrieve the entry and attempt to retrieve a matching record from
the User

     C* Defined Table file...


78   C                   Eval      ArrEntry = Tables(ix)


 

     C     keySYSP900A   Chain(e)  SYSP900A              

                                                         

     C                   Eval      TBTABL = TableID      

     C                   Eval      TBKEY  = TableKey     

     C                   Eval      TBDATA = TableData    

                                                         

     C                   If        Not %Found(SYSP900A)      

     C                   Write(e)  SYSR900A              

     C                   Else                            

     C                   Update(e) SYSR900A              

     C                   EndIf                           

                                                         

     C* Get the next table entry...                      

     C                   Eval      ix = ix + 1           

     C                   EndDo                           

                                                         

     C* Exit the program...                              

     C                   Eval      *InLr = *On           

 

**CTDATA Tables


Tbl++Key++++++++++++Data++++++++++++++++++++++++++++++++++++++++++++B+xxxxxx
xxxxComment+++++++++++++

0000100001          User Defined Table Definitions
0002               

0000137001          CRF Status Codes
0003               

370010              Logged                                  0
0004               

370011              Assigned                                0
0005               

370012              Assigned - Waiting Feedback             0
0006               

370013              Assigned - Work Scheduled               0
0007               

370014              Assigned - Work in Progress             0
0008               

370015              Assigned - Work Completed               0
0009               

370017              Cancelled                               1
0010               

370018              Closed                                  1
0011               

370019              Closed - Available to Purge             1
0012               

 
0013               

 
..

 
..

 
0035

 

 

However, when I try to compile the program I get the following errors:

 

Msg id  Sv Number Seq     Message text


*RNF0528 20     74 006100  Index is not allowed for name that is not an
array; index

                           is ignored.


*RNF0528 20     78 006500  Index is not allowed for name that is not an
array; index

                           is ignored.


 

Although the compiler cross reference shows the field definition as:

 

          TABLES(35)        A(80)                  42D     74      78

 

If I compile with GENLVL(20) to ignore the error and then run the program in
debug mode the first time I get to the DOW statement there is a value in
Tables(ix).  However, if I check the value of the data structure before the
CHAIN is executed then it contains blanks and is not being populated by the
array.  Stepping through the source I get to the ENDDO where all conditions
for the loop to repeat are met, yet the program steps straight on to set
*INLR and exits.  

 

I'm figuring this is related to the compiler not recognising the array, but
can't see for the life of me what is wrong with the definition, although I'm
bound to have missed something obvious. If anybody has any suggestions I'd
be grateful to receive them.


Thanks 

 

Jonathan


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.