Dec 092017
Unix like Cron utility for DV.
File DVCRON20.ZIP from The Programmer’s Corner in
Category Alternate Operating Systems
Unix like Cron utility for DV.
File Name File Size Zip Size Zip Type
CR-PIF.DVP 416 77 deflated
CRON.C 15848 4833 deflated
CRON.DOC 6384 2736 deflated
CRON.EXE 35192 18595 deflated
CRON.LOG 3811 411 deflated
CRON.PRJ 73 53 deflated
CRONDOS.DVP 416 71 deflated
CRONTAB 214 105 deflated
GETOPT.C 856 435 deflated
GETOPT.H 206 152 deflated
PIF.H 4167 1408 deflated
TPCREAD.ME 199 165 deflated
WHATSNEW 2129 1004 deflated

Download File DVCRON20.ZIP Here

Contents of the CRON.DOC file

Cron 1.1
(c) 1991 -- Kyle A. York

Here's my attempt to port the Unix Cron utility to MS-DOS. Feel free
to do with program as you please --but-- always leave my name in the
source and documentation and ALWAYS note any changes you have made. I
don't want bad code running around with my name on it.


Ralph Brown for his invaluable interrupt list and DVGLUE library.

Command Format

CRON [-c filename] [-d filename] [-l filename] [-l-] [-m memsize]

-d filename : set the template .dvp file to filename
-c filename : set the CRONTAB file to filename (default is crontab
in the same directory as cron.exe)
-l filename : set logfile to filename (default is cron.log in the
same directory as cron.exe)
-l- : disable the log file
-m memsize : set the CRONTAB buffer to memsize. default is 1K.

This is meant to be run in it's own window. The "cr-pif.dvp" file
provided should work for most people (after changing the program path &

CRONTAB format

the first 5 fields are: minute (0-59), hour (0-23), day of month (1-
31), month of year (1-12) and day of week (0-6, 0=sunday). A '*' is
used for "any allowable value". The fields are seperated by spaces.

ex: 0 0 1,15 * 3 [switches] {command} [paramaters]

will execute the command at 00:00 on the 1st and 15th of every month
and on every Wednesday. The number list can be comma-seperated
(1,15) or ranges (1-5,6-9). VERY LITTLE error checking is done. If a
number is out of range, it will never be found so {command} will
never be executed. If a * appears anywhere in the field, the fields
will ALWAYS match (eg 1,2,4-7,*,9 is equivalent to *). A range is
assumed to be low to high. If it is entered high to low, only the
limits will match (eg 7-4 will match 7 and 4, but not 5 and 6
whereas 4-7 will match 4,5,6,7).

{command} format

This is where I had to deviate somewhat from the UNIX format. The

command can be optionally preceded by some switches as follows:

-b : force this window to start in the background
-c n : if n < 0, set minimum conventional memory to -n K
: if n > 0, set maximum conventional memory to n K
: this might seem kind of clunky but its the best I could
: think to do.
-e n : set maximum expanded memory to n K
-h : force this window to start hidden

If the command has the extension '.exe', '.com', or '.dvp' it must
also have the full path to reach the file. In other words the DOS
path is not traversed to find the program. Any other extension
(most notably ".bat") will load the current command shell
(normally COMMAND.COM) and pass the command as a parameter.

If the command has an extension '.exe' or '.com' the window is set
to close on completion. If it has a '.dvp' then the command is run
verbatim from the info in the '.dvp'. If it has any other
extension, the command interpreter is loaded and the command is
sent to the interpreter. Generally if you are running a batch file
and you want the window to close on completion, the last command
in the batch file should be 'exit'.

parameters format

The parameters string is parsed for the following strings:
%M, %D, %h, %m
If these are found, %M is replaces with the 2-digit month, %D with
the 2-digit day of month, %h with the 2-digit hour, and %m with
the 2-digit minute. An example of this is included in the example
CRONTAB file. I needed a way to backup my disks using a unique
name, and the month + day strings worked quite well.

After this parsing, the parameters are sent to the program.


DesqView allows only 63 characters for the full path to the program,
and 63 characters for the parameters. If the parameters string is
greater than 63 characters it is truncated with a warning written to
the log file. If a '.bat' file is run, the path to the program is
cleared and the parameters are set to the program name + parameters
therefore the full string (program name + parameters) must be less
than 63 characters. If not it is truncated with a warning written to
the log file.

Also, opening a new application is done using DVapp_start(). From
the DVGLUE documentation:
"This function is known to cause lockups under DV 2.00 (6-16-87).
Use at your own risk (though I would appreciate hearing from you
which version (and date) you are using and whether or not it
worked). [Ralph Brown]"
I have used this with DV 2.4 without problems, your mileage may


The CRONTAB file is opened when CRON begins and is left open while
CRON is running. Therefore it is HIGHLY RECOMMENDED that you also
load SHARE.EXE so one doesn't accidently deleted the file as this
would have highly unpredictable results. I use the timer functions
of DV so the amount of time spent in CRON is minimal. With a 3 line
CRONTAB file which executes commands once per day, and some once per
hour, my machine uses only about 1 minute / day for the CRON
process. Each minute, the first thing done is a check on CRONTAB to
see whether it's been modified. If it has, it is re-read. You will
note that there is no year entry in the CRONTAB file. This means
that a CRONTAB entry will never expire. If you set it to a certain
date (say 12 December) then it will execute only once per year.

I have been using this program for about one week and have tried
every parameter but I cannot guarentee this will not crash. If it
does, or you have any other problems, please mail me at

[email protected]
[email protected]

Technical Stuff

This program was compiled with Turbo C 2.0 using the small memory
model and optimization set to 'size'. I've heard it said "never set
optimization to size" and always believed it until now. I felt there
was little speed gain to be had.

I tried my best to keep this thing small, and am very happy with the
19K result. If you see somewhere that the code can be optimized
please let me know.

 December 9, 2017  Add comments

Leave a Reply