RoboJob V 2.15 Features

What's new, what's fixed

Rexx Exits
Rexx procedures may be specified before a Job starts and after a Job ends.
New commandline parameters
Specify /NoComm or /Comm to deny or allow access to RoboJob via the external interface.
Updated Icon View
RoboJob now tries to display the default icon (if any) for the program defined in your Job.
List of Substitution Parameters
%ISHOLIDAY% has been added.
What's fixed since Version 2.10
Some bugfixes
What's new since Version 2.00
Two new parameters are available.
Icon view of Jobs
To get a quick overview of your Jobs use the new Icon View.
Popup menu modification
It's now possible to use the Popup Menu from the keyboard (press Enter on the selected record). Use the underlined characters from this menu to select an action.
Jobs across midnight
It's now possible to schedule a Job for repeated execution across midnight.
Speedup for delayed Jobs
Searching for the next scheduled time has been improved for Jobs with multiple runs daily.
The list of Substitution Parameters
%PROGNAME% and %COUNT% have been added.
Aid for entering Substitution Parameters
A Popup Menu has been added to the Parameter entry field, access it by pressing the right mouse button.
Robocmd updated
The list of commands from Robocmd has been expanded. Extract has been added which writes every item from the current Jobs as a single queue named nnn.que. Use debug(on) and debug(off) to enable or disable debugging mode.
RBinst updated
The install program has been updated to handle the graphics in the .html files.
Handling of RC dependent Jobs improved
To avoid recursive calls to this type of Jobs they will not trigger themself.
Toolbar Help
Indicates the current selected Job in the help line.
Toolbar Icons
Icon spacing at lower screen resolutions improved.
What's fixed since Version 2.00
Some bugfixes

What was new in Version 2.00

New selections for scheduling
The list of possible choices has been expanded. To ensure compatibility with previous versions, they were added at the end of the selection list.
Registration made easier
A new Registration dialog was added. Electronic registration is now available, no need to wait for the diskette.

Note : To enter your registration number select Help -> Registration or press Alt R

What's fixed since Version 1.60
Some bugfixes

Icons used by RoboJob

The Toolbar
A quick way to most common functions
The Icon View
Select Options -> Job View - Icon View
These are the default icons used by Robojob
RoboJob will try to use the programs own icon.

Note : The special icon for rexx procedures will not be replaced.

Command Line Arguments

Commandline arguments:

Note : No special order is required and they are independent.

/NoComm switch: 
Prevents execution of commands via RoboCmd. 

Note : Every access attempt is logged and RoboCmd will get a result of "ACCESS DENIED"

The Options Menu setting "Disable Communication" will be checked and consequently stored with all other options 
/Comm switch:
Enables execution of commands via RoboCmd. 
The Options Menu setting "Disable Communication" will be unchecked and consequently stored with all other options 
/min switch:
Starts RoboJob in minimized state: 
/max switch:
Starts RoboJob in maximized state: 
/h switch:
This puts all Jobs on hold. No scheduling will occur until you release them. 
QueueFileName
Specify an alternate filename for your Jobs. The file extension must be ".que". 

Note : This filename will be used to save the queue on program exit.

Environment Settings

Environment Settings

There is currently one environment variable supported.

SET OVERDUE_DELAY=seconds

Setting this variable stops scheduling for overdue Jobs for the specified number of seconds on program startup.

Note : This value is also used for delaying the file and process monitoring of dependent Jobs.

The Jobs Menu

Manipulating your Jobs

Add a Job
Presents the Job Property Dialog.
Delete a Job
Deletes the current selected Job. Depending on your options a confirmation dialog will be shown.
Edit a Job
Presents the Job Property Dialog. If the current selected Job is running, no changes can be made there.
Copy a Job
Makes a copy of the selected Job information and presents a prefilled Job Property Dialog. You must enter at least a new Job Title.
Suspend a Job
Suspends scheduling for selected Job.
Resume a Job
Puts selected Job in active state and evaluates missed events and holidays.
Hold all Jobs
Puts all Jobs in a suspended state. No scheduling occurs until one or more Jobs are released.
Release all Jobs
Sets all suspended Jobs to active and evaluates missed events and holidays.
Cancel a Job
Tries to cancel the selected Job. Ofcourse, the status of this Job must be "Running".
Exit
This terminates RoboJob. Depending on your selection from the Options Menu various program states are saved.
Alternate ways
The most common commands are available via a "popup menu". Click the right mouse button over a Job in the Status Display and select a command there. Last not least there is a toolbar for these commands available. Simple put the mouse over one of these buttons and a hint will tell you the meaning of this button. Putting the mouse over the countdown will tell you the name of the next Job to run.

