[GPF Home Page]

Download Page

(for Fortran General Purpose Fortran Collection)

There is one file to download for the libGPF library - GPF.tgz . This includes

My own FAQ on Fortran is also available, with links to other Fortran resources.

Assuming a recent version of gfortran is on your system you can download the file and place it in an empty directory and enter

   tar xvfz GPF.tgz

   # if you are not on a platform with X11, ncurses, readline, and
   # sqlite you might have to remove some of the files from the 
   # Makefile, and change the compiler and loader options if not
   # using gfortran(1) and gcc(1). It is usually easiest to try
   # it and then handle any failures individually ...

     make

   # you might want to edit hershey.sh to select where hershey
   # font files will be installed (default is /usr/share/hershey), 
   # and then enter ...

     bash hershey.sh

   # if you do not have bash or a Posix shell you will have to run
   # the h2v program for each font, as illustrated by the simple
   # hershey.sh script.

   # By default, the graphics routines require X11, the ncurses interface
   # assumes libncurses is installed, the SQLite3 interface needs the
   # libsqlite3 library, and the readline interface needs libreadline.
   # These libraries are commonly available on many platforms but you
   # may have to remove some of the files from the makefile and the
   # compile if you do not want to build those interfaces, or install
   # these libraries.

This will compile the GPF procedures and sample utility programs.

For other programming environments you will need to change the lines in the Makefile that define the compiler command. Many Fortran 2003 features are required. Recently, I have only tested with GNU Fortran (GCC) 7.3.0 .

Note to run the graphics programs you generally have to set some environmental variables. Some examples:

      export M_DRAW_FONTLIB=/usr/share/hershey
      export M_DRAW_DEVICE=X11
      export M_DRAW_OUTPUT=out.pdf
            or
      export M_DRAW_OUTPUT="|ppmtogif > out.gif"
   # Totally optionally, to build all the sample programs including
   # the small sample programs from the man(1) pages

     #!/bin/bash
     make PROGFILES="$(find PROGRAMS -name '*.f90' ! -empty)" -j 10

MAN pages:

The man(1) pages are particularly useful when working with the code files when used with editors such as vim(1) and emacs(1). Several editors can now look up and display the man(1) pages for a routine from inside the editors. Place your cursor over a function name in the example programs and enter "K" in vim(1) to access the man(1) page for a procedure, for example. Typically, you set the MANPATH environment variable to include the full pathname to the man/ directory first. Something like

      export MANPATH=/home/$USER/GPF/man:$MANPATH::
   
(assuming you installed the source in /home/$USER/GPF) will work, depending on what shell you are using.


HTML pages:

HTML documents are the most complete reference, as they include some higher-level overviews of the larger module files that are not currently included in the man(1) pages. Otherwise, the HTML documents are for the most part generated from the man(1) pages.

Special HTML files use javascript to append groups of the HTML documents into a single manual.

BOOK_ARGUMENTS BOOK_FORTRAN BOOK_INDEX
BOOK_M_Compare_Float_Numbers BOOK_M_calcomp BOOK_M_calculator
BOOK_M_color BOOK_M_debug BOOK_M_display
BOOK_M_draw BOOK_M_drawplus BOOK_M_factor
BOOK_M_io BOOK_M_journal BOOK_M_list
BOOK_M_logic BOOK_M_math BOOK_M_messages
BOOK_M_pixel BOOK_M_process BOOK_M_regex
BOOK_M_sort BOOK_M_sqlite BOOK_M_steam67
BOOK_M_stopwatch BOOK_M_strings BOOK_M_system
BOOK_M_time BOOK_M_units BOOK_M_xterm
BOOK_M_xyplot    

Alphabetical listing of HTML documents:

