On Tue, Dec 12, 2017 at 8:38 AM, Charles Mills <[email protected]> wrote:
> Where can I find a description of FLOWASM?
>
> Charles
>
I have FLOWASM in a private repository on GitHub, but I don't feel that I
have the right to make it public because Mr. Jaffe did not include a
LICENSE in the distribution on CBTtape.org. But I have made a generic
README.md file which I will include below:
START OF SPECIFICATIONS
=======================
MODULE NAME = FLOWASM
DESCRIPTIVE NAME = High Level Assembler Reformatting Exits
FUNCTION
--------
The source and library exits relax assembler language
syntax rules to allow a more "free form" coding style.
This is intended to make assembler language easier to
code and use, especially when indenting structured
programming macros.
The listing exit will add flow bars to the program
listing to enhance readability when using the structured
programming macros provided with IBM's HLASM Toolkit.
AUTHOR
------
Edward E. Jaffe
Phoenix Software International
5200 W. Century Blvd., Suite 800
Los Angeles, CA 90045 U.S.A.
ATTRIBUTES
----------
Reentrant, Amode(31), Rmode(Any)
Must be in APF Library if Invoked by SMP/E
OPERATION = Please Read the Following
=========
Assembler Specification:
EXIT(INX(FLOWASM),LBX(FLOWASM),PRX(FLOWASM))
All three specifications are not required. You can use
any exit by itself. For example, you can use just the
listing exit (PRX) to print flow bars without using the
enhanced syntax.
Input Formats When Using Source/Library Exits:
----------------------------------------------
Only fixed length records with LRECL=80 are supported
for library input (SYSLIB). Source input may be any of
the following:
1. Fixed records of any size. Sequence numbers are
allowed in columns LRECL-7 through LRECL. The
continuation column is LRECL-8.
2. Variable length records without sequence numbers.
Continuation is indicated with a trailing '+' character.
3. Variable length records with sequence numbers in
columns 1-8. Continuation is indicated with a trailing
'+' character.
4. Fixed length records "pretending" to be variable
length records without sequence numbers. This format is
useful when, for example, your variable length file is
input to the assembler in-stream via JCL. Trailing
blanks are ignored and processing is as for variable
length records without sequence numbers. To distinguish
this format from true fixed length records, include the
following as the first statement of the source module:
>\*FLOWOPT RECFM=V
5. Fixed length records "pretending" to be variable
length records with sequence numbers in columns 1-8.
This format is useful when, for example, your variable
length file is input to the assembler in-stream via JCL.
Trailing blanks are ignored and processing is as for
variable length records with sequence numbers. To
distinguish this format from true fixed length records,
include the following as the first statement of the
source module:
>\*FLOWOPT RECFM=V
Comment Block Identification:
-----------------------------
Normally, the assembler requires comment blocks be
marked with an asterisk in column 1. With this exit,
comment blocks may begin anywhere on the line. They may
be denoted by an asterisk or by a /\* sequence. The exit
recognizes these comments and supplies the asterisk in
column 1.
Blank Elimination / Wrapping of Long Lines:
-------------------------------------------
If a statement is too long to fit in a standard 80-byte
assembler source line, the statement is reformatted as
follows:
1. All extraneous blanks between the operation code and
operand are eliminated.
2. If the statement is still too long, extraneous blanks
between the operand and commentary are removed.
3. If the statement is still too long, extraneous blanks
in front of the operation code are removed.
4. If the statement is still too long:
a. If the operand fits on the line, the commentary is
truncated.
b. If the operand is too long to fit, it is wrapped
and continued in column 16 of the next line along
with any commentary.
Automatic Continuation:
-----------------------
Good coding standards usually expect macro operands to
be spread out, with one operand and associated
commentary per source line. The exit detects such
sequences and automatically supplies the '-'
continuation character. The '-' is chosen to distinguish
it from '+' characters coded by the programmer.
When continuation lines are coded, there is no need to
continue in column 16. The exit knows when it has
supplied continuation for the previous source line. The
continuation line is reformatted so that the operand
begins in column 16. (This may be either a left or right
shift of the operand.) If the commentary must be moved
from its current position, either because it conflicts
with the new operand position or because the statement
is too long, it is moved immediately after the operand.
If the statement is still too long, wrapping and/or
comment truncation occurs as described above under
"Blank Elimination / Wrapping of Long Lines".
Manual Continuation:
--------------------
The blank elimination / wrapping and automatic continua-
tion features are disabled for any line that is manually
continued and for all subsequent continuation lines for
the same statement. Automatic continuation and manual
continuation may be mixed within a continued statement,
but once manual continuation begins, no more automatic
continuation is allowed.