Frequently Asked Questions

Tips and tricks

Saving the queue
Use robocmd for this task. Generate a Job, program is robocmd, parameters \pipe\robojob sav(robojob.que) and schedule it as often as you like.
Starting Jobs anytime
Select the Job in the main display and press Ctrl U or use the second (usually right) mouse button to display a popup menu and select run.
Scheduling Jobs at intervals not presented in the "Job runs" listbox
Use the Rexx exit on startup and supply the current date and time as parameters. and return "Skip" if you don't want the Job to run at this time.

Example

/* Sample Rexx Startup Script */
Parse arg data /* Get arguments */
retstr = "OK"    /* init return variable */
if Address() = "ROB" then do /* check environment */
   if Word(data, 1) \= "NN" then do  /* change "NN" to the day you want */
      retstr = "Skip" /* tell RoboJob not to run the Job at this time */
   end
end
return retstr  /* return your result */

Note : This example assumes you have specified %DAY% in the parameter field of the rexx startup script for your Job.

Easy selecting a Job
Type the first letter of the Job Name. If more than one Job Name starts with the same letter, typing this letter again selects the next one.
Starting .cmd files
Enter the name of the .cmd file as program. No more need for quotes around names containing spaces.
Starting .bat files
Enter the name of the .bat file as program. Parameters will not be quoted as the OS/2 command.com doesn't understand this.
Using programs must run, may not run efficiently
You only have to specify the unique part of the Job Title. Specifying a common part in the Job Title for related Jobs is a time saver.

Note : This is a way of managing only serial reusable resources such as some multimedia components.

Starting a customized session (program object)
Use the supplied Object Selector program to find the Object Handle and start via the objstart.exe utility.

Note : There is currently no way to get at the returncode of the program object. The returncode shown is from ObjStart only. A Rexx Exit on termination will be called at the end of ObjStart.

What's the blinking 'S'
This is only a visual representation of the activity of the Scheduling thread.
Dependent Jobs
You can use any program or batch file. Use the substitution parameters to get the infos you need. If you have a program capable of calling a pager you can be notified when something goes wrong.
Scheduling dependent Jobs after a condition was met
Whenever a dependent Job starts because of a condition met, this condition is monitored for clearing. Afterwards the Job is enabled on this condition again.

Note : This doesn't apply to returncodes.

Jobs which will be never scheduled automatically
Create a dependent Job and enter "0;Your Jobname" for the rc field.

Note : To prevent loops, dependent Jobs will not be triggered on their own termination.