_cmp.1 _colrm.1 _dirname.1
_echo.1 _false.1 _fmt.1
_grep.1 _hostname.1 _kill.1
_ln.1 _logname.1 _ls.1
_mat.1 _mv.1 _printenv.1
_pwd.1 _rename.1 _rm.1
_rmdir.1 _sleep.1 _stat.1
_time.1 _touch.1 _true.1
_tty.1 _uname.1 _unlink.1
_uuidgen.1 _which.1 _whoami.1
_yes.1 abs.3fortran accdig.3
achar.3fortran acos.3fortran acosd.3
acosh.3fortran adjustc.3 adjustl.3fortran
adjustr.3fortran aimag.3fortran aint.3fortran
all.3fortran allocate.7fortran allocated.3fortran
almost.3 alphabet.1 anint.3fortran
any.3fortran anyinteger_to_64bit.3 anyscalar_to_double.3
anyscalar_to_real.3 anything_to_bytes.3 arc.3m_draw
arc.3m_pixel ARGUMENTS.3 array_constructors.7fortran
arrowhead.3m_drawplus asa2pdf.1 asin.3fortran
asind.3 asinh.3fortran associate.7fortran
associated.3fortran atan.3fortran atan2.3fortran
atan2d.3 atand.3 atanh.3fortran
atleast.3 atomic_add.3fortran atomic_and.3fortran
atomic_cas.3fortran atomic_define.3fortran atomic_fetch_add.3fortran
atomic_fetch_and.3fortran atomic_fetch_or.3fortran atomic_fetch_xor.3fortran
atomic_or.3fortran atomic_ref.3fortran atomic_xor.3fortran
atomnum2symbol.3 axis.3m_calcomp b3hs_hash_key_jenkins.3
backbuffer.3m_draw backface.3m_draw backfacedir.3m_draw
backspace.7fortran base.1 base.3
bds.3 bessel_j0.3fortran bessel_j1.3fortran
bessel_jn.3fortran bessel_y0.3fortran bessel_y1.3fortran
bessel_yn.3fortran bge.3fortran bgt.3fortran
binary_search.3 bit_size.3fortran ble.3fortran
block.7fortran blocks.3 blt.3fortran
BOOK_ARGUMENTS BOOK_FORTRAN BOOK_INDEX
BOOK_M_calcomp BOOK_M_calculator BOOK_M_color
BOOK_M_Compare_Float_Numbers BOOK_M_debug BOOK_M_display
BOOK_M_draw BOOK_M_drawplus BOOK_M_factor
BOOK_M_io BOOK_M_journal BOOK_M_list
BOOK_M_logic BOOK_M_math BOOK_M_messages
BOOK_M_pixel BOOK_M_process BOOK_M_regex
BOOK_M_sort BOOK_M_sqlite BOOK_M_steam67
BOOK_M_stopwatch BOOK_M_strings BOOK_M_system
BOOK_M_time BOOK_M_units BOOK_M_xterm
BOOK_M_xyplot bottomjustify.3m_draw box_month.3
boxfit.3m_draw boxtext.3m_draw btest.3fortran
c_associated.3fortran c_f_pointer.3fortran c_f_procpointer.3fortran
c_funloc.3fortran c_loc.3fortran c_sizeof.3fortran
c2f.3 c2s.3 call_draw.3m_drawplus
callobj.3m_draw cartesian_to_polar.3 cartesian_to_spherical.3
case.7fortran ceiling.3fortran centertext.3m_draw
centertext.3m_pixel change.1 change.3
char.3fortran checkkey.3m_draw chomp.3
choose.1 cincinatti_chili.7 circl.3m_calcomp
circle.3m_draw circle.3m_pixel circleprecision.3m_draw
circleprecision.3m_pixel citer.3 clear.3m_draw
clear.3m_pixel clipping.3m_draw clock.1m_draw
closeobj.3m_draw closepoly.3m_draw closepoly.3m_pixel
closest_color_name.3 cmplx.3fortran cn.1
cntour.3m_calcomp co_broadcast.3fortran co_lbound.3fortran
co_max.3fortran co_min.3fortran co_reduce.3fortran
co_sum.3fortran co_ubound.3fortran codebase.3
color.3m_draw color.3m_pixel color_name2rgb.3
color_wheel.1 colors.1 command_argument_count.3fortran
compact.3 compiler_options.3fortran compiler_version.3fortran
compute.1 cond.3 condl67.3m_steam67
condv67.3m_steam67 conjg.3fortran continue.7fortran
contourlines.3 cos.3fortran cosd.3
cosh.3fortran count.3fortran cpl67.3m_steam67
cprint.1 cpu_time.3fortran cpv67.3m_steam67
crc32_hash.3 create_watch.3 create_watchgroup.3
crflo67.3m_steam67 critvs.3m_steam67 critvw67.3m_steam67
crop.3 crvel67.3m_steam67 cshift.3fortran
csv_write_row.3 csv_write_table.3 curve.3m_draw
curvebasis.3m_draw curven.3m_draw curveprecision.3m_draw
curvx.3m_calcomp curvy.3m_calcomp cycle.7fortran
d2j.3 d2o.3 d2r.3
d2u.3 d2w.3 dashcode.3m_draw
dashl.3m_calcomp dashp.3m_calcomp data.7fortran
date_and_time.3fortran date_to_julian.3 date_to_unix.3
days2sec.1 days2sec.3 dble.3fortran
deallocate.7fortran decodebase.3 degrees.1
delim.3 delobj.3m_draw describe.3
destroy_watch.3 destroy_watchgroup.3 deviled_eggs.7
dget.3 dgets.3 digits.3fortran
dim.3fortran dirname.3 dirtys_sha256.3
disp.3 disp_get.3 disp_set.3
dissect.3 djb2_hash.3 dl_init.3m_slices
dl_slices.3 dl_slices.3m_slices dl_symbol.3m_slices
dnum0.3 do.7fortran dot_product.3fortran
dow.3 download dp_accdig.3
dprod.3fortran draw.1 draw.3m_draw
draw_interpret.3m_drawplus draw2.3m_draw draw2.3m_pixel
drawchar.3m_draw drawchar.3m_pixel drawstr.3m_draw
drawstr.3m_pixel dshiftl.3fortran dshiftr.3fortran
dtu.1 easter.1 easter.3
elips.3m_calcomp ellipse.3m_drawplus empty.3
end_pause_watch.3 endselect.7fortran envelope.3
eoshift.3fortran ephemeris.3 epsilon.3fortran
erf.3fortran erfc.3fortran erfc_scaled.3fortran
event_query.3fortran example_text_justification.7m_draw exchange.1
execute_command_line.3fortran exit.7fortran exp.3fortran
expand.3 expandviewport.3m_draw explain.1
exponent.3fortran extends_type_of.3fortran extremum.3
f2c.3 factor.3m_calcomp factors.1
faq.7 feet_to_meters.3 ffmt.1
fileglob.3 findll.1 findloc.3fortran
fit.3m_calcomp fixedform.1 fixedwidth.3m_draw
fline.3m_calcomp float.3fortran floor.3fortran
flush.7fortran fmt.3 fmtdate.3
fmtdate_usage.3 font.3m_draw font.3m_pixel
format.3fortran fortran.7fortran fortran_continuation_line.7fortran
fortran_recursion.7fortran fraction.3fortran free_source_form.7fortran
frontbuffer.3m_draw fseq.1 fstop.3m_debug
gamma.3fortran gcd.1 generate_uuid.3
genobj.3m_draw geographical_distance.3 get_command.3fortran
get_command_argument.3fortran get_command_arguments_stack.3 get_command_arguments_string.3
get_environment_variable.3fortran get_tmp.3 getaspect.3m_draw
getcharsize.3m_draw getdepth.3m_draw getdisplaysize.3m_draw
getdisplaysize.3m_pixel getfactors.3m_draw getfontdec.3m_draw
getfontsize.3m_draw getgp.3m_draw getgp2.3m_draw
getgp2.3m_pixel getgpt.3m_draw getkey.3m_draw
getopenobj.3m_draw getstring.3m_draw getvals.3
getvalue.3 getviewport.3m_draw getviewport.3m_pixel
gotoer67.3m_steam67 gr167.3m_steam67 greatest_common_divisor.3
grid.3m_calcomp grs67.3m_steam67
guessdate.3    
h_array.3 h_close.3 h_open.3
hasher.1 hatchang.3m_draw hatchpitch.3m_draw
hcl67.3m_steam67 hcsl67.3m_steam67 hcslv267.3m_steam67
hcslvl67.3m_steam67 hello.7 hershey.3m_pixel
hisiss67.3m_steam67 hpsiss67.3m_steam67 hsl67.3m_steam67
hss167.3m_steam67 hss67.3m_steam67 hssicl67.3m_steam67
hssiss67.3m_steam67 hsv67.3m_steam67 hue.3
huegif.1 huge.3fortran hypocycloidal.1
hypot.3fortran i_is_prime.3 iachar.3fortran
iall.3fortran iand.3fortran iany.3fortran
ibclr.3fortran ibits.3fortran ibset.3fortran
ichar.3fortran ieor.3fortran if.7fortran
iget.3 igets.3 igetvalue.3
illusion.3 image_index.3fortran implicit.7fortran
implied_do.7fortran in_margin.3 include.7fortran
indent.3 index.3fortran inf.3
init_random_seed.3 init_random_seed_by_dat.3 init_random_seed_by_system_clock.3
initialize_arrays.7fortran inpolygon.3 inquire.7fortran
inquiry_stopwatch.3 insert.3 int.3fortran
intrinsics.1 intrinsics.1fortran intrinsics.7fortran
intrinsics_project.7fortran intro_blas1.3 inum0.3
invert_2x2.3 invert_3x3.3 invert_4x4.3
invokeobj.3m_drawplus ior.3fortran iparity.3fortran
is_contiguous.3fortran is_even.3 is_iostat_end.3fortran
is_iostat_eor.3fortran is_nan.3 isalnum.3
isalpha.3 isascii.3 isblank.3
iscntrl.3 isdigit.3 isdir.3
isgraph.3 ishft.3fortran ishftc.3fortran
islower.3 isnumber.3 iso_c_binding.7fortran
iso_fortran_env.7fortran isobj.3m_draw isprint.3
ispunct.3 isspace.3 isupper.3
isxdigit.3 j2d.3 join.3
join_watchgroup.3 journal.3 jucalc.3
jucalcx.3 julfit.3 julian_to_date.3
junbad.3 junbat.3 junbuster.3
jundragon.3 junroach.3 junsun.3
juntrolls.3 justfy.3m_pixel kind.3fortran
kracken.3 lasagna.7 lbound.3fortran
lcm.1 leadz.3fortran least_common_multiple.3
leave_watchgroup.3 leftjustify.3m_draw len.3fortran
len_trim.3fortran len_white.3 lenset.3
lgaxs.3m_calcomp lge.3fortran lget.3
lgets.3 lglin.3m_calcomp lgt.3fortran
line.3m_calcomp line.3m_pixel linearint.3
linestyle.3m_draw linewidth.3m_draw linewidth.3m_pixel
list_free.3 list_get.3 list_init.3
list_insert.3 list_next.3 list_put.3
listout.3 lle.3fortran llt.3fortran
loadobj.3m_draw locate.3 locator.3m_draw
locpt.3 log.3fortran log_gamma.3fortran
log10.3fortran logical.3fortran lookat.3m_draw
lower.3 lowess.3 lsup.1
luhn_checksum.3 M_big_integer.3 M_calcomp.3m_calcomp
M_calculator.3 M_calculator_example.3 M_calculator_plus.3
M_calculator_programmer_notes.3 M_color.3 M_Compare_Float_Numbers.3
M_debug.3m_debug M_display.3 M_draw.3m_draw
M_drawplus.3m_drawplus M_f2kcli.3 M_factor.3
M_fixedform.3 M_generic_list.3 M_getopt.3
M_getopt_long.3 M_html.3 M_io.3
M_journal.3 M_kracken.3 M_list.3
M_logic.3 M_lua.3 M_math.3
M_messages.3 M_overload.3 M_pixel.3m_pixel
M_process.3 M_random.3 M_readline.3
M_regex.3 M_sha3.3 M_sort.3
M_sqlite.3 M_steam67.3m_steam67 M_stopwatch.3
M_strings.3 M_system.3 M_time.3
M_units.3 M_uuid.3 M_xterm.3
mac_and_cheese.7 magic_square.3 makeobj.3m_draw
makeout.1 makepoly.3m_draw makepoly.3m_pixel
man1 man2 man3
man3i man4 man5
man6 man7 man8
manup.1 mapcolor.3m_draw mapcolor.3m_pixel
maskl.3fortran maskr.3fortran mat88.3m_matrix
matchw.3 matmul.3fortran max.3fortran
maxexponent.3fortran maxloc.3fortran maxval.3fortran
merge.3fortran merge_bits.3fortran merge_str.3
meters_to_feet.3 min.3fortran minefield.1m_draw
minexponent.3fortran minloc.3fortran minval.3fortran
mo2d.3 mo2v.3 mod.3fortran
model.1 modif.3 modulo.3fortran
month.1 moon_fullness.3 move.3m_draw
move_alloc.3fortran move2.3m_draw move2.3m_pixel
msg.3 msg.3m_debug mtprng_init.3
mtprng_init_by_array.3 mtprng_rand.3 mtprng_rand_range.3
mtprng_rand_real1.3 mtprng_rand_real2.3 mtprng_rand_real3.3
mtprng_rand64.3 mvbits.3fortran namelist.7fortran
nan.3 nc2html.1 ncr.3
nearest.3fortran needs.7fortran new_line.3fortran
newpen.3m_calcomp nframe.3m_calcomp nint.3fortran
noesc.3 norm_angle_360.3 norm_angle_rad.3
norm2.3fortran nospace.3 not.3fortran
notabs.1 notabs.3 note.1
notopen.3 now.1 now.3
null.3fortran nullify.7fortran num_images.3fortran
number.3m_calcomp numchars.3m_draw numdiff.1
o2d.3 open.7fortran option_stopwatch.3
ordinal_to_date.3 ortho.3m_draw ortho2.3m_draw
ortho2.3m_pixel p23t67.3m_steam67 pack.3fortran
page.3M_drawplus page.3m_pixel pancakes.7
paranoid.1 parity.3fortran parse.3
patch.3m_draw patchbasis.3m_draw patchcurves.3m_draw
patchprecision.3m_draw path.3 pause_watch.3
paws.1 pdec.3m_debug pendulum.1
penv.1 percent_done.3 perspective.3m_draw
phase_of_moon.3 planets.1 plot.3m_calcomp
plots.3m_calcomp pls67.3m_steam67 point.3m_draw
point2.3m_draw point2.3m_pixel pointers.7fortran
polar.3m_calcomp polar_to_cartesian.3 polarview.3m_draw
poly.3m_calcomp poly.3m_draw poly_intercept.3
poly2.3m_draw poly2.3m_pixel polyarea.3
polyarea_shoelace.3 polyfill.3m_draw polyhatch.3m_draw
polyline2.3m_drawplus polyline2.3m_pixel pop.3m_drawplus
popattributes.3m_draw popcnt.3fortran popdev.3m_draw
popmatrix.3m_draw poppar.3fortran popviewport.3m_draw
pounds_to_kilograms.3 ppm.5 precision.3fortran
prefposition.3m_draw prefsize.3m_draw prefsize.3m_pixel
present.3fortran prime_factors.3 print_ascii.3m_pixel
print_inquire.3 print_ppm.3m_pixel print_watch.3
prliq67.3m_steam67 process_close.3 process_open_read.3
process_open_write.3 process_readall.3 process_readline.3
process_writeline.3 product.3fortran protected.7fortran
prstm67.3m_steam67 psl167.3m_steam67 psl67.3m_steam67
psv167.3m_steam67 psv267.3m_steam67 psv67.3m_steam67
pumpkin_roll.7 pure.7fortran push.3m_drawplus
pushattributes.3m_draw pushdev.3m_draw pushmatrix.3m_draw
pushviewport.3m_draw quadratic.1 quadratic.3
r2d.3 radix.3fortran random_hex.3
random_kiss64.3 random_number.3fortran random_permutation.3
random_seed.3fortran random_string.3 range.1
   
