FWIW, here's a copy of a program and command which Gene Gaunt wrote, which
is about as thorough as I have ever found - it's in RPGLE, not C, but for
anyone who wants to understand this API, it's the bomb.
On Mon, Aug 18, 2014 at 12:05 AM, Frank Kolmann <fkolmann@xxxxxxxxx> wrote:
Thanks Bryan
That is a help. In fact I looked at this before but could not make head or
tail of it.
Now I know C and having written an RPG version it makes sense.
I hope IBM wont mind if I use their coding constructs.
Regards
Frank
*Subject: Re: Struggling with API QDFRTVFD
*From: Bryan Dietz <bdietz400@xxxxxxxxx>
*Date: Tue, 12 Aug 2014 16:36:30 -0400
I just did a Google search "QDFRTVFD site:ibm.com"
which returned a "C" example for the API
"This document contains an example of how to retrieving the Row/Column
of a Field Using the QDFRTVFD API."
http://www-01.ibm.com/support/docview.wss?uid=nas8N1017486
bryan
--
This is the Bare Metal Programming IBM i (AS/400 and iSeries) (C400-L)
mailing list
To post a message email: C400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/c400-l
or email: C400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/c400-l.
/*********************************************************************/
/* COMMAND - DSPDSPF */
/* FUNCTION - Display a Display File */
/* AUTHOR - Gene Gaunt */
/*********************************************************************/
CMD PROMPT('Display a Display File')
PARM KWD(FILE) +
TYPE(Q1) +
MIN(1) +
PROMPT('Display file')
Q1: QUAL TYPE(*NAME) +
MIN(1)
QUAL TYPE(*NAME) +
DFT(*LIBL) +
SPCVAL((*CURLIB) (*LIBL)) +
PROMPT('Library')
PARM KWD(TYPE) +
TYPE(*CHAR) +
LEN(4) +
RSTD(*YES) +
DFT(*PIC) +
VALUES(*PIC *HEX) +
PROMPT('Print pictures or hex dump')
PARM KWD(LINES) +
TYPE(*DEC) +
LEN(3) +
DFT(66) +
RANGE(1 255) +
PROMPT('Lines per page')
PARM KWD(LPI) +
TYPE(*CHAR) +
LEN(3) +
RSTD(*YES) +
DFT(6) +
VALUES(3 4 6 7.5 7,5 8 9 12) +
PROMPT('Lines per inch')
PARM KWD(CPI) +
TYPE(*CHAR) +
LEN(4) +
RSTD(*YES) +
DFT(10) +
VALUES(5 10 12 13.3 13,3 15 16.7 16,7 18 20) +
PROMPT('Characters per inch')
**********************************************************************************************
* PROGRAM - DSPDSPF
*
* FUNCTION - Display a Display File (CPP for DSPDSPF command)
*
* LANGUAGE - ILE RPG/400
*
* AUTHOR - Gene Gaunt
*
**********************************************************************************************
H dftactgrp(*no) actgrp('QILE') bnddir('QC2LE')
FQSYSPRT O F 198 printer oflind(*INOF) usropn
D Out S 198A
D Raw S 32A
D Top S 16A based( Top@ )
D Base S 1A based( Base@ )
D MessageTypes S 30A inz( '*COMP *DIAG
*ESCAPE' )
D Form1Max C const( 141 )
D Form3Max C const( 182 )
D Resolve S 10I 0 dim( Form1Max )
D Form1 S 13A dim( Form1Max ) perrcd( 1 )
ctdata
D Form2 S 50A dim( Form1Max ) alt( Form1 )
D Form3 S 100A dim( Form3Max ) perrcd( 1 )
ctdata
D Form3@ S * inz( %addr( Form3 ))
D DS based( Form3@ )
D Form3Array 100A dim( Form3Max )
D Child 3S 0 overlay( Form3Array : 1 )
D Parent 3S 0 overlay( Form3Array : 11 )
D DefStr 3S 0 overlay( Form3Array : 21 )
D DefOff 2S 0 overlay( Form3Array : 26 )
D DefBin 1A overlay( Form3Array : 29 )
D AryStr 3S 0 overlay( Form3Array : 36 )
D AryOff 2S 0 overlay( Form3Array : 41 )
D AryLen 2S 0 overlay( Form3Array : 44 )
D DpnStr 3S 0 overlay( Form3Array : 52 )
D DpnOff 2S 0 overlay( Form3Array : 57 )
D DpnHex 4A overlay( Form3Array : 60 )
D DpnEqu 1A overlay( Form3Array : 65 )
D DpnBit 1A overlay( Form3Array : 67 )
D DpnBi2 5I 0 overlay( Form3Array : 67 )
D BoxCol S 5P 0
box column
D BoxPlace S 5P 0
box place
D BoxRow S 5P 0
box row
D Buttons S N
buttons flag
D CatDispl S 11P 0
category displacemnt
D CatIdent S 1A
category identifier
D CatKeyId S 2A
cat & keyword ident
D CatStrng S 11P 0
category string
D CatTotal S 5P 0
category total
D ChcCols S 5P 0
choice columns
D ChcHavEx S N
choices have extensn
D ChcHoriz S N
choices are horizont
D ChcLen S 5P 0
choice length
D ChcStrng S 11P 0
choice string
D ChcStruc S 11P 0
choice structure
D ChcRows S 5P 0
choice rows
D ChcText S 256A
choice text
D ChcWidth S 5P 0
choice width
D DecPos S 5P 0
decimal positions
D EditLen S 5P 0
edit length
D FileDvDp S 11P 0
file device dependnt
D FileHdr S 11P 0
file header
D FileWhUs S 11P 0
file where-used
D FldCol S 5P 0
field column
D FldDevDp S 11P 0
field device-dependn
D FldExtn S 11P 0
field extension
D FldHdr S 11P 0
field header
D FldIdxTa S 11P 0
field index table
D FldLen S 5P 0
field length
D FldPlace S 5P 0
field place
D FldRow S 5P 0
field row
D FldUsage S 1A
field usage
D FldWhUs S 11P 0
field where-used
D FootBit S N
title is in footer
D FootBord S 198A
footer border text
D HeadBord S 198A
header border text
D InpBuf S 5P 0
input buffer pos
D KeyStrng S 11P 0
keyword string
D KeyTotal S 5P 0
keyword total
D Kshift S 1A
keyboard shift
D MnemoPos S 5P 0
mnemonic position
D NameIdx S 5P 0
name index
D NameTab S 11P 0
name table
D OutBuf S 5P 0
output buffer pos
D PanDepth S 5P 0
panel depth
D PanWidth S 5P 0
panel width
D RecDevDp S 11P 0
record device-depndt
D RecFmTab S 11P 0
record format table
D RecHdr S 11P 0
record header
D RecMax S 5P 0
number of records
D RecWhUs S 11P 0
record where-used
D RecName S 10A
record name
D RowColTa S 11P 0
row-column table
D ScrSizes S 5P 0
screen sizes
D ScrSizId S 3P 0
screen size ident
D TitleLen S 5P 0
title length
D TitleTxt S 256A
title text
D TotChoic S 5P 0
total choices
D TotField S 5P 0
total fields
D X_Header S 11P 0
file/rec/fld header
D DS
D Picture 3564A
screen to print
D Pic 1A dim(3564) overlay(Picture)
as linear array
D UndLine 3564A
underlines to print
D Und 1A dim(3564) overlay(UndLine)
as linear array
D ChcIndex 2A
choice index
D ChcIndx2 2S 0 overlay( ChcIndex )
as numeric
D RepMax S 5P 0
report index
D DS
report buckets
D Report 8A dim( 9999 )
D Report1 3P 0 overlay( Report : 1 ) inz(
*hival )
D Report2 11P 0 overlay( Report : 3 ) inz(
*hival )
D Data DS 256
D Bin 10I 0
D Need 10I 0
D Bit PR N
D 11P 0 const
D 1A const
D Get PR 256A
D 11P 0 const
D 11P 0 const
D U1 PR 11P 0
D 11P 0 const
D I2 PR 11P 0
D 11P 0 const
D I4 PR 11P 0
D 11P 0 const
D DumpHex PR
D 3P 0 const
D 3P 0 const
D 10I 0 value dim( Form1Max )
D CVTHC PR extproc( 'cvthc' )
D * value
D * value
D 10I 0 value
D CVTCH PR extproc( 'cvtch' )
D * value
D * value
D 10I 0 value
D Prop PR extproc('__memset')
D * value
D 1A value
D 10U 0 value
D OS400 PR extpgm('QCMDEXC')
D 3000A const options(*varsize)
D 15P 5 const
C *entry plist
C parm Object 20
C parm ReportType 4
C parm Lines 3 0
C parm PageLPI 3
C parm PageCPI 4
* check if object exists
C move *on *INLR
C time Time6 6 0
C call(e) 'QUSROBJD'
retrieve object desc
C parm Data
receiver variable
C parm 256 Bin
receiver length
C parm 'OBJD0100' ApiFormat 8
API format name
C parm Object
object and library
C parm '*FILE' ObjectType 10
object type
C if %error
C exsr MoveMessage
C endif
C 10 subst Data:9 File 10
extract file name
C 10 subst Data:39 Lib 10
extract library name
C File cat Lib FileLib 21
extract both
* copy display file into heap space
C call(e) 'QDFRTVFD'
retrieve disply file
C parm Data
receiver variable
C parm 8 Bin
receiver length
C parm 'DSPF0100' ApiFormat
API format name
C parm FileLib
file and library
C parm X'00000000' ApiError
standard API error
C if %error
C exsr MoveMessage
C endif
C alloc Need Base@
get heap space
C call(e) 'QDFRTVFD'
retrieve disply file
C parm Base
receiver variable
C parm Need
receiver length
C parm 'DSPF0100' ApiFormat
API format name
C parm FileLib
file and library
C parm X'00000000' ApiError
standard API error
C if %error
C exsr MoveMessage
C endif
* open the printer file
C callp(e) OS400('OVRPRTF FILE(QSYSPRT) '
+
C 'SPLFNAME(' + File + ') '
+
C 'USRDTA(''dspdspf'') '
+
C 'LPI(' + PageLPI + ') '
+
C 'CPI(' + PageCPI + ') '
+
C 'PAGESIZE(' + %editc(Lines:'3') + ' 198)
' +
C 'OVRFLW(' + %editc(Lines:'3') + ')':256)
C if %error
C exsr MoveMessage
C endif
C open QSYSPRT
C eval FileLib = %trim( Lib ) + '/' + %trim(
File )
* print a report
C select
C '*PIC' wheneq ReportType
C exsr PrtPicture
screen pictures
C '*HEX' wheneq ReportType
C 1 do Form3Max X 5 0
loop through form
C DpnStr( X ) ifgt *zeros
if dependency exists
C callp CVTCH( %addr( DpnBi2( X )) :
convert to binary
C %addr( DpnHex( X )) : 4 )
C endif
C enddo
C z-add -1 Resolve
unresolve everything
C z-add *zeros Resolve( 1 )
except for QDFFBASE
C callp DumpHex( 1 : 1 : Resolve )
recursive descent
C endsl
C close QSYSPRT
C dealloc Base@
CSR MoveMessage begsr
C call 'QMHMOVPM'
move program message
C parm MessageKey 4
blank message key
C parm MessageTypes
three message types
C parm X'00000003' NumberOfTypes 4
number of types
C parm '*' ProgramQueue 10
our program queue
C parm X'00000002' StackCounter 4
hop over PEP
C parm X'00000000' ApiError 4
standard API error
C return
return to caller
C endsr
* get file-level information
CSR PrtPicture begsr
C eval FileHdr = I2( 8 )
get file header
C eval RecMax = I2( 10 ) - 1
number of records
C eval ScrSizes = I2( 13 ) - 1
number of sizes
C eval FileWhUs = FileHdr + I4( FileHdr + 4 )
file where-used
C eval FileDvDp = FileHdr + I2( FileHdr + 34 )
file device dependnt
C eval RecWhUs = FileWhUs + I2( FileWhUs )
first record wh-used
C eval NameTab = FileWhUs + I4( FileWhUs + 8 )
component name table
C eval CatDispl = I2( FileDvDp + 24 )
category displacemnt
C eval X_Header = FileHdr
use file header
C exsr Keywords
file-level keywords
* loop through each record format
C 0 do RecMax Rx 5 0
loop thru records
C eval RecFmTab = FileHdr + I4( FileHdr ) + Rx
* 16 record format table
C eval RecName = Get( RecFmTab : 10 )
get record name
C if %subst( RecName : 1 : 1 ) <> '*'
if not compiler-gen
C eval RecHdr = FileHdr + I4( RecFmTab + 12 )
record header
C eval RecDevDp = RecHdr + I2( RecHdr + 28 )
record device-depndt
C eval FldIdxTa = RecHdr + I4( RecHdr + 4 )
field index table
C eval TotField = I2( RecHdr + 16 ) - 1
total fields
* loop through each screen size
C 0 do ScrSizes SizIdx 5 0
loop thru sizes
C eval ScrSizId = U1( 19 + SizIdx * 5 )
screen size ident
C select
C 3 wheneq ScrSizId
if *DS3 dimension
C eval PanDepth = 24
panel depth
C eval PanWidth = 80
panel width
C 4 wheneq ScrSizId
if *DS4 dimension
C eval PanDepth = 27
panel depth
C eval PanWidth = 132
panel width
C other
C iter
C endsl
C eval TitleLen = -1
title length
C eval RowColTa = RecHdr + I4( RecDevDp )
row-column table
C + SizIdx * ( 6 + 2 * ( 1 + TotField
))
C eval CatDispl = I2( RecDevDp + 32 )
get category displac
C eval X_Header = RecHdr
use record header
C exsr Keywords
record-level keywrds
C eval Picture = *blanks
prepare screen pic
C eval UndLine = *blanks
prepare screen pic
* loop through each field
C 0 do TotField FldIdx 5 0
loop thru fields
C exsr FieldInfo
get field informatin
C eval CatDispl = I2( FldDevDp + 4 )
get category displac
C eval X_Header = FldHdr
use field header
C exsr Keywords
field-level keywords
C if FldRow <= PanDepth
if within screen
C and FldUsage <> 'C' and not Buttons
and not a constant
C eval EditLen = I2( FldIdxTa + 6 + FldIdx * 8
) get edit length
C callp Prop( %addr( Pic( FldPlace )) :
propogate usage
C FldUsage : EditLen
)
C if FldUsage = 'B' or FldUsage = 'I'
if <B>oth or <I>nput
C callp Prop( %addr( Und( FldPlace )) :
propogate underline
C '_' : EditLen
)
C endif
C endif
C enddo
* prepare top and bottom borders
C eval HeadBord = *blanks
clear previous stuff
C callp Prop( %addr( HeadBord ) : '.' : PanWidth
) propogate border
C eval FootBord = HeadBord
propogate border
C if TitleLen > 0 and TitleLen <= PanWidth
if title exists
C eval X = ( PanWidth - TitleLen ) / 2 + 1
find center
C if FootBit
if title in footer
C eval %subst( FootBord : X : TitleLen ) =
TitleTxt insert title text
C else
if title in header
C eval %subst( HeadBord : X : TitleLen ) =
TitleTxt insert title text
C endif
C endif
* print a screen picture
C except HEAD
print heading
C eval Out = '.' + %trim( HeadBord ) + '.'
prepare top border
C except BODY
print top border
C 1 do PanDepth X 5 0
loop thru lines
C eval Out = ':' + %subst( UndLine :
prepare underlines
C ( X - 1 ) * PanWidth + 1 : PanWidth ) +
':'
C except BODY0
print underlines
C eval Out = ':' + %subst( Picture :
prepare screen line
C ( X - 1 ) * PanWidth + 1 : PanWidth ) +
':'
C except BODY
print screen line
C enddo
next screen line
C eval Out = ':' + %trim( FootBord ) + ':'
prepare bottom bordr
C except BODY
print bottom border
C except BODY
print blank line
C except BODY
print blank line
C eval Out = '_____ ________
______' prep column heading
C + ' _____ ______'
C except BODY0
print column heading
C eval Out = 'Field Location
Length' prep column heading
C + ' Input Output'
C except BODY
print column heading
* print list of fields
C eval FldWhUs = RecWhUs + I2( RecWhUs )
first field wh-used
C 0 do TotField
loop thru fields
C eval FldIdx = I2( FldWhUs + 4 ) - 1
field index
C eval NameIdx = I4( FldWhUs + 6 ) - 1
name index
C eval FldWhUs = FldWhUs + I2( FldWhUs )
next field wh-used
C if FldIdx >= 0 and NameIdx >= 0
if field is in table
C exsr FieldInfo
get field informatin
C if FldUsage <> 'C'
if not a constant
C eval InpBuf = I2( FldHdr + 6 ) + 1
input buffer pos
C eval OutBuf = I2( FldHdr + 8 ) + 1
output buffer pos
C eval FldLen = I2( FldHdr + 10 )
field length
C eval DecPos = U1( FldHdr + 12 )
decimal positions
C eval Kshift = %subst( 'AXNYKDISBPFJOEMG' :
keyboard shift
C U1( Fldhdr + 13 ) + 1 :
1 )
C eval Out = Get( NameTab + 4 + NameIdx * 10 :
10) get field name
C eval %subst( Out : 14 : 8 ) = '(*NOLOC)'
no field location
C if FldRow <= PanDepth
if in range
C eval %subst( Out : 15 : 12 ) =
get field location
C %trim( %editc( FldRow : '3' )) + ','
C + %trim( %editc( FldCol : '3' )) + ')'
C endif
C if DecPos = 255
if no decimal pos
C eval %subst( Out : 30 : 8 ) = Kshift + '(' +
get field length
C %trim( %editc( FldLen : '3' )) + ')'
C else
if decimal positions
C eval %subst( Out : 30 : 8 ) = Kshift + '(' +
get length + dec pos
C %trim( %editc( FldLen : '3' )) + ','
C + %trim( %editc( DecPos : '3' )) + ')'
C endif
C if InpBuf > 0
if input position
C eval %subst( Out : 44 : 12 ) =
show input position
C %trim( %editc( InpBuf : '3' )) + '-'
C + %trim( %editc( InpBuf + FldLen - 1 :
'3' ))
C endif
C if OutBuf > 0
if output position
C eval %subst( Out : 57 : 12 ) =
show output position
C %trim( %editc( OutBuf : '3' )) + '-'
C + %trim( %editc( OutBuf + FldLen - 1 :
'3' ))
C endif
C except BODY
print detail line
C endif
C endif
C enddo
next field
C enddo
next screen size
C endif
C eval RecWhUs = RecWhUs + I4( RecWhUs + 4 )
next record wh-used
C enddo
next record
C endsr
* get field information
CSR FieldInfo begsr
C eval FldHdr = RecHdr + I4( FldIdxTa + FldIdx
* 8 ) get field header
C eval FldUsage = %subst( 'COMIBHP' :
get field usage
C U1( FldHdr + 2 )
: 1 )
C 'C' ifeq FldUsage
if constant field
C eval FldDevDp = FldHdr + I2( FldHdr + 8 )
get device-dependent
C else
if not constant
C eval FldDevDp = FldHdr + I2( FldHdr + 16 )
get device-dependent
C endif
C eval FldExtn = FldHdr + I2( FldDevDp + 2 )
get field extension
C FldExtn ifgt FldHdr
if extension exists
C eval Buttons = Bit( FldExtn : X'06' )
test for buttons
C eval ChcHavEx = Bit( FldExtn + 1 : X'02' )
choice extensions
C else
if no extension
C eval Buttons = *off
no buttons
C eval ChcHavEx = *off
no choice extensions
C endif
C eval FldRow = U1( RowColTa + 6 + FldIdx * 2 )
get field row
C eval FldCol = U1( RowColTa + 7 + FldIdx * 2 )
+ 1 get field column
C if FldRow <= PanDepth and FldCol > PanWidth
if too far right
C eval FldCol = FldCol - PanWidth
adjust to next line
C eval FldRow = FldRow + 1
adjust to next line
C endif
C eval FldPlace = ( FldRow - 1 ) * PanWidth +
FldCol get field place
C endsr
* scan keywords at file, record, and field level
CSR Keywords begsr
C if CatDispl <> 0
if any cats exist
C eval CatStrng = X_Header + CatDispl
get category string
C eval CatTotal = I2( CatStrng )
get category total
C 1 do CatTotal Cx 5 0
loop thru categories
C eval CatIdent = Get( CatStrng - 1 + Cx * 3 :
1 ) get category ident
C eval KeyStrng = X_Header + I2( CatStrng + Cx
* 3 ) get keyword string
C eval KeyTotal = I2( KeyStrng )
get keyword total
C 1 do KeyTotal
loop thru keywords
C eval CatKeyId = CatIdent + Get( KeyStrng + 2
: 1 ) get keyword ident
C select
C when CatKeyId = X'1708'
keyword is WINDOW
C and Bit( KeyStrng + 7 : X'80' )
window definition
C eval PanDepth = I2( KeyStrng + 13 + SizIdx *
12 ) get window depth
C eval PanWidth = I2( KeyStrng + 15 + SizIdx *
12 ) get window width
C when CatKeyId = X'1709'
keyword is WDWTITLE
C and not Bit( KeyStrng + 7 : X'80' )
text is literal
C eval FootBit = Bit( KeyStrng + 7 : X'08' )
footer title flag
C eval TitleLen = I2( KeyStrng + 16 )
get title length
C eval TitleTxt = Get( KeyStrng + 28 : TitleLen
) get title text
C when CatKeyId = X'2601'
SNGCHCFLD, MLTCHCFLD
C eval TotChoic = I2( KeyStrng + 7 )
get total choices
C eval ChcRows = I2( KeyStrng + 19 )
number of rows
C eval ChcCols = ( TotChoic - 1 ) / ChcRows +
1 number of columns
C eval ChcHoriz = *off
not horizontal
C eval ChcStrng = KeyStrng + 26
get choice string
C if ChcHavEx
have extensions
C eval ChcHoriz = Bit( ChcStrng + 7 : X'20' )
get horizontal flag
C if ChcHoriz
if horizontal choice
C eval ChcCols = I2( ChcStrng + 2 )
number of columns
C endif
C eval ChcStrng = ChcStrng + I2( ChcStrng )
bump past extension
C endif
C eval ChcWidth = I2( KeyStrng + 21 ) / ChcCols
get choice width
C 1 do TotChoic
loop for each choice
C eval ChcIndex = Get( ChcStrng + 4 : 2 )
get choice index
C eval ChcIndx2 = ChcIndx2 - 1
prepare for division
C eval ChcLen = I2( ChcStrng + 10 )
get choice length
C if Bit( ChcStrng + 3 : X'80' )
text is constant
C eval ChcStruc = ChcStrng + I2( ChcStrng + 8 )
choice structure
C eval MnemoPos = I2( ChcStruc )
mnemonic position
C eval ChcText = Get( ChcStruc + 2 : ChcLen )
get choice text
C else
text is variable
C eval MnemoPos = 0
mnemonic position
C callp Prop( %addr( ChcText ) : 'O' : ChcLen )
fake choice text
C endif
C if ChcHoriz
if horizontal
C ChcIndx2 div ChcCols BoxRow
get box row
C mvr BoxCol
get box column
C else
if vertical
C ChcIndx2 div ChcRows BoxCol
get box column
C mvr BoxRow
get box row
C endif
C eval BoxPlace = BoxRow * PanWidth
get box place
C + BoxCol * ChcWidth + FldPlace
C eval %subst( Picture : BoxPlace : ChcLen + 2
) show choice text
C = '/ ' + ChcText
C if MnemoPos > 0
if mnemonic exists
C eval Und( BoxPlace + MnemoPos + 1 ) = '_'
show underline
C endif
C eval ChcStrng = ChcStrng + I2( ChcStrng + 1 )
bump to next choice
C enddo
C when CatIdent = X'23' and FldRow <= PanDepth
DFT, MSGCON, DFTVAL
C eval FldLen = I2( KeyStrng + 6 )
get field length
C eval %subst( Picture : FldPlace : FldLen )
get field text
C = Get( KeyStrng + 8 : FldLen )
C when CatIdent <> X'17' and CatIdent <> X'26'
ignore anything else
C leave
C endsl
C eval KeyStrng = KeyStrng + I2( KeyStrng + 5 )
+ 5 next keyword
C enddo
loop thru keywords
C enddo
loop thru categories
C endif
C endsr
OQSYSPRT E HEAD 1 1
O 26 'Display file . . . . .
. :'
O FileLib 50
O 74 'Page:'
O Page 3 78
O E HEAD 1
O 26 'Record . . . . . . . .
. :'
O RecName 39
O E HEAD 1
O 26 'Size identifier . . .
. :'
O ScrSizId 3 33
O 32 '*DS'
O E HEAD 3
O 26 'Printed on . . . . . .
. :'
O *Date Y 39
O Time6 49 '0 : : '
O E BODY 1
O Out B 198
O E BODY0 0 0
O Out B 198
OQSYSPRT H OF 1 1
O 13 'Display file:'
O FileLib 36
O 56 'Date:'
O *Date Y 68
O Time6 78 '0 : : '
O 126 'Page:'
O Page 3 130
O H OF 1
O 34 '
________________________'
O 57 '
_______________________'
O 77 '________________'
O H OF 0 0
O 34 '
________________________'
O 57 '
_______________________'
O 77 '________________'
O H OF 1
O 32 '0 1 2 3 4 5 6
7'
O 56 '8 9 A B C D E
F'
O 77 '0123456789ABCDEF'
O EF LINE 1
O Out 198
O 61 '|'
O 78 '|'
* GET: return data at offset:length
P Get B
D Get PI 256A
D Offset 11P 0 const
D Length 11P 0 const
D OverByte S 256A based( Walk@ )
C eval Walk@ = Base@ + Offset
C return %subst( OverByte : 1 : Length )
P Get E
* BIT: return *ON if data at offset has any mask bits
P Bit B
D Bit PI N
D Offset 11P 0 const
D Mask 1A const
D OverByte S 1A based( Walk@ )
C eval Walk@ = Base@ + Offset
C testb Mask OverByte 21
(HI)
C return not *IN21
P Bit E
* U1: return Binary(1) unsigned integer at offset
P U1 B
D U1 PI 11P 0
D Offset 11P 0 const
D OverByte S 1A based( Walk@ )
D DS
D Unsigned 5U 0 inz(0)
D RightByte 1A overlay( Unsigned : 2 )
C eval Walk@ = Base@ + Offset
C move OverByte RightByte
C return Unsigned
P U1 E
* I2: return Binary(2) signed integer at offset
P I2 B
D I2 PI 11P 0
D Offset 11P 0 const
D ShortInteger S 5I 0 based( Walk@ )
C eval Walk@ = Base@ + Offset
C return ShortInteger
P I2 E
* I4: return Binary(4) signed integer at offset
P I4 B
D I4 PI 11P 0
D Offset 11P 0 const
D LongInteger S 10I 0 based( Walk@ )
C eval Walk@ = Base@ + Offset
C return LongInteger
P I4 E
* DUMPHEX: print hexadecimal sections
P DumpHex B
D Form1Max C const( 141 )
D Form3Max C const( 182 )
D DumpHex PI
D Dad 3P 0 const
our parent
D GrandDad 3P 0 const
our grandparent
D Resolve 10I 0 value dim( Form1Max )
parent's resolutions
D Good S N dim ( Form3Max ) inz( *off )
flags for resolvable
D Walk DS 256 based( Walk@ )
travel pointer
D Over1 1 1A
D Over2 1 2I 0
D Over4 1 4I 0
* find the children of our parent
C 1 do Form3Max X 5 0
loop through Form3
C if ( Parent( X ) = Child( Dad )
if parent matches
C or DefStr( X ) = Child( Dad )
or structure matches
C and Parent( X ) = Parent( GrandDad ))
with grandparent
C and ( DefStr( X ) = 0
and no structure
C or Resolve( DefStr( X )) >= 0 )
or resolved structur
C and ( AryStr( X ) = 0
and no array
C or Resolve( AryStr( X )) >= 0 )
or resolved array
C and ( DpnStr( X ) = 0
and no dependency
C or Resolve( DpnStr( X )) >= 0 )
or resolved dependen
* ignore if dependencies are not met
C DpnStr( X ) ifgt *zeros
if dependency exists
C eval Walk@ = Base@ + Resolve( DpnStr( X ))
point to dependency
C + DpnOff( X )
C testb DpnBit( X ) Over1 21
22 (HI,EQ) test off/on
C if DpnEqu( X ) = 'E'
if equality1 fails
C and DpnBit( X ) <> Over1
C or DpnEqu( X ) = 'F'
if equality2 fails
C and DpnBi2( X ) <> Over2
C or DpnEqu( X ) = 'N'
if inequality1 fails
C and DpnBit( X ) = Over1
C or DpnEqu( X ) = 'P'
if inequality2 fails
C and DpnBi2( X ) = Over2
C or DpnEqu( X ) = '0' and not *IN21
if bit-off fails
C or DpnEqu( X ) = '1' and not *IN22
if bit-on fails
C iter
don't resolve this
C endif
C endif
* resolve child's offset from parent
C DefStr( X ) ifgt *zeros
if structure exists
C eval Walk@ = Base@ + Resolve( DefStr( X ))
point to structure
C + DefOff( X )
C DefBin( X ) ifeq '2'
if BIN(2) definition
C z-add Over2 Offset 11 0
extract offset
C else
if BIN(4) definition
C z-add Over4 Offset
extract offset
C endif
C Offset ifeq *zeros
ignore if no offset
C iter
C endif
C else
if no structure
C z-add DefOff( X ) Offset
get absolute offset
C endif
C eval Resolve( Child( X )) =
resolve from parent
C Resolve( Parent( X )) + Offset
C move *on Good( X )
save flag for below
C endif
C enddo
* extract number of array elements
C 1 do Form3Max X
loop through Form3
C if Good( X )
if this is resolved
C z-add 1 Elements 5 0
prepare for no array
C if DefStr( X ) > 0
if structure exists
C and Resolve( DefStr( X )) >= 0
and it's resolved
C z-add 1 Y 5 0
C DefStr( X ) lookup Child( Y )
21 (EQ) find true index
C if *IN21 and AryStr( Y ) > 0
if array exists
C and Resolve( AryStr( Y )) >= 0
and it's resolved
C eval Walk@ = Base@ + Resolve( AryStr( Y ))
point to num of elem
C + AryOff( Y )
C z-add Over2 Elements
extract num of elems
C endif
C endif
* save current resolve in table for report
C z-add X Son 5 0
prep first sibling
C 1 do Elements Z 5 0
loop through array
C if RepMax < %elem( Report1 ) - 1
if still room left
C add 1 RepMax
increment report max
C eval Report1( RepMax ) = Child( Son
) save Form1 index
C eval Report2( RepMax ) = Resolve( Child( Son
)) save it's resolution
C endif
* recursively resolve our own children's offsets
C Son ifgt 1
if not QDFFBASE
C callp DumpHex( Son : Dad : Resolve )
recursive descent
C endif
* find next sibling at current level
C Z iflt Elements
if array exists
C eval Walk@ = Base@ + Resolve( DefStr( Son ))
point to structure
C + AryLen( Y ) * Z
next array element
C DpnStr( Son ) ifeq Child( Dad )
if siblings exist
C 1 do Form3Max Son
loop through table
C if DpnStr( Son ) = Child( Dad )
if sibling matches
C and Parent( Son ) = Parent( GrandDad )
if family matches
C and DpnBit( Son ) = Over1
if dependency matchs
C leave
next sibling found
C endif
C enddo
C Son ifgt Form3Max
if sibling not found
C leave
safety net exit
C endif
C endif
* calculate new sibling's resolution
C eval Walk@ = Walk@ + DefOff( Son )
point to offset
C DefBin( Son ) ifeq '2'
if BIN(2) definition
C eval Resolve( Child( Son )) =
resolve next sibling
C Resolve( Parent( Son )) + Over2
C else
if BIN(4) definition
C eval Resolve( Child( Son )) =
resolve next sibling
C Resolve( Parent( Son )) + Over4
C endif
C endif
C enddo
C endif
C enddo
* print the hexadecimal sections
C Dad ifeq 1
if QDFFBASE
C sorta Report2
ascending resolves
C move *on *INOF
use fetch overflow
C move Base@ Top@
prepare traveller
C z-add 1 Y
prep report index
C 0 do Need Bin
loop through dump
C callp CVTHC( %addr( Raw ) : %addr( Top ) : 32
) convert to character
C exsr PrepareLine
format line offset
C 0 do 15 X
loop 16 bytes
C Report2( Y ) dowle Bin
if unfinished struct
C eval %subst( Out : X*3+10 : 1 ) = '>'
finalize prior struc
C if %subst( Out : X*3+9 : 1 ) <> ' '
C or %subst( Out : 82 : 1 ) <> ' '
C except LINE
print prior line
C endif
C exsr PrepareLine
format line offset
C eval %subst( Out : X*3+10 : 1 ) = '<'
start new structure
C eval %subst( Out : 82 : 117 ) =
copy structure names
C %trim (Form1( Report1( Y ))) + ': '
C + %trim( Form2( Report1( Y )))
C add 1 Y
next resolve index
C enddo
C eval %subst(Out:X*3+11:2) =
%subst(Raw:X*2+1:2) copy hex data
C if %subst(Top:X + 1:1) >= X'40'
if no printer error
C eval %subst(Out:X +62:1) = %subst(Top:X
+1:1) copy raw data
C endif
C add 1 Bin
next data byte
C enddo
C Report2( Y ) ifeq Bin
if next byte begins
C eval %subst( Out : 58 : 1 ) = '>'
close this section
C endif
C except LINE
print hex dump line
C eval Top@ = Top@ + 16
point next 16 bytes
C sub 1 Bin
cancel DO increment
C enddo
C endif
CSR PrepareLine begsr
C callp CVTHC( %addr( Out ) : %addr( Bin ) : 8
) convert address
C eval Out = %subst( Out : 3 : 6 ) + ':'
C 1 do 5 Z 5 0
strip leading zeros
C if %subst( Out : Z : 1 ) = '0'
C eval %subst( Out : Z : 1 ) = ' '
C else
C leave
C endif
C enddo
C endsr
P DumpHex E
**CTDATA Form1
QDFFBASE Base File Section
QDFFSCRA Screen Size Table
QDFFSSEQ Sort Sequence Table
QDFFINFO File Header Section
QDFFDPDD Display-File-Level Device-Dependent Section
QDFFCOSA Keyword Category Displacement String
QDFARFTE Record Format Table
QDFFSEQT Sequence Number Table
QDFFRINF Record Header Section
QDFFRDPD Display-Record-Level Device-Dependent Section
QDFFSFCR Subfile Control Record
QDFFSFHR Subfile Control Entry
QDFFSFCREXT Subfile Control Record Extension
QDFFXRDP Display-Record-Level Device-Dependent Extension
QDFFRCTB Row-Column Table
QDFFRCTE Row-Column Table Entry
QDFFNTB Field Name Table
QDFFOT Field Order Table
QDFFFITB Field Indexing Table
QDFFFINF Field Header Section
QDFFFCON Constant Field Header Table
QDFFFNAM Named Field Header Table
QDFFFDPD Display-Field-Level Device-Dependent Section
QDFFFDIC Input-Capable Field-Level Device-Dependent Section
QDFFXFDP Field-Dependent Extension Structure
QDFFSELT Selection Table
QDFFSTBL Selection Table Entry
QDFFCCOA Keyword Category Displacement String Entry
QDFKFILK File-Level Keywords
QDFKFLPM File-Level Keywords with Parameters
QDFKFLPP Category 1 Parameter Entry
QDFKFLSZ MSGLOC Keyword Structure
QDFKICVP IGCCNV Keyword Structure
QDFKHARD HLPRCD Keyword Structure
QDFKHXPS HLPPNLGRP Keyword Structure
QDFKHDOC HLPDOC Keyword Structure
QDFKSIDX HLPSCHIDX Keyword Structure
QDFKFALX ALTNAME Keyword Structure
QDFKFALK ALTNAME Keyword Entry
QDFKESFL ERRSFL Keyword Structure
QDFKBODR WDWBORDER Keyword Structure
QDFKCKKW Command Key Keyword Structure
QDFKCKKE Command Key Keyword Entries
QDFKOVRR OVERLAY Keyword Structure
QDFKOVRE Keyword Structure
QDFKOVRP OVERLAY and PUTRETAIN-Related Keyword Structure
QDFKOLER ERASE Keyword Structure
QDFKOLCL CLRL Keyword Structure
QDFKMSRL Miscellaneous Record-Level Keywords
QDFKMSAP Parameter Structure
QDFKMSCP Response Indicator Keyword Array
QDFKMSK1 CSRLOC Keyword Structure
QDFKMSK2 INDARA Keyword Structure
QDFKMSK3 DSPMOD Keyword Structure
QDFKMSCLN RTNCSRLOC and RTNCSRLOC2 Keyword Structure
QDFKMSMBDSP MNUBARDSP Keyword Structure
QDFK0BPR File-Level Keywords with Parameters Structure
QDFK0BXWP File-Level Keyword Structure
QDFK0BGATR GRDATR Parameter Structure
QDFKHBKPRM HLPSHELF Parameter Structure
QDFKMRPR Miscellaneous Record-Level Structure
QDFKMRWP Miscellaneous Record-Level Keywords
QDFKHSTR HLP Keyword Structure
QDFKHPRM HLP Keyword Entry Structure
QDFKHNMS HLPRCD Keyword Structure
QDFKHPS HLPPNLGRP Keyword Structure
QDFKHRDC HLPDOC Keyword Structure
QDFKHARA HLPARA Keyword Structure
QDFKHARX HLPARA Keyword Enhanced Display Structure
QDFKHSEQ HLPSEQ Keyword Structure
QDFKPRTR PRINT Keyword Structure
QDFKPPRM Record-Level Print Parameters
QDFKBRDR WDWBORDER Keyword Structure
QDFKWDTA Window Data Array Structure
QDFKWDWTTL Window Title Structure
QDFKMB Mouse Button Structure
QDFKSCSF SFL Keyword Structure
QDFKSCCP SFL Keyword Entry
QDFKSCSM SFLMSG and SFLMSGID Keyword Structure
QDFKSCSI SFLMSGID Keyword Structure
QDFKSFLM SFLEND(*MORE) Keyword Structure
QDFKSFLS SFLEND(*SCRBAR) Keyword Structure
QDFKCSRRRN SFLCSRRRN Keyword Structure
QDFKMODE SFLMODE Keyword Structure
QDFKSASA Screen Attribute Keyword Structure
QDFKSAPM Screen Attribute Keyword Array
QDFKFFWR FFW and FCW Keyword Structure
QDFKCHKP FFW Keyword Structure
QDFKMFDK Miscellaneous Field-Level Keyword Structure
QDFKMFDP Field-Level Keyword Structure
QDFKMFRS Response Indicator Structure
QDFKMFEM ERRMSG and ERRMSGID Keyword Structure
QDFKMFSI ERRMSGID Keyword Structure
QDFKMFMV MSGID Keyword Common Structure
QDFKMFM3 Type Three MSGID Keyword Structure
QDFKMFM4 Type Four MSGID Keyword Structure
QDFKDFLD DSPATR Keyword Structure
QDFK_DATTIM_FDATTIMFMT Keyword Structure
QDFK_DATTIM_SDATTIMSEP Keyword Structure
QDFK_DATEP DATE Keyword Structure
QDFK_MAPVAL MAPVAL Keyword Structure
QDFKDFT Category 23 Keyword Structure
QDFKDFPM Category 23 Keyword Parameters
QDFKDFMM MSGCON Keyword Structure
QDFKDFHTML HTML Keyword Structure
QDFKEDTR EDIT Keyword Structure
QDFKEDTP EDIT Keyword Structure
QDFKVAKW Validity Checking Keyword Structure
QDFKVARL Validity Checking Keywords
QDFKCKMI CHKMSGID Keyword Structure
QDFKFCPR Field-Level CUA Keyword Structure
QDFKFC Field-Level CUA Keywords
QDFKCHC CHCFLD Keyword Structure
QDFKCHCHDREXPCHCFLD Keyword Header Expansion Structure
QDFKCHCE Choice Entry Structure
QDFKCTXT Choice Text Structure
QDFKCACC CHCACCEL Keyword Structure
QDFKCMSG CHCCTL Keyword Structure
QDFKMBSEPS MNUBARSEP Keyword Structure
QDFKCHCX Choice Keywords Structure
QDFKEFATR ENTFLDATR Keyword Structure
QDFKFLDCP FLDCSRPRG Keyword Structure
QDFKCNTFLD CNTFLD Keyword Structure
QDFKEDTMSK EDTMSK Keyword Structure
QDFKEDTSEG EDTMSG Keyword Segment Structure
QDFKSMSG SFLCHCCTL Message Structure
QDFKGRPR Record-Level Grid Keywords with Parameters Struct
QDFKGRWP Record-Level Grid Keywords
QDFKGRDATR GRDATR Parameters
QDFKGRDCLR GRDCLR Parameters Structure
QDFKGRDBOX GRDBOX Parameters
QDFKGBOXDFM GRDBOX Parameter Entry Structure
QDFKGRDLIN GRDLIN Parameters Structure
QDFKGLINDFM GRDLIN Parameter Entry Structure
QDFWFLEI Where-Used File-Level Info Structure
QDFWRCDI Where-Used Record Info Structure
QDFWFLDI Where-Used Field Info Structure
QDFWITBE Indicator Table Entry Structure
QDFWKWDA Keyword Area Structure
QDFWATTR Keyword Entry Structure
QDFFNTBL Name Table Structure
**CTDATA Form3
001. 001. 000. 00 000. 00 00 000. 00
002. 001. 000. 19 001. 13 05 000. 00
003. 001. 001. 15 2 000. 00 00 000. 00
004. 001. 001. 08 2 000. 00 00 000. 00
005. 004. 004. 34 2 000. 00 00 000. 00
006. 004. 005. 24 2 000. 00 00 000. 00
007. 004. 004. 00 4 001. 10 16 000. 00
008. 004. 004. 12 4 001. 10 16 000. 00
009. 004. 007. 12 4 000. 00 00 000. 00
010. 009. 009. 28 2 000. 00 00 009. 12 2000 0
011. 009. 009. 28 2 000. 00 00 009. 12 2000 1
012. 011. 000. 54 001. 13 24 000. 00
013. 011. 011. 50 2 000. 00 00 000. 00
014. 009. 010. 28 2 000. 00 00 000. 00
014. 009. 011. 28 2 000. 00 00 000. 00
006. 009. 010. 32 2 000. 00 00 000. 00
006. 009. 011. 32 2 000. 00 00 000. 00
015. 009. 010. 00 4 001. 13 06 000. 00
015. 009. 011. 00 4 001. 13 06 000. 00
016. 015. 000. 06 009. 16 02 000. 00
017. 009. 014. 04 4 009. 16 10 000. 00
018. 009. 014. 00 4 009. 16 02 000. 00
019. 009. 009. 04 4 009. 16 08 000. 00
020. 009. 019. 00 4 000. 00 00 000. 00
021. 020. 000. 06 000. 00 00 020. 02 0100 E
022. 020. 000. 06 000. 00 00 020. 02 0100 N
023. 020. 021. 02 2 000. 00 00 020. 02 0100 E
023. 020. 022. 10 2 000. 00 00 020. 02 0100 N
024. 023. 000. 06 000. 00 00 020. 02 0400 E
024. 023. 000. 06 000. 00 00 020. 02 0500 E
025. 020. 023. 02 2 000. 00 00 000. 00
006. 020. 023. 04 2 000. 00 00 000. 00
026. 009. 009. 08 4 000. 00 00 000. 00
027. 026. 000. 08 026. 04 04 000. 00
028. 006. 000. 02 006. 00 03 000. 00
029. 004. 028. 01 2 000. 00 00 028. 00 0100 E
029. 009. 028. 01 2 000. 00 00 028. 00 0100 E
029. 020. 028. 01 2 000. 00 00 028. 00 0100 E
030. 029. 000. 02 029. 00 07 000. 00
031. 030. 000. 07 030. 05 02 000. 00
032. 031. 000. 02 001. 13 06 030. 00 0200 E
033. 031. 000. 02 000. 00 00 030. 00 0400 E
034. 031. 000. 02 000. 00 00 030. 00 0500 E
035. 031. 000. 02 000. 00 00 030. 00 0600 E
036. 031. 000. 02 000. 00 00 030. 00 0700 E
037. 031. 000. 02 000. 00 00 030. 00 0800 E
038. 031. 000. 02 000. 00 00 030. 00 0A00 E
039. 038. 000. 02 038. 00 12 000. 00
040. 031. 000. 02 000. 00 00 030. 00 0B00 E
041. 031. 000. 02 000. 00 00 030. 00 0C00 E
042. 004. 028. 01 2 000. 00 00 028. 00 0200 E
042. 009. 028. 01 2 000. 00 00 028. 00 0200 E
042. 020. 028. 01 2 000. 00 00 028. 00 0200 E
043. 042. 000. 02 042. 00 09 000. 00
044. 004. 028. 01 2 000. 00 00 028. 00 0300 E
044. 009. 028. 01 2 000. 00 00 028. 00 0300 E
044. 020. 028. 01 2 000. 00 00 028. 00 0300 E
045. 044. 000. 02 044. 00 03 000. 00
046. 044. 000. 02 000. 00 00 000. 00
047. 046. 000. 03 000. 00 00 000. 00
048. 046. 000. 03 000. 00 00 000. 00
049. 004. 028. 01 2 000. 00 00 028. 00 0400 E
049. 009. 028. 01 2 000. 00 00 028. 00 0400 E
049. 020. 028. 01 2 000. 00 00 028. 00 0400 E
050. 049. 000. 02 049. 00 03 000. 00
051. 009. 009. 22 2 000. 00 00 000. 00
052. 051. 000. 03 000. 00 00 051. 00 1000 E
053. 051. 000. 03 000. 00 00 051. 00 1100 E
054. 051. 000. 03 000. 00 00 051. 00 0F00 E
055. 051. 000. 03 000. 00 00 051. 00 1500 E
056. 051. 000. 03 000. 00 00 051. 00 1600 E
057. 004. 028. 01 2 000. 00 00 028. 00 0B00 E
057. 009. 028. 01 2 000. 00 00 028. 00 0B00 E
057. 020. 028. 01 2 000. 00 00 028. 00 0B00 E
058. 057. 000. 02 000. 00 00 000. 00
059. 058. 000. 05 000. 00 00 058. 00 0100 E
060. 058. 000. 05 000. 00 00 058. 00 0200 E
061. 004. 028. 01 2 000. 00 00 028. 00 1700 E
061. 009. 028. 01 2 000. 00 00 028. 00 1700 E
061. 020. 028. 01 2 000. 00 00 028. 00 1700 E
062. 061. 000. 02 061. 00 05 000. 00
063. 062. 000. 05 000. 00 00 062. 00 0100 E
064. 063. 000. 02 063. 00 17 000. 00
065. 064. 000. 17 000. 00 00 064. 02 4000 1
066. 064. 000. 17 000. 00 00 064. 02 0200 1
067. 064. 000. 17 000. 00 00 064. 02 0100 1
068. 064. 064. 10 2 001. 13 04 000. 00
069. 068. 000. 04 000. 00 00 064. 02 4000 1
070. 062. 000. 05 000. 00 00 062. 00 0200 E
071. 062. 000. 05 000. 00 00 062. 00 0600 E
072. 062. 000. 05 000. 00 00 000. 00
073. 062. 000. 05 000. 00 00 062. 00 0700 E
074. 062. 000. 05 001. 13 12 062. 00 0800 E
075. 062. 000. 05 000. 00 00 062. 00 0900 E
076. 062. 000. 05 000. 00 00 062. 00 0A00 E
077. 004. 028. 01 2 000. 00 00 028. 00 1800 E
077. 009. 028. 01 2 000. 00 00 028. 00 1800 E
077. 020. 028. 01 2 000. 00 00 028. 00 1800 E
078. 077. 000. 02 000. 00 00 000. 00
079. 078. 000. 03 000. 00 00 078. 00 0D00 E
080. 000. 000. 05 000. 00 00 078. 00 0E00 E
081. 078. 000. 03 000. 00 00 078. 00 0F00 E
082. 078. 000. 03 000. 00 00 078. 00 1200 E
083. 078. 000. 03 000. 00 00 078. 00 1000 E
084. 078. 000. 03 000. 00 00 078. 00 1100 E
085. 004. 028. 01 2 000. 00 00 028. 00 2000 E
085. 009. 028. 01 2 000. 00 00 028. 00 2000 E
085. 020. 028. 01 2 000. 00 00 028. 00 2000 E
086. 085. 000. 02 000. 00 00 000. 00
087. 004. 028. 01 2 000. 00 00 028. 00 2100 E
087. 009. 028. 01 2 000. 00 00 028. 00 2100 E
087. 020. 028. 01 2 000. 00 00 028. 00 2100 E
088. 087. 000. 02 087. 00 05 000. 00
089. 004. 028. 01 2 000. 00 00 028. 00 2200 E
089. 009. 028. 01 2 000. 00 00 028. 00 2200 E
089. 020. 028. 01 2 000. 00 00 028. 00 2200 E
090. 089. 000. 04 089. 00 03 000. 00
091. 090. 000. 03 000. 00 00 000. 00
092. 091. 000. 02 000. 00 00 090. 00 1500 E
093. 092. 000. 03 000. 00 00 090. 00 1600 E
094. 090. 000. 03 000. 00 00 090. 00 1000 E
095. 094. 000. 43 000. 00 00 094. 00 0300 E
096. 090. 000. 03 000. 00 00 094. 00 0400 E
097. 090. 000. 03 000. 00 00 090. 00 1700 E
098. 090. 000. 03 000. 00 00 090. 00 1800 E
099. 090. 000. 03 000. 00 00 090. 00 1900 E
100. 090. 000. 03 000. 00 00 090. 00 1A00 E
101. 090. 000. 03 000. 00 00 090. 00 1B00 E
102. 004. 028. 01 2 000. 00 00 028. 00 2300 E
102. 009. 028. 01 2 000. 00 00 028. 00 2300 E
102. 020. 028. 01 2 000. 00 00 028. 00 2300 E
103. 102. 000. 02 102. 00 06 000. 00
104. 103. 000. 06 000. 00 00 102. 00 0200 E
105. 103. 000. 06 000. 00 00 102. 00 0400 E
106. 004. 028. 01 2 000. 00 00 028. 00 2400 E
106. 009. 028. 01 2 000. 00 00 028. 00 2400 E
106. 020. 028. 01 2 000. 00 00 028. 00 2400 E
107. 106. 000. 02 106. 00 05 000. 00
108. 004. 028. 01 2 000. 00 00 028. 00 2500 E
108. 009. 028. 01 2 000. 00 00 028. 00 2500 E
108. 020. 028. 01 2 000. 00 00 028. 00 2500 E
109. 108. 000. 02 000. 00 00 000. 00
110. 109. 000. 08 000. 00 00 000. 00
111. 004. 028. 01 2 000. 00 00 028. 00 2600 E
111. 009. 028. 01 2 000. 00 00 028. 00 2600 E
111. 020. 028. 01 2 000. 00 00 028. 00 2600 E
112. 111. 000. 02 111. 00 05 000. 00
113. 112. 000. 05 000. 00 00 112. 00 0100 E
114. 113. 000. 19 000. 00 00 025. 01 0200 1
115. 113. 000. 19 000. 00 00 025. 01 0200 0
115. 113. 000. 37 000. 00 00 025. 01 0200 1
116. 115. 115. 08 2 000. 00 00 000. 00
117. 115. 115. 14 2 000. 00 00 000. 00
118. 115. 115. 30 2 000. 00 00 115. 30 FFFF P
119. 112. 000. 05 000. 00 00 112. 00 0200 E
120. 112. 000. 05 000. 00 00 112. 00 0300 E
121. 112. 000. 05 000. 00 00 112. 00 0600 E
122. 112. 000. 05 000. 00 00 112. 00 0700 E
123. 112. 000. 05 000. 00 00 112. 00 0800 E
124. 112. 000. 05 000. 00 00 112. 00 0900 E
125. 124. 000. 02 124. 00 04 000. 00
126. 112. 000. 05 000. 00 00 112. 00 0A00 E
127. 004. 028. 01 2 000. 00 00 028. 00 2700 E
127. 009. 028. 01 2 000. 00 00 028. 00 2700 E
127. 020. 028. 01 2 000. 00 00 028. 00 2700 E
128. 127. 000. 02 000. 00 00 000. 00
129. 128. 000. 05 000. 00 00 128. 00 0100 E
130. 128. 000. 05 000. 00 00 128. 00 0200 E
131. 128. 000. 05 000. 00 00 128. 00 0300 E
132. 131. 000. 12 001. 13 09 000. 00
133. 128. 000. 05 000. 00 00 128. 00 0400 E
134. 133. 000. 12 001. 13 07 000. 00
135. 004. 004. 04 4 000. 00 00 000. 00
136. 135. 135. 00 2 000. 00 00 000. 00
137. 136. 136. 00 2 000. 00 00 000. 00
138. 135. 000. 18 135. 12 05 135. 12 0000 P
138. 136. 000. 12 136. 08 05 136. 08 0000 P
139. 135. 135. 02 2 000. 00 00 000. 00
139. 136. 136. 02 2 000. 00 00 000. 00
139. 137. 137. 02 2 000. 00 00 000. 00
140. 139. 000. 02 139. 00 04 000. 00
141. 135. 135. 08 4 000. 00 00 000. 00
As an Amazon Associate we earn from qualifying purchases.