Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

SYMBOLS, part 01/04

4 views
Skip to first unread message

Ferry Bolhar-Nordenkampf

unread,
Jan 28, 1997, 3:00:00 AM1/28/97
to

Submitted-by: Ferry Bolhar-Nordenkampf <b...@adv.magwien.gv.at>
Posting-number: Volume 8, Issue 4
Archive-name: symbols/part01

SYMBOLS is a tool which allows programmers to extract symbol definitions
from object files, object libraries, shareable images or symbol tables.
It performs operations similar to ANALYZE/OBJECT or /IMAGE, however,
SYMBOLS's output is in a more compressed form. Also, in contrast to
ANALYZE, you may specify a symbol name and some characteristics to
restrict the search to certain symbol types and classes.


This package contains the following files:

$$$README.DOC General information to SYMBOLS

DIG.C, FIFO.C, C Sources (6 files)
LIBRARY_MODULE.C,
MSG.C, SIMPLE_MODULE.C,
UIO_RMS.C

FIFO.H, LBR$PROTO.H, Includes for C Sources (7 files)
LIBRARY_MODULE.H,
MSG.H, SIMPLE_MODULE.H,
UIO_RMS.H, ZAEHLER.H

SYMBOLS.MSG Message file

SYMBOLS.HLP Online help for SYMBOLS

SYMBOLS_AXP.CLD, Command definition for VAX and Alpha
SYMBOLS_VAX.CLD

INSTALL.COM Installation procedure

SYMBOLS$IVP.COM IVP

SYSMBOL$STARTUP.COM Startup procedure

(Total of 21 files.)

After extracting the files from this message, type @INSTALL.
Note that a DEC C compiler is required on _both_ platforms.

Hope you find it useful. Have fun with SYMBOLS!

Greetings, Ferry


Ing. Bolhár-Nordenkampf Ferdinand
Magistrat der Stadt Wien (MA-14) A - 1010 Vienna (Austria)
Phone: 0222/4000/98632 E-Mail: b...@adv.magwien.gv.at