range.3fortran rank.3fortran rcurve.3m_draw
rd.3 rdbox.3 rdpnt.3
rdraw.3m_draw rdraw2.3m_draw rdraw2.3m_pixel
read_all.3 read_line.3 read_table.3
read_watch.3 readgif.3 real.3fortran
recipes.7 rect.3m_calcomp rect.3m_draw
rect.3m_pixel redo.3 regcomp.3
regerror.3 regexec.3 regfree.3
regmatch.3 regsub.3 remove.3
rep.1 repeat.3fortran replace.3
reset_watch.3 reshape.3fortran retrev.3
rever.1 reverse.3 rewind.7fortran
rgbmono.3 rget.3 rgets.3
rgetvalue.3 rightjustify.3m_draw rmove.3m_draw
rmove2.3m_draw rmove2.3m_pixel rnum0.3
rotate.3m_draw rpatch.3m_draw rrspacing.3fortran
rsdraw2.3m_draw rsmove2.3m_draw s2c.3
s2v.3 s2vs.3 same_type_as.3fortran
save.7fortran saveobj.3m_draw scale.3fortran
scale.3m_calcomp scale.3m_draw scale1.3
scale3.3 scalg.3m_calcomp scan.3fortran
scramble.3 scratch.3 scratch.7fortran
sdbm_hash.3 sdraw2.3m_draw sec2days.1
sec2days.3 sector.3m_draw seefont.1
seefont.3m_drawplus select.7fortran selected_char_kind.3fortran
selected_int_kind.3fortran selected_real_kind.3fortran set_environment_variable.3
set_exponent.3fortran setprompts.3 setxt.1
sget.3 sgetgp2.3m_draw sgets.3
sha256.3 shape.3fortran shell.1
shifta.3fortran shiftl.3fortran shiftr.3fortran
show.3 sign.3fortran sign.7fortran
signs.3 sin.3fortran sind.3
sinh.3fortran sisiss67.3m_steam67 size.3fortran
skekur1.3 skekurx.3 slice.1m_draw
slocator.3m_draw slurp.3 smoot.3m_calcomp
smove2.3m_draw sngl.3fortran snum0.3
soft_pretzel.7 sort_quick_rx.3 sort_shell.3
spacing.3fortran spherical_to_cartesian.3 spirograph.3m_drawplus
splift.3 splint.3 split.3
splitname.1 splitpath.3 spread.3fortran
spsiss67.3m_steam67 sqlite3_begin.3 sqlite3_close.3
sqlite3_column_props.3 sqlite3_column_query.3 sqlite3_commit.3
sqlite3_create_table.3 sqlite3_delete_table.3 sqlite3_do.3
sqlite3_errmsg.3 sqlite3_error.3 sqlite3_finalize.3
sqlite3_get_column.3 sqlite3_get_table.3 sqlite3_insert.3
sqlite3_libversion.3 sqlite3_libversion_number.3 sqlite3_next_row.3
sqlite3_open.3 sqlite3_prepare.3 sqlite3_prepare_select.3
sqlite3_query_table.3 sqlite3_reset.3 sqlite3_rollback.3
sqlite3_set_column.3 sqlite3_sourceid.3 sqlite3_step.3
sqrt.3fortran ssl67.3m_steam67 sssicl67.3m_steam67
sssiss67.3m_steam67 start_watch.3 state.3m_pixel
stddev.3 stderr.3m_debug steamv67.3m_steam67
ster67.3m_steam67 stop.7fortran stop_watch.3
storage_size.3fortran store.3 strgar2.3
strgarr.3 string_to_value.3 string_to_values.3
strlength.3m_draw strlength.3m_pixel strtok.3
stuff.3 stuffa.3 substitute.3
sum.3fortran swallow.3 swap.3
swapbuffers.3m_draw switch.3 symbol.3m_calcomp
symbol2atomnum.3 system_access.3 system_chdir.3
system_chmod.3 system_chown.3 system_clearenv.3
system_clock.3fortran system_closedir.3 system_cpu_time.3
system_errno.3 system_getcwd.3 system_getegid.3
system_getenv.3 system_geteuid.3 system_getgid.3
system_getgrgid.3 system_gethostname.3 system_getkey.3
system_getlogin.3 system_getpid.3 system_getppid.3
system_getpwuid.3 system_getsid.3 system_getuid.3
system_getumask.3 system_initenv.3 system_isblk.3
system_ischr.3 system_isdir.3 system_isfifo.3
system_islnk.3 system_isreg.3 system_issock.3
system_kill.3 system_link.3 system_mkdir.3
system_mkfifo.3 system_opendir.3 system_perm.3
system_perror.3 system_putenv.3 system_rand.3
system_readdir.3 system_readenv.3 system_readline.3
system_realpath.3 system_remove.3 system_rename.3
system_rewinddir.3 system_rmdir.3 system_setsid.3
system_setumask.3 system_sleep.3 system_srand.3
system_stat.3 system_stat_print.3 system_uname.3
system_unlink.3 system_unsetenv.3 system_utime.3
t2m.1 tabgraph.3 table2html.1
tabulate.1 tan.3fortran tand.3
tanh.3fortran target.1 textang.3m_draw
textang.3m_pixel textjustify.3m_draw textsize.3m_draw
textsize.3m_pixel textslant.3m_draw textweight.3m_draw
this_image.3fortran tiny.3fortran today.1
topic.1 topjustify.3m_draw tostring.3
tostring_disp_factory.3 tostring_set.3 tostring_set_factory.3
tph67.3m_steam67 tphl67.3m_steam67 tps67.3m_steam67
tpsl67.3m_steam67 trailz.3fortran transfer.3fortran
translate.3m_draw transliterate.3 transpose.3fortran
triangle.1 trim.3fortran tsl167.3m_steam67
tsl67.3m_steam67 tslh67.3m_steam67 ttee.1
txt2man.1 u2d.3 uarc.3m_drawplus
ubound.3fortran uconic.3m_drawplus ufpp.1
ufpp_overview.7 unexpandviewport.3m_draw unicode_example1.1
uniq.3 unique.3 unit_check.3m_debug
unit_check_bad.3m_debug unit_check_done.3m_debug unit_check_good.3m_debug
unit_check_msg.3m_debug unit_check_start.3m_debug unix_to_date.3
unpack.3fortran unquote.3 up.3m_draw
upper.3 use.7fortran v2mo.3
v2s.3 value_to_string.3 vcl67.3m_steam67
verify.3fortran vest67.3m_steam67 vexit.3m_draw
vexit.3m_pixel vflush.3m_draw vgetdev.3m_draw
viewport.3m_draw viewport.3m_pixel vinit.3m_draw
vinit.3m_pixel visible.3 visl67.3m_steam67
visv67.3m_steam67 vliq67.3m_steam67 vnewdev.3m_draw
voutput.3m_draw vsetflush.3m_draw vsl67.3m_steam67
w2d.3 what.1 what_overview.7
where.3m_calcomp where.7fortran width.3m_calcomp
window.3m_draw write_animated_gif.3 writegif.3
xauth_key.1 xcentertext.3m_draw xcentertext.3m_pixel
xterm_clear.3 xterm_colors.3 xterm_font.3
xterm_geometry.3 xterm_get_colors.3 xterm_get_font.3
xterm_get_geometry.3 xterm_get_iconstate.3 xterm_get_pencolor.3
xterm_get_position.3 xterm_keywords.3 xterm_labels.3
xterm_occupancy.3 xterm_pencolor.3 xterm_position.3
xterm_width.3 xterm_xrdb.3 xy.1
ycentertext.3m_draw ycentertext.3m_pixel zqjrem67.3m_steam67
zsdh67.3m_steam67 zsdt67.3m_steam67 zsrh67.3m_steam67
zsrt67.3m_steam67    