Summer and Winter time
Generate a Job which runs on the last Sunday in March and October. Use %MONTH% as parameter to distinguish between Summer and Winter (if that's your time of change, ofcourse).
A note about returncodes
Use the >0 with caution. it's usually safer to use !0 because it's possible for a program to return a negative value.

The Property Dialog

Specifying the Job properties

Jobname
Required. Every Job must have a title. This title appears in the tasklist when this Job is running.
Program button
Presents a standard file dialog for easy selecting the program.

Note : Use of this button is optional.

Program name
Required. The program (.exe/.cmd/.com/.bat) file to run. Either specify the program name only or the full path.

Note : Full path specification is currently required for Dos and Windows programs.

Program parameters
Optional. The parameters for your program.

Note : If you need file redirection you must use cmd.exe (or command.com for Dos programs) with the parameter /c followed by your program and the file redirections.

Note : Click the right mouse button and you can drag the special Substitution Parameters to this field.

Program directory
Optional: If your program must be started from a specific directory you may enter it here.
Job runs listbox
Select from the listbox either one daily run or multiple runs a day.

Note : When selecting dependent Job, the Criterias Dialog will pop up when you press OK

Limit
For multiple dayly runs you may enter a limit. The Job runs only up to this limit times.

Note : Multiple daily runs across midnight are now supported too

Year, Month, Day, Hour, Minute
Required. Select date and time for the first run of this Job.
Window or Fullscreen
Select if your Job will run in a windowed or fullscreen session.

Note : This always defaults to windowed. Fullscreen must be specific selected when needed. Has no effect on PM programs.

Foreground or Background
Start the Job in the Foreground or Background.

Note : Foreground starts are only possible if RoboJob executes in the foreground at the time a new Job starts.

Program type
This is automatically selected if the program could be found in your path or the correct path was given.

Warning : Only specify this parameter if you are absolutely sure or if the program doesn't exist at the time you are creating this Job entry.

Day selection
Specify selected days of the week or all days. This is the default.
Month selection
Specify selected months of the year or all months. This is the default.
Holidays
Uncheck to obey the holiday definitions.

Note : If you uncheck this and there are no holiday definitions, the Holdiday Definition Dialog is presented.

Overdue
If checked this Job will be executed on startup if the real execution time has been missed.
Rexx Exit
Check this if you want to call Rexx procedures. A separate dialog will be shown where you can enter the procedure names along with all parameters.
Files exist
Optional: specify the file or files (seperated by ; ) which must exist
Files don't exist
Optional: specify the file or files (seperated by ; ) which may not exist
Programs running
Optional: specify the program or programs (seperated by ; ) which must be running.

Note : These are the Job Titles or the entries from the tasklist.

Programs not running
Optional: specify the program or programs (seperated by ; ) which may not be running.

Note : These are the Job Titles or the entries from the tasklist.

Criterias for dependent Jobs

Specifying the dependent Job properties

Accessing the Criterias Dialog
This dialog is automatically displayed when you select "depends on other criterias" in the Job runs listbox of the Property Dialog.
RC and Program
Enter the Returncode(s) and the Job Title(s) you wish to monitor. Returncode(s) and program titles must be separated by semicolons.

Note : To apply the selected Returncode(s) to all Jobs leave out the program title and enter only the delimiting semicolon.

Example
0-15,20-27,!28;Test Job;CP,CPN,CF,CFN;!Test Job;
Description
Run the dependent Job whenever Test Job returns a rc in the range 0 to 15, 20 to 27 and ignore 28. The returncodes CP, CPN, CF, CFN of any Job will trigger execution except for Test Job
Files that must exist
A list of files (separated by semicolons). When one of these files is found the dependent Job ist started.
File that may not exist
A list of files (separated by semicolons). When one of these files is not found the dependent Job ist started.
Programs that must be running
A list of program titles (separated by semicolons). When one of these programs is running the dependent Job ist started.
Programs that may not be running
A list of program titles (separated by semicolons). When one of these programs is not running the dependent Job ist started.

Rexx Exits

Rexx exits
Two Rexx Exits are available for every Job. The command environment name is ROB
On Job Start
The startup directory for this procedure is the same as specified in the Job Directory parameter or the RoboJob directory if this parameter is left blank.
Return values
The following return strings are checked by RoboJob:

Note : In case of NoLaunch this condition will prevent any further scheduling of this Job until it is edited by the user.

Any extra characters after NoLaunch and Skip will be used as a comment and will be shown in the Log with a key of "c".

On Job Termination
The startup directory depends on other Jobs started and no fixed location can be assumed.
Parameter field
Use the right mouse button in the parameter field to get the panel of available substitutions parameters.

Holiday Definition Dialog

Public holidays: 
Select month and day with the spinbuttons and click the add button. 
If you make a mistake,  mark the wrong date in the listbox and click on delete. 
Religious holidays:
They depend on the easter date. You must select an offset in days, then click on add. 
If you make a mistake,  mark the wrong offset in the listbox and click on delete. 
Common offsets
Good Friday
Offset -2
Easter Sunday
Offset 0
Easter Monday
Offset 1
The Ascension Day
Offset 39
Whitsun
Offset 49
Whitmon
Offset 50
Corpus Christi
Offset 60
Save button
This saves the holiday definition to a file which will be loaded automatically by RoboJob on startup. 
Cancel button
This cancels the dialog. No changes will be recorded. 

Special Parameter Substitution

Job Parameters

Note : All parameters must be uppercase.

The Options Menu

Tailoring your preferences.

Sort options
Click here to get a submenu of available sort options.
Filter options
Presents a submenu where you can specify which fields should be shown in the Job Display. Checkmarks left of the field name show visible fields. Press Apply for changes to take effect and to dismiss this menu.

Note : Your selections are preserved when Save Options is checked.

View options
Choose between the default Detail and the new Icon View.
Show Icon Details
Initially on. Toggle between Job Name only and Job Name with Scheduling Information.
Confirmation on
This is a toggle. Default state is on.

Caution : When confirmation is off, you may delete or cancel the selected Job with a single mouseclick!

Write log file
You can toggle the writing of a log file. Log files are saved on a daily basis. The name of the logfile consists of the basename of the program and the extension is the day of the year. Default state is on.
Set Font Colors
Presents the Font Color Dialog. You can change the color of fonts for Job display, log, the message area, date and time in the status bar. How to change fonts.
Set Background Colors
Presents the Background Color Dialog. You can change the colors of Job display, log, the message area, date and time in the status bar. It's also possible to open the Color Palette and drag a color to these areas.
Define Holidays
Presents the Holiday Dialog.
Enable Debug
This is a toggle. Please enable this if you are having trouble with specifying the conditions for dependent Jobs.

Note : A lot of information is displayed in the log and therefore this option should be disabled as soon as possible.

Disable Communications
When checked, any attempt to send commands via RoboCmd will be logged and a result of "ACCESS DENIED" will be returned.

Note : This may be set as commandline parameter too and will be saved when "Save Options" is in effect.

Save Options
This is a toggle. All states in the Option Menu and the sub menus are saved if a checkmark appears to the left. Default state is on.

The Log Menu

You may hide the log by expanding the Job Status. This works as a toggle. A checkmark left of this menu entry signals hidden state.

Default is to show the log.

See also: Explanation of log entries

Keyboard shortcuts

Most of the commands have keyboard shortcuts assigned.

Alt R
Presents the Registration dialog.
Ctrl A
Add a Job. Presents the Job Property Dialog.
Ctrl C
Cancels the current selected Job. The Job must be running. Only if confirmation is on you may abort this command.
Ctrl D
Delete a Job. Only if confirmation is on you may abort this command. You cannot delete a running Job.
Ctrl E
Edit a Job. Presents the Job Property dialog.

Note : If the Job is running, you can only view the properties.

Ctrl G
Toggle debugging output to the log.
Ctrl H
Holds all Jobs. Scheduling for all Jobs is suspended.
Ctrl I
Hides or shows the log.
Ctrl L
All Jobs in suspended state are released.
Ctrl P
Copy the selected Job. Presents the Job Property dialog. filled with data from the currently selected Job. You must supply a new Job title.
Ctrl R
Resumes scheduling of a previously suspended Job.
Ctrl S
Suspend current selected Job. You can only suspend an Active Job. Scheduling for this Job is suspended until it is released.
Ctrl U
Run the selected Job.

Note : Job state must be Active and all conditions like files existing etc. must be met to launch the selected Job.

Ctrl Y
Presents the Holiday Definition Dialog.
In the Popup Menu
Use the underlined character in the menu to run, edit, copy, delete or cancel this Job.
F6
Sorts the Job Display ascending, key Job Name.
F7
Sorts the Job Display descending, key Job Name.
F8
Sorts the Job Display ascending, key Scheduled Time.

Note : This is the default. The next Job to run will be at the top

F9
Sorts the Job Display descending, key Scheduled Time.
F3
Stops programm execution. Only if confirmation is on you may abort this command.

Log Details

Key to log entries

Except for the "sign on and off" messages every log entry consists of three parts.

Job Status Display

Your current Jobs

Note : Have a look at the Options Panel how to customize this display.

Name
Shows the name you have defined for this Job.
Scheduled
Date and time for this Job to run next.
Status
The current state of this Job.
Last Rc
Last return code from this Job or NA if there was no previous run.

Note : The codes CF, CFN, CP, CPN denote conditions not met on startup. Have a look at the log. NoLaunch and Skip can be returned via Rexx Exit procedure on startup.

Program
The program to execute.
Parameter
The (optional) program parameter(s).
Start DIrectory
The (optional) program startup directory.
Last Exec
The date and time the program has last run or NA if there was no previous run.
The (optional) Dependencies
The dependency information (or empty)
The (optional) Rexx Exits
Information about Rexx Exits, procedure and parameters on startup and exit.

Note : Only if the field with the label "Exits" shows a 1, these exits are enabled.

External utility - RoboCmd

RoboCmd Overview

Note : This utility enables you to delete, run, cancel Jobs, save the current JobQueue, load another Queue and modify certain aspects of RoboJob.

It works on the same machine from another task or over any lan which has support for named pipes.

RoboCmd Syntax 
If on the same machine: robocmd \pipe\robojob cmd1 cmd2 .... cmdn 
If across a lan: robocmd \\server\pipe\robojob cmd1 cmd2 ... cmdn 
All commands may be abbreviated. Only the first three characters are significant. 
RoboCmd Commands

Note : The registered version contains the C source to RoboCmd

query 
Lists all the jobs with current state, time scheduled and program information. 
query(jname)
Lists the selected Job with title jname if it exists. 
delete(jname)
Deletes the Job with title jname if it exists. 
run(jname)
Runs the Job with title jname if it exists. Behaves like Ctlr U within RoboJob. 
extract
Write every Job in a own queue. These files are named nnn.que 
save(filename)
Writes the current queue to filename. 
load(filename)
Loads the Queue from filename. 
hold
Holds all Jobs. 
hold(jname)
Holds the specified Job. 
release
Releases all held Jobs. 
release(jname)
Releases the specified Job. 
Commands which influence jobname matching
wildmatch(on) 
Only a part of the jobname must be given 
wildmatch(off)
You must specify the full jobname. This is the default. 
ignorecase(on)
Case is not significant when matching a jobname. This is the default. 
ignorecase(off)
Case is significant when matching a jobname. 
Commands which influence RoboJob options
minimize 
Minimizes RoboJob. 
restore
Restores RoboJob old position. 
maximize
 compact. 
Maximizes RoboJob 
hide(on)
Hides the log display 
hide(off)
Show the log if it was hidden. 
confirmation(on)
Set RoboJob confirmation on. 
confirmation(off)
Set RoboJob confirmation off. 
writelog(on)
The log will be written at midnight and after RoboJob has ended. 
writelog(off)
No log will be written at midnight and after RoboJob has ended. 
debug(on)
Turns debugging option on. Has no effect if it's already on. 
debug(off)
Turns debugging option off. Has no effect if it's already off. 
shutdown
Terminate RoboJob. 

Caution : Confirmation setting is ignored.

RoboCmd return codes.
Returncode 0: all commands executed normally. 

Note : This doesn't guarantee your commands were correct, it simple states the communication with RoboJob was successfull. Returncode 1: RoboJob not executing or busy.

Note : Look at the RoboCmd display: DosOpenError 231 means another copy of RoboCmd is executing, DosOpenError 3 means the specified pipe could not be found. Returncode 255: no commands entered, help displayed.

External utility - RBNotify

The RBNotify utility

This small program shows all Parameters in a Messagebox and accepts up to 800 characters to display.

RBNotify Syntax

RBNotify param1 param2 .... paramn

Note : to force a linebreak in the resulting messagebox use "\n"

Example

RBNotify Error \nProgram %PROG% ended with \nRc %RC%

Add this as dependent Job to your queue and enter as criteria !0,CP,CPN,CF,CFN,Error,NoLaunch

This will trigger execution on any returncode except zero and on all conditions specified for regular Jobs

External utility - ObjStart

ObjStart Overview

ObjStart Syntax 
ObjStart "<objectid>|objecthandle" {settings} ... "objectid|objecthandle" {settings} 
Parameter Description
objectid 
This is the object id assigned when the object was created. 

Note : You can also specify a file or path to open them in the default view.

A program object must be always surrounded by " and "

object handle
This is the persistent object handle shown in the handle column of the ObjSel program. 
settings
They may be specified optionally and must follow the rules outlined in the description of "SysCreateObject". 

Caution : It is not possible to modify the Object Id with this program. Use ObjSel for this task. When specifying set statetments there is no translation to uppercase.

External utility - Object Selector

The Object Selector Utility

Registration

How to register

This is a full functional 30 day evaluation version. If you want to use the program after the 30 day limit, you must register.

Just click on the pen icon in the RoboJob Folder for the order form.

New since Version 2.0 is the Registration dialog. After receiving your order and verifying the payment, your key will be sent to you if an email address is specified. This is in addition to the diskette version.

Ordering via BMT Micro is available now. Just click on the icon in the RoboJob Folder for the BMT order form.

Prices

RoboJob single license (valid for one machine): USD 49.00

RoboJob additional license per machine: USD 29.00

For volume discounts please contact me at one of these addresses.

If you want to order via Compuserve: GO SWREG, ID is 11819

Object Select standalone via Compuserve: GO SWREG, ID is 13817

Shipping & Handling: Europe USD 2.00, elsewhere USD 3.00

American Express Creditcards welcome.

Note : Customers residing within the EC must include their VAT ID or will be charged an additional 20 % VAT.

FootNote 1

NPSWPS users who have "Activate WIndow at Pointer" turned on must use a waiting time greater 0 or the popup menu may not work correctly.

FootNote 2

Single returncode
Either a number or the words CF, CFN, CP, CPN, Error, NoLaunch, Skip

Note : Error and NoLaunch prevent further scheduling of this Job until the Job is changed (edited) by the user.

Conditions
Supported are: ! < > (for numeric values only)
Range
Specify a range of returncodes eg 0-15
List of returncodes
Enter the returncodes (including conditions) separated by ","

FootNote 3

Use "if Address() = "ROB" then do .... end" to check for the correct environment in your Rexx procedure.

FootNote 4

To change fonts open the Font Dialog in the System Folder and drop a font on these areas.

FootNote 5

The following states are defined:

FootNote 6