Category : Miscellaneous Language Source Code
Archive   : LIBRY51.ZIP
Filename : LIBRY1.DOC

 
Output of file : LIBRY1.DOC contained in archive : LIBRY51.ZIP

.pn 1
.pa
REQUIREMENTS AND CONVENTIONS

LIBRY is an indexed collection of object modules that can be linked to other
FORTRAN object modules. An object module is a binary file produced by a
compiler that contains machine instructions, data, and linker flags. LIBRY
contains object modules written in both assembler and FORTRAN. The linker will
take the object module created by your FORTRAN compiler, add to it what it
needs from LIBRY, and create an executable module. In order to run any
program, you must convert it through these steps into an executable module
(unless you are running interpretive BASIC). LIBRY is also compatible with a
few other programming languages; however, BASIC is not one of these. If all
you have is BASIC don't bother reading any further. LIBRY is only available in
object module form (the source codes are not available under any
circumstances).

On the PC, LIBRY is contained in the file LIBRY.LIB. On the HP-1000F, LIBRY is
contained in the file %LIBRY. On the HP-A900, LIBRY is contained in the file
LIBRY.REL.

In order to produce a compatible object module, you must have a Microsoft
FORTRAN compiler (version 3.31 or later) or HP FTN7X. In order to link your
object module and LIBRY, you must have a Microsoft linker (LINK version 3.0 or
later - I don't know what versions of LINK that come with DOS are compatible -
you get LINK when you purchase FORTRAN anyway) or HP LOADR or LINK. Your LINK
(or DOS) manual will tell you how to access a library. Refer to the LOADR or
LINK manuals for HP applications.

If you are using a PC you also need two other libraries that come with
Microsoft FORTRAN (FORTRAN.LIB and MATH.LIB). Do not attempt to link
LIBRY.LIB with an object module created by a FORTRAN compiler other than
Microsoft's. Do not attempt to link LIBRY.LIB with an object module created
by anyone's BASIC compiler. Do not attempt to link LIBRY.LIB with either of
the two optional math libraries that come with Microsoft FORTRAN (8087.LIB or
ALTMATH.LIB).

If you are using Microsoft FORTRAN don't use any of the following metacommands
in your FORTRAN source code: $LARGE, $DECMATH, $NOFLOATCALLS, or $STORAGE:4
as they will make your object module incompatible with LIBRY.LIB.

All integers passed to LIBRY routines must be of the type INTEGER*2. Put

IMPLICIT INTEGER*2 (I-N)

in EVERY program segment (this greatly increases speed too). You must use the
"/FPi" and "/4I2" options when using Microsoft FORTRAN/V4.0 or later. All
reals must be of the type REAL*4. Put

IMPLICIT REAL*4 (A-H,O-Z)

in EVERY program segment. All double precision reals must be of the type
REAL*8. Put

IMPLICIT REAL*8 (A-H,O-Z)

in each program segment where double precision reals are used. Remember that
all double precision constants must have a "D" in them in order to allocate
the proper space (don't pass "0." as a constant to a routine expecting a
double precision real - use "0.D0"). All logicals must be of the type
LOGICAL*2. Character variables can be of any length (I hate FORTRAN compilers
that permit only fixed length character variables so I do all character
manipulation in assembler).

If you are using a PC you don't need a math coprocessor (Intel 8087/287/387)
in order to run a program linked with LIBRY; but it makes a TREMENDOUS
difference (a factor of 20 to 120 for floating point operations). The vector
emulations will run even without a math coprocessor; but in that case the
speed is already so slow that nothing will help. The improvement in speed with
the vector emulations varies depending on the relative speed of your processor
and coprocessor (not MHz speed but MIPS and FLOPS - a 5MHz-80286 is quite a
bit faster than a 5MHz-8088 while a 5MHz-8087 is just as fast as a 5MHz
80287). The greatest improvement is realized on a PC with a
5MHz-8088/5MHz-8087 pair; and the least improvement is realized on an AT with
an 8MHz-80286/5MHz-80287 pair.