Footnotes:

Most of the code is maintained using a custom programming environment. The original source files are mostly ufpp(1) input files and/or HTML documents. To eliminate the need to install this custom environment all the source files have been expanded to standard Fortran and C source.

To simplify building the resulting collection of code a make(1) file has been automatically generated using makeout(1) to compile the sources.

Using a variety of utilities (primarily ufpp(1) and txt2man(1) ) the help text is generally part of the source file and automatically converted to comments, flat text, HTML and man(1) pages.

For those interested (particulary since ufpp(1) is one of the utilities included in this collection) most of the source is kept as ufpp(1) files. ufpp(1) can write text blocks to various files. This allows basic documentation to easily be maintained with the source. These blocks are then converted either into comments or help functions in the code by ufpp(1), but also optionally written to a common directory where they can be further processed, if required (they might already be HTML, which generally does not need further processing). For simple routines the documentation is often written to look like a flat text version of a man(1) page; which has proven to be a good standard for documenting procedures, which many people are familiar with, and integrates into Unix/Linux environments and tools. The txt2man(1) utility is used to convert the flat files to *roff files; other files are run thru markdown(1) or LaTex(1) or other utilities as appropriate, based on the suffix of the files.

The utility groff(1) was originally used to convert the man(1) pages to HTML and PDF but it has a bug as of this writing where it removes significant spaces when generating HTML; so the man(1) pages are now formatted using manserver.pl. Also see rman(1), html2man(1), and roff2html(1). It sounds complicated but is totally automated just using a few bash(1) scripts to glue it together, and provides for an easy way to maintain documentation and source in the same file.

LINK: GPF home