[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_display BOOK_M_draw
BOOK_M_drawplus BOOK_M_escape 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_verify
BOOK_M_xterm BOOK_M_xyplot  

Alphabetical listing of HTML documents:

abs.3fortran accdig.3m_verify achar.3fortran
acos.3fortran acosd.3m_units acosh.3fortran
addset.3m_match adjustc.3m_strings adjustl.3fortran
adjustr.3fortran aimag.3fortran aint.3fortran
all.3fortran allocate.7fortran allocated.3fortran
almost.3m_verify alphabet.1 amatch.3m_bre
amatch.3m_match amatch_.3m_match anagrams.1
anint.3fortran any.3fortran anyinteger_to_string.3m_anything
anyscalar_to_double.3m_anything anyscalar_to_int64.3m_anything anyscalar_to_real.3m_anything
anyscalar_to_real128.3m_anything anything_to_bytes.3m_anything arc.3m_draw
arc.3m_pixel area_of_simple_polygon.1 ARGUMENTS.3
array_constructors.7fortran arrowhead.3m_drawplus asa2pdf.1
asin.3fortran asind.3m_units asinh.3fortran
assert.3m_verify associate.7fortran associated.3fortran
atan.3fortran atan2.3fortran atan2d.3m_units
atand.3m_units atanh.3fortran atleast.3m_strings
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.3m_units
attr.3m_escape axis.3m_calcomp b3hs_hash_key_jenkins.3m_hashkeys
backbuffer.3m_draw backface.3m_draw backfacedir.3m_draw
backspace.7fortran base.1 base.3m_strings
basename.3m_io bds.3m_math bes.3m_bessel
besi.3m_bessel besj.3m_bessel besj0.3m_bessel
besj1.3m_bessel besk.3m_bessel bessel_j0.3fortran
bessel_j1.3fortran bessel_jn.3fortran bessel_y0.3fortran
bessel_y1.3fortran bessel_yn.3fortran besy.3m_bessel
besy0.3m_bessel bge.3fortran bgt.3fortran
bit_size.3fortran ble.3fortran block.7fortran
blocks.3m_messages blt.3fortran BOOK_ARGUMENTS
BOOK_FORTRAN BOOK_INDEX BOOK_M_calcomp
BOOK_M_calculator BOOK_M_color BOOK_M_Compare_Float_Numbers
BOOK_M_display BOOK_M_draw BOOK_M_drawplus
BOOK_M_escape 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_verify BOOK_M_xterm
BOOK_M_xyplot bottomjustify.3m_draw boxfit.3m_draw
boxtext.3m_draw box_month.3m_time btest.3fortran
bytes_to_anything.3m_anything c2f.3m_units c2s.3m_strings
calculator.3m_calculator callobj.3m_draw call_draw.3m_drawplus
cartesian_to_polar.3m_units cartesian_to_spherical.3m_units case.7fortran
ceiling.3fortran centertext.3m_draw centertext.3m_pixel
change.1 change.3m_strings char.3fortran
checkkey.3m_draw check_commandline.3m_cli chomp.3m_strings
choose.1 cincinatti_chili.7 circl.3m_calcomp
circle.3m_draw circle.3m_pixel circleprecision.3m_draw
circleprecision.3m_pixel citer.3m_math clear.3m_draw
clear.3m_pixel clipping.3m_draw clock.1m_draw
close.7fortran closeobj.3m_draw closepoly.3m_draw
closepoly.3m_pixel closest.3m_math closest_color_name.3m_color
closest_color_name.3m_pixel cmplx.3fortran cn.1
cntour.3m_calcomp codebase.3m_strings color.3m_draw
color.3m_escape color.3m_pixel colors.1
color_mode.3m_escape color_name2rgb.3m_color color_name2rgb.3m_pixel
color_wheel.1 commandline.3m_cli command_argument_count.3fortran
common.7fortran compact.3m_strings compiler_options.3fortran
compiler_version.3fortran complex.7fortran compute.1
cond.3m_logic condl67.3m_steam67 condv67.3m_steam67
conjg.3fortran continue.7fortran contourlines.3m_contourplot
cos.3fortran cosd.3m_units cosh.3fortran
count.3fortran co_broadcast.3fortran co_lbound.3fortran
co_max.3fortran co_min.3fortran co_reduce.3fortran
co_sum.3fortran co_ubound.3fortran cpl67.3m_steam67
cprint.1 cpu_time.3fortran cpv67.3m_steam67
crc32_hash.3m_hashkeys create_watch.3m_stopwatch create_watchgroup.3m_stopwatch
crflo67.3m_steam67 critvs67.3m_steam67 critvw67.3m_steam67
crop.3m_strings crvel67.3m_steam67 cshift.3fortran
csv.3m_csv csv_write.3m_csv curve.3m_draw
curvebasis.3m_draw curven.3m_draw curveprecision.3m_draw
curvx.3m_calcomp curvy.3m_calcomp cycle.7fortran
cylinder.1 c_associated.3fortran c_funloc.3fortran
c_f_pointer.3fortran c_f_procpointer.3fortran c_loc.3fortran
c_sizeof.3fortran d2j.3m_time d2o.3m_time
d2r.3m_pixel d2r.3m_units d2u.3m_time
d2w.3m_time dashcode.3m_draw dashl.3m_calcomp
dashp.3m_calcomp data.7fortran date_and_time.3fortran
date_to_julian.3m_time date_to_unix.3m_time days2sec.1
days2sec.3m_time dble.3fortran deallocate.7fortran
decodebase.3m_strings degrees.1 delim.3m_strings
delobj.3m_draw describe.3m_strings destroy_watch.3m_stopwatch
destroy_watchgroup.3m_stopwatch deviled_eggs.7 dget.3m_kracken
dgets.3m_kracken digest.1 digits.3fortran
dim.3fortran dirname.3m_io dirtys_sha256.3hashkeys
disp.3m_display disp_get.3m_display disp_set.3m_display
disp_set_factory.3m_display dissect.3m_kracken djb2_hash.3m_hashkeys
dl_init.3m_slices dl_slices.3m_pixel dl_slices.3m_slices
dl_symbol.3m_slices dnum0.3m_calculator do.7fortran
dodash.3m_match dot_product.3fortran dow.3m_time
download dprod.3fortran dp_accdig.3m_verify
draw.1 draw.3m_draw draw2.3m_draw
draw2.3m_pixel drawchar.3m_draw drawchar.3m_pixel
drawstr.3m_draw drawstr.3m_pixel draw_interpret.3m_drawplus
dshiftl.3fortran dshiftr.3fortran dtu.1
easter.1 easter.3m_time elips.3m_calcomp
ellipse.3m_drawplus empty.3m_anything endselect.7fortran
end_pause_watch.3m_stopwatch envelope.3m_math eoshift.3fortran
epsilon.3fortran equivalence.7fortran erf.3fortran
erfc.3fortran erfc_scaled.3fortran error.3m_bre
esc.1 esc.3m_escape esc.3m_match
esc_mode.3m_escape event_query.3fortran example_text_justification.7m_draw
exchange.1 execute_command_line.3fortran exit.7fortran
exp.3fortran expand.3m_strings expandviewport.3m_draw
explain.1 exponent.3fortran expression.3m_calculator
extends_type_of.3fortran extremum.3m_math f2c.3m_units
f90split.1 factor.3m_calcomp factors.1
faq.7 feet_to_meters.3m_units ffmt.1
fileclose.3m_io filedelete.3m_io fileglob.3m_system
fileopen.3m_io filewrite.3m_io filset.3m_match
findll.1 findloc.3fortran fit.3m_calcomp
fixedform.1 fixedwidth.3m_draw fline.3m_calcomp
float.3fortran floor.3fortran flush.7fortran
fmt.3m_strings fmtdate.3m_time fmtdate_usage.3m_time
font.3m_draw font.3m_pixel format.7fortran
fortran.7fortran fortran_continuation_line.7fortran fortran_name.3m_strings
fortran_recursion.7fortran fraction.3fortran free_source_form.7fortran
frontbuffer.3m_draw fseq.1 fstop.3m_verify
gamma.3fortran gcd.1 gcsgau1.3m_math
gcsgau2.3m_math generate_uuid.3m_uuid genobj.3m_draw
geographical_distance.3m_geography getaspect.3m_draw getccl.3m_match
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
getline.3m_io getopenobj.3m_draw getpat.3m_bre
getpat.3m_match getpat_.3m_match getstring.3m_draw
getvals.3m_strings getvalue.3m_calculator getviewport.3m_draw
getviewport.3m_pixel get_args.3m_cli2 get_args_fixed_length.3m_cli2
get_args_fixed_size.3m_cli2 get_command.3fortran get_command_argument.3fortran
get_command_arguments_stack.3m_args get_command_arguments_string.3m_args get_environment_variable.3fortran
get_namelist.3m_args get_tmp.3m_io glstsq.3m_math
graph.3m_graph graph_init.3m_graph greatest_common_divisor.3_factor
grid.3m_calcomp guessdate.3m_time hasher.1
hatchang.3m_draw hatchpitch.3m_draw hcl67.3m_steam67
hcsl67.3m_steam67 hcslv267.3m_steam67 hcslvl67.3m_steam67
hello.1 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.3m_color hue.3m_pixel
huegif.1 huge.3fortran hypocycloidal.1
hypot.3fortran hypot.3m_math h_array.3m_html
h_close.3m_html h_open.3m_html iachar.3fortran
iall.3fortran iand.3fortran iany.3fortran
ibclr.3fortran ibits.3fortran ibset.3fortran
ichar.3fortran ieor.3fortran if.7fortran
iget.3m_kracken igets.3m_kracken igetvalue.3m_calculator
illusion.3m_xyplot Images image_index.3fortran
implicit.7fortran implied_do.7fortran include.7fortran
indent.3m_strings index.3fortran inf.3m_units
initialize_arrays.7fortran init_random_seed.3m_random init_random_seed_by_dat.3m_random
init_random_seed_by_system_clock.3m_random inpolygon.3m_math inquire.7fortran
inquiry_stopwatch.3m_stopwatch insert.3m_list int.3fortran
intrinsics.1fortran intrinsics.7fortran intrinsics_project.7fortran
intro_blas1.3 inum0.3m_calculator invert_2x2.3m_math
invert_3x3.3m_math invert_4x4.3m_math invokeobj.3m_draw
in_margin.3m_verify ior.3fortran iparity.3fortran
isalnum.3m_strings isalpha.3m_strings isascii.3m_strings
isblank.3m_strings iscntrl.3m_strings isdigit.3m_strings
isgraph.3m_strings ishft.3fortran ishftc.3fortran
islower.3m_strings isnumber.3m_strings isobj.3m_draw
iso_c_binding.7fortran iso_fortran_env.7fortran isprint.3m_strings
ispunct.3m_strings isspace.3m_strings isupper.3m_strings
isxdigit.3m_strings is_contiguous.3fortran is_even.3m_units
is_iostat_end.3fortran is_iostat_eor.3fortran is_nan.3m_units
i_is_prime.3_factor j2d.3m_time join.3m_strings
join_watchgroup.3m_stopwatch journal.3m_journal julfit.3m_math
julian_to_date.3m_time junbad.3m_messages junbat.3m_messages
junbuster.3m_messages jundragon.3m_messages junroach.3m_messages
junsun.3m_messages juntrolls.3m_messages justfy.3m_pixel
ju_polfit.3m_math kind.3fortran kolor.1
kracken.3m_kracken lasagna.7 lbound.3fortran
lcm.1 leadz.3fortran least_common_multiple.3_factor
leave_watchgroup.3m_stopwatch leftjustify.3m_draw len.3fortran
lenset.3m_strings len_trim.3fortran len_white.3m_strings
lgaxs.3m_calcomp lge.3fortran lget.3m_kracken
lgets.3m_kracken lglin.3m_calcomp lgt.3fortran
line.3m_calcomp line.3m_pixel linearint.3m_math
linestyle.3m_draw linewidth.3m_draw linewidth.3m_pixel
listout.3m_strings list_free.3m_generic_list list_get.3m_generic_list
list_init.3m_generic_list list_insert.3m_generic_list list_next.3m_generic_list
list_put.3m_generic_list lle.3fortran llt.3fortran
loadobj.3m_draw locate.3m_list locate.3m_match
locator.3m_draw locpt.3m_math log.3fortran
log10.3fortran logical.3fortran log_gamma.3fortran
longest_command_argument.3m_args lookat.3m_draw lower.3m_strings
lowess.3m_math lsup.1 luhn_checksum.3m_hashkeys
mac_and_cheese.7 magic_square.3m_math makeobj.3m_draw
makeout.1 makepoly.3m_draw makepoly.3m_pixel
makpat.3m_bre makpat.3m_match makpat_.3m_match
man1 man2 man3
man3i man4 man5
man6 man7 man7i
man8 manup.1 mapcolor.3m_draw
mapcolor.3m_pixel maskl.3fortran maskr.3fortran
mat.1 mat88.3m_matrix match.1
match.3m_bre match.3m_match matchw.3m_strings
matmul.3fortran max.3fortran maxexponent.3fortran
maxloc.3fortran maxval.3fortran merge.3fortran
merge_bits.3fortran merge_str.3m_strings meters_to_feet.3m_units
min.3fortran minefield.1m_draw minexponent.3fortran
minloc.3fortran minval.3fortran mo2d.3m_time
mo2v.3m_time mod.3fortran model.1
modif.3m_strings modulo.3fortran month.1
moon_fullness.3m_time move.3m_draw move2.3m_draw
move2.3m_pixel move_alloc.3fortran msg.3m_strings
mtprng_init.3m_random mtprng_init_by_array.3m_random mtprng_rand.3m_random
mtprng_rand64.3m_random mtprng_rand_range.3m_random mtprng_rand_real1.3m_random
mtprng_rand_real2.3m_random mtprng_rand_real3.3m_random mvbits.3fortran
M_args.3m_args M_big_integer.3m_big_integer M_bre.3m_bre
M_calcomp.3m_calcomp M_calculator.3m_calculator M_calculator_programmer_notes.3m_calculator
M_CLI.3m_cli M_CLI2.3m_cli2 M_color.3m_color
M_Compare_Float_Numbers.3m_compare_float_numbers M_csv.3m_csv M_display.3m_display
M_draw.3m_draw M_drawplus.3m_drawplus M_escape.3m_escape
M_f2kcli.3 M_factor.3_factor M_fixedform.3m_fixedform
M_generic_list.3m_generic_list M_getopt.3m_getopt M_getopt_long.3m_getopt_long
M_html.3m_html M_io.3m_io M_journal.3m_journal
M_kracken.3m_kracken M_list.3m_list M_lua.3m_lua
M_math.3m_math M_messages.3m_messages M_overload.3m_overload
M_pixel.3m_pixel M_process.3m_process M_random.3m_random
M_readline.3m_readline M_regex.3m_regex M_sha3.3m_sha3
M_sort.3m_sort M_sqlite.3m_sqlite M_steam67.3m_steam67
M_stopwatch.3m_stopwatch M_strings.3m_strings M_strings_oop.3m_strings
M_system.3m_system M_time.3m_time M_time_oop.3m_time
M_units.3m_units M_uuid.3m_uuid M_verify.3m_verify
M_xterm.3m_xterm namelist.7fortran nan.3m_units
nc2html.1 ncr.3m_math nearest.3fortran
needs.7fortran newpen.3m_calcomp new_line.3fortran
nframe.3m_calcomp nint.3fortran noesc.3m_strings
norm2.3fortran norm_angle_360.3m_units norm_angle_rad.3m_units
nospace.3m_strings not.3fortran notabs.3m_strings
note.1 notopen.3m_io now.1
now.3m_time null.3fortran nullify.7fortran
number.3m_calcomp numchars.3m_draw numdiff.1
num_images.3fortran o2d.3m_time omatch.3m_match
omatch_.3m_match open.7fortran option_stopwatch.3m_stopwatch
ordinal_seconds.3m_time ordinal_to_date.3m_time ortho.3m_draw
ortho2.3m_draw ortho2.3m_pixel pack.3fortran
page.3m_draw page.3m_pixel pancakes.7
paranoid.1 parity.3fortran parse.3m_kracken
patch.3m_draw patchbasis.3m_draw patchcurves.3m_draw
patchprecision.3m_draw path.3m_path patsiz.3m_match
pause_watch.3m_stopwatch paws.1 pdec.3m_verify
pendulum.1 penv.1 percent_done.3m_messages
perspective.3m_draw phase_of_moon.3m_time planets.1
plot.3m_calcomp plots.3m_calcomp plot_axis.3m_xyplot
plot_clear.3m_xyplot plot_drawplot.3m_xyplot plot_getdatarange.3m_xyplot
plot_get_plot_area.3m_xyplot plot_hcopy.3m_xyplot plot_id.3m_xyplot
plot_init.3m_xyplot plot_init_globals.3m_xyplot plot_jupage.3m_xyplot
plot_juparea.3m_xyplot plot_jut.3m_xyplot plot_marks.3m_xyplot
plot_page_aspect.3m_xyplot plot_setdash.3m_xyplot plot_setfill.3m_xyplot
plot_setmark.3m_xyplot plot_set_plot_area.3m_xyplot plot_set_xmin.3m_xyplot
plot_storage.3m_xyplot plot_sz.3m_xyplot plot_title.3m_xyplot
plot_toggle.3m_xyplot plot_z.3m_xyplot plot_zmode.3m_xyplot
pls67.3m_steam67 point.3m_draw point2.3m_draw
point2.3m_pixel pointers.7fortran polar.3m_calcomp
polarview.3m_draw polar_to_cartesian.3m_pixel polar_to_cartesian.3m_units
poly.3m_calcomp poly.3m_draw poly2.3m_draw
poly2.3m_pixel polyarea.3m_math polyarea_shoelace.3m_math
polyfill.3m_draw polyhatch.3m_draw polyline2.3m_drawplus
polyline2.3m_pixel poly_intercept.3m_math pop.3m_draw
popattributes.3m_draw popcnt.3fortran popdev.3m_draw
popmatrix.3m_draw poppar.3fortran popviewport.3m_draw
pounds_to_kilograms.3m_units ppm.5 precision.3fortran
prefposition.3m_draw prefsize.3m_draw prefsize.3m_pixel
present.3fortran prime_factors.3_factor print.3m_draw
print_ascii.3m_pixel print_dictionary.3m_args print_dictionary.3m_cli
print_inquire.3m_io print_ppm.3m_pixel print_watch.3m_stopwatch
prliq67.3m_steam67 process_close.3m_process process_open_read.3m_process
process_open_write.3m_process process_readall.3m_process process_readline.3m_process
process_writeline.3m_process 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_draw
pushattributes.3m_draw pushdev.3m_draw pushmatrix.3m_draw
pushviewport.3m_draw qhfg.3m_math qhsg.3m_math
qtfg.3m_math quadratic.1 quadratic.3m_math
quote.3m_strings r2d.3m_units radix.3fortran
random_hex.3m_random random_int.3m_random random_kiss64.3m_random
random_number.3fortran random_seed.3fortran random_string.3m_random
range.1 range.3fortran rank.3fortran
rcurve.3m_draw rd.3m_io rdbox.3m_drawplus
rdpnt.3m_drawplus rdraw.3m_draw rdraw2.3m_draw
rdraw2.3m_pixel readgif.3m_readgif read_line.3m_io
read_table.3m_io read_watch.3m_stopwatch real.3fortran
recipes.7 rect.3m_calcomp rect.3m_draw
rect.3m_pixel redo.3m_history regcomp.3m_regex
regerror.3m_regex regexec.3m_regex regfree.3m_regex
regmatch.3m_regex regsub.3m_regex remove.3m_list
rep.1 repeat.3fortran replace.3m_list
replace.3m_strings reset_watch.3m_stopwatch reshape.3fortran
retrev.3m_kracken return.7fortran reverse.1
reverse.3m_strings rewind.7fortran rgbmono.3m_color
rget.3m_kracken rgets.3m_kracken rgetvalue.3m_calculator
rightjustify.3m_draw rmove.3m_draw rmove2.3m_draw
rmove2.3m_pixel rnum0.3m_calculator rotate.3m_draw
rotate13.3m_strings rpatch.3m_draw rrspacing.3fortran
rsdraw2.3m_draw rsmove2.3m_draw s2c.3m_strings
s2v.3m_strings s2vs.3m_strings same_type_as.3fortran
save.7fortran saveobj.3m_draw scale.3fortran
scale.3m_calcomp scale.3m_draw scale1.3m_math
scale3.3m_math scalg.3m_calcomp scan.3fortran
scramble.3m_random scratch.3m_io scratch.7fortran
sdbm_hash.3m_hashkeys sdraw2.3m_draw sec2days.1
sec2days.3m_time sector.3m_draw seefont.1
seefont.3m_drawplus select.7fortran selected_char_kind.3fortran
selected_int_kind.3fortran selected_real_kind.3fortran select_type.7fortran
sep.3m_strings setprompts.3m_kracken set_args.3m_cli2
set_environment_variable.3m_system set_exponent.3fortran sget.3m_kracken
sgetgp2.3m_draw sgets.3m_kracken sha256.3hashkeys
sha3.1 shape.3fortran shell.1
shifta.3fortran shiftl.3fortran shiftr.3fortran
show.3m_kracken sign.3fortran sign.7fortran
signs.3m_messages sin.3fortran sind.3m_units
sinh.3fortran sisiss67.3m_steam67 size.3fortran
skekur1.3m_math skekurx.3m_math slice.1m_draw
slocator.3m_draw slurp.3m_io smoot.3m_calcomp
smove2.3m_draw sngl.3fortran snum0.3m_calculator
soft_pretzel.7 sort_quick_rx.3m_sort sort_shell.3m_sort
spacing.3fortran specified.3m_cli specified.3m_cli2
spherical_to_cartesian.3m_units spirograph.3m_drawplus splift.3m_math
splint.3m_math split.3m_strings split2020.3m_strings
splitname.1 splitpath.3m_io spoiler.1
spread.3fortran spsiss67.3m_steam67 sqlite3_begin.3m_sqlite
sqlite3_close.3m_sqlite sqlite3_column_props.3m_sqlite sqlite3_column_query.3m_sqlite
sqlite3_commit.3m_sqlite sqlite3_create_table.3m_sqlite sqlite3_delete_table.3m_sqlite
sqlite3_do.3m_sqlite sqlite3_errmsg.3m_sqlite sqlite3_error.3m_sqlite
sqlite3_finalize.3m_sqlite sqlite3_get_column.3m_sqlite sqlite3_get_table.3m_sqlite
sqlite3_insert.3m_sqlite sqlite3_libversion.3m_sqlite sqlite3_libversion_number.3m_sqlite
sqlite3_next_row.3m_sqlite sqlite3_open.3m_sqlite sqlite3_prepare.3m_sqlite
sqlite3_prepare_select.3m_sqlite sqlite3_query_table.3m_sqlite sqlite3_reset.3m_sqlite
sqlite3_rollback.3m_sqlite sqlite3_set_column.3m_sqlite sqlite3_sourceid.3m_sqlite
sqlite3_step.3m_sqlite sqrt.3fortran ssl67.3m_steam67
sssicl67.3m_steam67 sssiss67.3m_steam67 start_watch.3m_stopwatch
state.3m_pixel stclos.3m_match stddev.3m_math
stderr.3m_verify steamv67.3m_steam67 stop.7fortran
stop_watch.3m_stopwatch storage_size.3fortran store.3m_kracken
str.3m_msg stretch.3m_strings strgar2.3m_calculator
strgar3.3m_hybrid strgarr.3m_calculator string_to_value.3m_strings
string_to_values.3m_strings strlength.3m_draw strlength.3m_pixel
strtok.3m_strings stuff.3m_calculator stuffa.3m_calculator
substitute.3m_strings sum.3fortran swallow.3m_io
swap.3m_sort swapbuffers.3m_draw swap_any.3m_sort
switch.3m_strings symbol.3m_calcomp symbol2atomnum.3m_units
system_access.3m_system system_chdir.3m_system system_chmod.3m_system
system_chown.3m_system system_clearenv.3m_system system_clock.3fortran
system_closedir.3m_system system_cpu_time.3m_system system_dir.3m_io
system_errno.3m_system system_getcwd.3m_system system_getegid.3m_system
system_getenv.3m_system system_geteuid.3m_system system_getgid.3m_system
system_getgrgid.3m_system system_gethostname.3m_system system_getkey.3m_getkey
system_getlogin.3m_system system_getpid.3m_system system_getppid.3m_system
system_getpwuid.3m_system system_getsid.3m_system system_getuid.3m_system
system_getumask.3m_system system_initenv.3m_system system_isblk.3m_system
system_ischr.3m_system system_isdir.3m_system system_isfifo.3m_system
system_islnk.3m_system system_isreg.3m_system system_issock.3m_system
system_kill.3m_system system_link.3m_system system_mkdir.3m_system
system_mkfifo.3m_system system_opendir.3m_system system_perm.3m_system
system_perror.3m_system system_putenv.3m_system system_rand.3m_system
system_readdir.3m_system system_readenv.3m_system system_readline.3m_readline
system_realpath.3m_system system_remove.3m_system system_rename.3m_system
system_rewinddir.3m_system system_rmdir.3m_system system_setsid.3m_system
system_setumask.3m_system system_sleep.3m_time system_srand.3m_system
system_stat.3m_system system_stat_print.3m_system system_uname.3m_system
system_unlink.3m_system system_unsetenv.3m_system system_utime.3m_system
tabgraph.3m_messages table2html.1 tabulate.1
tan.3fortran tand.3m_units 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.3m_display tostring_set.3m_display
tostring_set_factory.3m_display tph67.3m_steam67 tphl67.3m_steam67
tps67.3m_steam67 tpsl67.3m_steam67 trailz.3fortran
transfer.3fortran translate.3m_draw transliterate.3m_strings
transpose.3fortran trapezoidal_integral.3m_math tree_insert.3m_sort
tree_print.3m_sort triangle.1 trim.3fortran
tsl167.3m_steam67 tsl67.3m_steam67 tslh67.3m_steam67
ttee.1 txt2man.1 u2d.3m_time
uarc.3m_drawplus ubound.3fortran uconic.3m_drawplus
ufpp.1 ufpp_overview.7 unexpandviewport.3m_draw
unicode_example1.1 uniq.3m_io unique.3m_sort
unit_check.3m_verify unit_check_bad.3m_verify unit_check_done.3m_verify
unit_check_good.3m_verify unit_check_msg.3m_verify unit_check_start.3m_verify
unix_to_date.3m_time unpack.3fortran unquote.3m_strings
up.3m_draw update.3m_escape upper.3m_strings
upper_quoted.3m_strings use.7fortran v2mo.3m_time
v2s.3m_strings value_to_string.3m_strings vcl67.3m_steam67
verify.3fortran 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.3m_strings visl67.3m_steam67 visv67.3m_steam67
vnewdev.3m_draw voutput.3m_draw vsetflush.3m_draw
vsl67.3m_steam67 w2d.3m_time wait.7fortran
what.1 what_overview.7 where.3m_calcomp
where.7fortran width.3m_calcomp window.3m_draw
writegif.3m_writegif write_animated_gif.3m_writegif_animated xauth_key.1
xcentertext.3m_draw xcentertext.3m_pixel xterm_clear.3m_xterm
xterm_colors.3m_xterm xterm_font.3m_xterm xterm_geometry.3m_xterm
xterm_get_colors.3m_xterm xterm_get_font.3m_xterm xterm_get_geometry.3m_xterm
xterm_get_iconstate.3m_xterm xterm_get_pencolor.3m_xterm xterm_get_position.3m_xterm
xterm_keywords.3m_xterm xterm_labels.3m_xterm xterm_occupancy.3m_xterm
xterm_pencolor.3m_xterm xterm_position.3m_xterm xterm_width.3m_xterm
xterm_xrdb.3m_xterm xy.1 xy_arrow.3m_xyplot
xy_aspct.3m_xyplot xy_bans.3m_xyplot xy_convert.3m_xyplot
xy_con_x.3m_xyplot xy_con_y.3m_xyplot xy_fxed.3m_xyplot
xy_getdat.3m_xyplot xy_getmark.3m_xyplot xy_getrel.3m_xyplot
xy_getxy_jufont.3m_xyplot xy_idbox.3m_xyplot xy_idbox0.3m_xyplot
xy_ifdrawn.3m_xyplot xy_iflou.3m_xyplot xy_iftext.3m_xyplot
xy_init_default.3m_xyplot xy_init_graphics.3m_xyplot xy_init_labels.3m_xyplot
xy_init_markers.3m_xyplot xy_jucp.3m_xyplot xy_jucp2.3m_xyplot
xy_jucurv.3m_xyplot xy_judraw.3m_xyplot xy_jufont.3m_xyplot
xy_jugetwn.3m_xyplot xy_jumapc.3m_xyplot xy_juprint.3m_xyplot
xy_juprints.3m_xyplot xy_juput.3m_xyplot xy_jurang.3m_xyplot
xy_jutitl.3m_xyplot xy_jutitlx.3m_xyplot xy_laxis.3m_xyplot
xy_listout3.3m_xyplot xy_loadtl.3m_xyplot xy_noclose.3m_xyplot
xy_obj12345.3m_xyplot xy_pause.3m_xyplot xy_pickpnt.3m_xyplot
xy_printban.3m_xyplot xy_printbanv.3m_xyplot xy_rasters.3m_xyplot
xy_resetpens.3m_xyplot xy_retrv2.3m_xyplot xy_setcnv.3m_xyplot
xy_setlbl.3m_xyplot xy_setsize.3m_xyplot xy_set_bigger.3m_xyplot
xy_slide.3m_xyplot xy_tidybox.3m_xyplot xy_tidybox1.3m_xyplot
xy_tidybox2.3m_xyplot xy_units.3m_xyplot xy_ustrlen.3m_xyplot
xy_ustrlen2.3m_xyplot xy_zoom.3m_xyplot ycentertext.3m_draw
ycentertext.3m_pixel zsdh67.3m_steam67 zsdt67.3m_steam67
zsrh67.3m_steam67 zsrt67.3m_steam67 _banner.1
_basename.1 _cmp.1 _colrm.1
_dirname.1 _echo.1 _expand.1
_false.1 _fmt.1 _grep.1
_hostname.1 _kill.1 _link.1
_ln.1 _logname.1 _ls.1
_mkdir.1 _mkfifo.1 _mv.1
_paste.1 _printenv.1 _pwd.1
_realpath.1 _rename.1 _rev.1
_rm.1 _rmdir.1 _seq.1
_showumask.1 _shuf.1 _sleep.1
_stat.1 _tac.1 _time.1
_touch.1 _tr.1 _true.1
_tty.1 _uname.1 _unlink.1
_uuidgen.1 _which.1 _whoami.1
_yes.1    

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