home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Best Objectech Shareware Selections
/
UNTITLED.iso
/
boss
/
comm
/
misc
/
008
/
macro.doc
< prev
next >
Wrap
Text File
|
1993-02-13
|
168KB
|
5,080 lines
____________
{COMMO} (tm)
____________
"A New Standard in Telecommunications"
by
Fred P. Brucker
Post Office Box 9103
Santa Rosa, CA 95405
Macro Programming Guide
Release 5.41
February 13, 1993
(C)Copyright 1989-1993 Fred P. Brucker All Rights Reserved
The {COMMO} program and associated on-disk documentation are the
property of the author and may not be sold without permission.
The Shareware version may be distributed, unaltered and as a
unit, via Electronic Bulletin Board Systems.
SHAREWARE DISTRIBUTORS and clubs, please see the file VENDOR.DOC
for distribution guidelines.
THE AUTHOR DOES NOT GUARANTEE THIS PROGRAM TO BE FREE FROM
DEFECTS AND MAY NOT BE HELD RESPONSIBLE FOR LOSS CAUSED BY SUCH.
YOUR USE OF THIS PROGRAM CONSTITUTES YOUR ACCEPTANCE OF THESE
TERMS.
DESQview is a trademark of Quarterdeck Office Systems
OmniView is a trademark of Sunny Hill Software
DoubleDOS is a trademark of SoftLogic Solutions, Inc.
HS/Link is a product of Samuel H. Smith
DSZ and GSZ are products of Omen Technology Inc.
MPt is a product of Matthew Thomas
LIST is a product of Vernon D. Buerg
The IBM PC is a product of IBM Corp.
MS-DOS is a trademark of MicroSoft Corp.
(C)Copyright 1989-1993 Fred P. Brucker All Rights Reserved
================================
{COMMO} Registration Information
================================
{COMMO} is a "SHAREWARE" product. You are entitled to evaluate it for
30 days. If it suits your needs and you would like to continue using
it, then you must pay the licensing fee. Please use the REGISTRATION
FORM on the next page.
When you REGISTER you will be licensed to use all future SHAREWARE
releases of {COMMO}. You will never have to pay an "update" charge.
You will also receive instructions for removing the Shareware Notice
at program startup.
My (voice) TELEPHONE NUMBER for inquiries and support for registered
users is (707) 573-1065. Please restrict calls to business hours
(Mon-Fri, 9am-5pm, Pacific time).
Registered users will also receive priority support on Bulletin Boards,
CompuServe and GEnie (see READ.ME).
Call or write for pricing information on MULTI-USER (site) and
DISTRIBUTION licenses. Discounts are given on quantities of 10 or more.
See the file LICENSE.DOC for details.
All prices shown are US DOLLARS. Please remit US FUNDS on US BANK only.
NET 30 TERMS will be accepted on purchase orders totalling $100.00 or
more.
PAYMENT OPTIONS:
1) Payment by CHECK or MONEY ORDER: make payable to FRED P. BRUCKER.
Mail the Registration Form and payment to the address below.
2) Payment by CREDIT CARD: fill in the credit card information at the
bottom of the Registration Form. The following cards are accepted:
VISA, MASTERCARD, CARTE BLANCHE, DINERS CLUB, JCB.
You can mail the Registration Form to the address below or:
Order by phone: (707) 573-1065, Mon-Fri, 9am-5pm, Pacific time.
Have your credit card ready when you call.
Order by E-mail on CompuServe (71021,356) or GEnie (F.BRUCKER1).
Upload the completed Registration Form as a message.
The company name on the charge will be "New Standard Software."
SEND TO: Fred P. Brucker
Post Office Box 9103
Santa Rosa, CA 95405
{COMMO} 5.41 SINGLE USER REGISTRATION FORM
Name _______________________________________________________________
Company name (if company address) ____________________________________
Address _______________________________________________________________
_______________________________________________________________
_______________________________________________________________
{COMMO} single user license, SPECIAL PACKAGE .... $50.00** $ __________
Includes: (1) Printed, bound, indexed manual.
(2) Latest release on diskette plus utilities
(COMMOPNS, MOSTHOST, CMC, etc., see READ.ME).
Diskette format: 5.25" ____ 3.5" ____
{COMMO} single user license, with DISKETTE ...... $40.00 $ __________
Diskette format: 5.25" ____ 3.5" ____
{COMMO} single user LICENSE alone ............... $35.00 $ __________
BBS sysops, students, seniors, low-income ....... $25.00 $ __________
(license only; provide details on back of form)
Subtotal $ __________
California residents add sales tax, 7.5% $ __________
(No tax when ordering license alone)
** SPECIAL PACKAGE ORDER, ADD SHIPPING:
USA/Canada/Mexico ......... $3.00
All other countries ...... $10.00 $ __________
Total $ __________
Payment method: Check__ Money order__ Visa__ MasterCard__
Carte Blanche__ Diners Club__ JCB__ PO__
CREDIT CARD INFORMATION:
Card No. ________ ________ ________ ________ Expires ____/____
Cardholder signature _____________________________________________
Cardholder name __________________________________________________
Daytime telephone (_____) _____ _______
Answers to the following questions will help me serve you better in the
future:
How did you obtain {COMMO}? (If BBS, please give name and phone number)
________________________________________________________________________
What kind of systems do you call with {COMMO}?
________________________________________________________________________
________________________________________________________________________
What type of computer and modem do you use?
________________________________________________________________________
________________________________________________________________________
Comments / Questions ___________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
Thank you, and I hope you enjoy {COMMO}.
{COMMO} (tm) Macro Programming Guide 6
========
Contents
========
Programming {COMMO} Macros . . . . . . . . . . . . . . . . . 9
Overview . . . . . . . . . . . . . . . . . . . . . . . . 9
Macro Structure . . . . . . . . . . . . . . . . . . . . 9
Macro Functions . . . . . . . . . . . . . . . . . . . . 10
Macro Labels . . . . . . . . . . . . . . . . . . . . . . 12
Macro Variables . . . . . . . . . . . . . . . . . . . . 13
How to Use Variables . . . . . . . . . . . . . . . . . . 14
Reserved Variables . . . . . . . . . . . . . . . . . . . 15
Executing Macros . . . . . . . . . . . . . . . . . . . . 16
Additional Macro Execution Rules . . . . . . . . . . . . 16
Cancelling a Macro . . . . . . . . . . . . . . . . . . . 17
A Macro Example in Detail . . . . . . . . . . . . . . . 17
Description of Functions (Alphabetical) . . . . . . . . . . . 21
ABAUd . . . . . . . . . . . . . . . . . . . . . . . . . 21
ALARm . . . . . . . . . . . . . . . . . . . . . . . . . 21
ASCIiup . . . . . . . . . . . . . . . . . . . . . . . . 22
AUTO . . . . . . . . . . . . . . . . . . . . . . . . . . 23
BEEP . . . . . . . . . . . . . . . . . . . . . . . . . . 24
BREAk . . . . . . . . . . . . . . . . . . . . . . . . . 24
CALL . . . . . . . . . . . . . . . . . . . . . . . . . . 24
CALOok . . . . . . . . . . . . . . . . . . . . . . . . . 25
CAPMode . . . . . . . . . . . . . . . . . . . . . . . . 25
CAPTure . . . . . . . . . . . . . . . . . . . . . . . . 26
CHATmode . . . . . . . . . . . . . . . . . . . . . . . . 26
CLEAr . . . . . . . . . . . . . . . . . . . . . . . . . 26
COMPare . . . . . . . . . . . . . . . . . . . . . . . . 27
CURSor . . . . . . . . . . . . . . . . . . . . . . . . . 28
DECRement . . . . . . . . . . . . . . . . . . . . . . . 28
DIAL . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Marking Numbers for Dialing . . . . . . . . . . . . 30
Automatic Resumption of Dialing . . . . . . . . . . 30
Testing Success and Failure Results . . . . . . . . 30
Handling Incoming Calls . . . . . . . . . . . . . . 31
DISPlay . . . . . . . . . . . . . . . . . . . . . . . . 32
DIVIde . . . . . . . . . . . . . . . . . . . . . . . . . 33
DOORway . . . . . . . . . . . . . . . . . . . . . . . . 33
DPARms . . . . . . . . . . . . . . . . . . . . . . . . . 34
EDIT . . . . . . . . . . . . . . . . . . . . . . . . . . 34
ELAPse . . . . . . . . . . . . . . . . . . . . . . . . . 35
EXECute . . . . . . . . . . . . . . . . . . . . . . . . 35
Using the Direct Switch: EXEC-D . . . . . . . . . . 37
Using the Swap to Disk Switch: EXEC-S . . . . . . . 38
EXECute Preview Mode . . . . . . . . . . . . . . . 38
EXIT . . . . . . . . . . . . . . . . . . . . . . . . . . 39
GETString . . . . . . . . . . . . . . . . . . . . . . . 39
GOLOok . . . . . . . . . . . . . . . . . . . . . . . . . 41
{COMMO} (tm) Macro Programming Guide 7
GOTO . . . . . . . . . . . . . . . . . . . . . . . . . . 42
HANGup . . . . . . . . . . . . . . . . . . . . . . . . . 42
HELP . . . . . . . . . . . . . . . . . . . . . . . . . . 42
HFLOw . . . . . . . . . . . . . . . . . . . . . . . . . 42
HOLD . . . . . . . . . . . . . . . . . . . . . . . . . . 43
IFCArrier . . . . . . . . . . . . . . . . . . . . . . . 43
IFCOndition . . . . . . . . . . . . . . . . . . . . . . 44
IFERrorlevel . . . . . . . . . . . . . . . . . . . . . . 45
IFEXist . . . . . . . . . . . . . . . . . . . . . . . . 46
INCRement . . . . . . . . . . . . . . . . . . . . . . . 46
INITmodem . . . . . . . . . . . . . . . . . . . . . . . 47
INPUt . . . . . . . . . . . . . . . . . . . . . . . . . 47
INSTring . . . . . . . . . . . . . . . . . . . . . . . . 48
KEYStuff . . . . . . . . . . . . . . . . . . . . . . . . 48
LENGth . . . . . . . . . . . . . . . . . . . . . . . . . 49
LIGHts . . . . . . . . . . . . . . . . . . . . . . . . . 49
LOCAlecho . . . . . . . . . . . . . . . . . . . . . . . 50
LOOKfor . . . . . . . . . . . . . . . . . . . . . . . . 50
MACLoad . . . . . . . . . . . . . . . . . . . . . . . . 52
MACRo . . . . . . . . . . . . . . . . . . . . . . . . . 53
MARK . . . . . . . . . . . . . . . . . . . . . . . . . . 54
MENU . . . . . . . . . . . . . . . . . . . . . . . . . . 55
MULTiply . . . . . . . . . . . . . . . . . . . . . . . . 57
NOCArrier . . . . . . . . . . . . . . . . . . . . . . . 58
NOOP . . . . . . . . . . . . . . . . . . . . . . . . . . 58
OFFLog . . . . . . . . . . . . . . . . . . . . . . . . . 58
PARMs . . . . . . . . . . . . . . . . . . . . . . . . . 59
PASSword . . . . . . . . . . . . . . . . . . . . . . . . 59
PAUSe . . . . . . . . . . . . . . . . . . . . . . . . . 60
POPStack . . . . . . . . . . . . . . . . . . . . . . . . 60
PRINtlog . . . . . . . . . . . . . . . . . . . . . . . . 60
PUSHstack . . . . . . . . . . . . . . . . . . . . . . . 61
RCLOse . . . . . . . . . . . . . . . . . . . . . . . . . 61
READ . . . . . . . . . . . . . . . . . . . . . . . . . . 62
RETUrn . . . . . . . . . . . . . . . . . . . . . . . . . 63
ROPEn . . . . . . . . . . . . . . . . . . . . . . . . . 63
RTRAn . . . . . . . . . . . . . . . . . . . . . . . . . 64
RXMOdem . . . . . . . . . . . . . . . . . . . . . . . . 65
RYMOdem . . . . . . . . . . . . . . . . . . . . . . . . 66
SCREen . . . . . . . . . . . . . . . . . . . . . . . . . 67
SCROllback . . . . . . . . . . . . . . . . . . . . . . . 68
SEND . . . . . . . . . . . . . . . . . . . . . . . . . . 68
SETDial . . . . . . . . . . . . . . . . . . . . . . . . 68
SETEsc . . . . . . . . . . . . . . . . . . . . . . . . . 69
SETGet . . . . . . . . . . . . . . . . . . . . . . . . . 70
SETLook . . . . . . . . . . . . . . . . . . . . . . . . 71
SETVariable . . . . . . . . . . . . . . . . . . . . . . 73
SFLOw . . . . . . . . . . . . . . . . . . . . . . . . . 74
SHELl . . . . . . . . . . . . . . . . . . . . . . . . . 75
SIGNal . . . . . . . . . . . . . . . . . . . . . . . . . 75
SOUNd . . . . . . . . . . . . . . . . . . . . . . . . . 76
SPDCtrl . . . . . . . . . . . . . . . . . . . . . . . . 76
{COMMO} (tm) Macro Programming Guide 8
SPOCtrl . . . . . . . . . . . . . . . . . . . . . . . . 77
SSLOok . . . . . . . . . . . . . . . . . . . . . . . . . 77
STATusline . . . . . . . . . . . . . . . . . . . . . . . 78
STOP . . . . . . . . . . . . . . . . . . . . . . . . . . 78
STRAn . . . . . . . . . . . . . . . . . . . . . . . . . 79
SUBString . . . . . . . . . . . . . . . . . . . . . . . 80
SXMOdem . . . . . . . . . . . . . . . . . . . . . . . . 80
SYMOdem . . . . . . . . . . . . . . . . . . . . . . . . 81
TOGGles . . . . . . . . . . . . . . . . . . . . . . . . 82
UNMArk . . . . . . . . . . . . . . . . . . . . . . . . . 83
VIDEo . . . . . . . . . . . . . . . . . . . . . . . . . 83
VTCUr . . . . . . . . . . . . . . . . . . . . . . . . . 84
VTPAd . . . . . . . . . . . . . . . . . . . . . . . . . 84
WCLOse . . . . . . . . . . . . . . . . . . . . . . . . . 84
WOPEn . . . . . . . . . . . . . . . . . . . . . . . . . 85
WRITe . . . . . . . . . . . . . . . . . . . . . . . . . 85
Appendix A Table of {COMMO} Key-labels . . . . . . . . . . 87
Enhanced Keyboard Key-labels . . . . . . . . . . . . . . 88
Appendix B List of Reserved Variables . . . . . . . . . . . 89
Appendix C Macro Functions Listed by Class . . . . . . . . 91
{COMMO} (tm) Macro Programming Guide 9
==========================
Programming {COMMO} Macros
==========================
IMPORTANT! Please read the next few pages before you attempt to
write any macros! The rules for writing {COMMO} macros are few
in number, but must be followed carefully.
Examples of more complex macro programming are given in the
sample Macro File COMMO.MAC, in the supplied file SAMPLES.MAC and
in the Host Mode and Guide macros. A macro from SAMPLES.MAC is
discussed in detail at the end of this section.
The following pages assume familiarity with {COMMO}'s key
commands and with other features of the program. Since many
macro functions have corresponding key commands, duplicate
explanations will not be given here. Refer to the description of
the key command in the User Guide and Reference.
Overview
========
{COMMO}'s Macro File may contain any number of macros. The only
size limitation on the file is that the Dialing Directory and
Macro File combined must total 64k bytes or less.
Macros are "interpreted," which implies the following:
(1) Macros are not processed until they are executed.
(2) Only macros within the currently loaded Macro File are
available for use.
(3) Macros added or modified with the Internal Editor are
available immediately.
Alternate Macro Files may be loaded using the MACLoad function
(the original file is replaced and may be reloaded at a later
time).
Macro Structure
===============
Macros consist of a series of items enclosed in curly braces.
Items may be placed on the same line or on as many lines as
desired. The file is entirely free-form. Lines may be up to 255
characters in length and all text outside the curly braces is
commentary and is ignored by the Macro Processor.
There are two types of items: "functions" and "labels."
{COMMO} (tm) Macro Programming Guide 10
Functions are action items. Some are equivalent to {COMMO}
key commands, such as DIAL, while others are unique to the
macro language, such as SETVariable.
Labels are macro entry points and may be placed anywhere
within the Macro File.
Macro Functions
===============
Each macro function is described in detail later in this
document. See also Appendix C "Macro Functions Listed by Class."
The general form of any macro function is:
{name-switches arg1,arg2,...,argn}
name The function name describes the action to be
performed and consists of four or more
characters. Only the first four are
significant and case is ignored.
switches These are used to alter the operation of a
function. Each switch is a single letter and
may be followed by a numeric value, usually
"1" or "0" to indicate "yes" or "no"
respectively.
Switches have default interpretations when
the numeric value is omitted, or when the
switch is not present.
Switches must be separated from the name with
a hyphen (no intervening spaces). They may
be upper or lower case.
See individual function descriptions for
details (note that only certain functions
have switches).
args A SINGLE SPACE separates the arguments from
the function name and switches
Individual arguments are separated with
commas and may contain no extraneous spaces
(all spaces are significant).
NOTE: Curly braces may be represented within macro functions by
using ^( for { and ^) for }.
{COMMO} (tm) Macro Programming Guide 11
Examples:
{send Hi, how are you?}
This function sends the string "Hi, how are you?" to
the modem. SEND has only one argument -- the string to
send out. Since the string is the last argument, it
may contain commas and spaces. Quotes are not used to
define strings.
{ifcon-LE label1,label2}
The IFCOndition function tests for conditions set by
other functions, such as COMPare. Here two switches
are present, telling {COMMO} to test for less than or
equal:
L Test for "less than."
E Test for "equal."
The two arguments are labels to GOTO depending on the
conditions.
Notice that "name-switches" may be written in a number
of different ways:
ifco-LE ifcondition-EL ifcond-LE
{asci-S0E1 pathname}
The ASCII Upload function will send the file indicated
by "pathname." The switches override current settings
and tell {COMMO}:
S0 Do NOT strip linefeeds.
E1 DO expand blank lines (may also be written
"E").
{sound} {sound yes}
The first function will TOGGLE Master Sound ON/OFF
(since there is no argument). The second will turn the
sound ON.
One very important function is the STOP function. It is used to
terminate macro processing and may appear in either its long form
or short form:
... {stop} long form
... {} short form
{COMMO} (tm) Macro Programming Guide 12
Macro processing continues until a STOP function is executed. Be
sure to use one or processing will continue into the next macro
in the Macro File!
Macro Labels
============
Labels are identifiers consisting of one or more characters.
When a label is defined, it must be preceded by a colon.
References to labels, such as {goto label}, do not require the
colon.
IMPORTANT! {COMMO} always searches for labels from the beginning
of the Macro File. This means that if a label is duplicated
within the file, the first occurrence will be used.
Only the first eight characters in a label are significant. Case
is ignored. All characters are allowed in labels except the
following:
colon ":"
space " "
comma ","
slash "/"
curly braces "{" or "}"
Examples:
{:mailrun} {call login} ...
{:start-here} {:another.entry} {send Begin now!} ...
A number of three character labels are reserved and are called
"key-labels." When the corresponding key is pressed from the
Terminal Screen, {COMMO} will look for the key-label in the
current Macro File. If the key-label is found, macro processing
will begin at that location.
Any default key assignment may be overridden using a key-label.
For example, pressing Alt-D normally enters the Dialing
Directory. But suppose this line is in the Macro File:
{:ald} {clear} {}
Now pressing Alt-D will clear the screen.
See Appendix A "Table of {COMMO} Key-labels" for a complete list
of keys that may be assigned.
{COMMO} (tm) Macro Programming Guide 13
Macro Variables
===============
{COMMO} maintains a String Variable Space in which variables
appear in the form:
name,string
name An identifier consisting of one or more
characters of which only the first eight are
significant. Case is ignored. The following
are the ONLY valid characters that may be
used in a variable name:
"A" through "Z"
"a" through "z"
"0" through "9"
"_" underline.
All other characters will terminate the name.
string A text string. The string must not contain
any control characters below ASCII 28. If a
string is set to null (0 characters), it is
deleted from variable space.
NOTE: Any variable not defined is considered
to be null.
Strings consisting of only the digits 0-9 and
representing a decimal number from 0 to 65535
are also numeric variables (there is no other
difference between string and numeric
variables).
The maximum length of strings is 240
characters.
The String Variable Space may be viewed from within the Macro
Processor window by pressing "V". The amount of unused string
space is shown at the bottom of the screen.
Once a variable is defined, it remains in String Variable Space
until it is redefined or deleted (set to null). Therefore
variables should be deleted or re-used to prevent String Variable
Space from becoming full.
The default size of String Variable Space is 1536 bytes, but it
may be adjusted with the "/v" command line switch at program
startup. The valid range is from 512 bytes to 65535 bytes. See
also "Command Line Options" in the User Guide and Reference.
{COMMO} (tm) Macro Programming Guide 14
How to Use Variables
====================
{COMMO} variables are set (or "defined") by various macro
functions and by variable strings in a Dialing Directory entry.
Variables are used (or "referenced") in macro function arguments
and in the telephone number field of the Dialing Directory.
See also "Alt-D Dialing Directory" in the User Guide and
Reference.
When a variable name appears, the string assigned to the name is
substituted for the name. If the variable is null, then the name
is replaced with 0 characters. {COMMO} will expand the variables
in a macro function before processing it.
In order to distinguish variable names, they must be preceded
with a percent sign "%" (use two percent signs if a percent sign
is needed in the data).
The end of the variable name is indicated with another "%" or
with the first character that is not allowed in a name (see list
of characters above).
A variable definition example:
{setvar animal,Elephant} or {setvar %animal,Elephant}
Notice that the "%" is not required (but is permitted)
when the variable name is the first argument of a
function that defines, modifies or tests the value of a
variable. Other such functions include INPUt,
GETString, INCRement, DECRement, COMPare, SUBString,
INSTring, READ.
If the variable name in this situation needs to be a
variable, then use two percent signs:
{setv %%animal,Elephant}
Variable usage examples:
{setvar animal,Elephant}
{send %animal} Sends "Elephant" to the modem.
{send animal} Sends "animal".
{send %animal%s are large animals}
{COMMO} (tm) Macro Programming Guide 15
Sends "Elephants are large
animals". Note that the trailing
"%" is required here.
{setvar animal,Elephant}
{setv creature,animal}
{send creature} Sends "creature".
{send %creature} Sends "animal".
{setv %%creature,Giraffe}
{send %animal} Sends "Giraffe".
IMPORTANT! Variables may NOT be substituted within the function
name or switches. They may be substituted anywhere else, even
for the commas separating arguments.
Reserved Variables
==================
Certain variables have fixed names so that {COMMO} can find them
whenever they are needed. The names of these variables begin
with an underline character "_". There are two types of reserved
variables: "user-defined" and "built-in" (see Appendix B "List of
Reserved Variables" for a complete list).
USER-DEFINED reserved variables are defined in the same way that
you define ordinary variables -- in the Setup File using SET, or
in a macro using functions such as SETVariable, INPUt, etc.
These variables define strings used by certain program features.
For example, the pathname of the Usage Log is defined in the
Setup File as follows:
{set _uselog,c:\commo\commo.log}
BUILT-IN variables are defined by {COMMO} based on current system
parameters. Examples are:
_cap Current Capture File pathname
_tim Current time of day
Any variable that starts with the same four characters as a
built-in variable ("_" plus the next three) will be considered
the same variable. For example "_pas" may be written "_password"
and "_yea" may be written "_year".
{COMMO} will always search String Variable Space first when
looking up the value of any variable. This allows built-in
variables to be overridden, but only when using their four
character minimum names. For example, to override the serial
port number, you must use "_por", not "_port".
{COMMO} (tm) Macro Programming Guide 16
See Appendix B for a complete list of reserved variables.
Executing Macros
================
Macro execution may be started in any of the following ways:
1) Open the Macro Processor window by pressing Alt-M. Position
the Selector Bar at the desired starting point and press
[Enter]. The Macro Processor will begin processing at the
first macro label or function on the line.
NOTE: Macros started with the Selector Bar do not need
macro labels and may be started at any point within the
macro.
2) If a macro label is also a key-label, then you may press
that key from the Terminal Screen. Note that if the same
key-label appears more than once, the first occurrence will
be used.
3) A macro may be linked to a Dialing Directory entry (Linked
Macro). In this case {COMMO} will GOTO the macro when a
connection is established with that system (or optionally
CALL it, see the DIAL function).
4) A startup macro may be specified in the Setup File using the
"{mac=label}" item.
5) A startup macro may be specified on the command line with
the switch "/:label". This will override the Setup File
macro.
6) A macro may be an argument of another function such as CALL,
GOTO, DIAL or SETLook.
Some macro functions show their current action on the Status Line
at the bottom of the screen. In addition, a "face" character in
the middle of the Status Line indicates that a macro is
executing.
Additional Macro Execution Rules
================================
Characters may be typed to the serial port during functions that
wait (LOOKfor, GETString, PAUSe, HOLD, etc.). Command keys will
be ignored during macro processing.
The Macro Processor will execute functions IN SEQUENCE until one
of the following conditions occurs:
{COMMO} (tm) Macro Programming Guide 17
1) A CALL, GOTO, RETURn, STOP, EXIT, etc. is encountered.
2) Control is transferred to an alternate macro from certain
functions when a special condition occurs. An example of
this is the SETLook function. The alternate will execute
when a subsequent LOOKfor times out.
3) A macro error occurs. This will bring up the Macro
Processor window with the Selector Bar on the problem line.
The macro will be terminated.
4) The end of the Macro File is reached.
Cancelling a Macro
==================
The [Esc] key is used to terminate macro processing. To send an
<esc> code (ASCII 27) to the remote during macro execution
(without terminating the macro), press Ctrl-[ (Ctrl + left
bracket).
Current function execution may be terminated by pressing
[Ctrl-Break]. For example, this can be used to terminate a
LOOKfor, PAUSe or HOLD prematurely. Macro processing will
advance to the next function.
If a macro contains a function that brings up a {COMMO} window
(Dialing Directory, Capture File Options, etc.), then [Esc] will
exit the window and processing continues with the next function.
To terminate macro processing from a window, press [Ctrl-Break].
NOTE: The SETEsc function may be used to help prevent accidental
termination of macros.
A Macro Example in Detail
=========================
The following macro example from SAMPLES.MAC can be used to log
in to many types of Bulletin Board Systems. This is a Linked
Macro, so the label "login" would appear in the Dialing Directory
macro field for each system that uses it. When you dial and
connect to one of the systems, {COMMO} will automatically GOTO
the macro.
The subroutine "gls" (generic login subroutine) can also be
called from macros that perform mailruns and other BBS
operations.
{COMMO} (tm) Macro Programming Guide 18
Note that labels and functions may be placed side by side on the
same line (up to 255 characters). For purposes of this example
each item is placed on its own line.
The main routine at "login" performs some initial functions and
then calls the subroutine at "gls". The subroutine looks for
various prompts, responds to them and terminates after responding
to the "password" prompt.
{:login}
The entry point. All labels begin with a ":".
{capture y,c:\commo\commo.cap}
"y" means open the Capture File. The pathname of the
file is specified here, otherwise the current file
would be opened.
{asci ,}
Set ASCII Upload to "no pacing."
{call gls}
CALL the macro at "gls". When the subroutine executes
a RETUrn, control will come back here.
{}
STOP and resume manual operation in the Terminal
Screen. Without this STOP processing would continue
into subsequent macros. Remember that labels are
"passed over" during sequential macro processing.
{:gls}
The entry point of the "gls" subroutine.
{setlook 60,hng,10,|}
This function specifies parameters that go into effect
whenever a LOOKfor executes. It tells the Macro
Processor to wait up to 60 seconds for the string (or
strings) and to GOTO the label "hng" if none of the
strings appear within that time. The timer is
restarted each time a LOOKfor begins to execute.
The SETLook also specifies that a "|" (carriage return)
should be sent to the modem whenever 10 seconds have
elapsed and no characters are received. This is used
{COMMO} (tm) Macro Programming Guide 19
to respond to prompts that are not explicitly specified
in SSLOoks/CALOoks/GOLOoks/LOOKfors (e.g., "Press any
key to continue").
Use this latter facility with care since a BBS may
spend time processing and not actually be expecting
input from the caller. The carriage returns sent will
accumulate and be used to satisfy later prompts,
causing things to get out of "sync." Adjust the 10
second timeout as needed.
{setv ss_r,~|}
{setv ss_yr,~y|}
Variables are set for some common responses. They will
be used later by SSLOok functions. For convenience,
these variables may be defined in the Setup File (using
the "set" keyword).
SSLOoks, CALOoks and GOLOoks store strings to look for,
but do not wait for the strings (only a LOOKfor can do
the actual waiting).
{:li1}
{sslo ss_r,(enter)}
{sslo ss_yr,graphics (enter)}
{sslo ss_yr,is this correct}
The SSLOoks will send the strings in the variables when
the respective targets are received. The looking for
all of the stored strings then resumes.
{calo li1,li2,first name}
{calo li1,li3,last name}
CALOoks will CALL the second label if the target string
appears (the LOOKfor is cancelled). When the macro
executes a RETUrn, control goes to the first label
where all of the strings can be set up again. Note
that CALOoks are used here for demonstration. SSLOoks
could be used as well (and probably should be).
{golo li1,;passwor}
A GOLOok will set up a string and GOTO the label if the
string appears (only one label is used). In this
example the specified string is to be ignored. This
was needed for a BBS that used the string
"first;last;password" prior to the actual password
prompt.
{lookfor password}
{COMMO} (tm) Macro Programming Guide 20
This is where the actual "looking" takes place.
Remember that SSLOoks, CALOoks and GOLOoks only cause
strings to be stored but do not actually wait for the
strings.
The LOOKfor will wait for the string specified and also
any other stored strings (up to 16 total). If the
string in the LOOKfor appears, control passes to the
next macro function.
"password" is assumed to be the last prompt in the
login sequence.
{send ~%_pas|}
Control then passes here and the string is sent to the
modem. The tilde (~) causes a half-second delay before
sending the password. The password in the Dialing
Directory entry was stored into the built-in variable
"_pas" when dialing began.
Finally, a carriage return (|) is sent.
{return}
This will RETUrn to the "login" macro.
{:li2}
{send ~Fred|}
Response to "first name".
{return}
{:li3}
{send ~Brucker|}
Response to "last name".
{return}
{COMMO} (tm) Macro Programming Guide 21
=======================================
Description of Functions (Alphabetical)
=======================================
The purpose of this section is to show the syntax of each
function and the meaning of its arguments through examples. All
functions are listed here, but details on functions which are
also default key commands are found in The User Guide and
Reference under "{COMMO} Key Commands."
Function names are shown with their four-letter abbreviations in
uppercase.
For consistency, the following conventions are used in many
functions:
"y" or "yes" is used to indicate "yes", "on", "open", etc.
"n" or "no" is used to indicate "no", "off", "close", etc.
_____
ABAUd
_____
Default key: none
Description: Set AutoBaud toggle.
Examples:
{abaud} Toggle AutoBaud on/off
{abaud y} Turn on AutoBaud
{abaud n} Turn off AutoBaud
_____
ALARm
_____
Default key: none
Description: Ring the alarm.
Examples:
{alarm} Ring alarm, use ring count in Setup File.
{alarm 2} Ring alarm 2 times.
{COMMO} will wait until the alarm has stopped ringing before
proceeding to the next macro function (the alarm may be
terminated early by pressing a key).
{COMMO} (tm) Macro Programming Guide 22
_______
ASCIiup
_______
Default key: Alt-A
Description: Upload an ASCII (text) file.
General form:
{ASCIiup pathname[\],pace}
pathname The complete path and filename (if the
path is absent, the current directory
will be used).
If a path only is used (signified by a
"\" at the end) the ASCII Upload window
will open, prompting you to enter the
filename.
pace The pacing character to be used.
Switches:
E1 or E Expand blank lines. A space will be sent
when a zero-character line is encountered.
E0 Do not expand blank lines.
S1 or S Strip linefeeds from outgoing text.
S0 Do not strip linefeeds.
If a switch is absent, the current setting of the
toggle will be used. The toggles can be set in the
Setup File or by using the Alt-T key command.
Switches apply to the current function only and do not
affect the settings of the toggles.
Examples:
{asci} Open ASCII Upload window.
{asci-S} Open ASCII Upload window,
strip linefeeds when file is
sent.
{asci %uldir%\} Open ASCII Upload window,
prompt with the current value
of the variable "uldir".
{COMMO} (tm) Macro Programming Guide 23
{asci c:\msgs\file.xyz,:} Upload "file.xyz." Use ":"
for pacing.
{asci-E0 c:\msgs\file.xyz} Upload "file.xyz." Use
current pacing character, do
not expand blank lines.
{asci c:\msgs\file.xyz,} Upload "file.xyz." Do not use
pacing.
{asci ,?} Set current pacing character
to "?"
{asci ,} Set current pacing to "no"
pacing.
The pacing character may be entered according to the rules shown
in Appendix D in the User Guide and Reference. For example, "^m"
or "|" may be used to represent the carriage return.
____
AUTO
____
Default key: none
Description: Maintain Auto Receive strings.
General form:
{AUTO label,string}
label Label to GOTO when the string is
received.
string String to look for, may be up to 32
characters.
Examples:
{auto} Clear all Auto Receive strings.
{auto zmodem,^XB00} Zmodem Auto Receive string.
Note that only 8 Auto Receive strings may be in effect at the
same time (including any strings defined in the Setup File).
Use this function with no arguments to clear all strings when
necessary.
See also "TIPS on creating LOOKfor strings" under LOOKfor.
{COMMO} (tm) Macro Programming Guide 24
____
BEEP
____
Default key: none
Description: Sound a beep.
Example:
{beep} No arguments.
_____
BREAk
_____
Default key: Alt-B
Description: Send a break.
Switches:
Tn Set break duration in system clock
ticks. "n" may range from 1 to 999.
There are 18.2 clock ticks per second.
T0 or T Set break duration to 18 clock ticks
(default).
Examples:
{break} One second break.
{break-t9} One-half second break.
{break-t55} Three second break.
____
CALL
____
Default key: none
Description: Execute a macro subroutine.
Example:
{call abc} Execute subroutine abc.
CALL will push the location following the CALL function onto the
macro stack, then it will GOTO the label given in the argument.
When a RETUrn is executed, the location will be popped and
control will return to the function following the CALL.
{COMMO} (tm) Macro Programming Guide 25
Note that macros may be nested up to 32 deep.
See also RETUrn, PUSHstack, POPStack.
______
CALOok
______
Default key: none
Description: Set up an additional string to look for during a
subsequent LOOKfor function.
General form:
{CALOok label1,label2,target}
label1 The location to return to after label2 is
CALLed.
label2 The label to CALL when the target is received
from the serial port.
target The ASCII string to look for. The string
begins following the "," and is terminated by
the "}".
CALOok is used in conjunction with LOOKfor. When the target
string appears, a CALL is made to "label2." When the routine
executes a RETUrn, control will pass to "label1". This is
equivalent to:
{call label2} {:label1} ...
See LOOKfor for details, examples and tips on using CALOok.
See also: SSLOok, GOLOok, SETLook.
_______
CAPMode
_______
Default key: none
Description: Set Capture Mode.
Examples:
{capmode screen} Set Capture Mode to SCREEN.
{capmode filter} Set Capture Mode to FILTER.
{capmode raw} Set Capture Mode to RAW.
{COMMO} (tm) Macro Programming Guide 26
See also CAPTure.
_______
CAPTure
_______
Default key: Alt-1
Description: Capture File Options.
Examples:
{capture} Open Capture File Options
window.
{capture y} Open current Capture File.
{capture n} Close current Capture File.
{capt y,c:\commo\file.xyz} Open indicated Capture File.
{capt n,c:\dl\newfile.cap} Close current Capture File,
set new file as indicated.
NOTE: The current Capture File will always be closed when a new
file is opened.
See also CAPMode.
________
CHATmode
________
Default key: Alt-- (Alt minus)
Description: Set Chat Mode toggle.
Examples:
{chat} Toggle Chat Mode on/off.
{chat y} Turn on Chat Mode.
{chat n} Turn off Chat Mode
_____
CLEAr
_____
Default key: Alt-C
Description: Clear Terminal Screen to default colors.
Example:
{COMMO} (tm) Macro Programming Guide 27
{clear} No arguments.
_______
COMPare
_______
Default key: none
Description: Compare a string or numeric variable.
General form:
{COMPare name,string}
name The name of a variable.
string A string of ASCII characters.
Examples:
{comp pword,aardvark} Test if the variable "pword"
is set to "aardvark."
{comp pword} Test if "pword" is null.
{comp pword,} Test if "pword" is null.
{comp nmbr,5} Compare a numeric variable.
{comp abc,%xyz} Test if the variable "abc" is
equal to the variable "xyz."
A numeric variable is a string of ASCII digits, 0-9, forming a
positive integer in the range from 0 to 65535. If the number is
outside this range or contains non-numeric characters, the
results of the compare will be unpredictable.
COMPare will set flags which can be tested with the IFCOndition
function.
The Condition Flag will be set to "true" if the two
arguments are identical strings (case is ignored).
Otherwise it will be set to "false."
The Numeric Flag will be set to "equal", "less than" or
"greater than." This flag is unpredictable unless both
arguments are valid numeric variables.
A variable may be tested for being null (no entry in variable
space) by omitting the second argument (or by comparing to a null
variable).
{COMMO} (tm) Macro Programming Guide 28
See also IFCOndition.
______
CURSor
______
Default key: none
Description: Terminal Screen cursor on/off.
Examples:
{cursor} Toggle Terminal cursor on/off.
{curs y} Turn on Terminal Screen cursor.
{curs n} Turn off Terminal Screen cursor.
_________
DECRement
_________
Default key: none
Description: Subtract a number from a numeric variable.
Examples:
{decr count} Subtract 1 from the variable "count".
{decr apples,200} Subtract 200 from "apples".
Numeric variables and the numbers to be subtracted may range from
0 to 65535. The default number is 1.
If the result is less than 0 or if either argument is out of
range, then the variable will be set to the string "ERROR".
If the variable is not numeric, the results will be
unpredictable.
See also INCRement.
____
DIAL
____
Default keys: Alt-D, Alt-N
Description: Open Dialing Directory, dial marked systems.
General form:
{DIAL tries,label1,label2}
{COMMO} (tm) Macro Programming Guide 29
tries The maximum number of dialing tries. If no
connection is established when the try count
is exhausted, the macro in the second
argument will be started. May be 0 to 999.
"0" means unlimited. Default is 0.
label1 A macro to GOTO if the try count in the first
argument is exhausted. If no macro is
specified or if the macro label is invalid,
control will pass to the next function.
Default is none.
If the "C" switch is used, the macro will be
CALLed. When a RETUrn is executed, control
will return to the DIAL function.
label2 A macro to GOTO when a response is matched
during the Inter-dial Delay. Response
strings are listed in the reserved variable
"_dialir" and are usually defined in the
Setup File.
If the "C" switch is used, the macro will be
CALLed. When a RETUrn is executed, control
will return to the DIAL function.
Switches:
C1 or C Specifies that macros will be started via
CALL (instead of GOTO). When the macros
execute a RETUrn, control returns to the DIAL
function and Multi Number Dialing will
resume.
The "C" switch applies to the Linked Macro
(from the Dialing Directory), the "tries
exhausted" macro and to the Inter-dial Delay
macro.
C0 Start dialing macros via GOTO (default).
Examples:
{dial} Open Dialing Directory window (similar
to Alt-D).
{dial ,} Multi Number Dial (similar to Alt-N).
{dial 25,abc} Multi Number Dial with try count.
{dial-C ,} Multi Number Dial, CALL Linked Macros.
{COMMO} (tm) Macro Programming Guide 30
{dial-c ,,inter} Multi Number Dial with Inter-dial Delay
macro.
Marking Numbers for Dialing
---------------------------
Numbers may be marked in one of several ways:
1) Manually in the Dialing Directory window.
2) By placing Dialing Strings on the {COMMO} command line.
3) Using the MARK macro function.
Marked numbers will be redialed in sequence. If a connection
occurs and a valid Linked Macro is specified in the Dialing
Directory, the macro will be started via GOTO (unless the "C"
switch is present). If no macro is specified in the Dialing
Directory, control is passed to the next function.
If no numbers are marked when executing the DIAL, control will
pass to the next function.
Automatic Resumption of Dialing
-------------------------------
Here are two methods for resuming at the end of a Linked Macro.
Both allow multiple systems to be called without operator
intervention.
1) Use the "C" switch on the DIAL function. Each Linked
Macro should end with a RETUrn which will transfer
control back to the DIAL. When all numbers have been
called, control will pass to the function following the
DIAL.
2) At the end of each Linked Macro (after logging off),
GOTO a macro such as this:
{:nocar} {pause 1} {ifcarrier nocar} {dial ,} {}
This ensures that carrier has dropped before DIALing
the next number. The PAUSe allows data to display on
the screen while waiting for carrier to drop.
Testing Success and Failure Results
-----------------------------------
Details about a successful or failed dialing attempt are
available in several reserved variables (see Appendix B "List of
Reserved Variables" for complete descriptions):
{COMMO} (tm) Macro Programming Guide 31
_dtc Dialing termination code
_dialrt Dialing response text
_mod Speed reported by modem (normally in the CONNECT
or CARRIER response)
After a successful attempt the variables "_dialrt" and "_mod" may
be tested in your Linked Macro. For example, if you expected a
high-speed connect and the speed reported was 2400 or 1200, then
you may want to hang up and try again later.
You can get control after each failed attempt by using "DIAL 1",
with or without a macro. For example:
1) {dial-c 1,nocon} ...
The Linked Macro and the "no connect" macro will be
CALLed (the "C" switch). The variables "_dtc" and
"_dialrt" may be tested in the macro at "nocon".
2) {dial 1} ...
Control will pass to the next function if a dialing
attempt fails or when no more systems are marked (test
"_dtc" to determine which).
If the testing indicates that the system should not be dialed
again (e.g., it did not answer, _dtc = 3), the UNMArk function
can be used with the "L" switch to unmark the last number dialed:
{unmark-l}.
Handling Incoming Calls
-----------------------
Most modems return the string "RING" when a call comes in. If
this happens during the Inter-dial Delay, you may choose to stop
dialing (to answer a voice call) or to send a brief message to a
modem caller (during a BBS event, for example).
Use "label2" on the DIAL function to process responses during the
Inter-dial Delay. For example:
{dial ,,incoming}
The macro at "incoming" will execute if the modem sends an Inter-
dial Delay response string (these are normally defined in the
Setup File with the "_dialir" variable).
See also: SETDial, MARK, UNMArk.
{COMMO} (tm) Macro Programming Guide 32
_______
DISPlay
_______
Default key: none
Description: Display a string to the screen.
General form:
{DISPlay row,col,attr,string}
row The row where the string will display.
col The column where the string will display.
attr The attribute (colors) of the string.
string The text of the string (no quotes).
Examples:
{display 12,20,17,Hello!} Display "Hello!" at row 12,
column 20. Colors are white
on blue.
{disp ,,,Hello, again.^m^j} Display "Hello, again." at the
current cursor using the
current attribute, followed by
a cr/lf.
{disp 3,40} Position the cursor at row 3,
column 40.
TIPS on using DISPlay:
> The attribute is specified in the same manner as the colors
in the Setup File (press F7 in the Internal Editor to
display the Color Chart).
> Setting background colors to high intensity values will
cause blinking (for example, using "9" instead of "1" will
still give a blue background but the foreground character
will blink).
> After the string is displayed, the previous Terminal Screen
attribute will be restored.
> Conversion is performed on the string according to the rules
in Appendix D in the User Guide and Reference.
{COMMO} (tm) Macro Programming Guide 33
______
DIVIde
______
Default key: none
Description: Divide a numeric variable by a number.
Example:
{divi space,1024} Divide "space" by 1024.
Numeric variables may range from 0 to 65535, the divisors may
range from 1 to 65535. The default divisor is 1.
The named variable will be set to the quotient, the built-in
variable "_rem" will be set to the remainder.
If the divisor is zero or if either argument is out of range,
then the variable will be set to the string "ERROR".
If the variable is not numeric, the results will be
unpredictable.
_______
DOORway
_______
Default key: Alt-=
Description: Toggle Doorway Mode.
Switches:
S1 or S Status Line on when entering Doorway Mode.
S0 Status Line off (default).
M0 Do not display Doorway enter/exit messages.
M1 Display enter/exit messages (default).
Examples:
{doorway} Toggle Doorway Mode on/off.
{door-S} Status Line on when entering Doorway
Mode.
{doorway-M0} Do not display enter/exit messages.
The "S" switch is ignored when exiting Doorway Mode (the Status
Line will be restored to its prior state).
{COMMO} (tm) Macro Programming Guide 34
______
DPARms
______
Default key: Alt-P
Description: Set Default Dialing Terminal Parameters
General form:
{DPARms speed,format,comport,terminal-type,delay}
speed The bps rate: 2400, 9600, etc.
format The data format: 8n1, 7e1, etc.
comport The serial port number: 1, 2, 3 or 4.
terminal The terminal-type: A, V or T.
delay The inter-character delay factor: 0-999.
Examples:
{dparms 2400,8,1,,20} Set 2400 bps, 8n1, Com1, delay =
20.
{dparms ,,4,V} Set Com4 VT102.
{dparms 19200,7o1} Set 19200 bps, 7o1.
Note that omitted parameters are not changed.
See also PARMs.
____
EDIT
____
Default key: none
Description: Edit an external file.
Example:
{edit c:\autoexec.bat} Edit AUTOEXEC.BAT file.
EDIT may be used to edit any text file up to 64k in length. The
rules are the same as for editing a support file with the
Internal Editor.
TIPS on using EDIT:
> Control characters (below ASCII 28) may not be typed.
{COMMO} (tm) Macro Programming Guide 35
> Any data beyond the last cr/lf pair will be removed prior to
editing. A cr/lf pair will be added, if necessary, to
ensure at least one line in the file.
> The file will be saved unconditionally when Alt-F is pressed
or conditionally (if changes were made) when Esc is pressed.
The file is "saved in place" (no backup).
______
ELAPse
______
Default key: none
Description: Reset the elapsed timer to 0 minutes.
Example:
{elap} No arguments.
The elapsed timer is automatically reset whenever dialing begins
and when a connection is made with a remote system.
_______
EXECute
_______
Default key: none
Description: Execute a DOS command.
Switches:
A1 or A Sound the alarm at the end of command
execution.
A0 Do not sound the alarm (default).
D1 or D Execute an external program directly, without
use of the command processor (see details
below).
D0 Use the command processor (default).
N1 or N Do not clear the screen before execution.
This is useful when running programs that
clear or rewrite the screen. Also for simple
DOS functions like changing directories,
renaming files, etc.
N0 Clear the screen (default).
{COMMO} (tm) Macro Programming Guide 36
S1 or S Swap to Disk before executing the program
(see details below).
S0 Do not swap to disk (default).
W Wait for a key press before restoring the
Terminal Screen. This is useful if you need
to see the results of the command execution.
Wn Wait for "n" seconds, "n" may range from 0 to
999. Press a key to cancel the wait.
Note: Default (no "W" switch) is no wait.
Examples:
{exec-AW3 dsz port %_por speed %_spe sz %uldir%\%file}
{COMMO} will prepare the DSZ command by expanding the
"%" variables, then call DOS to execute the program.
See the section "Macro Variables" for complete details
on variable substitution.
The alarm will sound at completion (the "A" switch) and
{COMMO} will wait for three seconds (the "W3" switch)
before restoring the Terminal Screen.
{execute-DN c:\utils\list.com %_cap}
The LIST program will be directly executed with the
current Capture File pathname as a command line
argument. The screen will not be cleared (LIST will
rewrite the screen). {COMMO} will return immediately
to the Terminal Screen when LIST exits.
The EXECute function enables you to "build" a command to be
executed by DOS. The DOS command processor (COMMAND.COM) is
normally used (see below), which implies that you may specify any
command as you would type it from the DOS prompt.
Thus you can execute batch files and internal DOS commands (REN,
DEL, etc.). Also you can omit command paths and extensions (if
the command is in your PATH or in the current directory).
Character conversion is performed in the EXECute function. This
enables you to specify control characters. For example:
{exec echo ^L> prn} Send a formfeed to the printer
{COMMO} (tm) Macro Programming Guide 37
See Appendix D in the User Guide and Reference for details on
conversion. Note that the vertical bar "|" is NOT translated to
a carriage return in the EXECute function.
Key codes may be placed in the keyboard buffer prior to EXECute
using the KEYStuff function.
Using the Direct Switch: EXEC-D
-------------------------------
Use this switch to execute .EXE and .COM programs without the use
of the command processor (usually COMMAND.COM).
The program's Exit Code (called ERRORLEVEL in batch files) is
saved and may be tested with the IFERrorlevel function. The Exit
Code is also available in the variable "_err".
There are several advantages to using the "D" switch:
1) Only the memory needed to run the program is required (the
command processor requires that about 32k be available, even
if the program being run is much smaller).
2) About 4k of memory is saved by not having a copy of the
command processor resident when the program is running.
3) The program executes faster, since COMMAND.COM is not loaded
from disk.
4) The program's Exit Code is preserved and may be tested with
the {COMMO} IFERrorlevel function.
Two important rules must be followed when using the "D" switch:
1) The full pathname of the program file must be specified,
including the path where the file resides on disk and the
file extension. For example:
{exec-D c:\util\list.com file.txt}
2) Only .EXE and .COM files may be run (batch files and
internal DOS commands cannot be executed without
COMMAND.COM).
{COMMO} (tm) Macro Programming Guide 38
Using the Swap to Disk Switch: EXEC-S
-------------------------------------
The "S" switch will direct {COMMO} to write the program and
associated data to a disk file. This will free up approximately
50k to 180k of memory, depending on the sizes of your Variable
Space, Scrollback Buffer, Dialing Directory and Macro File. The
pathname of this file is specified with "swp=" in the Setup File
(under "Paths and Files").
When the program or shell exits back to {COMMO}, the program and
data will be restored from the disk file. Any errors in this
process will cause {COMMO} to exit to DOS. If the Swap File
cannot be opened or there is not enough disk space for the swap,
the EXECute (or SHELl) will be attempted without swapping.
TIPS on using Swap to Disk:
> The serial port will be closed during the swap (normally it
is left open to receive characters during EXECute and
SHELl). To avoid losing any data, swapping should be
initiated when the remote system is quiet (or when you are
offline).
> Use Swap to Disk when running major applications such as
external protocol drivers, offline mail readers, etc. Using
it with internal DOS functions (DEL, COPY, REN, etc.) or
very small programs is inefficient and unnecessary.
> If possible, specify the Swap File on a RAMDISK. This will
speed up the swap considerably. A ramdisk program is
supplied with DOS (RAMDRIVE.SYS or VDISK.SYS) or you can
obtain one from a BBS.
> Be sure to specify a complete pathname for the Swap File.
> Do not run any TSR (resident) programs when swapping is in
effect. Doing so may result in a swap error.
EXECute Preview Mode
--------------------
Use the Set Toggles key command, Alt-T, to turn on "EXECute
Preview Mode." This mode is used to test your DOS commands and
performs the following steps for each EXECute function:
1) The command will be displayed after expanding variables and
converting control characters.
2) You will be given an opportunity to edit and/or cancel the
command before it is executed.
{COMMO} (tm) Macro Programming Guide 39
3) Following execution {COMMO} will wait before restoring the
Terminal Screen. This lets you see any error messages that
the command may have displayed.
____
EXIT
____
Default key: Alt-X
Description: Exit {COMMO}.
General form:
{EXIT number}
number The return code to be passed to DOS. It may
be tested with the IF ERRORLEVEL batch
command. Range is 0 to 255.
Switches:
D1 or D Drop DTR and RTS. Dropping DTR will cause
the modem to disconnect if it has been
properly initialized. See Appendix A in the
User Guide and Reference.
D0 Do not drop DTR and RTS.
If the switch is absent, the current setting
of the toggle will be used. The toggle can
be set in the Setup File or by using the
Alt-T key command.
Examples:
{exit} No arguments (return code = 0).
{exit 3} With return code.
{exit-D} Drop DTR and RTS.
_________
GETString
_________
Default key: none
Description: Input a string from the modem to a variable.
General form:
{GETString name,count,label}
{COMMO} (tm) Macro Programming Guide 40
name The name of the variable to which the string
will be assigned.
count The maximum number of data characters
allowed. A carriage return will always
terminate input. May be 1 to 240. Default
is 240.
label A macro to GOTO if a carriage return is
received and no characters have been entered
(the string will be assigned as null). If
this argument is omitted, control will pass
to the next function.
Switches:
A1 or A "Append" mode. Characters will be appended
to the variable. If the current length of
the variable is greater than the count in the
second argument, a count of 240 will be
assumed.
A0 The variable will be replaced (default).
H1 or H "Hotkey" mode. When the maximum number of
characters has been entered, control will
pass to the next function.
H0 Ignore all input after the maximum has been
entered, except backspace and carriage return
(default).
P1 or P "Password" mode. Asterisks will be echoed to
the remote and local terminals in place of
the received characters (Echo Status will be
honored, see SETGet).
P0 Characters are echoed as received (default).
Examples:
{setget 60,timeout,y,^m^j} Set GETString parameters.
{gets fonum,12,badinput} Get input to "fonum."
{gets-p pword,20} Get a password.
TIPS on using GETString:
> The only control characters allowed (below ASCII 28) are
carriage return (ASCII 13) and backspace (ASCII 8). Other
{COMMO} (tm) Macro Programming Guide 41
control characters should be entered as ^J for linefeed,
etc. See Appendix D in the User Guide and Reference.
> Destructive backspace processing is supported for editing
purposes.
> GETString supports "tandem" input. Characters entered at
either end will be input to the string (and displayed at
both ends if echo is on (see SETGet). Turn on Local Echo to
see text locally that is sent to the remote with SEND,
ASCIiup, etc.
> Use the "H" switch and a character count of 1 for "hotkeys."
> Turn off echo in the SETGet while waiting for the modem to
answer (in host mode). Some modems react poorly to
characters being echoed when they are generating a response
(such as "RING").
> Incoming characters displayed during a GETString function
are not seen by subsequent SSLOok/CALOok/GOLOok/LOOKfor
functions.
See also SETGet.
______
GOLOok
______
Default key: none
Description: Set up an additional string to look for during a
subsequent LOOKfor function.
General form:
{GOLOok label,target}
label A label to GOTO when the target is received
from the serial port.
target The ASCII string to look for. The string
begins following the "," and is terminated by
the "}".
GOLOok is used in conjunction with LOOKfor. When the target
string appears, control will pass to the label.
See LOOKfor for details, examples and tips on using GOLOok.
See also: SSLOok, CALOok, SETLook.
{COMMO} (tm) Macro Programming Guide 42
____
GOTO
____
Default key: none
Description: Transfer control to a macro label.
Example:
{goto mail_run} Control transferred to label
"mail_run".
______
HANGup
______
Default key: Alt-H
Description: Disconnect by dropping DTR.
Examples:
{hangup} Prompt user for disconnect.
{hangup y} Disconnect without prompting.
____
HELP
____
Default key: F1
Description: Open Online Help window.
Example:
{help} Display key command help
{help x} Display topic "TX"
Any single character may be specified. {COMMO} will prefix it
with a "T" and search for the topic code. You may create your
own Online Help file. See "Modifying the Help File" in the User
Guide and Reference.
_____
HFLOw
_____
Default key: none
Description: Set Hardware Flow Control toggle.
{COMMO} (tm) Macro Programming Guide 43
Examples:
{hflow} Toggle Hardware Flow Control on/off.
{hflow y} Turn on Hardware Flow Control.
{hflow n} Turn off Hardware Flow Control.
____
HOLD
____
Default key: none
Description: Hold until specified time of day (24 hour format).
Examples:
{hold 3:30} Hold until 3:30 am.
{hold 16:10} Hold until 4:10 pm.
{hold 0:00} Hold until midnight.
NOTE: Incoming characters displayed during a HOLD function are
not seen by subsequent SSLOok/CALOok/GOLOok/LOOKfor functions.
_________
IFCArrier
_________
Default key: none
Description: Test for presence of carrier detect signal.
General form:
{IFCArrier true,false}
true A label to GOTO if carrier is detected.
false A label to GOTO if carrier is not
detected.
NOTE: The default when either label is omitted is to pass
control to the next function.
Example:
{ifcarrier c10,c20}
Tip on using IFCArrier:
> When using a loop to wait for a change in carrier detect,
you should include a short pause in the loop if you want
characters to display. The following sequence will display
{COMMO} (tm) Macro Programming Guide 44
incoming characters while waiting for carrier detect to
drop:
... {:cd1} {pause 1} {ifcarrier cd1} ...
___________
IFCOndition
___________
Default key: none
Description: Test for conditions set by other functions.
General form:
{IFCOndition true,false}
true A label to GOTO if the Condition Flag is
true.
false A label to GOTO if the Condition Flag is
false.
NOTE: The default when either label is omitted is to pass
control to the next function.
Switches:
none Test the current state of the Condition Flag.
E1 or E Test for numeric equality. A numeric string
contains only the digits 0-9 and is in the
range 0 to 65535.
L1 or L Numeric test -- if first COMPare argument is
less than the second.
G1 or G Numeric test -- if first COMPare argument is
greater than the second.
Examples:
{compare var1,message} Compare and set Condition
{ifcondit match,nomatch} Flag. GOTO "match" if the
variable "var1" is set to
"message," to "nomatch" if it
is not.
{compare value,200} Compare and set conditions.
{ifcon-GE toobig,aok} GOTO "toobig" if "value" is
greater than or equal to 200,
else GOTO "aok."
{COMMO} (tm) Macro Programming Guide 45
{instring zipcode,90} Test if "zipcode" contains
{ifcon yes,no} the digits "90". If "true"
GOTO "yes", if "false" GOTO
"no".
Switches may be used in any combination. If any numeric switches
are present, the Condition Flag is not tested.
The difference between testing for string equality and numeric
equality is shown in this example:
The strings "05" and "5" are different text strings, but are
numerically equal.
____________
IFERrorlevel
____________
Default key: none
Description: Test the Exit Code set by certain functions.
General form:
{IFERrorlevel number,true,false}
number A number from 0 to 255. It will be
compared to the last Exit Code that was
set.
true A label to GOTO if the Exit Code is
greater than or equal to "number."
false A label to GOTO if the Exit Code is less
than "number."
NOTE: The default when either label is omitted is to pass
control to the next function.
Example:
{iferror 1,abc,def} GOTO "abc" if Exit Code is
greater than or equal to 1.
Else GOTO def.
TIPS on using IFERrorlevel:
> The Exit Code is set by certain functions (e.g., EXECute-D,
SHELl, RXMOdem, SXMOdem) and should normally be tested
immediately following execution of those functions.
{COMMO} (tm) Macro Programming Guide 46
> EXECute without the "D" switch or Shell to DOS will normally
set the Exit Code to 0.
> Many programs return an Exit Code greater than 0 when the
result is unsuccessful. DSZ, for example, will return an
Exit Code of 1 if the file transfer has failed.
> The value of the Exit Code is also stored in the string
variable "_err" and may be tested with COMPare.
_______
IFEXist
_______
Default key: none
Description: Test for existence of a disk file or files.
General form:
{IFEXist pathname,true,false}
pathname A DOS pathname. If the path is omitted,
the current directory will be used. If
wildcards are used the "true" condition
will hold if any files match the
specification.
true A label to GOTO if the file exists.
false A label to GOTO if no files match.
NOTE: The default when either label is omitted is to pass
control to the next function.
Examples:
{ifex a:file.xyz,,m20} GOTO "m20" if not found.
{ifex c:\data\words.txt,345} GOTO "345" if found.
{ifex c:\ul\*.rep,a01,a02} Using a wildcard.
_________
INCRement
_________
Default key: none
Description: Add a number to a numeric variable.
Examples:
{incr count} Add 1 to the variable "count".
{COMMO} (tm) Macro Programming Guide 47
{incr oranges,1234} Add 1234 to "oranges".
Numeric variables and the numbers to be added may range from 0 to
65535. The default number is 1.
If the result is greater than 65535 or if either argument is out
of range, then the variable will be set to the string "ERROR".
If the variable is not numeric, the results will be
unpredictable.
See also DECRement.
_________
INITmodem
_________
Default key: Alt-O
Description: Send Modem Initialization String.
Example:
{init} No arguments
_____
INPUt
_____
Default key: none
Description: Input a string from the keyboard.
General form:
{INPUt name,prompt}
name The name of a string variable. The current
value of this variable will appear in the
input line.
prompt A prompt string that will appear in the input
window border.
Example:
{input upfile,Enter a filename:} Input a string to
the variable
"upfile."
If 0 data characters are entered, the variable will be set to
null.
{COMMO} (tm) Macro Programming Guide 48
NOTE: If Esc is pressed, macro processing will be terminated
unless an exit label has been defined with SETEsc.
________
INSTring
________
Default key: none
Description: Find a string within a string, return its
position.
General form:
{INSTring name,string}
name The name of a variable (string to search in).
string The string to search for.
Example:
{inst line,abc} The variable "line" is searched for the
string "abc".
INSTring will set the following:
1) The Condition Flag will be set to "true" if the string
is found, to "false" if the string is not found. Test
with IFCOndition, no switches.
2) The starting position of the string will be returned in
the built-in variable "_pos" (first character is "1").
"_pos" will be set to zero if the string is not found.
________
KEYStuff
________
Default key: none
Description: Put key codes into the keyboard buffer.
Examples:
{keys 1c0d} Put a carriage return into the keyboard
buffer.
{keys 1e41,6c00} Put an "A" in the keyboard buffer
followed by Alt-F5.
{COMMO} (tm) Macro Programming Guide 49
This function is usually used prior to EXECuting programs, batch
files or DOS commands that require keys to be pressed. It allows
complete automation without operator intervention.
TIPS on using KEYStuff:
> The key codes are given in hexadecimal (scan code/character
code as received from the BIOS). Press Alt-K in the
Internal Editor to view any key code.
> One or more codes may be listed. Do not insert extra
spaces.
> Usually, when specifying an ASCII character, only the
character code need be listed. Thus the second example
above could be written: {keys 41,6c00}.
______
LENGth
______
Default key: none
Description: Determine the length of a string.
Examples:
{leng %line} Find the length of the string in
the variable "line".
{leng %line1%%line2} Find the combined length of "line1"
and "line2".
The length will be returned in the built-in variable "_len". If
the string is null, the length will be set to zero.
______
LIGHts
______
Default key: Alt-0
Description: Set Signal Lights toggle.
Examples:
{lights} Toggle Signal Lights on/off.
{lights y} Turn on Signal Lights.
{lights n} Turn off Signal Lights.
{COMMO} (tm) Macro Programming Guide 50
_________
LOCAlecho
_________
Default key: none
Description: Set Local Echo toggle.
Examples:
{local} Toggle Local Echo on/off.
{local y} Turn on Local Echo.
{local n} Turn off Local Echo.
_______
LOOKfor
_______
Default key: none
Description: Look for strings in the modem input stream.
LOOKfor is used in conjunction with SSLOok, CALOok and GOLOok to
scan for as many as 16 strings at the same time. When SSLOok,
CALOok and GOLOok set up additional strings to look for, the
actual "looking" does not take place until the LOOKfor executes.
Parameters controlling LOOKfor are set with the SETLook function
and may be changed at any time with another SETLook. See the
description of the SETLook function for details.
Examples using LOOKfor only:
{lookfor first name?} Look for the string "first name?"
{look ^(COMMO^)} Look for the string "{COMMO}".
When the string comes in, control will pass to the next
function.
Example construct using SSLOok/CALOok/GOLOok/LOOKfor:
{setlook 60,hng,3,n|}
{setv ss_r,|}
...
{:start}
{golook label-a,target1}
{calook start,label-b,target2}
{sslook ss_r,target3}
{golook ,target4}
{lookfor target5} {send answer5} {goto label-c}
{COMMO} (tm) Macro Programming Guide 51
{:label-a} {hangup y} {goto cancel}
{:label-b} {send answer2} {call subr} {return}
{:label-c} ...
In this example {COMMO} will look for five target strings.
When a target specified in any of the CALOok, GOLOok or
LOOKfor functions is received, the LOOKfor is cancelled. It
may be set up again by going to "start".
When the target specified in the SSLOok is received, the
string in the variable will be transmitted to the serial
port. The LOOKfor will continue to look for the same
targets.
The GOLOok function for target1 will GOTO "label-a" when the
string comes in. In the example control will pass to
"cancel" (macro not shown).
If target2 comes in, the CALOok function will set "start" as
the return point and then CALL "label-b". When this routine
RETUrns, control returns to "start" and the five string
LOOKfor will be set up again.
If target3 is received, the string in the variable "ss_r"
will be sent (in this case, a carriage return) and looking
will continue.
The GOLOok for target4 has a null label and control will
pass to the function following the LOOKfor if that string
comes in. The "," must be present.
If target5 comes in, control will pass to the function
following the LOOKfor.
TIPS on creating LOOKfor strings:
> There should be just one space following the LOOKfor
function name. Any spaces beyond this point are part of the
string. The string ends at the right curly brace.
> SSLOok/CALOok/GOLOok/Auto Receive strings begin immediately
after the comma. There should be no spaces unless they are
part of the string.
> Strings may be up to 32 characters in length (control
characters like "^M" count as one). Upper/lower case is
ignored.
> ANSI control sequences are filtered if ANSI or VT102
emulation is enabled.
{COMMO} (tm) Macro Programming Guide 52
> Remember that short strings may not be unique enough, long
strings may not match due to line noise.
> Rules for representing special characters in
SSLOok/CALOok/GOLOok/LOOKfor/Auto Receive strings are given
in Appendix D in the User Guide and Reference.
Additional TIPS:
> SSLOok, CALOok and GOLOok functions should immediately
precede a LOOKfor (no string compares actually occur until
the LOOKfor executes). Up to 15 SSLOok/CALOok/GOLOok
strings may be used in addition to the LOOKfor (up to 16
strings total).
> FILTER Capture Mode should be used to determine the exact
prompt to look for. The LOOKfor sees the incoming data
exactly as it is captured when FILTER mode is set.
> If two or more strings cause a match at the same time, the
LAST such string listed is the one acted upon (for example,
if "abcdef" and "def" are listed and the string "abcdef"
comes in).
See also: SSLOok, CALOok, GOLOok, SETLook.
_______
MACLoad
_______
Default key: none
Description: Load a new Macro File.
Switches:
R1 or R Specifies that COMMO.MAC will be reloaded
when carrier detect is lost. Normally this
would occur at the end of the call.
R0 Do not reload COMMO.MAC when carrier is lost
(default).
General form:
{MACLoad filename,label}
filename The new Macro File. Do NOT specify a
path; the {COMMO} home directory will be
used.
{COMMO} (tm) Macro Programming Guide 53
label A label to GOTO when the new file is
loaded. Optional.
Examples:
{macload-R vt102-1.mac} Load vt102-1.mac, reload
COMMO.MAC at the end of the
call.
{macl newmac.fil,abc} Load newmac.fil, start macro
"abc" in the new file.
IMPORTANT! The new Macro File must reside in the {COMMO} home
directory (do not specify a path).
The current file will be saved to disk if changes are
outstanding. The new file is then loaded in place of the current
one (all macros are replaced).
MACLoad should be the last function in a macro, since control is
not returned.
_____
MACRo
_____
Default key: Alt-M
Description: Open Macro Processor window.
Examples:
{macro} Open window at current position.
{macro menu1} Open window at "menu1."
NOTE: The MACRo function always terminates the macro that is
currently executing.
A string argument may be included to facilitate the creation of
menus within the Macro File. The first occurrence of the
argument string will become the top line of the display when the
window is opened.
The Selector Bar will be positioned on the first screen line that
has a left curly brace, if any.
{COMMO} (tm) Macro Programming Guide 54
Here is an example of how to structure a menu using MACRo:
| (this is past col. 80)
| menu111
Name of Menu |
|
|
Selection 1 | {goto sel1}
Selection 2 | {goto sel2}
Selection 3 | {goto sel3}
{:af1} {macro menu111}
{:sel1} ...
{:sel2} ...
{:sel3} ...
The upper line with "menu111" will be the top line of the screen.
Pressing Alt-F1 will bring up the menu with the Selector Bar on
Selection 1. Macros at "sel1", "sel2" and "sel3" will process
the respective selections.
Note that the macro at "af1" to invoke the menu must be below the
menu since it contains the string and would be found in the
search.
See also MENU.
____
MARK
____
Default key: none
Description: Mark Dialing Directory entries for dialing.
Example:
{mark joes-bbs,file-city} Mark entries for dialing.
Dialing Strings may be separated by spaces or commas.
{COMMO} will search the Dialing Directory for each string and
mark the first entry where a match is found. Case is ignored.
The strings may consist of any part of a Dialing Directory entry
line (including strings contained within curly braces), but must
NOT contain any spaces, commas or curly braces.
See also: DIAL, UNMArk.
{COMMO} (tm) Macro Programming Guide 55
____
MENU
____
Default key: none
Description: Create a pop-up macro menu.
General form:
{SETV _menu1,text1}
{SETV _menu2,text2}
...
{SETV _menuN,textN}
text1 Text to be placed on first information
line in the pop-up window (third line
down, counting from the top border).
NOTE: These text strings are simply
information and have no effect on which
macros will be executed.
text2 Text to be placed on second information
line.
... ...
textN Text to be placed on Nth information
line.
{SETV _mlabel,label1,label2,...}
label1 Label to GOTO if F1, A or 1 is pressed.
Any of the three keys will activate the
macro at the first label.
label2 Label to GOTO if F2, B or 2 is pressed.
NOTE: Labels are positional and may be
omitted using null arguments for keys
that aren't used. See example 2 below.
... ...
{SETV _mcolor,text,border}
text Colors for the text area of the pop-up
window.
NOTE: The attributes are specified in
the same manner as the colors in the
Setup File (press F7 in the Internal
Editor to display the Color Chart).
{COMMO} (tm) Macro Programming Guide 56
border Colors for the window border.
{MENU height,width,string}
height Total number of rows from top to bottom
of pop-up window, including borders.
Minimum is 5.
width Total number of columns from left side
to right side, including borders.
Minimum is 23.
string Title string that will appear in the top
border.
Example 1:
{setv _menu1, F1 Call computer at work}
{setv _menu3, F2 Call E-mail service}
{setv _menu5, F3 Run offline mail reader}
{setv _mlabel,work,mail,reader}
{setv _mcolor,17,30}
{menu 9,32,Daily Activity Menu} {}
{:work} ... macro to call work computer.
{:mail} ... macro to call E-mail service.
{:reader} ... macro to run offline reader.
This menu specifies that function keys be pressed to
activate the macros. You could also press A or 1 instead of
F1, B or 2 instead of F2, etc. The macros may be as simple
or as complex as desired to complete the task.
Example 2:
{setv _menu1, D - Dialing Directory}
{setv _menu2, M - Macro File}
{setv _menu3, S - Shell to DOS (with swap)}
{setv _menu4, E - Edit a file}
{setv _mlabel,,,,ddir,edit,,,,,,,,mfile,,,,,,dos}
{setv _mcolor,03,47}
{menu 8,33,Common Commands} {}
{:ddir} {dial} {}
{:edit} {input efile,Filename to Edit} {edit %efile} {}
{:mfile} {macro}
{:dos} {shell-s} {}
This menu uses "mnemonic" key labeling -- D for (D)ialing
Directory, etc. Notice that there are three empty positions
in the "_mlabel" list prior to "ddir" and "edit". These
{COMMO} (tm) Macro Programming Guide 57
correspond to A, B and C, which are not used in this menu.
Then there are empty positions up to M and then up to S.
TIPS on using MENU:
> The dimensions of the window are limited by the current size
of the Terminal Screen.
> The total number of displayable lines is "height" less 4.
Lines in the window for which no "_menux" variable has been
defined will be left blank.
> Up to 26 labels can be specified in each menu. These
correspond to pressing the letters A through Z. The first
12 labels also correspond to pressing F1 through F12, while
the first 9 labels correspond to pressing 1 through 9.
> All variables used to create the menu are automatically
deleted from Variable Space after the menu is displayed.
> The last colors used to display a menu will persist until
they are changed by setting the "_mcolor" variable.
> If Esc is pressed to exit the menu, macro processing
continues in sequence following the MENU function.
See also MACRo.
________
MULTiply
________
Default key: none
Description: Multiply a numeric variable by a number.
Example:
{mult money,10} Multiply "money" by 10.
Numeric variables and the multipliers may range from 0 to 65535.
The default multiplier is 1.
If the result is greater than 65535 or if either argument is out
of range, then the variable will be set to the string "ERROR".
If the variable is not numeric, the results will be
unpredictable.
{COMMO} (tm) Macro Programming Guide 58
_________
NOCArrier
_________
Default key: none
Description: Sets/resets a macro to execute when carrier detect
is lost.
Examples:
{nocar carrlost} GOTO the label "carrlost" when the
carrier detect signal drops.
{nocar} Turn off the carrier lost label.
IMPORTANT: This feature is enabled only when a connection is
made using {COMMO}'s Auto Dialer. Also, if carrier drops while a
macro is running or a command window is open (such as the Dialing
Directory or Capture File Options), the carrier lost macro will
not activate.
Be sure that you have your modem configured to provide the
carrier detect signal. See Appendix A in the User Guide and
Reference for modem information.
____
NOOP
____
Default key: none
Description: No-op function, does nothing
Example:
{noop} No arguments.
______
OFFLog
______
Default key: none
Description: Make an {Off} entry in the Usage Log.
Example:
{offlog} No arguments.
This function is useful on systems that do not support the
carrier detect signal.
{COMMO} (tm) Macro Programming Guide 59
_____
PARMs
_____
Default key: Alt-P
Description: Set Current Terminal Parameters
General form:
{PARMs speed,format,comport,terminal-type,delay}
speed The bps rate: 2400, 9600, etc.
format The data format: 8n1, 7e1, etc.
comport The serial port number: 1, 2, 3 or 4.
terminal The terminal-type: A, V or T.
delay The inter-character delay factor: 0-999.
Examples:
{parms 2400,8,1,,20} Set 2400 bps, 8n1, Com1, delay =
20.
{parms ,,4,V} Set Com4 VT102.
{parms 19200,7o1} Set 19200 bps, 7o1.
IMPORTANT: Omitted parameters are not changed.
See also DPARms.
________
PASSword
________
Default key: Alt-W
Description: Send current password.
Example:
{password} No arguments.
The current password is obtained from the Dialing Directory entry
whenever a number is dialed. If no password is specified no
characters will be sent.
{COMMO} (tm) Macro Programming Guide 60
_____
PAUSe
_____
Default key: none
Description: Pause for up to 999 seconds.
Example:
{pause 25} Pause for 25 seconds.
NOTE: Incoming characters displayed during a PAUSe function are
not seen by subsequent CALOok/GOLOok/LOOKfor functions.
________
POPStack
________
Default key: none
Description: Pop an element from the macro stack.
Switches:
C1 or C Clear all elements from the stack.
C0 Pop the top element (default).
Examples:
{pops} Pop the top element.
{pops-c} Clear the stack.
POPStack throws away the top element on the macro stack. This
element would have been used by the next RETUrn function.
See PUSHstack for a more complete description of the use of this
function.
See also CALL, RETUrn.
________
PRINtlog
________
Default key: Alt-2
Description: Set Print Log toggle.
Examples:
{COMMO} (tm) Macro Programming Guide 61
{print} Toggle Print Log on/off.
{print y} Turn on Print Log.
{print n} Turn off Print Log.
_________
PUSHstack
_________
Default key: none
Description: Push a return point onto the macro stack.
Examples:
{push} Push the current location.
{push abc} Push the location "abc".
When there are no arguments, the location pushed is the location
of the PUSHstack function itself (i.e., it will be executed again
when a RETUrn is encountered).
Explanation: Whenever a CALL is executed, the location of the
function following the CALL (the "return point") is "pushed" onto
the macro stack. When a subsequent RETUrn is executed, the
location at the top of the stack is "popped" and control is
transferred to that location. This allows "nesting" of CALLs and
RETUrns.
PUSHstack will push a return point onto the macro stack without
transferring control to the location (control continues in
sequence). A subsequent RETUrn will transfer control to the
location that was pushed.
POPStack will remove the top stack element without transferring
control to it (control continues in sequence).
See also CALL, RETUrn.
______
RCLOse
______
Default key: none
Description: Close the read file.
Example:
{rclose} No arguments.
NOTE: The read file will be closed automatically in the
following situations:
{COMMO} (tm) Macro Programming Guide 62
1) When an attempt is made to read past the end of the
file.
2) When the macro terminates (STOP, EXIT, etc.).
See also ROPEn, READ.
____
READ
____
Default key: none
Description: Read a line from the read file to a variable.
Example:
{read nextline} Read the next line in the file into
the variable "nextline."
TIPS on reading files:
> A file must be open for reading or a macro error will
result.
> Each READ will get the next line in the file (lines are
terminated by carriage return and linefeed).
> When an attempt is made to read past the end of file,
control will GOTO the label specified in the ROPEn. If no
label was specified or if the label was invalid, control
will continue in sequence. In either case the file is
automatically closed and the variable is set to null.
> READ will set the Exit Code to 0 unless the end of file was
encountered, in which case it will be set to 1. The Exit
Code is stored in the built-in variable "_err" and can be
tested with the IFERrorlevel function.
> ALL control characters (below ASCII 28) will be discarded,
including the carriage return/linefeed that terminates the
line.
> Lines longer than 240 characters will be truncated to a
length of 240.
See also ROPEn, RCLOse
{COMMO} (tm) Macro Programming Guide 63
______
RETUrn
______
Default key: none
Description: Return from a CALLed macro.
Example:
{return} No arguments.
This function will return control to a location determined by the
last CALL or PUSHstack function. See PUSHstack for a more
complete description of CALL and RETUrn.
NOTE: If a RETUrn is encountered and no CALL or PUSHstack has
been executed, a STOP will occur. This is useful in macros that
are CALLed and are also used standalone (such as protocol file
transfer macros).
See also CALL, PUSHstack, POPStack.
_____
ROPEn
_____
Default key: none
Description: Open a file for reading.
General Form:
{ROPEn pathname,label}
pathname The pathname of the file to open.
label A label to GOTO when a READ is attempted
at the end of the file.
Example:
{ropen c:\bbs\file.txt,nomore} Open the file and set the
label "nomore" to GOTO
when the end of the file
is reached.
TIPS on using ROPEn:
> Only one file may be opened for reading (and one for
writing).
{COMMO} (tm) Macro Programming Guide 64
> The file will be automatically closed when the end of the
file is encountered during a READ (whether or not a label is
specified). An RCLOse is not needed in this situation.
See also READ, RCLOse.
_____
RTRAn
_____
Default key: none
Description: Maintain Receive Translate Table.
Switches:
I1 or I Initialize Receive Translate Table to default
values (consecutive 0 to 255).
I0 Do not initialize (default).
Examples:
{rtran y} Turn receive translation ON.
{rtran-i n} Initialize the table and turn it
OFF.
{rtran 26,0} Change ASCII 26 to null (ASCII 0,
which will not display).
{rtran-i y,#8,224,240} Initialize the table, turn receive
translation ON, change ASCII 224 to
240, 225 to 241, ..., 231 to 247.
{rtran} Toggle receive translation ON/OFF.
{rtran #13,65,78,#13,78,65,#13,97,110,#13,110,97}
ROT13 translation. This exchanges
each letter in the first half of
the alphabet with the corresponding
letter from the second half (and
vice-versa).
Rules for RTRAn arguments are the same as for the {rtr=} item in
the Setup File. In addition, "n" may be used as the first
argument to turn receive translation OFF at any time.
See "Edit Setup File" in the User Guide and Reference for details
and more examples.
TIPS on using RTRAn:
{COMMO} (tm) Macro Programming Guide 65
> Some control characters are unaffected by translation when
certain features are enabled. Examples: XON (17) and XOFF
(19) are not translated when Software Flow Control is on.
ENQ (5) is not translated when ENQ/ACK emulation is on.
> When the Capture Mode is set to RAW, data will be captured
prior to translation. FILTER and SCREEN captures will
contain translated data.
> LOOKfor will always see translated data. Use FILTER Capture
Mode to see what LOOKfor sees.
> In GETString, incoming data (as well as locally typed
characters) will be translated with the Receive Translate
Table (it may be necessary to turn receive translation off
during certain GETString functions).
See also STRAn.
_______
RXMOdem
_______
Default key: none
Description: Receive a file using the Xmodem protocol.
Switches:
See RYMOdem (switches are the same).
Example:
{rxmo-ya c:\dl\file.zip} Receive "file.zip", overwrite
the file if it exists, sound
the alarm.
Only one file may be received with each RXMOdem function (the
file must be explicitly named, but need not be given the same
name as on the remote system).
See RYMOdem for tips that apply to both RXMOdem and RYMOdem.
See also SXMOdem, RYMOdem.
{COMMO} (tm) Macro Programming Guide 66
_______
RYMOdem
_______
Default key: none
Description: Receive files using the Ymodem Batch protocol.
Switches:
C1 or C Use CRC error correction (default).
C0 Use Checksum error correction.
G1 or G Use streaming (fast) transfer method.
IMPORTANT: Use only with error-correcting
modems or direct connections between
computers.
G0 Use normal (error-correcting) transfer method
(default).
Y1 or Y Overwrite an existing file when a received
file has the same name (the existing file
will be erased).
Y0 Cancel the transfer if a received file has
the same name as an existing file (default).
D1 or D Cancel transfer if carrier detect is lost
(default).
D0 Ignore state of carrier detect.
A1 or A Sound the alarm at the end of the transfer.
A0 Do not sound the alarm (default).
W Wait for a keypress at end of transfer.
Wn Wait for "n" seconds, "n" may range from 0 to
999. Press a key to cancel the wait.
Note: Default (no "W" switch) is no wait.
Examples:
{rymo-ya %dldir} Receive files into the download
directory, overwrite a file if it
exists, sound the alarm.
{rymo-gw3} Receive files using the "G" method into
the current directory. Wait 3 seconds
before returning to the Terminal Screen.
Ymodem is a "batch" protocol that will receive multiple files.
Filenames are transmitted by the sender and are used to name
files at the receiving end. A filename "collision" will cause
the transfer to cancel unless the "Y" switch is used. File sizes
{COMMO} (tm) Macro Programming Guide 67
are also transmitted by the sender and are used to truncate the
file to the proper size.
TIPS on using RYMOdem and RXMOdem:
> The "G" method is specified by the receiver. Be sure that
the sender allows it before starting.
> Block size is established by the sender and may be changed
on a block-by-block basis (always 1024 when the "G" method
is used).
> Some conditions that will cancel a transfer:
1) 10 consecutive errors.
2) Any error when "G" method is used.
3) The file to be received already exists and the "Y"
switch is not present.
4) The sender has transmitted CAN (^X) characters.
> The Exit Code (test with IFER) will be set at the end of the
transfer. The Exit Code will also be stored in the variable
"_err". 0 means success, 1 means failure.
> If the Usage Log is enabled, an entry will be made after
each file is transferred (or if a transfer is cancelled).
See also SXMOdem, RYMOdem.
______
SCREen
______
Default key: Alt-I
Description: Screen Image Save.
Examples:
{screen} Open Screen Image Save window.
{screen y} Append screen image to current
file.
{screen y,commo.scr} Append screen image to indicated
file. (and change current
pathname).
{screen n,c:\file.xyz} Change current screen image
pathname (don't save screen to
file).
{COMMO} (tm) Macro Programming Guide 68
__________
SCROllback
__________
Default key: Alt-K
Description: Display Scrollback Buffer
Example:
{scroll} No arguments.
____
SEND
____
Default key: none
Description: Send a string to the modem (serial port).
Examples:
{send Fred|~~Brucker|~~%_pass%|}
Send my first and last name with
carriage returns and 1 second delays,
then send the current password and a
<cr>.
{send ^[^[} Send two <esc> characters.
{send } Send a space (there must be two spaces,
the first is the separator).
{send %line} Send the string in the variable "line".
NOTE: See Appendix D in the User Guide and Reference for
information on how to represent any character in a SEND function.
_______
SETDial
_______
Default key: none
Description: Set parameters for dialing.
Examples:
{COMMO} (tm) Macro Programming Guide 69
{setdial 60,15} Set the dialing cycle timer to 60
seconds and the Inter-dial Delay to
15 seconds.
{setd ,3} Change only the Inter-dial Delay
timer.
The first argument is the dialing cycle time limit. This is the
number of seconds {COMMO} will allow after sending the dial
command to the modem. Range is from 1 to 999.
The second argument is the inter-dial delay timer. This is the
number of seconds before {COMMO} dials the next number. Range is
from 1 to 999.
NOTE: Changes to dialing parameters override the Setup File
values and remain in effect until {COMMO} is exited.
See also DIAL.
______
SETEsc
______
Default key: none
Description: Define a label to GOTO when Esc is pressed.
General form:
{setesc label}
label A label to GOTO when the user presses Esc
during macro execution.
Switches:
P1 or P The user will be prompted with, "A macro is
running. Terminate it?." If the user
answers "no," macro processing will continue
as if nothing had happened. If "yes,"
processing will GOTO the label. If the label
does not exist, a STOP will be executed. P1
is the default.
P0 The user will not be prompted. Processing
will GOTO the label if it exists, else a STOP
will be executed.
Examples:
{setesc finish} GOTO label, with prompt.
{COMMO} (tm) Macro Programming Guide 70
{sete-p0 done} GOTO label, without prompt.
{setesc} Reset to no label (STOP on Esc).
This function is used to "capture" the Esc key during macro
execution, especially when a MACLoad is used to load a new Macro
File. It will help prevent accidental macro terminations.
The macro at the label would typically reload COMMO.MAC, thus
restoring the user's familiar environment.
NOTE: In the various command windows, Esc is normally used to
exit the window. Use Ctrl-Break to bring up the prompt.
______
SETGet
______
Default key: none
Description: Set parameters for GETString functions.
General form:
{SETGet seconds,label,y/n/l,string}
seconds GETString timeout. If a character is not
entered in the specified amount of time, the
macro in the second argument will be started.
May be 0 to 999. Default is 0 (disabled).
label Timeout macro. Macro to GOTO if the time in
the first argument expires. If no macro is
specified or if the macro label is invalid,
control will pass to the function following
the GETString. Default is no macro.
Note that if the timer expires no variable
assignment will be made. Any previous
assignment will be unaltered.
y/n/l Echo Status. If this is "yes", characters
entered at the local or remote terminals will
be echoed back to the remote and displayed
locally. This is the default.
If "no", characters will not be echoed to
either location.
If "local", characters will be displayed
locally, but not echoed to the remote. This
{COMMO} (tm) Macro Programming Guide 71
should be used when the remote is a host
system.
IMPORTANT! This setting is independent of
Local Echo. Turn on Local Echo if necessary
for local display of data transmitted with
SEND, ASCIiup, etc.
string Terminator response. This string will be
sent and/or displayed locally (in accord with
the Echo Status) when a carriage return is
received (input terminated). This is
typically a carriage return/linefeed. May be
up to 32 characters. Default is no string.
Example:
{setg 120,noget,y,^m^j} Set GETString parameters.
The SETGet function will set parameters for all subsequent
GETString functions. It may be executed at any time to modify
the parameters.
When macro processing terminates, the parameters will be reset to
the default values.
Default arguments are: GETString timeout 0 (disabled)
Timeout macro none
Echo status y (echo on)
Terminator response none
IMPORTANT! Null arguments in the SETGet function will be set to
these defaults.
See also: GETString.
_______
SETLook
_______
Default key: none
Description: Set parameters for LOOKfor functions.
General form:
{SETLook seconds,label,seconds,string}
seconds LOOKfor timeout. Maximum time in seconds to
look for a string. If the string is not
found in the allotted time, the macro in the
{COMMO} (tm) Macro Programming Guide 72
second argument will be started. May be 0 to
999. Default is 0 (disabled).
label Timeout macro. Macro to GOTO if the time in
the first argument expires. If no macro is
specified or if the macro label is invalid,
control will pass to the function following
the LOOKfor.
seconds Prompt timeout. During a LOOKfor function
unwanted prompts may appear like "Press any
key" or "More [Y/n]", etc. This argument is
the time in seconds to wait at a prompt (no
input from the modem) before sending the
string in the fourth argument. Usually you
would send "|" or "n|".
When the response string is sent the timer is
restarted, allowing any number of prompts to
be satisfied (until the LOOKfor itself is
satisfied or times out).
The timer will also be restarted if any keys
are typed while waiting. This allows a
manual response to a prompt which the macro
does not handle.
IMPORTANT! The prompt timeout should be long
enough (or disabled entirely) to prevent the
response from being sent when there is a long
delay without a prompt. This might occur
right after connection while the BBS software
is loading or when a "door" program is
loading.
Failure to heed this warning will result in
"n" responses to "First name?" and other
undesirable effects.
May be 0 to 999. Default is 0 (disabled).
string Prompt response. String to send when the
time in the third argument runs out. May be
up to 32 characters. Default is no string.
Example:
{setl 60,abc,4,n|} Set LOOKfor parameters
{COMMO} (tm) Macro Programming Guide 73
The SETLook function will set parameters for subsequent LOOKfor
functions and may be executed at any time to modify the
parameters.
When macro processing terminates, the parameters will be reset to
the default values.
Default arguments are: LOOKfor timeout 0 (disabled)
Timeout macro none
Prompt timeout 0 (disabled)
Prompt response none
IMPORTANT! Null arguments in the SETLook function will revert to
these defaults.
See also: LOOKfor, SSLOok, CALOok, GOLOok.
___________
SETVariable
___________
Default key: none
Description: Assign a string to a variable name.
General form:
{SETVariable name,string}
name The name of the variable to which the string
will be assigned.
string The string may be the name of another {COMMO}
variable or an environment variable. In
these cases further expansion is controlled
by switches (see below).
Switches:
E1 or E This switch indicates that the second
argument is a DOS environment variable. If
it is not found in the environment, the
{COMMO} variable will be set to NULL.
Note that environment variable names are CASE
SENSITIVE (they are usually upper case).
E0 Normal variable (default).
S1 or S This switch will cause "double expansion" of
the second argument (indirect variable).
First {COMMO} will substitute any variables
{COMMO} (tm) Macro Programming Guide 74
indicated by "%" signs. The resulting string
(which must NOT begin with a "%") will then
be treated as a variable name and expanded
again.
This facility may be used to create a
"subscript."
S0 Single expansion (default).
Examples:
{setv net,nodeid} Assign the string "nodeid" to
the variable name "net".
{setv nodeid,ggcs_bbs} Assign the string "ggcs_bbs"
to the variable name "nodeid".
{setv-s bbs,nodeid} Assuming the above examples
have been executed, this will
set the variable "bbs" to
"ggcs_bbs".
{setv-s board,%net} Assuming the above examples
have been executed, this will
set the variable "board" to
"ggcs_bbs".
{setv-s xxx,yyy%index} Suppose the variable "index"
has the value "3". It will be
expanded first, then "yyy3"
will be expanded and its value
assigned to "xxx".
{setv-e abc,TABLE} Assuming a "SET TABLE=" DOS
command has been executed
prior to running {COMMO}, the
variable "abc" will be set to
the environment string.
{setv abc} or {setv abc,} Set the variable "abc" to null
(it will be deleted from
variable space).
_____
SFLOw
_____
Default key: none
Description: Set Software Flow Control toggle.
{COMMO} (tm) Macro Programming Guide 75
Examples:
{sflow} Toggle Software Flow Control on/off.
{sflow y} Turn on Software Flow Control.
{sflow n} Turn off Software Flow Control.
_____
SHELl
_____
Default key: Alt-S
Description: Shell to DOS.
Switches:
S1 or S Swap to disk before shelling to DOS (see
details under EXECute, "Using the Swap to
Disk Switch").
S0 Do not swap to disk (default).
Examples:
{shell} No arguments.
{shell-s} Swap to disk before shelling to DOS.
______
SIGNal
______
Default key: none
Description: Set state of hardware signals.
Switches:
D1 or D Set DTR high.
D0 Set DTR low.
R1 or R Set RTS high.
R0 Set RTS low.
Example:
{signal-d0r1} Turn off DTR, turn on RTS.
The "D" and "R" switches are used to control the RS-232C signals
DTR (Data Terminal Ready) and RTS (Request To Send). The default
for each switch is to leave the signal unchanged. Use these with
care due to interaction with Hardware Flow Control, etc.
{COMMO} (tm) Macro Programming Guide 76
_____
SOUNd
_____
Default key: none
Description: Set Master Sound toggle.
Examples:
{sound} Toggle Master Sound on/off.
{sound y} Turn on Master Sound.
{sound n} Turn off Master Sound.
_______
SPDCtrl
_______
Default key: none
Description: Serial port display control.
Examples:
{spdc y} Serial port display is ON.
{spdc n} Serial port display is OFF.
This function will suppress display of any data received from the
serial port. It can be used when a "clean" display is desired
during automated procedures.
TIPS on using SPDCtrl:
> Serial port display can be suppressed only while a macro is
running (it will be restored to ON at macro termination).
> ANSI control sequences are not processed while the display
is OFF (Terminal Emulation effectively reverts to TTY).
> LOOKfor will function normally, but remember that ANSI
sequences are not stripped. Make a manual run using TTY
emulation to see what the LOOKfor will see.
> SCREEN Capture Mode will not capture any of the incoming
data. Use RAW mode or FILTER mode instead (FILTER capture
will be affected by the Translate Table, but will still
contain ANSI sequences).
{COMMO} (tm) Macro Programming Guide 77
_______
SPOCtrl
_______
Default key: none
Description: Serial port output control.
Examples:
{spoc y} Serial port output is ON.
{spoc n} Serial port output is OFF.
This function will inhibit any data from being sent to the serial
port. All other program operations will be normal. It is used
for "local mode" in host macros (no data is sent to the modem).
TIPS on using SPOCtrl:
> Serial port output can be inhibited only while a macro is
running (it will be restored to ON at macro termination).
> Internal protocols will not operate properly if serial port
output is turned OFF.
______
SSLOok
______
Default key: none
Description: Set up an additional string to look for during a
subsequent LOOKfor function.
General form:
{SSLOok name,target}
name The name of a string variable (MUST be a
variable).
target The ASCII string to look for. The string
begins following the "," and is terminated by
the "}".
Switches:
R or R1 Send a carriage return after sending the
variable string to the serial port.
R0 Do not send a carriage return (default).
{COMMO} (tm) Macro Programming Guide 78
Example:
{setv ss_r,|} {setv ss_nr,n|}
...
{sslo-r _pas,password:}
{sslo ss_r,Press enter to continue}
{sslo ss_nr,Do you want to log off?}
{look command?} ...
SSLOok is used in conjunction with LOOKfor. When the target
string appears, the string in the variable is sent to the serial
port. The LOOKfor continues to look for all specified strings.
See LOOKfor for details, examples and tips on using SSLOok.
See also: CALOok, GOLOok, SETLook.
__________
STATusline
__________
Default key: none
Description: Set Status Line toggle.
IMPORTANT! The Status Line is {COMMO}'s instrument panel. You
should not turn it off until you are familiar with operating the
program.
Examples:
{statusline} Toggle Status Line on/off.
{status y} Turn on Status Line.
{status n} Turn off Status Line.
When the Status Line is off (not visible), the bottom line of the
display becomes part of the Terminal Screen.
The STATusline function is ignored while in Chat Mode.
____
STOP
____
Default key: none
Description: Halt macro execution.
Examples:
{stop} No arguments.
{} Short form.
{COMMO} (tm) Macro Programming Guide 79
STOP always returns {COMMO} to manual operation in the Terminal
Screen. It should be used to end login macros.
_____
STRAn
_____
Default key: none
Description: Maintain Send Translate Table.
Switches:
I1 or I Initialize Send Translate Table to default
values (consecutive 0 to 255).
I0 Do not initialize (default).
Examples:
{stran y} Turn send translation ON.
{stran-i n} Initialize the table and turn it OFF.
{stran-i y,92,47} Initialize the table, turn send
translation ON, change "\" to "/".
{stran} Toggle send translation ON/OFF.
{stran #13,65,78,#13,78,65,#13,97,110,#13,110,97}
ROT13 translation. This swaps the first
13 letters of the alphabet for the
second 13.
Rules for STRAn arguments are the same as for the {str=} item in
the Setup File. In addition, "n" may be used as the first
argument to turn send translation OFF at any time.
See "Edit Setup File" in the User Guide and Reference for details
and more examples.
TIPS on using STRAn:
> Some control characters are unaffected by translation when
certain features are enabled. Examples: XON (17) and XOFF
(19) are not translated when Software Flow Control is on.
When ENQ/ACK emulation is on, an ACK sent in response to an
ENQ will not be translated.
> In GETString, data echoed to the modem (and displayed
locally) will be translated with the Send Translate Table
{COMMO} (tm) Macro Programming Guide 80
(it may be necessary to turn send translation off during
certain GETString functions).
See also RTRAn.
_________
SUBString
_________
Default key: none
Description: Move a substring to a variable.
General form:
{SUBString name,start,count,string}
name The name of the variable to which the
substring will be assigned.
start The starting character number (first
character is "1"). If it is negative,
{COMMO} will count in from the end of the
string.
If it is too large and positive, the
substring will be null.
If it is too large and negative, the
substring will start at the beginning of the
string.
count The number of characters to use. If the
number is too large, {COMMO} will use as many
as possible. If the count is 0, the
substring will be null.
string The string to use.
Examples:
{subs var-sub,2,4,abcdefgh} Set "var-sub" to "bcde".
{subs newvar,-5,20,abcdefgh} Set "newvar" to "defgh".
_______
SXMOdem
_______
Default key: none
Description: Send a file using the Xmodem protocol.
{COMMO} (tm) Macro Programming Guide 81
Switches:
See SYMOdem (switches are the same).
Example:
{sxmo-ka c:\ul\file.zip} Send "file.zip" using 1024
byte block size (Xmodem-1k),
sound the alarm.
Only one file may be sent with each SXMOdem function.
See SYMOdem for tips that apply to both SXMOdem and SYMOdem.
See also RXMOdem, SYMOdem.
_______
SYMOdem
_______
Default key: none
Description: Send a file using the Ymodem Batch protocol.
Switches:
K1 or K Use 1024 byte block size.
K0 Use 128 byte block size (default).
D1 or D Cancel transfer if carrier detect is lost
(default).
D0 Ignore state of carrier detect.
A1 or A Sound the alarm at end of transfer.
A0 Do not sound the alarm (default).
W Wait for a keypress at end of transfer.
Wn Wait for "n" seconds, "n" may range from 0 to
999. Press a key to cancel the wait.
Note: Default (no "W" switch) is no wait.
Examples:
{symo-ka %uldir\*.zip} Send all .ZIP files in the
upload directory using 1024
byte block size, sound the
alarm.
{symo-k c:\subdir\*.*,@c:\ul\file.lst,info.txt,a:*.qw?}
Send all files listed using
1024 byte block size.
{COMMO} (tm) Macro Programming Guide 82
Any combination of file specifications may be listed in the
SYMOdem function (separated with commas). These may include
wildcard specifiers (*,?), the indirect file specifier (@) and
any single files.
If a filespec is preceded with the "@" sign, it will be assumed
to be an "indirect file." This means that it is a text file
containing a list of filespecs. Filespecs should be listed one
per line and each line should end with a cr/lf. Each filespec
may contain wildcards. For example:
c:\subdir\*.*
info.txt
a:*.qw?
TIPS on using SYMOdem and SXMOdem:
> CRC vs. Csum mode is established by the receiver.
> Use of "G" method is established by the receiver.
> Some conditions that will cancel a transfer:
1) 10 consecutive errors.
2) Any error when "G" method is used.
3) The receiver has transmitted CAN (^X) characters.
> The Exit Code (test with IFER) will be set at the end of the
transfer. The Exit Code will also be stored in the variable
"_err". 0 means success, 1 means failure.
> If the Usage Log is enabled, an entry will be made after
each file is transferred (or if a transfer is cancelled).
See also RYMOdem, SXMOdem.
_______
TOGGles
_______
Default key: Alt-T
Description: Set various toggle parameters.
Example:
{toggles} Open Set Toggles window.
{COMMO} (tm) Macro Programming Guide 83
______
UNMArk
______
Default key: none
Description: Unmark Dialing Directory entries.
Switches:
L1 or L Unmark last-dialed entry only.
L0 Unmark all or listed entries (default).
Examples:
{unmark joes-bbs,file-city} Unmark listed entries.
{unmark} Unmark all entries.
{unmark-L} Unmark last-dialed entry.
NOTE: When the "L" switch is present, any Dialing Strings listed
will be ignored.
Dialing Strings may be separated by spaces or commas.
{COMMO} will search the Dialing Directory for each string and
unmark the first entry where a match is found. Case is ignored.
The strings may consist of any part of a Dialing Directory entry
line (including strings contained within curly braces), but must
NOT contain any spaces, commas or curly braces.
See also: DIAL, MARK.
_____
VIDEo
_____
Default key: none
Description: Change to an alternate hardware video mode.
Switches:
M1 or M Change to the alternate display mode.
M0 Change back to the normal display mode.
Examples:
{video-m1} Change to the alternate mode.
{video-m0} Change back to the normal mode.
{COMMO} (tm) Macro Programming Guide 84
The "alternate" mode is defined by Setup File item {avm=}. The
"normal" mode is the mode in effect when you start {COMMO}.
_____
VTCUr
_____
Default key: none
Description: Define a VT102 cursor (arrow) key.
Example:
{vtcur ^[[A|^[OA} Define up-arrow key strings.
The first string is sent when cursor mode is active; the second
string is sent when application mode is active (these modes are
controlled by the host).
The two strings must be separated by a "|". Use "^m" for
carriage return if necessary.
See also VTPAd.
_____
VTPAd
_____
Default key: none
Description: Define a VT102 keypad key.
Example:
{vtpad 5|^[Ou} Define keypad "5" key strings.
The first string is sent when numeric mode is active; the second
string is sent when application mode is active (these modes are
controlled by the host).
The two strings must be separated by a "|". Use "^m" for
carriage return if necessary.
See also VTCUr.
______
WCLOse
______
Default key: none
Description: Close the write file.
{COMMO} (tm) Macro Programming Guide 85
Example:
{wclose} No arguments.
NOTE: The write file will be closed automatically when the macro
terminates (STOP, EXIT, etc.).
See also WOPEn, WRITE.
_____
WOPEn
_____
Default key: none
Description: Open a file for writing.
Switches:
A1 or A Open the file in "append" mode. New lines
written to the file will be added at the end.
If the file doesn't exist, it will be
created.
A0 Open the file in "create" mode. If the file
exists, it will be erased (default).
Examples:
{wopen c:\bbs\file.txt} Open the file in create mode.
{wopen-a c:\data\word.fil} Open the file in append mode.
TIP on using WOPEn:
> Only one file may be opened for writing (and one for
reading).
See also WRITe, WCLOse.
_____
WRITe
_____
Default key: none
Description: Write a string to the write file.
Examples:
{COMMO} (tm) Macro Programming Guide 86
{write %nextline} Write the contents of the variable
"nextline" to the write file.
{write} Write a carriage return/linefeed
only (blank line) to the file.
{write %num%> } Write the contents of "num"
followed by a ">" and a space.
TIPS on writing to files:
> A file must be open for writing or a macro error will
result.
> The string will be written as one line, terminated by a
carriage return/linefeed.
> Control character conversion is NOT performed on the write
string.
> A macro error will result if the disk is full.
See also WOPEn, WCLOse
{COMMO} (tm) Macro Programming Guide 87
========================================
Appendix A Table of {COMMO} Key-labels
========================================
Key-labels are also macro labels with the added advantage that
the macro can be started by pressing the associated key from the
Terminal Screen. Most "extended" keys may be assigned this way.
If the same key-label appears more than once, the first
occurrence will be used. Note that key-labels are case
insensitive. The caret (^) indicates the Ctrl key.
Enhanced keyboard key-labels are listed below.
Key Name Key-label Key Name Key-label
________ _________ ________ _________
Normal-F1 nf1 ... Normal-F10 nf0
Ctrl-F1 cf1 ... Ctrl-F10 cf0
Shift-F1 sf1 ... Shift-F10 sf0
Alt-F1 af1 ... Alt-F10 af0
Alt-A ala ... Alt-Z alz
Alt-1 al1 ... Alt-0 al0
Alt = al= Alt - al-
Escape esc Grey * gr*
Grey - gr- Grey + gr+
Backspace bsp ^Backspace cbs
Tab tab Shift-tab stb
Enter ent ^Enter cen
Home hom End end
PgUp pgu PgDn pgd
Up-Arrow upa Down-Arrow dna
Left-Arrow lfa Right-Arrow rta
Insert ins Delete del
^Home chm ^End cnd
^PgUp cpu ^PgDn cpd
^Right-Arrow cra ^Left-Arrow cla
Keypad-0 kp0 ... Keypad-9 kp9
Keypad-. kp. ^PrtSc cpr
{COMMO} (tm) Macro Programming Guide 88
Enhanced Keyboard Key-labels
============================
IMPORTANT! To use the following keys you must tell {COMMO} to
test for the enhanced keyboard. The item {tek=yes} must appear
in your Setup File.
Normal-F11 nfa Normal-F12 nfb
Ctrl-F11 cfa Ctrl-F12 cfb
Shift-F11 sfa Shift-F12 sfb
Alt-F11 afa Alt-F12 afb
Alt-[ al[ Alt-] al]
Alt-; al; Alt-' al'
Alt-, al< Alt-. al.
Alt-/ al/ Alt-\ al\
Alt-* al* Alt-` al`
Center Key cky
The Center Key is the Keypad 5 with Numlock off.
The keys in the second group may also work with the 83-key
keyboard if your BIOS supports the enhanced keyboard.
{COMMO} (tm) Macro Programming Guide 89
=======================================
Appendix B List of Reserved Variables
=======================================
USER-DEFINED Reserved Variables
-------------------------------
_modini Modem Initialization String
_dialpf Default dialing prefix
_dialsf Default dialing suffix
_dialsr Dialing success response(s)
_dialfr Dialing failure response(s)
_dialir Inter-dial Delay response(s)
_dialrt Dialing response text, available (1) after a
dialing attempt if _dtc = 1 or 2, or (2) in
the Inter-dial Delay macro.
_uselog Pathname of Usage Log
_menux Menu display string, x = 1, 2, 3, etc.
_mlabel List of macro labels for pop-up menu
_mcolor Colors used with pop-up menu: text,border
BUILT-IN Variables
------------------
_hom {COMMO} home directory: c:\commo\, etc.
_set Filename of Setup File, usually COMMO.SET
_fon Filename of Dialing Directory, usually COMMO.FON
_mac Filename of default Macro File, usually COMMO.MAC
_cap Current Capture File pathname
_scr Current Screen Image File pathname
_err Errorlevel from last EXEC-D or internal file
transfer protocol
_dfc Disk full on capture: 0=no, 1=yes; reset when
Capture File is opened, set when disk is full
_pos Position in string
_len Length of string
_por Current serial port number: 1, 2, etc.
_spe Current serial port speed: 2400, 9600, etc.
_fmt Current serial port data format: 8n1, 7e1, etc.
_mod Last speed reported by modem
_pad Current serial port address: 03F8, 02E8, etc.
_irq Current IRQ number: 4, 3, etc.
_nci Number of characters in input buffer (received and
not yet displayed)
_dtc Dialing termination code (available after each
dialing attempt). Values are:
0 = no systems were marked
1 = successful connection
2 = failure response received
{COMMO} (tm) Macro Programming Guide 90
3 = timed out
4 = operator intervention
_rem Remainder from last DIVIde
_pas Current Password String
_ela Elapsed time in minutes
_dat Full date (format defined in Setup File)
_mon Month, mm
_day Day of the month, dd
_yea Year, yy
_dwn Numeric day of the week: 1=Mon, ... , 7=Sun
_dwt Text day of the week: Mon, Tue, ...
_tim Full time (format defined in Setup File)
_24h 24 hour, hh
_12h 12 hour, hh
_amp Am/pm indicator, xm
_min Minute, mm
_sec Second, ss
_row Current cursor row
_col Current cursor column
{COMMO} (tm) Macro Programming Guide 91
============================================
Appendix C Macro Functions Listed by Class
============================================
Variable manipulation
---------------------
SETVariable Assign a string to a variable name
INCRement Increase a numeric variable
DECRement Decrease a numeric variable
MULTiply Multiply a numeric variable
DIVIde Divide a numeric variable
INSTring Find a string within a string
SUBString Move a substring to a variable
LENGth Determine the length of a string
Looking for text
----------------
AUTO Auto Receive
SETLook Set LOOKfor parameters
LOOKfor Look for string from port
SSLOok Additional string, send variable
CALOok Additional string, call submacro
GOLOok Additional string, go to macro
File Input/Output
-----------------
ROPEn Open a file for reading
READ Read from a file to a variable
RCLOse Close the read file
WOPEn Open a file for writing
WRITe Write to a file from a variable
WCLOse Close the write file
Dialing/connect/disconnect
--------------------------
SETDial Set dialing timers
DIAL Dialing Directory
DPARms Set dialing default parameters
HANGup Drop DTR to hangup
MARK Mark numbers for dialing
UNMArk Unmark Dialing Directory entries
ABAUd AutoBaud toggle
Modem control
-------------
PARMs Set current terminal parameters
LOCAlecho Local Echo toggle
{COMMO} (tm) Macro Programming Guide 92
INITmodem Send modem init string
HFLOW Hardware flow control
SFLOw Software flow control
BREAk Send a Break signal
LIGHts Signal Lights toggle
SIGNal Set state of hardware signals
SPOCtrl Serial port output control
Send/receive data
-----------------
ASCIiup ASCII Upload
SEND Send a text string
CAPMode Set Capture Mode
CAPTure Capture File Options
SETGet Set GETString parameters
GETString Get a string from the modem
RXMOdem Receive a file using Xmodem
SXMOdem Send a file using Xmodem
RYMOdem Receive a file using Ymodem
SYMOdem Send a file using Ymodem
PASSword Send current password
RTRAn Maintain Receive Translate Table
STRAn Maintain Send Translate Table
VTCUr VT102 cursor key strings
VTPAd VT102 keypad key strings
Testing
-------
COMPare Compare a variable to a string
IFCOndition Test conditions set by COMPare
IFERrorlevel Test Exit Codes
IFEXist Test for existence of file(s)
IFCArrier Test for presence of carrier detect
Macro control
-------------
CALL Execute a macro
RETUrn Return from a CALL
PUSHstack Push a location to the macro stack
POPStack Pop from the macro stack
GOTO Transfer control to a label
STOP Stop macro processing
MACLoad Load a new Macro File
PAUSe Pause for interval 1-999 seconds
HOLD Hold until specified 24 hr time
NOCArrier Set a label to GOTO when carrier is lost
SETEsc Set a label to GOTO on Esc
{COMMO} (tm) Macro Programming Guide 93
Video/sound related
-------------------
CLEAr Clear Screen
CURSor Terminal Screen cursor toggle
DISPlay Display a string to the screen
SCREen Screen Image Save
SPDCtrl Serial port display control
STATusline Status Line on/off toggle
VIDEo Change to an alternate video mode
SOUNd Master Sound toggle
ALARm Ring the alarm
BEEP Sound a beep
Miscellaneous
-------------
CHATmode Chat Mode toggle
DOORway Doorway Mode toggle
ELAPse Reset the elapsed timer
EDIT Edit a file
EXECute Execute a DOS command
EXIT Exit {COMMO}
HELP Online Help topic
INPUt Input from the keyboard
KEYStuff Put key codes into the keyboard buffer
MACRo Macro Processor window
MENU Create a pop-up macro menu
NOOP No-op function, does nothing
OFFLog Make an {Off} entry in the Usage Log
PRINtlog Print Log toggle
SCROllback Display Scrollback Buffer
SHELl Shell to DOS
TOGGles Set Toggles
- end -