On Wed, 2004-09-15 at 07:14, Ron Melby wrote: 
> I am trying to read odt headers and match them to the symbol table (this is 
> based on your IRP0-3, Dave McKenzie) and with the symbol structure header 
> x'00',x'40',x'80' and x'c0' information that Gene Gaunt provided, I can 
> match symbols to odt with the exception of *ENTRY, as close as i can 
> remember  it shows as an address 0001 C0 06 *ENTRY 00000A0A this last A0A 
> changing depending on some other things that don't have a clear connection. 

The 00000A0A doesn't belong to *ENTRY; it's the beginning of the next
symbol table entry.  Symbol table entries start with a 4-byte link to
next symbol table entry in chain (FFFFFFFF if last).  The offsets in the
hash table (and the links in the symbol table) are calculated from the
beginning of the 4-byte "number of hash buckets" (00000233) at the
beginning of the symbol table.

So the *ENTRY entry probably looks something like:

  FFFFFFFF 0001 C0 06 *ENTRY

The 0001 is the ODT number.  That's how you map symbol table entries to
ODT entries.

> The odt header is like 0020 2801.  In trivial programs it seems that i can 
> just match symbol to odt definition 1 for 1 in rrn order. However,
> the RPG compiler inserts .(dot) symbols while QPRCRTPG does not (at least 
> under v3r2m0 in cisc),
> that is:
> DCL CON .cERR CHAR(08)  INIT('*ERR       ') ;
> will not show in a symbol table created by QPRCRTPG
> so rrn doesn't work.........
> but I am not fleet of wetware and although looking at my file I see what 
> should and should not be hooked together sym/odt that is,  my synaptic snafu 
> has not found the algorithm to attach same to same. However, it must be 
> reasonably doable since others have done it and IBM can debug from it.
> I am very obviously trying to build a RTVMISRC but what a colossal chore for 
> the plodding mind.
> Gene the MATPG under risc is informative but different in nature than the 
> current symbol table layout under QPRCRTPG that I am using,

It applies to CISC also (with some additions not in CISC).

>  thusly:
> behind the symbol name are 4 char and only 4 char

These 4 chars belong to the next symbol table entry (see above).

> DCL statements get FFFFFFFF
> Branch point gets 40404040 (with exception)
> the *entry gets a number i.e 00000A0A
> and in this case:
> BP_RTX:      ;
> RTX *          ;
> the bp with the RTX gets a number i.e. 00000053
> but my big issue is hooking symbol *ENTRY to its odt header.

Use the ODT number in the symbol table entry (see above).

> thanks all,
> Ron

As an Amazon Associate we earn from qualifying purchases.

This thread ...


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

This mailing list archive is Copyright 1997-2022 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.