[GPF Home Page]

The Fortran General Purpose Fortran Collection

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 -k

   # 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_FONTPATH=/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 ../app ../example -name '*.f90' ! -empty)" -j 10

MAN pages:

The man(1) pages are in the man-pages.tgz file and need expanded into a directory called "man".

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_sets 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_framework__approx accdig.3m_verify
achar.3fortran acos.3fortran acosd.3fortran
acosd.3m_units acosh.3fortran acospi.3fortran
adjustc.3m_strings adjustl.3fortran adjustr.3fortran
aimag.3fortran aint.3fortran alert.3m_attr
all.3fortran allocated.3fortran almost.3m_framework__approx
almost.3m_verify alphabet.1 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_real128.3m_anything anyscalar_to_real.3m_anything anyscalar_to_string.3m_anything
anything_to_bytes.3m_anything arc.3m_draw arc.3m_pixel
area_of_simple_polygon.1 ARGUMENTS.3 arrowhead.3m_drawplus
asa2pdf.1 asin.3fortran asind.3fortran
asind.3m_units asinh.3fortran asinpi.3fortran
assert.3m_framework__msg assert.3m_verify associate.7fortran
associated.3fortran atan2.3fortran atan2d.3fortran
atan2d.3m_units atan2pi.3fortran atan.3fortran
atand.3fortran atand.3m_units atanh.3fortran
atanpi.3fortran atoi.3m_strings atol.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
aton.3m_strings attr.3m_attr attr.3m_framework__attr
attr_mode.3m_attr attr_mode.3m_framework__attr attr_update.3m_attr
attr_update.3m_framework__attr autoco.3m_datapac axis.3m_calcomp
b2d.3m_time b3hs_hash_key_jenkins.3m_hashkeys backbuffer.3m_draw
backface.3m_draw backfacedir.3m_draw backspace.7fortran
banner-.1 base.1 base2.3m_strings
base.3m_strings base64-.1 basename-.1
basename.3m_io bas_to_date.3m_time bds.3m_math
bes.3m_bessel besi.3m_bessel besj0.3m_bessel
besj1.3m_bessel besj.3m_bessel besk.3m_bessel
bessel_j0.3fortran bessel_j1.3fortran bessel_jn.3fortran
bessel_y0.3fortran bessel_y1.3fortran bessel_yn.3fortran
besy0.3m_bessel besy.3m_bessel betran.3m_datapac
bge.3fortran bgt.3fortran bincdf.3m_datapac
binppf.3m_datapac binran.3m_datapac 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_sets 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 bool.3m_overload bool.3m_sets
bottomjustify.3m_draw bound.3m_math boxfit.3m_draw
box_month.3m_time boxtext.3m_draw btest.3fortran
bundle.3m_strings bytes_to_anything.3m_anything c2f.3m_units
c2s.3m_strings calculator.3m_calculator call_draw.3m_drawplus
callobj.3m_draw cartesian_to_polar.3m_units cartesian_to_spherical.3m_units
case.7fortran c_associated.3fortran caucdf.3m_datapac
caupdf.3m_datapac cauplt.3m_datapac cauppf.3m_datapac
cauran.3m_datapac causf.3m_datapac caxpy.3m_blas
ccopy.3m_blas cdotc.3m_blas cdotu.3m_blas
ceiling.3fortran centertext.3m_draw centertext.3m_pixel
c_f_pointer.3fortran c_f_procpointer.3fortran c_funloc.3fortran
cgbmv.3m_blas cgemm.3m_blas cgemv.3m_blas
cgerc.3m_blas cgeru.3m_blas change.1
change.3m_strings changen.1 char.3fortran
chbmv.3m_blas check_commandline.3m_cli checkkey.3m_draw
chemm.3m_blas chemv.3m_blas cher2.3m_blas
cher2k.3m_blas cher.3m_blas cherk.3m_blas
chomp.3m_strings choose.1 chpmv.3m_blas
chpr2.3m_blas chpr.3m_blas chscdf.3m_datapac
chsplt.3m_datapac chsppf.3m_datapac chsran.3m_datapac
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
clip.3m_strings clipping.3m_draw c_loc.3fortran
clock.1m_draw close.7fortran closeobj.3m_draw
closepoly.3m_draw closepoly.3m_pixel closest.3m_math
closest_color.3m_pixel closest_color_name.3m_color closest_color_name.3m_pixel
clr.3m_list cmp-.1 cmplx.3fortran
cn.1 cntour.3m_calcomp co_broadcast.3fortran
code.3m_datapac codebase.3m_strings co_lbound.3fortran
color.3m_draw color.3m_pixel color_name2rgb.3m_color
color_name2rgb.3m_pixel colors.1 color_wheel.1
colrm-.1 co_max.3fortran co_min.3fortran
command_argument_count.3fortran commandline.3m_cli comment.5fortran
common.7fortran compact.3m_strings compare_float.3m_framework__approx
compiler_options.3fortran compiler_version.3fortran complex.7fortran
compute.1 cond.3m_logic condl67.3m_steam67
condv67.3m_steam67 conjg.3fortran continuation.5fortran
continue.7fortran contourlines.3m_contourplot copy.3m_datapac
co_reduce.3fortran corr.3m_datapac cos.3fortran
cosd.3fortran cosd.3m_units cosh.3fortran
cospi.3fortran co_sum.3fortran co_ubound.3fortran
count.3fortran count.3m_datapac cpad.3m_strings
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 crotg.3m_blas
crvel67.3m_steam67 cscal.3m_blas cshift.3fortran
c_sizeof.3fortran csrot.3m_blas csscal.3m_blas
csv.3m_csv csv_write.3m_csv cswap.3m_blas
csymm.3m_blas csyr2k.3m_blas csyrk.3m_blas
ctbmv.3m_blas ctbsv.3m_blas ctpmv.3m_blas
ctpsv.3m_blas ctrmm.3m_blas ctrmv.3m_blas
ctrsm.3m_blas ctrsv.3m_blas curve.3m_draw
curvebasis.3m_draw curven.3m_draw curveprecision.3m_draw
curvx.3m_calcomp curvy.3m_calcomp cycle.7fortran
cylinder.1 d2b.3m_time d2j.3m_time
d2m.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
dasum.3m_blas data.7fortran date_and_time.3fortran
date_to_bas.3m_time date_to_julian.3m_time date_to_modified_julian.3m_time
date_to_unix.3m_time daxpy.3m_blas days2sec.1
days2sec.3m_time dble.3fortran dble.3m_overload
dble.3m_strings dcabs1.3m_blas dcopy.3m_blas
ddot.3m_blas deallocate.7fortran decodebase.3m_strings
decode_base64.3m_strings define.3m_datapac degrees.1
del.3m_list delete.3m_datapac delim.3m_strings
delobj.3m_draw demod.3m_datapac describe.3m_strings
destroy_watch.3m_stopwatch destroy_watchgroup.3m_stopwatch deviled_eggs.7
dexcdf.3m_datapac dexpdf.3m_datapac dexplt.3m_datapac
dexppf.3m_datapac dexran.3m_datapac dexsf.3m_datapac
dgbmv.3m_blas dgemm.3m_blas dgemv.3m_blas
dger.3m_blas dget.3m_kracken dgets.3m_kracken
digest.1 digits.3fortran dilate.3m_strings
dim.3fortran dirname-.1 dirname.3m_io
discr2.3m_datapac discr3.3m_datapac discre.3m_datapac
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 dnrm2.3m_blas dnum0.3m_calculator
do.7fortran dot.3m_datapac dot_product.3fortran
dow.3m_time dp_accdig.3m_verify dprod.3fortran
draw.1 draw2.3m_draw draw2.3m_pixel
draw.3m_draw drawchar.3m_draw drawchar.3m_pixel
draw_interpret.3m_drawplus drawstr.3m_draw drawstr.3m_pixel
drot.3m_blas drotg.3m_blas drotm.3m_blas
drotmg.3m_blas dsbmv.3m_blas dscal.3m_blas
dsdot.3m_blas dshiftl.3fortran dshiftr.3fortran
dspmv.3m_blas dspr2.3m_blas dspr.3m_blas
dswap.3m_blas dsymm.3m_blas dsymv.3m_blas
dsyr2.3m_blas dsyr2k.3m_blas dsyr.3m_blas
dsyrk.3m_blas dtbmv.3m_blas dtbsv.3m_blas
dtpmv.3m_blas dtpsv.3m_blas dtrmm.3m_blas
dtrmv.3m_blas dtrsm.3m_blas dtrsv.3m_blas
dtu.1 dzasum.3m_blas dznrm2.3m_blas
easter.1 easter.3m_time echo-.1
edit_distance.3m_strings elementcopy.3m_la elips.3m_calcomp
ellipse.3m_drawplus empty.3m_anything encode_base64.3m_strings
endfile.7fortran end_pause_watch.3m_stopwatch endselect.7fortran
ends_with.3m_strings envelope.3m_math eoshift.3fortran
epsilon.3fortran equivalence.7fortran erf.3fortran
erfc.3fortran erfc_scaled.3fortran error.3m_match
esc.1 ev1cdf.3m_datapac ev1plt.3m_datapac
ev1ppf.3m_datapac ev1ran.3m_datapac ev2cdf.3m_datapac
ev2plt.3m_datapac ev2ppf.3m_datapac ev2ran.3m_datapac
event_query.3fortran example_text_justification.7m_draw exchange.1
execute_command_line.3fortran exit.7fortran exp.3fortran
expand-.1 expand.3m_strings expandviewport.3m_draw
expcdf.3m_datapac explain.1 exponent.3fortran
exppdf.3m_datapac expplt.3m_datapac expppf.3m_datapac
expran.3m_datapac expression.3m_calculator expsf.3m_datapac
extends_type_of.3fortran extrem.3m_datapac extremum.3m_math
f2018.7fortran f2c.3m_units f90split.1
factor.3m_calcomp factors.1 false-.1
faq.7 fcdf.3m_datapac fcmd.1
feet_to_meters.3m_units ffmt.1 filebyte.3m_io
fileclose.3m_io filedelete.3m_io fileglob.3m_system
filename_generator.3m_io fileopen.3m_io fileread.3m_io
filewrite.3m_io find_field.3m_strings findll.1
findloc.3fortran fit.3m_calcomp fixedform.1
fixedwidth.3m_draw fline.3m_calcomp float.3fortran
floor.3fortran flower.1 flush.7fortran
fmt-.1 fmt.3m_framework__msg fmt.3m_msg
fmt.3m_overload 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 fourie.3m_datapac
fpm-dict.1 fpm-gdb.1 fpm_license.1
fpm-man.1 fpm-time.1 fraction.3fortran
fran.3m_datapac free_source_form.7fortran freq.3m_datapac
frontbuffer.3m_draw fseq.1 fstop.3m_framework__utility
fstop.3m_verify gamcdf.3m_datapac gamma.3fortran
gamplt.3m_datapac gamppf.3m_datapac gamran.3m_datapac
gcd.1 gcsgau1.3m_math gcsgau2.3m_math
gdb.1 generate_uuid.3m_uuid genobj.3m_draw
geocdf.3m_datapac geographical_distance.3m_geography geoplt.3m_datapac
geoppf.3m_datapac georan.3m_datapac get.3m_list
get_arg.3m_args get_args.3m_cli2 get_args_fixed_length.3m_cli2
get_args_fixed_size.3m_cli2 getaspect.3m_draw getchar.3m_io
getcharsize.3m_draw get_command.3fortran get_command_argument.3fortran
get_command_arguments_stack.3m_args get_command_arguments_string.3m_args getdepth.3m_draw
getdisplaysize.3m_draw getdisplaysize.3m_pixel get_env.3m_io
get_environment_variable.3fortran getfactors.3m_draw getfontdec.3m_draw
getfontsize.3m_draw get_from_lala.3m_matrix getgp2.3m_draw
getgp2.3m_pixel getgp.3m_draw getgpt.3m_draw
getkey.3m_draw getline.3m_io getname.3m_io
get_namelist.3m_args get_next_char.3m_io getopenobj.3m_draw
getpat.3m_match getstring.3m_draw get_subcommand.3m_cli2
get_tmp.3m_io get_type.3m_anything getvals.3m_strings
getvalue.3m_calculator getviewport.3m_draw getviewport.3m_pixel
glob.3m_strings glstsq.3m_math graph.3m_graph
graph_init.3m_graph greatest_common_divisor.3m_factor grep-.1
grid.3m_calcomp guessdate.3m_time h_array.3m_html
hasher.1 hatchang.3m_draw hatchpitch.3m_draw
hcl67.3m_steam67 h_close.3m_html hcsl67.3m_steam67
hcslv267.3m_steam67 hcslvl67.3m_steam67 hello.1
help_command.3m_help hershey.3m_pixel hfncdf.3m_datapac
hfnplt.3m_datapac hfnppf.3m_datapac hfnran.3m_datapac
hisiss67.3m_steam67 hist.3m_datapac h_open.3m_html
hostname-.1 howlong.1 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
iachar.3fortran iall.3fortran iand.3fortran
iany.3fortran ibclr.3fortran ibits.3fortran
ibset.3fortran icamax.3m_blas ichar.3fortran
idamax.3m_blas ieor.3fortran if.7fortran
ifdef.3m_list ifin_lala.3m_matrix iget.3m_kracken
igets.3m_kracken igetvalue.3m_calculator i_is_prime.3m_factor
illusion.3m_xyplot image_index.3fortran Images
implicit.7fortran implied_do.7fortran in.3m_math
include.7fortran indent.3m_strings index.3fortran
index 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
in_margin.3m_framework__approx in_margin.3m_verify inpolygon.3m_math
inquire.7fortran inquiry_stopwatch.3m_stopwatch insert.3m_list
int.3fortran int.3m_strings intersect.3m_sets
intrinsics.3m_overload 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
ior.3fortran iparity.3fortran isalnum.3m_strings
isalpha.3m_strings isamax.3m_blas isascii.3m_strings
isblank.3m_strings iscntrl.3m_strings is_contiguous.3fortran
isdigit.3m_strings is_even.3m_units isgraph.3m_strings
ishft.3fortran ishftc.3fortran is_hidden_file.3m_io
is_iostat_end.3fortran is_iostat_eor.3fortran islower.3m_strings
ismember.3m_sets is_nan.3m_units isnumber.3m_strings
isobj.3m_draw iso_c_binding.7fortran iso_fortran_env.7fortran
isprint.3m_strings ispunct.3m_strings issorted.3m_sets
isspace.3m_strings isupper.3m_strings isxdigit.3m_strings
izamax.3m_blas j2d.3m_time join.3m_strings
joinpath.3m_io join_watchgroup.3m_stopwatch journal.3m_framework__journal
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 ju_polfit.3m_math justfy.3m_pixel
kill-.1 kind.3fortran kolor.1
kracken.3m_kracken la.1 lala.1
lala.3m_matrix lamcdf.3m_datapac lampdf.3m_datapac
lamplt.3m_datapac lamppf.3m_datapac lamran.3m_datapac
lamsf.3m_datapac lasagna.7 lbound.3fortran
lcm.1 lcobound.3fortran leadz.3fortran
least_common_multiple.3m_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
lgncdf.3m_datapac lgnplt.3m_datapac lgnppf.3m_datapac
lgnran.3m_datapac lgt.3fortran line.3m_calcomp
line.3m_pixel linearint.3m_math linestyle.3m_draw
linewidth.3m_draw linewidth.3m_pixel link-.1
linspace.3m_la 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
listout.3m_strings list_put.3m_generic_list lle.3fortran
llt.3fortran ln-.1 loadobj.3m_draw
loc.3m_datapac locale.3m_time locate.3m_list
locator.3m_draw locpt.3m_math log10.3fortran
log.3fortran logcdf.3m_datapac log_gamma.3fortran
logical.3fortran logname-.1 logpdf.3m_datapac
logplt.3m_datapac logppf.3m_datapac logran.3m_datapac
logsf.3m_datapac longest_command_argument.3m_args longest_common_substring.3m_strings
lookat.3m_draw lookfor.3m_io lower.3m_strings
lower_quoted.3m_strings lowess.3m_math lpad.3m_strings
ls-.1 lsame.3m_blas lsup.1
luhn_checksum.3m_hashkeys m2d.3m_time mac_and_cheese.7
magic_square.3m_math makeobj.3m_draw makeout.1
makepoly.3m_draw makepoly.3m_pixel makpat.3m_match
man1 man3 man3i
man5 man7 man7i
manup.1 M_anything.3m_anything mapcolor.3m_draw
mapcolor.3m_pixel M_args.3m_args maskl.3fortran
maskr.3fortran match.1 match.3m_match
matching_delimiter.3m_strings mat_magic.3m_la matmul.3fortran
M_attr.3m_attr max.3fortran max.3m_datapac
maxexponent.3fortran maxloc.3fortran maxval.3fortran
M_big_integer.3m_big_integer M_calcomp.3m_calcomp M_calculator.3m_calculator
M_calculator_programmer_notes.3m_calculator M_CLI2.3m_cli2 M_CLI.3m_cli
M_color.3m_color M_Compare_Float_Numbers.3m_compare_float_numbers M_constants.3m_constants
M_csv.3m_csv M_display.3m_display M_draw.3m_draw
M_drawplus.3m_drawplus mean.3m_datapac median.3m_datapac
median.3m_orderpack medianloc.3m_orderpack medianval.3m_orderpack
merge.3fortran merge.3m_overload merge_bits.3fortran
merge_str.3m_strings meters_to_feet.3m_units M_factor.3m_factor
M_fixedform.3m_fixedform M_framework.3m_framework M_framework__attr.3m_framework__attr
M_framework__journal.3m_framework__journal M_framework__verify.3m_framework__verify M_generic_list.3m_generic_list
M_getopt.3m_getopt M_getopt_long.3m_getopt_long M_html.3m_html
midm.3m_datapac midr.3m_datapac min.3fortran
min.3m_datapac minefield.1m_draw minexponent.3fortran
minloc.3fortran minval.3fortran M_io.3m_io
M_journal.3m_journal mkdir-.1 mkfifo-.1
M_kracken.3m_kracken M_list.3m_list M_lua.3m_lua
M_match.3m_match M_math.3m_math M_matrix.3m_matrix
M_messages.3m_messages mo2d.3m_time mo2v.3m_time
mod.3fortran model.1 modif.3m_strings
modified_julian_to_date.3m_time modulo.3fortran month.1
moon_fullness.3m_time M_orderpack.3m_orderpack move2.3m_draw
move2.3m_pixel move.3m_datapac move.3m_draw
move_alloc.3fortran 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_roman_numbers.3m_roman_numbers M_sets.3m_sets
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_strings__oop.3m_strings__oop M_system.3m_system M_time.3m_time
M_time__oop.3m_time 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
M_units.3m_units M_uuid.3m_uuid mv-.1
mvbits.3fortran M_verify.3m_verify M_xterm.3m_xterm
namelist.7fortran nan.3m_units nbcdf.3m_datapac
nbppf.3m_datapac nbran.3m_datapac nc2html.1
ncr.3m_math nd.1 nearest.3fortran
needs.7fortran new_line.3fortran newpen.3m_calcomp
nextp.3m_math nframe.3m_calcomp nint.3fortran
nint.3m_strings noesc.3m_strings norcdf.3m_datapac
norm2.3fortran norm_angle_deg.3m_units norm_angle_rad.3m_units
norout.3m_datapac norpdf.3m_datapac norplt.3m_datapac
norppf.3m_datapac norran.3m_datapac norsf.3m_datapac
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 number_of_lines.3m_io numchars.3m_draw
num_images.3fortran o2d.3m_time occurrences.3m_orderpack
open.7fortran option_stopwatch.3m_stopwatch orderloc.3m_orderpack
orderval.3m_orderpack orderval_special.3m_orderpack ordinal_seconds.3m_time
ordinal_to_date.3m_time ortho2.3m_draw ortho2.3m_pixel
ortho.3m_draw out_of_range.3fortran oz.3m_overload
pack.3fortran pad.3m_strings page.3m_draw
page.3m_pixel pancakes.7 paragraph.3m_strings
paranoid.1 parcdf.3m_datapac parity.3fortran
parplt.3m_datapac parppf.3m_datapac parran.3m_datapac
parse.3m_kracken paste-.1 patch.3m_draw
patchbasis.3m_draw patchcurves.3m_draw patchprecision.3m_draw
path.3m_path pause_watch.3m_stopwatch paws.1
pdec.3m_framework__msg pdec.3m_verify pendulum.1
penv.1 percent_decode.3m_strings percent_done.3m_messages
percent_encode.3m_strings perspective.3m_draw perturb.3m_orderpack
phase_of_moon.3m_time pixel.3m_pixel pixel_slice.3m_pixel
plain_rect.3m_drawplus planets.1 playground.1
plot10.3m_datapac plot.3m_calcomp plot.3m_datapac
plot6.3m_datapac plot7.3m_datapac plot8.3m_datapac
plot9.3m_datapac plot_axis.3m_xyplot plotc.3m_datapac
plot_clear.3m_xyplot plotco.3m_datapac plotct.3m_datapac
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
plots.3m_calcomp plots.3m_datapac plotsc.3m_datapac
plot_setdash.3m_xyplot plot_setfill.3m_xyplot plot_setmark.3m_xyplot
plot_set_plot_area.3m_xyplot plot_set_xmin.3m_xyplot plotsp.3m_datapac
plotst.3m_datapac plot_storage.3m_xyplot plot_sz.3m_xyplot
plott.3m_datapac plot_title.3m_xyplot plot_toggle.3m_xyplot
plotu.3m_datapac plotx.3m_datapac plotxt.3m_datapac
plotxx.3m_datapac plot_z.3m_xyplot plot_zmode.3m_xyplot
pls67.3m_steam67 pltsct.3m_datapac pltxxt.3m_datapac
poicdf.3m_datapac point2.3m_draw point2.3m_pixel
point.3m_draw pointers.7fortran poiplt.3m_datapac
poippf.3m_datapac poiran.3m_datapac polar.3m_calcomp
polar_to_cartesian.3m_pixel polar_to_cartesian.3m_units polarview.3m_draw
poly2.3m_draw poly2.3m_pixel poly.3m_calcomp
poly.3m_draw polyarea.3m_math polyarea_shoelace.3m_math
polyfill.3m_draw polyhatch.3m_draw poly_intercept.3m_math
polyline2.3m_drawplus polyline2.3m_pixel 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 prank.3m_orderpack
prank_basic.3m_orderpack prank_decreasing.3m_orderpack prank_special.3m_orderpack
prank_unique.3m_orderpack precision.3fortran prefposition.3m_draw
prefsize.3m_draw prefsize.3m_pixel prep.1
present.3fortran prime_factors.3m_factor print.3m_draw
print.7fortran print_ansi.3m_pixel print_ascii.3m_pixel
print_dictionary.3m_args print_dictionary.3m_cli printenv-.1
print_inquire.3m_io print_p3.3m_pixel print_p6.3m_pixel
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 program.7fortran prompt.1
propor.3m_datapac protected.7fortran prstm67.3m_steam67
psl167.3m_steam67 psl67.3m_steam67 psort.3m_orderpack
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 putchar.3m_io put_into_lala.3m_matrix
pwd-.1 qhfg.3m_math qhsg.3m_math
qsort.1 qtfg.3m_math quadratic.1
quadratic.3m_math quote.3m_strings r2d.3m_units
radix.3fortran rand.1m_random random_hex.3m_random
random_init.3fortran random_int.3m_random random_kiss64.3m_random
random_number.3fortran random_seed.3fortran random_string.3m_random
range.1 range.3fortran range.3m_datapac
rank.3fortran rank.3m_datapac rank.3m_orderpack
rank_basic.3m_orderpack rank_decreasing.3m_orderpack rank_unique.3m_orderpack
ranper.3m_datapac rcurve.3m_draw rd.3m_io
rdbox.3m_drawplus rdpnt.3m_drawplus rdraw2.3m_draw
rdraw2.3m_pixel rdraw.3m_draw read.7fortran
readenv.3m_io read_line.3m_io read_table.3m_io
read_watch.3m_stopwatch real.3fortran real.3m_strings
realpath-.1 recipes.7 rect.3m_calcomp
rect.3m_draw rect.3m_pixel redo.3m_history
reduce.3fortran references.5fortran regcomp.3m_regex
regerror.3m_regex regexec.3m_regex regfree.3m_regex
regmatch.3m_regex regsub.3m_regex relsd.3m_datapac
remove.3m_list rename-.1 repeat.3fortran
replac.3m_datapac replace-.1 replace.3m_list
replace.3m_strings reset_watch.3m_stopwatch reshape.3fortran
retain.3m_datapac retrev.3m_kracken return.7fortran
rev-.1 reverse.1 reverse.3m_strings
rewind.7fortran rgbmono.3m_color rgbmono.3m_pixel
rget.3m_kracken rgets.3m_kracken rgetvalue.3m_calculator
rightjustify.3m_draw rm-.1 rmdir-.1
rmove2.3m_draw rmove2.3m_pixel rmove.3m_draw
rnum0.3m_calculator roman.1 rotate13.3m_strings
rotate.3m_draw rpad.3m_strings rpatch.3m_draw
rrspacing.3fortran rsdraw2.3m_draw rsmove2.3m_draw
runs.3m_datapac s2c.3m_strings s2v.3m_strings
s2vs.3m_strings same_type_as.3fortran sampp.3m_datapac
sasum.3m_blas save.7fortran saveobj.3m_draw
saxpy.3m_blas scabs1.3m_blas scale1.3m_math
scale3.3m_math scale.3fortran scale.3m_calcomp
scale.3m_datapac scale.3m_draw scalg.3m_calcomp
scan.3fortran scasum.3m_blas scnrm2.3m_blas
scopy.3m_blas scramble.3m_random scratch.3m_io
scratch.7fortran sd.3m_datapac sdbm_hash.3m_hashkeys
sdot.3m_blas sdraw2.3m_draw sdsdot.3m_blas
sec2days.1 sec2days.3m_time sector.3m_draw
seefont.1 seefont.3m_drawplus select.7fortran
select_case.7fortran selected_char_kind.3fortran selected_int_kind.3fortran
selected_real_kind.3fortran select_type.7fortran sep.3m_strings
separator.3m_io seq-.1 set.3m_framework__msg
set.3m_list set.3m_msg set_args.3m_cli2
setdiff.3m_sets set_environment_variable.3m_system set_exponent.3fortran
set_mode.3m_cli2 setprompts.3m_kracken settheory.1
set_usage.3m_cli2 setxor.3m_sets sgbmv.3m_blas
sgemm.3m_blas sgemv.3m_blas sger.3m_blas
sget.3m_kracken sgetgp2.3m_draw sgets.3m_kracken
sha3.1 shape.3fortran shell.1
shifta.3fortran shiftl.3fortran shiftr.3fortran
show.3m_kracken showumask-.1 shuf-.1
sign.3fortran sign.3m_overload sign.7fortran
significant.3m_framework__approx significant.3m_verify signs.3m_messages
sin.3fortran sind.3fortran sind.3m_units
sinh.3fortran sinpi.3fortran sisiss67.3m_steam67
size.3fortran skekur1.3m_math skekurx.3m_math
sleep-.1 slice.1m_draw slice.1m_slices
slice.3m_strings slocator.3m_draw smoot.3m_calcomp
smove2.3m_draw sngl.3fortran snrm2.3m_blas
snum0.3m_calculator soft_pretzel.7 sort.3m_datapac
sort.3m_orderpack sortc.3m_datapac sort_heap.3m_sort
sortp.3m_datapac sort_quick_compact.3m_sort sort_quick_rx.3m_sort
sort_shell.3m_sort sort_special.3m_orderpack spacing.3fortran
spcorr.3m_datapac specified.3m_cli2 specified.3m_cli
spherical_to_cartesian.3m_units spirograph.3m_drawplus splift.3m_math
splint.3m_math split2020.3m_strings split.3fortran
split.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
squeeze.3m_strings srot.3m_blas srotg.3m_blas
srotm.3m_blas srotmg.3m_blas ssbmv.3m_blas
sscal.3m_blas ssl67.3m_steam67 sspmv.3m_blas
sspr2.3m_blas sspr.3m_blas sssicl67.3m_steam67
sssiss67.3m_steam67 sswap.3m_blas ssymm.3m_blas
ssymv.3m_blas ssyr2.3m_blas ssyr2k.3m_blas
ssyr.3m_blas ssyrk.3m_blas start_watch.3m_stopwatch
stat-.1 state.3m_pixel stbmv.3m_blas
stbsv.3m_blas stddev.3m_math stderr.3m_framework__msg
stderr.3m_msg steamv67.3m_steam67 stmom3.3m_datapac
stmom4.3m_datapac stop.7fortran stop_watch.3m_stopwatch
storage_size.3fortran store.3m_kracken stpmv.3m_blas
stpsv.3m_blas str.3m_framework__msg str.3m_msg
str.3m_strings 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
strmm.3m_blas strmv.3m_blas strsm.3m_blas
strsv.3m_blas strtok.3m_strings stuff.3m_calculator
stuffa.3m_calculator sub.1 subse1.3m_datapac
subse2.3m_datapac subset.3m_datapac substitute.3m_strings
sum.3fortran swap.3m_sort swap_any.3m_sort
swapbuffers.3m_draw switch.3m_strings symbol2atomnum.3m_units
symbol.3m_calcomp 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_cmd.3m_system
system_cpu_time.3m_system system_dir.3m_system system_errno.3m_system
system_getchar.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_putchar.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_signal.3m_system
system_sleep.3m_system system_sleep.3m_time system_srand.3m_system
system_stat.3m_system system_stat_print.3m_system system_system.3m_system
system_uname.3m_system system_unlink.3m_system system_unsetenv.3m_system
system_utime.3m_system tabgraph.3m_messages table2html.1
tablesort.1 tabulate.1 tac-.1
tail.3m_datapac tan.3fortran tand.3fortran
tand.3m_units tanh.3fortran tanpi.3fortran
target.1 tat.1 tcdf.3m_datapac
textang.3m_draw textang.3m_pixel textjustify.3m_draw
textsize.3m_draw textsize.3m_pixel textslant.3m_draw
textweight.3m_draw this_image.3fortran time-.1
time.3m_datapac tiny.3fortran to.3m_overload
today.1 tokenize.3fortran tol.3m_datapac
topic.1 topjustify.3m_draw tostring.3m_display
tostring_set.3m_display tostring_set_factory.3m_display touch-.1
tph67.3m_steam67 tphl67.3m_steam67 tplt.3m_datapac
tppf.3m_datapac tps67.3m_steam67 tpsl67.3m_steam67
tr-.1 trailz.3fortran tran.3m_datapac
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
trim.3m_datapac true-.1 tsl167.3m_steam67
tsl67.3m_steam67 tslh67.3m_steam67 ttee.1
tty-.1 txt2man.1 u2d.3m_time
uarc.3m_drawplus ubound.3fortran ucobound.3fortran
uconic.3m_drawplus ufpp.1 ufpp_overview.7
uname-.1 unexpandviewport.3m_draw unicdf.3m_datapac
unicode_example1.1 unimed.3m_datapac union.3m_sets
unipdf.3m_datapac uniplt.3m_datapac unippf.3m_datapac
uniq.3m_io unique.1m_uuid unique.3m_orderpack
unique.3m_sets unique.3m_sort uniran.3m_datapac
unisf.3m_datapac 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 unit_check_stop.3m_verify unit_test.3m_framework__verify
unit_test_end.3m_framework__verify unit_test_expected.3m_framework__verify unit_test_mode.3m_framework__verify
unit_test_msg.3m_framework__verify unit_test_start.3m_framework__verify unit_test_stop.3m_framework__verify
unit_test_system.3m_framework__verify unix_to_date.3m_time unlink-.1
unpack.3fortran unquote.3m_strings up.3m_draw
upper.3m_strings upper_quoted.3m_strings use.7fortran
v2mo.3m_time v2s.3m_strings value_to_string.3m_strings
var.3m_datapac 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 weib.3m_datapac
weicdf.3m_datapac weiplt.3m_datapac weippf.3m_datapac
weiran.3m_datapac wgedi.3m_la what.1
what_overview.7 where.3m_calcomp where.7fortran
which-.1 which.3m_io whoami-.1
width.3m_calcomp wind.3m_datapac window.3m_draw
write.7fortran wrt.3m_framework__msg wrt.3m_msg
xauth_key.1m_random xcentertext.3m_draw xcentertext.3m_pixel
xerbla.3m_blas xerbla_array.3m_blas xpand.1
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_idbox0.3m_xyplot
xy_idbox.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_jucp2.3m_xyplot
xy_jucp.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_set_bigger.3m_xyplot xy_setcnv.3m_xyplot xy_setlbl.3m_xyplot
xy_setsize.3m_xyplot xy_slide.3m_xyplot xy_tidybox1.3m_xyplot
xy_tidybox2.3m_xyplot xy_tidybox.3m_xyplot xy_units.3m_xyplot
xy_ustrlen2.3m_xyplot xy_ustrlen.3m_xyplot xy_zoom.3m_xyplot
ycentertext.3m_draw ycentertext.3m_pixel yes-.1
zaxpy.3m_blas zcopy.3m_blas zdotc.3m_blas
zdotu.3m_blas zdrot.3m_blas zdscal.3m_blas
zgbmv.3m_blas zgemm.3m_blas zgemv.3m_blas
zgerc.3m_blas zgeru.3m_blas zhbmv.3m_blas
zhemm.3m_blas zhemv.3m_blas zher2.3m_blas
zher2k.3m_blas zher.3m_blas zherk.3m_blas
zhpmv.3m_blas zhpr2.3m_blas zhpr.3m_blas
zo.3m_overload zpad.3m_strings zrotg.3m_blas
zscal.3m_blas zsdh67.3m_steam67 zsdt67.3m_steam67
zsrh67.3m_steam67 zsrt67.3m_steam67 zswap.3m_blas
zsymm.3m_blas zsyr2k.3m_blas zsyrk.3m_blas
ztbmv.3m_blas ztbsv.3m_blas ztpmv.3m_blas
ztpsv.3m_blas ztrmm.3m_blas ztrmv.3m_blas
ztrsm.3m_blas ztrsv.3m_blas  

Footnotes:

Most of the code is maintained using a custom programming environment. The original source files are mostly prep(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 prep(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 prep(1) is one of the utilities included in this collection) most of the source is kept as prep(1) files. prep(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 prep(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