"Wenn hier einer schuld ist, dann immer nur der Computer."
$! ------------------ CUT HERE -----------------------
$ v='f$verify(f$trnlnm("SHARE_UNPACK_VERIFY"))'
$!
$! This archive created:
$! Name : SYMBOLS
$! By : mark.b...@mvb.saic.com
$! Date : 28-JAN-1997 11:51:57.94
$! Using: VMS_SHARE 8.5-1, (C) 1993 Andy Harper, Kings College London UK
$!
$! Credit is due to these people for their original ideas:
$! James Gray, Michael Bednarek
$!
$! To unpack this archive:
$!+ Ensure that all parts are present, (4 at about 95 Blocks each).
$!+ Append all parts together to form one larger file.
$! Minimum of VMS 4.4 (VAX) / OpenVMS 1.0 (Alpha) is required.
$! Remove the headers of the first part, up to `cut here' line.
$! Execute file as a command procedure.
$!
$! The following file(s) will be created after unpacking:
$! 1. $$$README.DOC;1
$! 2. DIG.C;1
$! 3. FIFO.C;1
$! 4. FIFO.H;1
$! 5. INSTALL.COM;1
$! 6. LBR$PROTO.H;1
$! 7. LIBRARY_MODULE.C;1
$! 8. LIBRARY_MODULE.H;1
$! 9. MSG.C;1
$! 10. MSG.H;1
$! 11. SIMPLE_MODULE.C;1
$! 12. SIMPLE_MODULE.H;1
$! 13. SYMBOLS$IVP.COM;1
$! 14. SYMBOLS$STARTUP.COM;1
$! 15. SYMBOLS.HLP;1
$! 16. SYMBOLS.MSG;1
$! 17. SYMBOLS_AXP.CLD;1
$! 18. SYMBOLS_VAX.CLD;1
$! 19. UIO_RMS.C;1
$! 20. UIO_RMS.H;1
$! 21. ZAEHLER.H;1
$!
$ set="set"
$ set symbol/scope=(nolocal,noglobal)
$ f="SYS$SCRATCH:."+f$getjpi("","PID")+";"
$ if f$trnlnm("SHARE_UNPACK") .nes. "" then $ -
f=f$parse("SHARE_UNPACK_TEMP",f)
$ e="write sys$error ""%UNPACK"", "
$ w="write sys$output ""%UNPACK"", "
$ if .not. f$trnlnm("SHARE_UNPACK_LOG") then $ w = "!"
$ if f$getsyi("CPU") .gt. 127 then $ goto start
$ ve=f$getsyi("version")
$ if ve-f$extract(0,1,ve) .ges. "4.4" then $ goto start
$ e "-E-OLDVER, Must run at least VMS 4.4"
$ v=f$verify(v)
$ exit 44
$unpack:subroutine!P1=file,P2=chksum,P3=attrib,P4=size,P5=fileno,P6=filetotal
$ if f$parse(P1) .nes. "" then $ goto dirok
$ dn=f$parse(P1,,,"DIRECTORY")
$ w "-I-CREDIR, Creating directory ''dn'"
$ create/dir 'dn'
$ if $status then $ goto dirok
$ e "-E-CREDIRFAIL, Unable to create ''dn' File skipped"
$ delete 'f'*
$ exit
$dirok:
$ x=f$search(P1)
$ if x .eqs. "" then $ goto file_absent
$ e "-W-EXISTS, File ''P1' exists. Skipped"
$ delete 'f'*
$ exit
$file_absent:
$ w "-I-UNPACK, Unpacking ", P5, " of ", P6, " - ", P1, " - ", P4, " Blocks"
$ n=P1
$ if P3 .nes. "" then $ n=f
$ if .not. f$verify() then $ define/user sys$output nl:
$ EDIT/TPU/NOSEC/NODIS/COM=SYS$INPUT/NOJOURNAL 'f'/OUT='n'
PROCEDURE GetHex(s,p)LOCAL x1,x2;x1:=INDEX(t,SUBSTR(s,p,1))-1;x2:=INDEX(t,
SUBSTR(s,p+1,1))-1;RETURN 16*x1+x2;ENDPROCEDURE;PROCEDURE SkipPartsep LOCAL m;
LOOP m:=MARK(NONE);EXITIF m=END_OF(CURRENT_BUFFER);DELETE(m);EXITIF INDEX(
ERASE_LINE,"-+-+-+-+-+-+-+-+")=1;ENDLOOP;ENDPROCEDURE;
PROCEDURE ProcessLine LOCAL c,s,l,b,n,p;s := ERASE_LINE;c := SUBSTR(s,1,1);s :=
s-c;IF c = "X" THEN SPLIT_LINE; ENDIF;MOVE_HORIZONTAL(-1);l := LENGTH(s);p :=
1;LOOP EXITIF p > l;c := SUBSTR(s,p,1);p := p+1;CASE c FROM ' ' TO '`' ['`']
: COPY_TEXT(ASCII(GetHex(s,p))); p:=p+2;[' ']: p:=p+1;[INRANGE,OUTRANGE]
: COPY_TEXT(c);ENDCASE;ENDLOOP;ENDPROCEDURE;PROCEDURE Decode(b)LOCAL m;
POSITION(BEGINNING_OF(b));LOOP m:=MARK(NONE);EXITIF m=END_OF(b);DELETE(m);
IF INDEX(CURRENT_LINE,"+-+-+-+-+-+-+-+-")=1 THEN SkipPartSep;ELSE ProcessLine;
MOVE_HORIZONTAL(1);ENDIF;ENDLOOP;ENDPROCEDURE;SET(FACILITY_NAME,"UNPACK");SET(
SUCCESS,OFF);SET(INFORMATIONAL,OFF);t:="0123456789ABCDEF";f:=GET_INFO(
COMMAND_LINE,"file_name");o:=CREATE_BUFFER(f,f);Decode(o);WRITE_FILE(o,
GET_INFO(COMMAND_LINE,"output_file"));QUIT;
$ if p3 .eqs. "" then $ goto dl
$ open/write fdl &f
$ write fdl "RECORD"
$ write fdl P3
$ close fdl
$ w "-I-CONVRFM, Converting record format to ", P3
$ convert/fdl='f' 'f'-1 'f'
$ fa=f$getdvi(f$parse(f),"ALLDEVNAM")
$ Pa=f$getdvi(f$parse(P1),"ALLDEVNAM")
$ if fa .eqs. Pa then $ rename &f 'f$parse(P1)'
$ if fa .nes. Pa then $ copy &f 'f$parse(P1)'
$dl: delete 'f'*
$ checksum 'P1'
$ if checksum$checksum .nes. P2 then $ -
e "-E-CHKSMFAIL, Checksum of ''P1' failed."
$ exit
$ endsubroutine
$start:
$!
$ create 'f'
X
X
X
X`20`20`20`20`20`20`20`20Instructions`20for`20SYMBOLS`20V2.0
X`20`20`20`20`20`20`20`20=============================
X
X`20`20`20`20`20`20`20`20Please`20read`20this`20file`20before`20installing`20an
Vd`20running`20SYMBOLS`20for
X`20`20`20`20`20`20`20`20OpenVMS.
X
X
X
X`20`20`20`20`20`20`20`201)`20Installation
X`20`20`20`20`20`20`20`20---------------
X
X`20`20`20`20`20`20`20`20SYMBOLS`20is`20installed`20via`20the`20supplied`20INST
VALL.COM`20command
X`20`20`20`20`20`20`20`20procedure.`20After`20extracting`20the`20contents`20of
V`20the`20mail,`20type
X
X`20`20`20`20`20`20`20`20$`20@INSTALL
X
X`20`20`20`20`20`20`20`20The`20procedure`20displays`20some`20stages`20of`20exec
Vution.`20It`20takes
X`20`20`20`20`20`20`20`20five`20minutes`20for`20completion.
X
X`20`20`20`20`20`20`20`20You`20need`20a`20DEC`20C`20(not`20VAX`20C!)`20compiler
V`20on`20the`20target`20system.`20In
X`20`20`20`20`20`20`20`20addition,`20you`20need`2050`20blocks`20(VAX)`20and`207
V0`20blocks`20(Alpha)`20on`20the
X`20`20`20`20`20`20`20`20system`20disk`20after`20installation.
X
X`20`20`20`20`20`20`20`20This`20version`20of`20SYMBOLS`20requires`20OpenVMS`20V
V6.1`20or`20later.
X
X`20`20`20`20`20`20`20`20VAX`20only:`20SYMBOLS`20is`20compiled`20with`20DEC`20C
V`20and`20therefore`20will`20be
X`20`20`20`20`20`20`20`20linked`20against`20the`20DEC`20C`20RTL.`20This`20RTL
V`20is`20provided`20with`20VMS`20V6.1
X`20`20`20`20`20`20`20`20and`20higher,`20it`20can`20be`20installed`20on`20VAX/V
VMS`20V5.5`20and`20V6.0
X`20`20`20`20`20`20`20`20separately.`20If`20you`20have`20these`20versions`20of
V`20VMS`20and`20have`20installed
X`20`20`20`20`20`20`20`20the`20DEC`20C`20RTL,`20you`20can`20install`20SYMBOLS
V`20as`20well.`20The`20DEC`20C`20RTL
X`20`20`20`20`20`20`20`20kit`20is`20named`20AACRT060.A`20and`20can`20be`20found
V`20on`20any`20OpenVMS`20VAX
X`20`20`20`20`20`20`20`20binary`20distribution`20CD`20in`20the`20`5BDECC05x.KIT
V`5D`20directory.`20No
X`20`20`20`20`20`20`20`20license`20is`20required`20for`20installation`20and`20u
Vse.
X`20`20`20`20`20`20
X`20`20`20`20`20`20`20`20These`20files`20are`20provided`20as`20part`20of`20the
V`20installation:
X
X`20`20`20`20`20`20`20`20SYS$STARTUP:SYMBOLS$STARTUP.COM`20-`20the`20startup`20
Vprocedure
X`20`20`20`20`20`20`20`20SYS$TEST:SYMBOLS$IVP.COM`20-`20the`20IVP
X`20`20`20`20`20`20`20`20SYS$SYSTEM:SYMBOLS.EXE`20-`20the`20main`20image
X`20`20`20`20`20`20`20`20SYS$MESSAGE:SYMBOLS$MSG.EXE`20-`20the`20message`20file
V
X
X`20`20`20`20`20`20`20`20These`20files`20are`20modified:
X
X`20`20`20`20`20`20`20`20SYS$SHARE:DCLTABLES.EXE`20-`20contains`20the`20new`20S
VYMBOLS`20verb
X`20`20`20`20`20`20`20`20SYS$HELP:HELPLIB.HLB`20-`20contains`20online`20help`20
Vfor`20SYMBOLS
X`20`20`20`20`20`20`20`20SYS$STARTUP:VMS$LAYERED.DAT`20-`20layered`20product`20
Vstartup`20database
X
X
X
X`20`20`20`20`20`20`20`202)`20Startup
X`20`20`20`20`20`20`20`20----------
X
X`20`20`20`20`20`20`20`20SYMBOLS's`20startup`20procedure`20is`20entered`20in`20
Vthe`20startup`20database
X`20`20`20`20`20`20`20`20automatically`20by`20the`20installation.`20The`20start
Vup`20runs`20in`20phase
X`20`20`20`20`20`20`20`20LPMAIN`20and`20in`20mode`20DIRECT.`20If`20this`20doesn
V't`20suit`20your`20needs,`20you
X`20`20`20`20`20`20`20`20may`20change`20it;`20SYMBOLS`20has`20no`20startup`20de
Vpendencies.
X
X`20`20`20`20`20`20`20`20The`20only`20purpose`20of`20the`20startup`20procedure
V`20is`20to`20install`20the`20main
X`20`20`20`20`20`20`20`20image`20and`20the`20message`20file`20as`20known,`20sha
Vreable`20images.`20This`20may
X`20`20`20`20`20`20`20`20result`20in`20faster`20image`20activation.`20You'll`20
Vneed`202`20global`20sections
X`20`20`20`20`20`20`20`20and`2030`20(VAX)`20or`2044`20(Alpha)`20global`20pages.
V
X
X`20`20`20`20`20`20`20`20If`20you`20don't`20want`20to`20install`20SYMBOLS`20in
V`20this`20way,`20you`20may`20remove
X`20`20`20`20`20`20`20`20SYMBOLS's`20startup`20procedure`20from`20the`20startup
V`20database.`20Although
X`20`20`20`20`20`20`20`20i'd`20recommed`20to`20install`20the`20images,`20there
V`20is`20no`20need`20to`20do`20so.
X`20`20`20`20`20`20`20`20To`20remove`20the`20startup`20file,`20enter:
X
X`20`20`20`20`20`20`20`20$`20MCR`20SYSMAN
X`20`20`20`20`20`20`20`20SYSMAN>`20STARTUP`20REMOVE`20FILE`20SYMBOLS$STARTUP.CO
VM
X`20`20`20`20`20`20`20`20SYSMAN>`20EXIT
X`20`20`20`20`20`20`20`20$
X
X
X
X`20`20`20`20`20`20`20`203)`20Usage
X`20`20`20`20`20`20`20`20--------
X
X`20`20`20`20`20`20`20`20SYMBOLS`20provides`20an`20online`20help`20-`20type`20H
VELP`20SYMBOLS`20to`20obtain`20a
X`20`20`20`20`20`20`20`20detailled`20description`20of`20all`20qualifiers.`20Not
Ve`20that`20you`20must`20spell
X`20`20`20`20`20`20`20`20out`20the`20string`20SYMBOLS`20(there`20is`20already
V`20another`20topic`20named
X`20`20`20`20`20`20`20`20"Symbol_Assign)".
X
X
X`20`20`20`20`20`20`20`20Please`20see`20this`20example`20(VAX):
X
X`20`20`20`20`20`20`20`20$`20SYMBOLS`20SYS$SHARE:LIBRTL`20LIB$AB_ASC_EBC/IMAGE
V
X
X`20`20`20`20`20`20`20`20Type`20`20`20`20Symbol`20Name`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20Flags`20`20Value/Addrs`20Mask`20Vector/Mask
X`20`20`20`20`20`20`20`20------------------------------------------------------
V-----------------
X`20`20`20`20`20`20`20`20SYM`20`20`20`20`20LIB$AB_ASC_EBC`20`20`20`20`20`20`20
V`20`20`20`20`20`20`20rus`20`20`20`20`20`20`20`20`20`20`20`200`20`20----`20----
V----
X
X`20`20`20`20`20`20`20`20The`20abbreviation`20under`20'Type'`20is`20the`20symbo
Vl`20type,`20see`20the`20linker
X`20`20`20`20`20`20`20`20manual`20for`20more`20information.`20It`20is`20followe
Vd`20by`20the`20symbol`20name;`20if
X`20`20`20`20`20`20`20`20the`20name`20is`20too`20long`20to`20fit`20into`20this
V`20field,`20it`20is`20truncated
X`20`20`20`20`20`20`20`20(this`20is`20indicated`20by`20an`20asterisk`20(*)`20as
V`20last`20character;`20you`20may
X`20`20`20`20`20`20`20`20use`20/FORMAT=BRIEF`20or`20/FORMAT=RAW`20to`20obtain
V`20the`20entire`20symbol`20name).
X
X`20`20`20`20`20`20`20`20The`20'Flags'`20field`20may`20contain`20the`20followin
Vg`20characters:
X
X`20`20`20`20`20`20`20`20a/r`20`20`20`20`20symbol`20is`20absolute/relocatable
X`20`20`20`20`20`20`20`20g/u`20`20`20`20`20symbol`20is`20global/universal
X`20`20`20`20`20`20`20`20s/w`20`20`20`20`20strong/weak`20symbol`20definition
X
X`20`20`20`20`20`20`20`20The`20'Value'`20field`20contains`20the`20value`20of`20
Vthe`20symbol.`20Note`20that
X`20`20`20`20`20`20`20`20all`20values`20are`20returned`20in`20hex,`20unless`20/
VDECIMAL`20or`20/OCTAL`20is
X`20`20`20`20`20`20`20`20explicitly`20specified.
X
X`20`20`20`20`20`20`20`20'Mask'`20is`20the`20procedure`20entry`20(register`20sa
Vve)`20mask.`20This`20value
X`20`20`20`20`20`20`20`20exists`20for`20procedure`20entry`20symbols`20only.`20I
Vf`20no`20procedure`20entry
X`20`20`20`20`20`20`20`20mask`20exists,`20this`20field`20contains`20dashes`20(-
V---).
X
X`20`20`20`20`20`20`20`20'Vector/Mask'`20lists`20the`20symbols`20version`20mask
V`20or`20vector`20address,
X`20`20`20`20`20`20`20`20if`20applicable.`20Otherwise,`20this`20field`20contain
Vs`20dashes.
X
X`20`20`20`20`20`20`20`20On`20Alpha,`20the`20output`20is`20slightly`20different
V:
X
X`20`20`20`20`20`20`20`20Type`20`20`20`20Symbol`20Name`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20Flags`20`20Value`20`20Psindx`20`20`20`20P3`20`20`20`20
V`20P4
X`20`20`20`20`20`20`20`20------------------------------------------------------
V-----------------
X`20`20`20`20`20`20`20`20SYMG`20`20`20`20LIB$AB_EBC_ASC`20`20`20`20`20`20`20`20
V`20`20`20`20`20lrus`20`20`20`20`2010`20`20`20`20`20`200`20`20`20`20`20`200`20
V`20B78B0
X
X
X`20`20`20`20`20`20`20`20The`20'Type'`20field`20now`20contains`20Alpha`20types,
V`20some`20of`20them`20are
X`20`20`20`20`20`20`20`20different`20from`20the`20VAX`20types.
X
X`20`20`20`20`20`20`20`20The`20'Flags'`20field`20contains`20an`20additional`20c
Vharacter,`20either`20l`20or`20p:
X
X`20`20`20`20`20`20`20`20l/p`20`20`20`20`20symbol`20is`20a`20literal/a`20proced
Vure`20entry`20point.
X
X`20`20`20`20`20`20`20`20The`20field`20'Psindx'`20contains`20the`20process`20se
Vction`20index;`20P3`20and`20P4
X`20`20`20`20`20`20`20`20contain`20the`20following`20information,`20depending
V`20on`20the`20symbol`20type:
X
X`20`20`20`20`20`20`20`20Type`20`20`20`20P3`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20P4
X`20`20`20`20`20`20`20`20------------------------------------------------
X`20`20`20`20`20`20`20`20SYM`20`20`20`20`20esdf$l_code_address`20`20`20`20`20es
Vdf$l_ca_psindx
X`20`20`20`20`20`20`20`20SYMV`20`20`20`20esdfv$l_vector`20`20`20`20`20`20`20`20
V`20`20-
X`20`20`20`20`20`20`20`20SYMM`20`20`20`20esdfm$l_version_mask`20`20`20`20-
X`20`20`20`20`20`20`20`20SYMG`20`20`20`20egst$l_lp_1`20`20`20`20`20`20`20`20`20
V`20`20`20`20egst$l_lp_2
X`20`20`20`20`20`20`20`20PSC`20`20`20`20`20-`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20`20`20egps$l_alloc
X`20`20`20`20`20`20`20`20SPSC`20`20`20`20esgps$l_base`20`20`20`20`20`20`20`20
V`20`20`20`20esgps$l_alloc
X
X`20`20`20`20`20`20`20`20See`20the`20OpenVMS`20linker`20manual,`20chapter`20"Al
Vpha`20Object`20Language"
X`20`20`20`20`20`20`20`20for`20a`20detailled`20description`20of`20these`20field
Vs.
X
X`20`20`20`20`20`20`20`20If`20you`20specify`20/FORMAT=BRIEF,`20you'll`20get`20t
Vhe`20entire`20symbol`20name
X`20`20`20`20`20`20`20`20and`20its`20value`20only.`20Specifying`20/FORMAT=RAW
V`20causes`20SYMBOLS`20to
X`20`20`20`20`20`20`20`20write`20its`20output`20in`20non-interpreted`20form`20(
Vthe`20'flags'`20field`20is
X`20`20`20`20`20`20`20`20returned`20in`20numerical`20form)`20and`20without`20he
Vading`20and`20trailing`20lines.
X`20`20`20`20`20`20`20`20This`20kind`20of`20output`20is`20provided`20for`20furt
Vher`20use`20with`20text
X`20`20`20`20`20`20`20`20filters`20or`20DCL`20procedures.
X
X
X
X
X`20`20`20`20`20`20`20`204)`20Authors
X`20`20`20`20`20`20`20`20----------
X
X`20`20`20`20`20`20`20`20If`20you`20have`20any`20questions`20about`20SYMBOLS,
V`20please`20feel`20free`20to
X`20`20`20`20`20`20`20`20contact`20its`20developers:
X
X`20`20`20`20`20`20`20`20Ferry`20Bolh`E1r`20(b...@adv.magwien.gv.at)`20developed
V`20the`20initial`20(VAX
X`20`20`20`20`20`20`20`20only)`20release`20and`20provided`20SYMBOLS`20on`20the
V`20net.
X
X`20`20`20`20`20`20`20`20Peter`20Gallasch`20(g...@adv.magwien.gv.at)`20ported`20
VSYMBOLS`20to`20Alpha,
X`20`20`20`20`20`20`20`20allowing`20to`20access`20Alpha`20native`20objects`20an
Vd`20images`20as`20well.
X`20`20`20`20`20`20`20`20Peter`20also`20included`20some`20other`20enhancements.
V
X
X
X
X`20`20`20`20`20`20`20`205)`20Documentation
X`20`20`20`20`20`20`20`20----------------
X
X`20`20`20`20`20`20`20`20Documentation`20is`20available`20for`20SYMBOLS,`20howe
Vver,`20it`20is`20available
X`20`20`20`20`20`20`20`20in`20German`20language`20only.`20For`20this`20reason,
V`20i`20haven't`20included`20it.
X`20`20`20`20`20`20`20`20If`20you`20want`20to`20obtain`20a`20copy,`20please`20l
Vet`20me`20know.`20The`20docs`20are
X`20`20`20`20`20`20`20`20available`20in`20text,`20bookreader,`20PostScript`20an
Vd`20HTML`20format.
X
X
X`20`20`20`20`20`20`20`20
X`20`20`20`20`20`20`20`206)`20Final`20note
X`20`20`20`20`20`20`20`20-------------
X
X`20`20`20`20`20`20`20`20SYMBOLS`20is`20provided`20"as-is",`20there`20is`20no
V`20warranty`20nor`20support.
X`20`20`20`20`20`20`20`20Use`20it`20on`20your`20own`20risk.`20Please`20see`20th
Ve`20comments`20at`20the`20begin
X`20`20`20`20`20`20`20`20in`20every`20source`20file`20for`20a`20detailled`20cop
Vyright`20notice.
X
X`20`20`20`20`20`20`20`20If`20you`20make`20changes`20therein,`20please`20let`20
Vthe`20above`20developers
X`20`20`20`20`20`20`20`20know.
X
X`20`20`20`20`20`20`20`20Enjoy`20it!
X
X
X
X
X`20`20`20`20`20`20`20`20(P)`201996`20by`20Ferry`20Bolh`E1r
X`20`20`20`20`20`20`20`20Magistrat`20der`20Stadt`20Wien
X`20`20`20`20`20`20`20`20MA14`20-`20ADV
X`20`20`20`20`20`20`20`20A-1010`20Vienna/Austria
X`20`20`20`20`20`20`20`20E-mail:`20...@adv.magwien.gv.at.
X
$ call unpack $$$README.DOC;1 1511926738 "" 16 1 21
$!
$ create 'f'
X/*
X`20*`20DIG.C
X`20*`20=====
X`20*`20`20`20`20`20`20
X`20*`20-----------------------------------------------------------------
X`20*
X`20*`20PLEASE`20NOTE:
X`20*`20------------
X`20*
X`20*`20V1.0`20(P)`201989`20by`20Ferry`20Bolh`E1r`20(b...@adv.magwien.gv.at)
X`20*`20V2.0`20(P)`201993`20by`20Peter`20Gallasch`20(g...@adv.magwien.gv.at)
X`20*
X`20*`20Use`20this`20software`20at`20your`20own`20risk`20and`20"as-is".`20Provi
Vde`20it`20as`20you`20want,
X`20*`20but`20for`20non-commercial`20use`20only.`20No`20warranty`20is`20express
Ved`20or`20implied`20and
X`20*`20no`20liability`20can`20be`20accepted`20for`20any`20actions`20or`20circu
Vmstances`20incurred
X`20*`20from`20the`20use`20of`20this`20software`20or`20from`20the`20information
V`20contained`20herein.
X`20*`20The`20authors`20make`20no`20claim`20as`20to`20the`20suitability`20of`20
Vthis`20software`20for`20a
X`20*`20particual`20purpose.
X`20*
X`20*`20This`20software`20may`20be`20copied`20and`20distributed`20only`20with
V`20the`20inclusion`20of
X`20*`20this`20copyright`20notice.
X`20*
X`20*`20Any`20suggestions`20are`20very`20appreciated,`20please`20mail`20to`20th
Ve`20above`20addresses.
X`20*
X`20*`20-----------------------------------------------------------------
X`20*
X`20*`20Dritte`20Testversion`20von`20Symbols,`20mit`20ausgelagerten`20Zugriffsr
Voutinen
X`20*`20und`20mit`20Ausgabe,`20die`20noch`20weiterverarbeitet`20wird.
X`20*
X`20*/
X#include`20<argdef.h>
X#include`20<cli$routines.h>
X#include`20<climsgdef.h>
X#include`20<descrip.h>
X#include`20<envdef.h>
X#include`20<epmdef.h>
X#include`20<epmvdef.h>
X#include`20<epmwdef.h>
X#include`20<errno.h>
X#include`20<fmldef.h>
X#include`20<gpsdef.h>
X#include`20<gsdef.h>
X#include`20<gsydef.h>
X#include`20<idcdef.h>
X#include`20<lepmdef.h>
X#include`20<libclidef.h>
X#include`20<libdef.h>
X#include`20<lib$routines.h>
X#include`20<lprodef.h>
X#include`20<lsdfdef.h>
X#include`20<lsrfdef.h>
X#include`20<mhdef.h>
X#include`20<objrecdef.h>
X#include`20<prodef.h>
X#include`20<provdef.h>
X#include`20<prowdef.h>
X#include`20<rmsdef.h>
X#include`20<sdfdef.h>
X#include`20<sdfvdef.h>
X#include`20<sdfwdef.h>
X#include`20<sgpsdef.h>
X#include`20<srfdef.h>
X#include`20<stdio.h>
X#include`20<stdlib.h>
X#include`20<strdef.h>
X#include`20<string.h>
X#include`20<str$routines.h>
X
X#ifdef`20__alpha
X#include`20<egpsdef.h>
X#include`20<egsdef.h>
X#include`20<egsydef.h>
X#include`20<emhdef.h>
X#include`20<eobjrecdef.h>
X#include`20<esdfdef.h>
X#include`20<esdfmdef.h>
X#include`20<esdfvdef.h>
X#include`20<esgpsdef.h>
X#include`20<egstdef.h>
X#endif
X
X#include`20"fifo.h"
X#include`20"library_module.h"
X#include`20"msg.h"
X#include`20"simple_module.h"
X#include`20"zaehler.h"
X
X#define`20J`20`20`20`20`20`20`20/*`20zeigt`20Sprungbefehl`20an`20*/
X#define`20MIN(a,b)`20(a)<(b)`20?`20(a)`20:`20(b)
X#define`20TO_FIFO(`20element)`20to_fifo`20((void*)(element));`20
X
Xstatic`20int`20datei`20(int`20image,`20int`20lib);
Xstatic`20void`20get_name`20(char`20*feld,`20char`20**name_a,`20int`20*len_a);
V
Xstatic`20void`20attribute_statistic`20(int`20flags,`20int`20procedure,`20int
V`20local);
Xstatic`20int`20symbol_match`20(char`20*type,`20char`20*name,`20int`20namelen);
V
Xstatic`20int`20mhd`20(struct`20mhdef`20*header,`20int`20headertyp);
Xstatic`20int`20obj_module`20(int`20lib);
Xstatic`20int`20vax_record`20(char`20*buffer,`20int);
Xstatic`20void`20brief_ausgabe`20(void);
Xstatic`20void`20template_header`20(void);
Xstatic`20void`20formatted_ausgabe`20(void);
Xstatic`20void`20raw_ausgabe`20(void);
Xstatic`20void`20parameter_ausgabe`20(char`20*filling);
Xstatic`20void`20dclsym_ausgabe`20(void);
Xstatic`20void`20gsd`20(char`20*buffer,`20int`20size);
Xstatic`20void`20lib_summary`20(void);
Xstatic`20void`20module_summary`20(int`20lib);
Xstatic`20void`20synopsis`20(int,`20int,`20zaehler,`20zaehler);
X
X#ifdef`20__alpha
Xstatic`20int`20emh`20(struct`20emhdef`20*header,`20int`20headertyp);
Xstatic`20int`20axp_record`20(char`20*buffer);
Xstatic`20void`20egsd`20(char`20*buffer);
X#endif
X
X/*`20Errorcodes`20*/
X#pragma`20extern_model`20save
X#pragma`20extern_model`20globalvalue
Xextern`20SYMBOLS$_BADIMAGE;
Xextern`20SYMBOLS$_BADOBJMOD;
Xextern`20SYMBOLS$_BADREC;
Xextern`20SYMBOLS$_MULDEF;
Xextern`20SYMBOLS$_NOMOD;
Xextern`20SYMBOLS$_OPENINFAIL;
Xextern`20SYMBOLS$_OPENOUTFAIL;
X#pragma`20extern_model`20restore
X
X/*`20`20`20`20`20`20VAX`20oder`20AXP`20*/
Xstatic`20int`20`20`20`20`20`20axp;
X
X/*`20`20`20`20`20`20globale`20Variable`20f`FCr`20die`20Ausgabe`20*/
Xstatic`20int`20`20`20`20`20`20do_statistic;
Xstatic`20int`20`20`20`20`20`20radix;`20`20/*`200:`20hex,`201:`20decimal,`202:
V`20octal`20*/
XFILE`20`20`20`20*outfile;
X
X/*`20`20`20`20`20`20globale`20Variable`20f`FCr`20Statistik`20*/
Xstatic`20zaehler`20`20mod_sym;
Xstatic`20zaehler`20`20file_sym;
Xzaehler`20file_module;`20`20`20`20`20`20`20`20`20`20`20`20/*`20Z`E4hler`20f`FC
Vr`20Module`20in`20Libraryfile`20*/
Xint`20`20`20`20`20badfiles;
Xstatic`20int`20`20`20`20`20`20records;
Xstatic`20int`20`20`20`20`20`20bad_records;
Xstatic`20int`20`20`20`20`20`20gsd_records;
Xstatic`20int`20`20`20`20`20`20gsd_entries;
Xstatic`20int`20`20`20`20`20`20local_syms;
Xstatic`20int`20`20`20`20`20`20procedure_syms;
Xstatic`20int`20`20`20`20`20`20relocatable_syms;
Xstatic`20int`20`20`20`20`20`20universal_syms;
Xstatic`20int`20`20`20`20`20`20weak_syms;
X
X/*`20`20`20`20`20`20globale`20Variable`20f`FCr`20Selektionskriterien`20*/
Xstatic`20int`20`20`20`20`20`20typesel;`20`20/*`20Bit`200:`20Symbols;`20Bit`201
V:`20PSC`20u.`20dergl.`20ausgeben`20*/
Xstatic`20int`20`20`20`20`20`20lit_proc`20=`203;`20`20/*`20%0011`20,%10`20nur
V`20literal,`20%01`20nur`20procedure`20*/
Xstatic`20int`20`20`20`20`20`20scope`20=`203;`20`20/*`20%0011`20,%10`20nur`20lo
Vcal,`20%01`20nur`20global/universal`20*/
Xstatic`20int`20`20`20`20`20`20flagsel;
Xstatic`20int`20`20`20`20`20`20flagmask;
X
X/*`20`FCberpr`FCfe,`20ob`20die`20aktuellen`20Flags`20mit`20den`20Vorgaben`20
V`FCbereinstimmen`20*/
X#define`20FLAGTEST(`20f)`20(`20((f)`20`26`20flagmask)`20==`20flagsel`20)
X
X/*`20in`20Kommandozeile`20spezifizierte`20ID`20(Qual.`20/IDENTIFICATION)`20*/
V
Xstatic`20char`20`20`20`20`20id_name`20`5B8`5D;
Xstatic`20$DESCRIPTOR`20(id_des,`20id_name);
X#define`20ID_SELECTIVE`20(id_des.dsc$w_length`20>`200)
X
X/*`20in`20Kommandozeile`20spezifizierter`20Symbolname`20(Parameter`202)`20*/
Xstatic`20char`20`20`20`20`20symbol_name`5B32`5D;
Xstatic`20$DESCRIPTOR`20(symbol_des,`20symbol_name);
X#define`20SYMBOL_SELECTIVE`20(symbol_des.dsc$w_length`20>`200)
X
X/*`20Im`20Parameter`20SET`20spezifizierter`20Symbolname`20*/
Xstatic`20char`20`20`20`20`20set_name`5B256`5D;
Xstatic`20$DESCRIPTOR`20(set_des,`20set_name);
Xstatic`20int`20`20`20`20`20`20setname_specified;
X
X/*`20Filename`20*/
Xstatic`20char`20`20`20`20`20fulnambuf`5B256`5D;
X$DESCRIPTOR`20(fulnam,`20fulnambuf);
X
X/*`20Modulname`20*/
Xextern`20char`20`20`20`20`20modnam`5B`5D;
X
X/*`20sollen`20die`20Daten`20eines`20Records`20(Symbole)`20ausgegeben`20werden?
V`20*/
Xint`20print_record=1;
X/*`20sollen`20die`20Daten`20eines`20Moduls`20ausgegeben`20werden?`20*/
Xstatic`20int`20print_module=1;
X/*`20Modulinformation`20nur`20ausgeben,`20wenn`20Symbole`20gepa`DFt`20haben`20
V*/
Xstatic`20int`20`20`20`20`20`20only_matches;
X/*`20welches`20Ausgabeformat`20*/
X#define`20BRIEF`200
X#define`20FORMATTED`201
X#define`20DCLSYM`202
X#define`20RAW`203
Xstatic`20int`20`20`20`20`20`20ausgabeformat`20=`20FORMATTED;
Xstatic`20void`20`20`20`20`20(*ausgabe`5B`5D)`20(void)`20=`20`7B
X`20`20`20`20`20`20`20`20brief_ausgabe,
X`20`20`20`20`20`20`20`20formatted_ausgabe,
X`20`20`20`20`20`20`20`20dclsym_ausgabe,
X`20`20`20`20`20`20`20`20raw_ausgabe`7D;
X
X#define`20POSITION(`20typ,`20feld)`20`20(int)`26(((struct`20typ##def`20*)0)->t
Vyp##$##feld)`20
X#ifdef`20__alpha
Xstatic`20int`20`20`20`20`20`20axp_entry`5B`5D`5B5`5D`20=
X`7B`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
X#define`20ESDF_POS`200
X`20`20`20`20`20`20`20`20POSITION(`20esdf,`20l_value),
X`20`20`20`20`20`20`20`20POSITION(`20esdf,`20l_psindx),`20`20
X`20`20`20`20`20`20`20`20POSITION(`20esdf,`20l_code_address),
X`20`20`20`20`20`20`20`20POSITION(`20esdf,`20l_ca_psindx),
X`20`20`20`20`20`20`20`20POSITION(`20esdf,`20b_namlng),`20
X#define`20ESDFV_POS`201
X`20`20`20`20`20`20`20`20POSITION(`20esdfv,`20l_value),
X`20`20`20`20`20`20`20`20POSITION(`20esdfv,`20l_psindx),`20`20
X`20`20`20`20`20`20`20`20POSITION(`20esdfv,`20l_vector),`20`20
X`20`20`20`20`20`20`20`200,
X`20`20`20`20`20`20`20`20POSITION(`20esdfv,`20b_namlng),
X#define`20ESDFM_POS`202
X`20`20`20`20`20`20`20`20POSITION(`20esdfm,`20l_value),
X`20`20`20`20`20`20`20`20POSITION(`20esdfm,`20l_psindx),`20`20
X`20`20`20`20`20`20`20`20POSITION(`20esdfm,`20l_version_mask),`20`20
X`20`20`20`20`20`20`20`200,
X`20`20`20`20`20`20`20`20POSITION(`20esdfm,`20b_namlng),
X#define`20ESDFG_POS`203
X`20`20`20`20`20`20`20`20POSITION(`20egst,`20l_value),
X`20`20`20`20`20`20`20`20POSITION(`20egst,`20l_psindx),`20`20
X`20`20`20`20`20`20`20`20POSITION(`20egst,`20l_lp_1),`20`20
X`20`20`20`20`20`20`20`20POSITION(`20egst,`20l_lp_2),
X`20`20`20`20`20`20`20`20POSITION(`20egst,`20b_namlng),
X#define`20EGPS_POS`204
X`20`20`20`20`20`20`20`200,
X`20`20`20`20`20`20`20`200,`20`20
X`20`20`20`20`20`20`20`200,
X`20`20`20`20`20`20`20`20POSITION(`20egps,`20l_alloc),
X`20`20`20`20`20`20`20`20POSITION(`20egps,`20b_namlng),
X#define`20ESGPS_POS`205
X`20`20`20`20`20`20`20`20POSITION(`20esgps,`20l_value),
X`20`20`20`20`20`20`20`200,`20`20
X`20`20`20`20`20`20`20`20POSITION(`20esgps,`20l_base),`20`20
X`20`20`20`20`20`20`20`20POSITION(`20esgps,`20l_alloc),
X`20`20`20`20`20`20`20`20POSITION(`20esgps,`20b_namlng)
X`7D;
X#endif
X
Xstatic`20int`20`20`20`20`20`20vax_entry`5B`5D`5B5`5D`20=
X`7B
X/*`20Ordnung`20Literal-Procedure`20einhalten`20*/
X/*`20Literal`20*/
X#define`20SDF_POS`200
X`20`20`20`20`20`20`20`20POSITION(`20sdf,`20l_value),
X`20`20`20`20`20`20`20`200,`20
X`20`20`20`20`20`20`20`200,
X`20`20`20`20`20`20`20`20POSITION(`20sdf,`20b_namlng),`20
X`20`20`20`20`20`20`20`201,
X#define`20SRF_POS`201
X`20`20`20`20`20`20`20`200,
X`20`20`20`20`20`20`20`200,`20
X`20`20`20`20`20`20`20`200,
X`20`20`20`20`20`20`20`20POSITION(`20srf,`20b_namlng),`20
X`20`20`20`20`20`20`20`201,
X#define`20SDFW_POS`202
X`20`20`20`20`20`20`20`20POSITION(`20sdfw,`20l_value),
X`20`20`20`20`20`20`20`200,`20
X`20`20`20`20`20`20`20`200,
X`20`20`20`20`20`20`20`20POSITION(`20sdfw,`20b_namlng),`20
X`20`20`20`20`20`20`20`201,
X#define`20LSDF_POS`203
X`20`20`20`20`20`20`20`20POSITION(`20lsdf,`20l_value),
X`20`20`20`20`20`20`20`200,`20
X`20`20`20`20`20`20`20`200,
X`20`20`20`20`20`20`20`20POSITION(`20lsdf,`20b_namlng),`20
X`20`20`20`20`20`20`20`201,
X#define`20LSRF_POS`204
X`20`20`20`20`20`20`20`200,
X`20`20`20`20`20`20`20`200,`20
X`20`20`20`20`20`20`20`200,
X`20`20`20`20`20`20`20`20POSITION(`20lsrf,`20b_namlng),`20
X`20`20`20`20`20`20`20`201,
X#define`20SDFV_POS`205`20`20`20`20`20`20/*`20gilt`20auch`20als`20SDFM`20*/
X`20`20`20`20`20`20`20`20POSITION(`20sdfv,`20l_value),
X`20`20`20`20`20`20`20`200,
X`20`20`20`20`20`20`20`20POSITION(`20sdfv,`20l_vector),
X`20`20`20`20`20`20`20`20POSITION(`20sdfv,`20b_namlng),`20
X`20`20`20`20`20`20`20`201,
X/*`20Procedure`20*/
X#define`20EPM_POS`206
X`20`20`20`20`20`20`20`20POSITION(`20epm,`20l_addrs),
X`20`20`20`20`20`20`20`20POSITION(`20epm,`20w_mask),
X`20`20`20`20`20`20`20`200,`20
X`20`20`20`20`20`20`20`20POSITION(`20epm,`20b_namlng),`20
X`20`20`20`20`20`20`20`201,
X#define`20EPMW_POS`207
X`20`20`20`20`20`20`20`20POSITION(`20epmw,`20l_addrs),
X`20`20`20`20`20`20`20`20POSITION(`20epmw,`20w_mask),
X`20`20`20`20`20`20`20`200,`20
X`20`20`20`20`20`20`20`20POSITION(`20epmw,`20b_namlng),`20
X`20`20`20`20`20`20`20`201,
X#define`20LEPM_POS`208
X`20`20`20`20`20`20`20`20POSITION(`20lepm,`20l_addrs),
X`20`20`20`20`20`20`20`20POSITION(`20lepm,`20w_mask),
X`20`20`20`20`20`20`20`200,`20
X`20`20`20`20`20`20`20`20POSITION(`20lepm,`20b_namlng),`20
X`20`20`20`20`20`20`20`201,
X#define`20EPMV_POS`209`20`20`20`20`20`20/*`20gilt`20auch`20als`20EPMM`20*/
X`20`20`20`20`20`20`20`20POSITION(`20epmv,`20l_addrs),
X`20`20`20`20`20`20`20`20POSITION(`20epmv,`20w_mask),
X`20`20`20`20`20`20`20`20POSITION(`20epmv,`20l_vector),`20
X`20`20`20`20`20`20`20`20POSITION(`20epmv,`20b_namlng),`20
X`20`20`20`20`20`20`20`201,
X#define`20PRO_POS`2010
X`20`20`20`20`20`20`20`20POSITION(`20pro,`20l_addrs),
X`20`20`20`20`20`20`20`20POSITION(`20pro,`20w_mask),
X`20`20`20`20`20`20`20`200,`20
X`20`20`20`20`20`20`20`20POSITION(`20pro,`20b_namlng),`20
X`20`20`20`20`20`20`20`201,
X#define`20PROW_POS`2011
X`20`20`20`20`20`20`20`20POSITION(`20prow,`20l_addrs),
X`20`20`20`20`20`20`20`20POSITION(`20prow,`20w_mask),
X`20`20`20`20`20`20`20`200,`20
X`20`20`20`20`20`20`20`20POSITION(`20prow,`20b_namlng),`20
X`20`20`20`20`20`20`20`201,
X#define`20LPRO_POS`2012
X`20`20`20`20`20`20`20`20POSITION(`20lpro,`20l_addrs),
X`20`20`20`20`20`20`20`20POSITION(`20lpro,`20w_mask),
X`20`20`20`20`20`20`20`200,`20
X`20`20`20`20`20`20`20`20POSITION(`20lpro,`20b_namlng),`20
X`20`20`20`20`20`20`20`201,
X#define`20PROV_POS`2013`20`20`20`20`20/*`20gilt`20auch`20als`20PROM`20*/
X`20`20`20`20`20`20`20`20POSITION(`20prov,`20l_addrs),
X`20`20`20`20`20`20`20`20POSITION(`20prov,`20w_mask),
X`20`20`20`20`20`20`20`20POSITION(`20prov,`20l_vector),`20
X`20`20`20`20`20`20`20`20POSITION(`20prov,`20b_namlng),`20
X`20`20`20`20`20`20`20`201,
X/*`20die`20folgenden`203`20Eintr`E4ge`20m`FCssen`20GPS`20an`20erster`20Stelle
V`20haben`20und`20am`20Schlu`DF`20
X`20`20`20der`20Liste`20stehen`20*/
X#define`20GPS_POS`2014
X`20`20`20`20`20`20`20`200,
X`20`20`20`20`20`20`20`200,`20`20
X`20`20`20`20`20`20`20`200,
X`20`20`20`20`20`20`20`20POSITION(`20gps,`20b_namlng),
X`20`20`20`20`20`20`20`201,
X#define`20SGPS_POS`2015
X`20`20`20`20`20`20`20`200,
X`20`20`20`20`20`20`20`200,`20`20
X`20`20`20`20`20`20`20`200,
X`20`20`20`20`20`20`20`20POSITION(`20sgps,`20b_namlng),
X`20`20`20`20`20`20`20`201,
X#define`20IDC_POS`2016
X`20`20`20`20`20`20`20`200,
X`20`20`20`20`20`20`20`200,`20`20
X`20`20`20`20`20`20`20`200,
X`20`20`20`20`20`20`20`20POSITION(`20idc,`20b_namlng),
X`20`20`20`20`20`20`20`203,
X#define`20ENV_POS`2017
X`20`20`20`20`20`20`20`200,
X`20`20`20`20`20`20`20`200,`20`20
X`20`20`20`20`20`20`20`200,
X`20`20`20`20`20`20`20`20POSITION(`20env,`20b_namlng),
X`20`20`20`20`20`20`20`201
X`7D;
X#undef`20POSITION
X
X/*`20hol`20Name`20aus`20Feld`20*/
Xvoid`20get_name`20(char`20*feld,`20char`20**name_a,`20int`20*len_a)
X#define`20name`20(*name_a)
X#define`20len`20(*len_a)
X`7B
X`20`20`20`20`20`20`20`20len`20=`20*feld;
X`20`20`20`20`20`20`20`20name`20=`20malloc`20(len+1);
X`20`20`20`20`20`20`20`20strncpy`20(name,`20feld+1,`20len);
X`20`20`20`20`20`20`20`20name`5Blen`5D`20=`20'`5C0';
X`7D
X#undef`20name
X#undef`20len
X
X/*`20`FCberpr`FCfe`20Flags`20und`20mache`20Statistik`20*/
Xvoid`20attribute_statistic`20(int`20flags,`20int`20procedure,`20int`20local)
X`7B
X`20`20`20`20`20`20`20`20if`20(flags`20`26`201)`20weak_syms++;
X`20`20`20`20`20`20`20`20if`20(local)`20local_syms++;
X`20`20`20`20`20`20`20`20else`20if`20(flags`20`26`201<<2)`20universal_syms++;
X`20`20`20`20`20`20`20`20if`20(flags`20`26`201<<3)`20relocatable_syms++;
X`20`20`20`20`20`20`20`20if`20(procedure)`20procedure_syms++;
X`7D
X
X/*`20`FCberpr`FCfe,`20ob`20ID`20pa`DFt`20*/
Xint`20symbol_match`20(char`20*type,`20char`20*name,`20int`20namelen)
X`7B
X`20`20`20`20`20`20`20`20if`20(ID_SELECTIVE)`20`7B
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20$DESCRIPTOR`20(type_des,`20"")
V;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20type_des.dsc$a_pointer`20=`20t
Vype;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20type_des.dsc$w_length`20=`20st
Vrlen`20(type);
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20if`20(str$match_wild`20(`26typ
Ve_des,`20`26id_des)`20!=`20STR$_MATCH)`20`7B
XJ`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20return
V`200;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`20`20if`20(SYMBOL_SELECTIVE)`20`7B
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20$DESCRIPTOR`20(name_des,`20"")
V;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20name_des.dsc$a_pointer`20=`20n
Vame;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20name_des.dsc$w_length`20=`20na
Vmelen;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20if`20(str$match_wild`20(`26nam
Ve_des,`20`26symbol_des)`20!=`20STR$_MATCH)`20`7B
XJ`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20return
V`200;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`20`20`7D
XJ`20`20`20`20`20`20`20return`201;
X`7D
X
X#ifdef`20__alpha
X/*`20`20`20`20`20`20AXP:
X`20*`20`20`20`20`20`20Es`20wird`20`FCberpr`FCft,`20ob`20der`20`FCbergebene`20R
Vecord`20Header`20ein`20Module`20Header
X`20*`20`20`20`20`20`20vom`20Typ`20headertyp`20ist.
X`20*/
Xint`20emh`20(struct`20emhdef`20*header,`20int`20headertyp)
X`7B
X`20`20`20`20`20`20`20`20if`20(header->emh$w_rectyp`20!=`20EOBJ$C_EMH)`20`7B
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20return`200;`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20/*`20Der`20Record`20ist`20kein`20Header`20*/
X`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`20`20if`20(header->emh$w_hdrtyp`20!=`20headertyp)`20`7B
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20return`200;`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20/*`20Der`20Header`20hat`20den`20falschen`20Typ`20*/
V
X`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`20`20return`201;
X`7D
X#endif
X
X/*`20`20`20`20`20`20VAX:
X`20*`20`20`20`20`20`20Es`20wird`20`FCberpr`FCft,`20ob`20der`20`FCbergebene`20R
Vecord`20Header`20ein`20Module`20Header
X`20*`20`20`20`20`20`20vom`20Typ`20headertyp`20ist.
X`20*/
Xint`20mhd`20(struct`20mhdef`20*header,`20int`20headertyp)
X`7B
X`20`20`20`20`20`20`20`20if`20(header->mhd$b_rectyp`20!=`20OBJ$C_HDR)`20`7B
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20return`200;`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20/*`20Der`20Record`20ist`20kein`20Header`20*/
X`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`20`20if`20(header->mhd$b_hdrtyp`20!=`20headertyp)`20`7B
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20return`200;`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20/*`20Der`20Header`20hat`20den`20falschen`20Typ`20*/
V
X`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`20`20return`201;
X`7D
X
X#ifdef`20__alpha
X/*`20`20`20`20`20`20AXP:
X`20*`20`20`20`20`20`20Bearbeiten`20eines`20EGSD-Records
X`20*/
Xvoid`20egsd`20(char`20*buffer)
X`7B
X`20`20`20`20`20`20`20`20struct`20egsdef`20`20`20*gsdrecord`20=`20(struct`20egs
Vdef`20*)buffer;
X`20`20`20`20`20`20`20`20char`20`20`20`20*recordende;
X`20`20`20`20`20`20`20`20struct`20egsydef`20`20*subrecord`20=`20
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20(struc
Vt`20egsydef`20*)`26gsdrecord->egsd$w_gsdtyp;
X`20`20`20`20`20`20`20`20char`20`20`20`20*type;`20`20/*`20Typ`20des`20Subrecord
Vs`20*/
X`20`20`20`20`20`20`20`20int`20`20`20`20`20zeile;`20`20/*`20zu`20verwendende`20
VZeile`20in`20der`20Tabelle`20axp_entry`20*/
X`20`20`20`20`20`20`20`20int`20`20`20`20`20offset;`20/*`20Offset`20auf`20das`20
Vbenoetigte`20Feld`20im`20Subrecord`20*/
X`20`20`20`20`20`20`20`20int`20`20`20`20`20i;`20`20`20`20`20`20/*`20Z`E4hler`20
V*/
X`20`20`20`20`20`20`20`20int`20`20`20`20`20laenge;`20/*`20L`E4nge`20des`20Symbo
Vlnamens`20*/
X`20`20`20`20`20`20`20`20char`20`20`20`20*name;`20`20/*`20Name`20des`20Symbols
V`20*/
X`20`20`20`20`20`20`20`20$DESCRIPTOR`20(name_des,`20"");`20/*`20Descriptor`20de
Vsselben`20*/
X
X`20`20`20`20`20`20`20`20recordende`20=`20buffer`20+`20gsdrecord->egsd$w_recsiz
V;
X`20`20`20`20`20`20`20`20do`20`7B`20`20/*`20Eintr`E4ge`20durchgehen`20*/
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20/*`20`DCberpr`FCfen,`20ob`20Ei
Vntrag`20Auswahlkriterien`20gen`FCgt`20*/
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20switch`20(subrecord->egsy$w_gs
Vdtyp)
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`7B
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20EGSD$C_SYM`20:`20
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20EGSD$C_SYMV`20:`20
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20EGSD$C_SYMM`20:`20
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20EGSD$C_SYMG`20:`20
XJ`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20if`20(su
Vbrecord->egsy$v_def`20!=`201)`20goto`20next_record;
XJ`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20if`20((t
Vypesel`261)`20==`200)`20goto`20next_record;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20/*`201
V8.10.95`20auf`20next_record`20ge`E4ndert`20*/
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20break;
V
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20EGSD$C_PSC`20:`20
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20EGSD$C_SPSC`20:`20
XJ`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20if`20((t
Vypesel`262)`20==`200)`20goto`20next_record;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20/*`201
V8.10.95`20auf`20next_record`20ge`E4ndert`20*/
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20break;
V
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20default`20:`20
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20bad_re
Vcords++;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20putmsg
V`20(4,`20SYMBOLS$_BADREC,`202,`20records,`20
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20subrecord->egsy$w_gsdtyp);
XJ`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20return;
V
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20if`20(do_statistic)`20`7B
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20attrib
Vute_statistic`20(subrecord->egsy$w_flags,`20
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20subrecord->egsy$w_flags`20`26`201<<6,`200);
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`7D
XJ`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20if`20(FLAGTEST`20(subrecord->egs
Vy$w_flags)`20==`200)`20goto`20no_match;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20/*`20Eintrag`20f`FCr`20Ausgabe
V`20herrichten`20*/
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20switch`20(subrecord->egsy$w_gs
Vdtyp)
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`7B
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20EGSD$C_SYM`20:`20`20zei
Vle`20=`20ESDF_POS;`20`20type`20=`20"SYM";`20`20break;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20EGSD$C_SYMV`20:`20zeile
V`20=`20ESDFV_POS;`20type`20=`20"SYMV";`20break;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20EGSD$C_SYMM`20:`20zeile
V`20=`20ESDFM_POS;`20type`20=`20"SYMM";`20break;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20EGSD$C_SYMG`20:`20zeile
V`20=`20ESDFG_POS;`20type`20=`20"SYMG";`20break;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20EGSD$C_PSC`20:`20`20zei
Vle`20=`20EGPS_POS;`20`20type`20=`20"GPS";`20`20break;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20EGSD$C_SPSC`20:`20zeile
V`20=`20ESGPS_POS;`20type`20=`20"SGPS";`20break;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20/*`20Adresse`20des`20benoetigt
Ven`20Feldes`20im`20aktuellen`20Subrecord`20*/
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20#define`20FELD(type,o)`20(type
V`20*)((o)+(char`20*)subrecord)
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20/*`20Symbol`20ausgeben`20*/
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20offset`20=`20axp_entry`5Bzeile
V`5D`5B4`5D;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20get_name`20(FELD(char,offset),
V`20`26name,`20`26laenge);
XJ`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20if`20(!symbol_match`20(type,`20n
Vame,`20laenge))`20goto`20no_match;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20TO_FIFO`20(type);
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20TO_FIFO`20(name);
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20TO_FIFO`20(subrecord->egsy$w_f
Vlags);
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20TO_FIFO`20(0);
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20for`20(i=0;`20i<4;`20i++)`20
V`7B
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20offset
V`20=`20axp_entry`5Bzeile`5D`5Bi`5D;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20TO_FIF
VO`20(offset);
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20if`20(
Voffset`20!=0)`20TO_FIFO`20(*FELD(unsigned`20int,`20offset));
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20(*ausgabe`5Bausgabeformat`5D)
V`20();
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20free`20(name);
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20mod_sym.matched++;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20#undef`20FELD
Xno_match:`20`20`20`20`20`20`20
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20mod_sym.cnt++;
Xnext_record:
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20gsd_entries++;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20subrecord`20=`20(struct`20egsy
Vdef`20*)
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20((char
V`20*)subrecord`20+`20subrecord->egsy$w_size);
X`20`20`20`20`20`20`20`20`7D`20while`20((char`20*)subrecord`20<`20recordende);
V
X`7D
X#endif
X
X/*`20`20`20`20`20`20VAX:
X`20*`20`20`20`20`20`20Bearbeiten`20eines`20GSD-Records
X`20*/
Xvoid`20gsd`20(char`20*buffer,`20int`20size)
X`7B
X`20`20`20`20`20`20`20`20struct`20gsdef`20`20`20`20*gsdrecord`20=`20(struct`20g
Vsdef`20*)buffer;
X`20`20`20`20`20`20`20`20struct`20gsydef`20`20`20*subrecord`20=`20
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20(struc
Vt`20gsydef`20*)`26gsdrecord->gsd$b_gsdtyp;
X`20`20`20`20`20`20`20`20char`20`20`20`20*recordende;
X`20`20`20`20`20`20`20`20char`20`20`20`20*type;`20`20/*`20Typ`20des`20Subrecord
Vs`20*/
X`20`20`20`20`20`20`20`20$DESCRIPTOR`20(type_des,`20"");`20/*`20Descriptor`20de
Vsselben`20*/
X`20`20`20`20`20`20`20`20int`20`20`20`20`20local;`20`20/*`20local`20oder`20nich
Vt`20*/
X`20`20`20`20`20`20`20`20int`20`20`20`20`20zeile;`20`20/*`20zu`20verwendende`20
VZeile`20in`20der`20Tabelle`20vax_entry`20*/
X`20`20`20`20`20`20`20`20int`20`20`20`20`20offset;`20/*`20Offset`20auf`20das`20
Vbenoetigte`20Feld`20im`20Subrecord`20*/
X`20`20`20`20`20`20`20`20int`20`20`20`20`20i;`20`20`20`20`20`20/*`20Z`E4hler`20
V*/
X`20`20`20`20`20`20`20`20int`20`20`20`20`20laenge;`20/*`20L`E4nge`20des`20Symbo
Vlnamens`20*/
X`20`20`20`20`20`20`20`20char`20`20`20`20*name;`20`20/*`20Name`20des`20Symbols
V`20*/
X`20`20`20`20`20`20`20`20$DESCRIPTOR`20(name_des,`20"");`20/*`20Descriptor`20de
Vsselben`20*/
X
X`20`20`20`20`20`20`20`20recordende`20=`20buffer`20+`20size;
X`20`20`20`20`20`20`20`20do`20`7B`20`20/*`20Eintr`E4ge`20durchgehen`20*/
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20local`20=`200;`20`20/*`20Annah
Vme,`20wird`20ev.`20widerlegt`20:-)`20*/
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20/*`20Siebe`20Referenzen`20und
V`20ung`FCltige`20Eintr`E4ge`20aus`20*/
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20switch`20(subrecord->gsy$b_gsd
Vtyp)
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`7B
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20OBJ$C_GSD_SYM`20`20:
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20OBJ$C_GSD_EPM`20`20:
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20OBJ$C_GSD_PRO`20`20:
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20OBJ$C_GSD_SYMW`20:
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20OBJ$C_GSD_EPMW`20:
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20OBJ$C_GSD_PROW`20:
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20OBJ$C_GSD_SYMV`20:
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20OBJ$C_GSD_SYMM`20:
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20OBJ$C_GSD_EPMV`20:
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20OBJ$C_GSD_EPMM`20:
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20OBJ$C_GSD_PROM`20:
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20OBJ$C_GSD_PROV`20:
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20if`20(
Vsubrecord->gsy$v_def`20!=`201)`20`7B
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20zeile`20=`20SRF_POS;
X`20`20`20`20`20`20`20`20J`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20goto`20next_record;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20J`20`20`20`20`20`20`20break;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20OBJ$C_GSD_LSY`20`20:
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20OBJ$C_GSD_LEPM`20:
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20OBJ$C_GSD_LPRO`20:
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20if`20(
Vsubrecord->gsy$v_def`20!=`201)`20`7B
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20zeile`20=`20LSRF_POS;
X`20`20`20`20`20`20`20`20J`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20goto`20next_record;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20local
V`20=`201;`20`20/*`20wu`DFt`20ich's`20doch`20;-)`20*/
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20J`20`20`20`20`20`20`20break;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20OBJ$C_GSD_PSC`20:
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20OBJ$C_GSD_SPSC`20:
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20OBJ$C_GSD_IDC`20:
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20OBJ$C_GSD_ENV`20:
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20break;
V
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20default`20:`20
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20bad_re
Vcords++;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20putmsg
V`20(4,`20SYMBOLS$_BADREC,`202,`20records,`20
+-+-+-+-+-+-+-+- END OF PART 1 +-+-+-+-+-+-+-+-

0 new messages