Trailing-Edge
-
PDP-10 Archives
-
decuslib20-08
-
decus/20-0176/sf2vax.mem
There are 5 other files named sf2vax.mem in the archive. Click here to see a list.
The following are trademarks of Digital Equipment Corporation:
DEC DECsystem-10 PDT
DECUS DECSYSTEM-20 RSTS
DIGITAL DECwriter RSX
PDP DIBOL VMS
UNIBUS EduSystem VT
VAX IAS digital logo
DECnet MASSBUS
SF2VAX.MEM October, 1983
Revised December, 1983
1.0 PURPOSE
The purpose of this document is to explain the migration process from APLSF
to VAX APL which is performed by the tool SFTOVX. An example is provided
to illustrate the process of migrating APL workspaces and data files. This
document also explains the possible error messages and lists the APLSF/VAX
APL incompatibilities.
2.0 EXPLANATION
The migration of APL workspaces and data files from APLSF to VAX APL occurs
through text files. MIGRATE, an APL function, builds a batch control
stream which then executes APL functions that create text files from APL
files. Note that the easiest way to perform the migration in an unattended
mode is by building this batch control stream. MIGRATE interacts with the
user to find out what should be transported and prompts the user for
filenames. MIGRATE also allows the user to specify an optional filter
workspace (containing functions such as FILTER, ASFILTER, and DAFILTER)
which allows the user to modify the file before it is transported. Files
which can be transferred include workspaces, and /AS, /IS, /DA and /BS data
files.
Through MIGRATE, a batch stream is executed which invokes the DRIVER
function to transfer workspaces, the ASDRIVER function to transfer /AS data
files, etc. Note that when the driver function is invoked to transfer a
data file, its name reflects the type of file it is transferring (for
Page 2
example, ASDRIVER, DADRIVER).
These driver functions dump the workspaces and data files as input scripts
into text files which are then transferred by the user's own methods to the
VAX. They are then used by VAX APL as )INPUT files. DRIVER transports
variables, system variables, channel assignments, workspace
identifications, groups, and unlocked functions within APLSF workspaces as
text to the VAX. While the text file is being made, DRIVER examines the
user-defined functions to perform source transformations that minimize the
incompatibilities between APLSF and VAX APL.
Note that these transformations do not occur within literals (for example,
arguments to execute). Any informational messages displayed for the user
are comment lines in the file that is used as )INPUT to VAX APL.
Once DRIVER has generated the text file and the user has transferred it to
the VAX, the user executes an APL function called SUBMIT. SUBMIT interacts
with the user and builds a VMS command file that, when run indirectly or in
batch, will execute VAX APL for each input script specified by the user.
When these input scripts are processed by means of VAX APL, a workspace or
a data file is created on the VAX. These created files are the migrated
images of their counterparts on TOPS-20.
This is a general tool which can be overlaid by the user's software in
certain instances (for example, the FILTER function).
NOTE
DRIVER performs a )LOAD of each workspace
being migrated. If the workspace contains a
nonempty .BXLX, the .BXLX will be executed.
This may interfere with the migration
process. Note that APLSF has no facilities
to suppress .BXLX when loading a workspace.
2.1 Files In The Migration Tool
Several files are contained in the migration tool.
SFTOVX contains files for both the -20 and the VAX. The tools themselves
assume that they reside in a directory with the logical name APLT2V:, both
on the VAX and the -20. The following files are contained in SFTOVX.
o SF2VAX.MEM
SF2VAX.MEM is the documentation for the APLSF to VAX APL migration
Page 3
tool. It contains only APL TTY mnemonics for the APL characters.
It may be listed on an ASCII printer for easy access. All APL
expressions in SF2VAX.MEM assume .BXIO is 1.
There are detailed examples listed in SF2VAX.MEM. The examples
are always reproduced in APL TTY mnemonics, even though some of
the files produced by the migration tool contain APL key-paired
ASCII APL characters. Note that .KM and .KJ are the VAX APL TTY
mnemonics for <carriage return> and <linefeed>. Since the files
built for migration have lines longer than 132 characters, the
examples listed in Sf2VAX.MEM have their lines wrapped to fit on a
printed line. When such wrapping occurs, the line ends with
"<wrap>" to show that it was wrapped for expository reasons.
o BXAV.LA
This is a translation table from APLSF's .BXAV to VAX APL's .BXAV
used by the migration tool. The file contains APL key-paired
ASCII APL character set and therefore must be printed or displayed
on a device that can display APL characters.
Note the following:
- All of the APLSF .BXAV characters that print as .SQ are
translated into the VAX APL character .SS (.BXAV [210]).
- The following APLSF .BXAV characters do not exist in VAX APL's
.BXAV and are translated into the VAX APL character .CO (.BXAV
[211]): 38 (.FI), 121, 103, 113, 115, 116, 117, 122,123 (all
internal use characters). See .LD.USAV below for an
explanation of these internal use characters in APLSF.
- VAX APL allows illegal overstrikes in data, in quoted
literals, and in .QQ input. The text files produced by this
migration tool contain APL overstrikes. Therefore, an ASCII
backspace cannot be migrated as a single character because VAX
APL will assume it to be part of an overstrike. Therefore,
APLSF .BXAV [99 265] are translated into the VAX APL character
.CC (.BXAV [207]).
- Internal carriage return (.BXAV [102] in APL-SF) is converted
to .CC if it is inside a function because .BXBOX is used to
fix text. An internal carriage return inside a character
array is not affected.
- There are three overstrikes in VAX APL's .BXAV that are not in
APLSF's .BXAV. If these overstrikes exist as three characters
in a row in the APLSF data being migrated, they will appear as
a single character in VAX APL. These are the following:
.CC (, over -) VAX APL .BXAV [207]
.SS (.LU over .US) VAX APL .BXAV [210]
.CO (.RU over .US) VAX APL .BXAV [211]
Page 4
o SF2VX0.APL
SF2VX0.APL is built using the text file SF2VX0.IN as a )INPUT file
to APLSF. For example, the following terminal session builds
SF2VX0.APL on the -20:
@APLSF
terminal..TT
<APLSF banner>
CLEAR WS
)INPUT SF2VX0,IN
<messages>
SF2VX0.APL is an APLSF workspace containing the function MIGRATE.
MIGRATE interacts with the user to build a control file that can
be run in batch. The control file performs the time-consuming
task of interacting with the DRIVER functions that transform APLSF
workspaces and data files into text files.
On the -20, put SF2VX0.APL in APLT2V:.
o SF2VX1.APL
SF2VX1.APL is built from the APLSF )INPUT file SF2VX1.IN.
SF2VX1.APL is an APLSF workspace containing the function DRIVER.
DRIVER runs inside an APLSF workspace to transform it into a text
file. SF2VX1.APL transfers the workspace identification, the file
channel assignments, the settable system variables, the
user-defined groups, the user-defined functions, and the
variables. It also performs certain source transformations inside
user-defined functions in an effort to minimize incompatibilities
between APLSF and VAX APL.
On the -20, put SF2VX1.APL in APLT2V:.
o SF2VX3.APL
SF2VX3.APL is built from the VAX APL )INPUT file SF2VX3.IN.
SF2VX3.APL is a VAX APL workspace containing numerous user-defined
functions that simulate the behavior of certain APLSF primitives
under VAX APL. The source transformations performed by DRIVER (in
SF2VX1.APL) replace certain APLSF primitives with these
user-defined APL functions:
- .LD.USEN uses .BXVR under VAX APL to simulate monadic .EN from
APLSF.
- .LD.USDE uses monadic .EP under VAX APL to simulate monadic
.DE from APLSF.
- .LD.USOM uses B/.IO.RO B under VAX APL to simulate .OM B from
APLSF.
Page 5
- .LD.USDQ uses a particular setting of .BXCT under VAX APL to
simulate .DQ from APLSF.
- .LD.USAB sets .BXCT to 0 under VAX APL before simulating
dyadic .AB from APLSF.
- .LD.USIB simulates certain monadic I-beams under APLSF on VAX
APL. The ones that cannot be simulated or are not supported
under APLSF signal an error.
- .LD.USAPPEND, .LD.USDEQ, .LD.USENQ, .LD.USFCM, and .LD.USMTP
replace the APLSF system functions .BXAPPEND, .BXDEQ, .BXENQ,
.BXFCM, and .BXMTP. These user-defined functions report
functionality that is "NOT AVAILABLE IN VAX APL".
- .LD.USASCII replaces .BXASCII from APLSF. It also returns a
vector of 128 characters from VAX APL's .BXAV which closely
resemble the ASCII characters.
- .LD.USAV replaces .BXAV from APLSF. It also returns a vector
of 512 characters from VAX APL's .BXAV which closely resemble
APLSF's .BXAV. See the file BXAV.LA for the .BXAV translation
table in APL character set.
Note that all of the characters in APLSF's .BXAV that print as
.SQ are simulated by VAX APL's .BXAV [251]. The following
.BXAV codes in APLSF are not supported and have been replaced
by .BXAV [211]:
APLSF .BXAV index name
38 .FI
101 double linefeed
103 null
113 left bracket
115 right bracket
116 up arrow
117 left arrow
122 tilde
123 delete
- .LD.USASS replaces .BXASS from APLSF and reports an error if
its argument contains an APLSF password, a "ppn" surrounded by
square brackets, or the switches /BS or /DUMP, since none of
these are supported in VAX APL.
- .LD.USCHS, .LD.USCLS, .LD.USDAS, and .LD.USFLS replace the
APLSF system functions .BXCHS, .BXCLS, .BXDAS, and .BXFLS.
While all of these system functions exist in VAX APL, their
behavior in VAX APL on empty arguments and arguments greater
than 100 is different from under APLSF. These user-defined
functions simulate the behavior under APLSF in these cases.
Page 6
- .LD.USCIQ, .LD.USCOQ, and .LD.USDVC replace the APLSF system
functions .BXCIQ, .BXCOQ and .BXDVC. While all of these
system functions exist in VAX APL, their behavior in VAX APL
is different from under APLSF. These user-defined functions
report an error that the specific system function is "IN VAX
APL" but is "INCOMPATIBLE WITH APLSF".
- .LD.USQLD, .LD.USQCO and .LD.USQPC replace the APLSF system
functions .BXQLD, .BXQCO, and .BXQPC. These user-defined
functions check their argument for an APLSF-style password on
the workspace being accessed and replace it with a VAX
APL-style password.
- .LD.USRENAME replaces the APLSF system function .BXRENAME.
This user-defined function is designed to simulate the
behavior of APLSF's .BXRENAME by using the command ".EP')DO
RENAME ..." in VAX APL.
- .LD.USTT replaces the unsettable APLSF system variable .BXTT.
This user-defined function uses .BXTT in VAX APL to construct
the correct value returned by .BXTT in APLSF for "terminal
type".
- Because the user may not desire to perform all of the
transformations, note that the primitives are in TAB3 and
their replacements are in the rows of MAP3. The system
function names are located in TAB4.
On the VAX, put SF2VX3.APL in APLT2V:.
o SF2VX4.APL
SF2VX4.APL is built from the APLSF )INPUT file SF2VX4.IN.
SF2VX4.APL is an APLSF workspace that contains the file drivers,
DRIVER, ASDRIVER, ISDRIVER, BSDRIVER, and DADRIVER. These drivers
are used to transform APLSF data files (/AS, /IS, /BS, and /DA
files, respectively) into text files.
On the -20, put SF2VX4.APL in APLT2V:.
o SF2VX5.APL
SF2VX5.APL is built from the VAX APL )INPUT file SF2VX5.IN.
SF2VX5.APL is a VAX APL workspace that contains the function
SUBMIT. SUBMIT interacts with the user to build a command file
that can be run in batch that will perform the time-consuming task
of running VAX APL on all of the text files that have been
migrated from the -20.
On the VAX, put SF2VX5.APL in APLT2V:.
Page 7
2.2 Files Built By The Migration Tool
Several files are built by the migration tool.
The APL functions in SFTOVX produce files that either run other tools or
consist of text that should be transferred from the -20 to the VAX.
o MIGRATE in SF2VX0.APL on the -20
MIGRATE produces a batch control file named MIGnnn.CTL, where
"nnn" is a number from 000 through 999, in the connected
directory. It chooses "nnn" by finding the first such file name
that does not exist.
The workspaces and APL data files on the -20 that are to be
migrated to the VAX can reside in any accessible directory, as
long as the file is not protected against reading.
o DRIVER in SF2VX1.APL on the -20
DRIVER produces a file named "wsid.W2V" where "wsid" is the
workspace identifer of the workspace being transferred. The .W2V
file contains APL key-paired ASCII APL characters.
o File drivers in SF2VX4.APL on the -20
ASDRIVER, ISDRIVER, BSDRIVER, and DADRIVER each produce files
named "file.x2V", where "file" is the name of the APL data file
being transferred, and "x" is "A", "I", "B", or "D", indicating
the type of DRIVER that produced the file. The .x2V file contains
APL key-paired ASCII APL characters.
o SUBMIT in SF2VX5.APL on the VAX
SUBMIT produces a command file named SUBnnn.COM, where "nnn" is a
number from 000 through 999, in the default directory. It chooses
"nnn" by finding the first such file name that does not exist.
The VAX APL images of workspaces and APL data files migrated from
the -20 will be constructed either in the default directory on the
VAX or in a directory associated with the logical name APLnnn:,
where "nnn" was chosen by the DRIVER that produced the text file
on the -20. SUBMIT will prompt the user for the definitions for
these logical names.
2.3 User-Defined Filters
The following describes user-defined filters which handle special migration
difficulties.
MIGRATE allows the user to specify a "filter workspace" to be executed
Page 8
before the workspace or APL data file in question is processed:
o Migrating workspaces
The user-specified filter workspace is copied, using )COPY, into
the workspace and the function named FILTER is executed. This
niladic user-defined function can perform whatever transformations
it wishes on the workspace. To prevent this workspace from being
migrated, it can circumvent further processing by exiting APLSF
via )OFF HOLD. When FILTER finishes,it is erased, using )ERASE,
so it will not be migrated with the rest of the workspace. The
migration process assumes that FILTER will remove any objects that
are not to be migrated from the workspace before it completes.
o Migrating APL data files
The user-specified filter workspace is copied, using )COPY, into
the workspace SF2VX4 and the function named "xxFILTER" is
executed, where "xx" represents the first two characters of the
DRIVER that will be executed. ISFILTER, BSFILTER, and DAFILTER
are monadic (as are the associated drivers), where the right
argument is the name of the file being processed. ASFILTER (and
ASDRIVER) is dyadic, where the left argument is the character set
to be used to read the file (1 if TTY, 2 if APL) and the right
argument is the file name.
Note that it is important for users to provide their own version
of the xxREAD routine that the xxDRIVER calls to process the data
file, especially if the file being processed is a /BS file with no
headers on the records. In that case, users are the only ones who
know what constitutes a record in the file. There is internal
documentation of the xxREAD and xxDRIVER functions in SF2VX4.APL
and SF2VX4.IN so users can determine if they must provide their
own xxREAD to migrate a data file.
Several character set conversions take place. .SQ is converted to
.SS. Any element designated for internal use is converted to .CO.
Backspace is converted to .CC and any internal carriage return
within a function is converted to .CC.
3.0 EXAMPLE
Below is an example that illustrates the interaction between the user and
the migration tool. The example is divided into five parts:
1. MIGRATE running under APLSF
2. The TOPS-20 batch control file that results from running MIGRATE
3. DRIVER and the corresponding file drivers running under APLSF
Page 9
4. Transfer of text files to VAX by the user's own methods
5. SUBMIT running under VAX APL
The input scripts, the result of executing a DRIVER, follow the running of
each corresponding DRIVER function. Following each of these parts, there
is a brief explanation of some lines of the script.
Note that terminal output is in uppercase, with APL input indented six
spaces. Annotations are in lowercase.
1. The user runs MIGRATE from the workspace APLT2V:SF2VX0 and describes
the files that are to be processed.
@APLSF
TERMINAL..TT
)LOAD APLT2V:SF2VX0
SAVED 10:41:05 9-SEP-83 7P
check to see what .CTL files are already on disk
)LIB *,CTL
DSK:
MIG000.CTL
MIGRATE will create DSK:MIG001.CTL
MIGRATE
WHAT TYPE OF FILE DO YOU WISH TO MIGRATE? <cr>
invalid input gets the help message
VALID FILE TYPES ARE W (WORKSPACE), A (/AS), I (/IS), D (/DA), B (/BS)
OR ANY SYSTEM COMMAND TO BE EXECUTED
OR Q (TO QUIT)
and back to the prompt
WHAT TYPE OF FILE DO YOU WISH TO MIGRATE? )FOO
error 21 is INCORRECT {system} COMMAND
.EP ')FOO' REPORTED ERROR 0 21
and back to the prompt
WHAT TYPE OF FILE DO YOU WISH TO MIGRATE? W
"revert" means go back to the previous question
WHAT FILE SPEC? [CR TO REVERT] <cr>
and back to the prompt
WHAT TYPE OF FILE DO YOU WISH TO MIGRATE? W
an illegal file spec
WHAT FILE SPEC? [CR TO REVERT] $
error 22 is INCORRECT PARAMETER {in a system command}
ERROR 0 22 IN FILESPEC $,APL
file does not exist
WHAT FILE SPEC? [CR TO REVERT] XXX
XXX,APL DOES NOT EXIST
WHAT FILE SPEC? [CR TO REVERT] <cr>
and back to the prompt
WHAT TYPE OF FILE DO YOU WISH TO MIGRATE? )LIB
output from .EP ')LIB'
DSK:
A
B
and back to the prompt
user wants to migrate workspaces
WHAT TYPE OF FILE DO YOU WISH TO MIGRATE? W
Page 10
migrate all workspaces in the connected directory
WHAT FILE SPEC? [CR TO REVERT] *
use FILTER in FOO:W
USER DEFINED FILTER? [CR IF NONE] FOO:W
workspaces DSK:A.APL and DSK:B.APL have been processed
! WORKSPACE A,APL SETUP COMPLETE
! WORKSPACE B,APL SETUP COMPLETE
user wants to do more
DO YOU HAVE MORE FILES TO PROCESS? [Y OR N] Y
user wants to migrate workspaces
WHAT TYPE OF FILE DO YOU WISH TO MIGRATE? W
wants to migrate DSK:WS.PD
WHAT FILE SPEC? [CR TO REVERT] WS,PD
no filter this time
USER DEFINED FILTER? [CR IF NONE] <cr>
the WS is locked
WORKSPACE WS,PD IS LOCKED
if the user provides the password, the WS can be
processed
WHAT IS THE PASSWORD? [CR TO SKIP THIS WS] FOO
! WORKSPACE WS,PD SETUP COMPLETE
DO YOU HAVE MORE FILES TO PROCESS? [Y OR N] Y
WHAT TYPE OF FILE DO YOU WISH TO MIGRATE? W
WHAT FILE SPEC? [CR TO REVERT] WS,PD
USER DEFINED FILTER? [CR IF NONE] <cr>
WORKSPACE WS,PD IS LOCKED
user wants to skip processing of WS.PD
WHAT IS THE PASSWORD? [CR TO SKIP THIS WS] <cr>
! SKIPPING WORKSPACE WS,PD
DO YOU HAVE MORE FILES TO PROCESS? [Y OR N] Y
WHAT TYPE OF FILE DO YOU WISH TO MIGRATE? )LIB WRK:*,ADA
A.ADA
B.ADA
user wants to process /DA files
WHAT TYPE OF FILE DO YOU WISH TO MIGRATE? D
WHAT FILE SPEC? [CR TO REVERT] WRK:*.ADA
use DAFILTER in FOO:DA
USER DEFINED FILTER? [CR IF NONE] FOO:DA
! DA FILE WRK:A,ADA SETUP COMPLETE
! DA FILE WRK:B,ADA SETUP COMPLETE
DO YOU HAVE MORE FILES TO PROCESS? [Y OR N] Y
user wants to process /AS files
WHAT TYPE OF FILE DO YOU WISH TO MIGRATE? A
WHAT FILE SPEC? [CR TO REVERT] A.AAS
an extra question for /AS files only
empty input causes a reprompt
WHAT CHARACTER SET? [TTY OR BIT OR KEY] <cr>
invalid input gets the help message
WHAT CHARACTER SET? [TTY OR BIT OR KEY] W
VALID CHARACTER SETS FOR READING /AS FILES ARE T (TTY), B (BIT), K (KEY)
WHAT CHARACTER SET? [TTY OR BIT OR KEY] T
USER DEFINED FILTER? [CR IF NONE] FOO:TTY
! AS FILE A,AAS SETUP COMPLETE
DO YOU HAVE MORE FILES TO PROCESS? [Y OR N] Y
WHAT TYPE OF FILE DO YOU WISH TO MIGRATE? A
Page 11
WHAT FILE SPEC? [CR TO REVERT] A.AAS
WHAT CHARACTER SET? [TTY OR BIT OR KEY] K
USER DEFINED FILTER? [CR IF NONE] FOO:KEY
! AS FILE A,AAS SETUP COMPLETE
DO YOU HAVE MORE FILES TO PROCESS? [Y OR N] Y
WHAT TYPE OF FILE DO YOU WISH TO MIGRATE? A
WHAT FILE SPEC? [CR TO REVERT] A.AAS
WHAT CHARACTER SET? [TTY OR BIT OR KEY] B
USER DEFINED FILTER? [CR IF NONE] FOO:BIT
! AS FILE A,AAS SETUP COMPLETE
DO YOU HAVE MORE FILES TO PROCESS? [Y OR N] Y
WHAT TYPE OF FILE DO YOU WISH TO MIGRATE? )LIB *.AAS[4,244]
DSK:
A.AAS
B.AAS
WHAT TYPE OF FILE DO YOU WISH TO MIGRATE? A
file spec may contain [ppn]
WHAT FILE SPEC? [CR TO REVERT] *.AAS[4,244]
WHAT CHARACTER SET? [TTY OR BIT OR KEY] T
USER DEFINED FILTER? [CR IF NONE] FOO:AS
! AS FILE A,AAS[4,244] SETUP COMPLETE
! AS FILE B,AAS[4,244] SETUP COMPLETE
DO YOU HAVE MORE FILES TO PROCESS? [Y OR N] Y
WHAT TYPE OF FILE DO YOU WISH TO MIGRATE? )LIB WRK:*,AIS[4,244]
A.AIS
B.AIS
user wants to process /IS files
WHAT TYPE OF FILE DO YOU WISH TO MIGRATE? I
WHAT FILE SPEC? [CR TO REVERT] WRK:*.AIS[4,244]
USER DEFINED FILTER? [CR IF NONE] FOO:IS
! IS FILE WRK:A,AIS[4,244] SETUP COMPLETE
! IS FILE WRK:B,AIS[4,244] SETUP COMPLETE
DO YOU HAVE MORE FILES TO PROCESS? [Y OR N] Y
WHAT TYPE OF FILE DO YOU WISH TO MIGRATE? )LIB *.ABI
DSK:
A.ABI
B.ABI
user wants to process /BS files
WHAT TYPE OF FILE DO YOU WISH TO MIGRATE? B
WHAT FILE SPEC? [CR TO REVERT] *.ABI
USER DEFINED FILTER? [CR IF NONE] FOO:BI
! BS FILE A,ABI SETUP COMPLETE
! BS FILE B,ABI SETUP COMPLETE
user wants to quit
DO YOU HAVE MORE FILES TO PROCESS? [Y OR N] Q
MIGRATE built MIG001.CTL all right
! MIG001,CTL [4,244]/AS COMPLETED
)OFF HOLD
@
Note that ! means the message will be listed in the CTL file. Although
users may insert a comma (,) or a period (.) in the filespec, only a comma
is output in the messages.
Page 12
Users can revert to the 'type of file' prompt even if they are at the file
spec prompt level. This allows them to check what files are on disk
through )LIB. Note the following behavior of )LIB in APLSF.
For R_.ep')LIB ' F, where R is the result and F is the argument, the
following apply.
o F may have a comma or a period before the file type.
o If F is of the form f or f,apl or f,typ or DSK:f..., R's first
line will be DSK:.
o If F has no *, R will be a vector.
o If F has a *, R is a matrix, .BXPW wide, with filenames right
justified to column six and .filetype in column 7 if the type is
not APL. If the file type is .APL, ,APL will not be present in R.
o R is 0 e .ro 0 if an error occurs.
o If 0 = .ro,R, F does not exist.
o If F is dev:f... and F does not exist, 0 = .roR.
o If F is f... or DSK:F... and F does not exist, R is DSK:
o ")LIB f*" does not work in APLSF.
o ")LIB F-X" yields 22 INCORRECT PARAMETER
o )LIB must have the device name (dev:) before the file
specification and the [ppn] after the file specification.
2. MIGRATE creates a batch control file, MIG001.CTL, which contains the
following:
o The files MIGRATE built and when the building occurred (.BXTS)
! BUILDING MIG001,CTL [4,244]/AS 1983 9 9 10 43 8 990
@NOERROR
o User errors that occurred while using MIGRATE
! MIGRATING $,APL TYPE ,APL
ERROR 0 22 IN FILESPEC $,APL
! MIGRATING XXX,APL TYPE ,APL
XXX,APL DOES NOT EXIST
o Workspace processing (with the user-defined filter that must be
named FILTER in the specified workspace, for example, FOO:W)
! MIGRATING *,APL TYPE ,APL
! USING FILTER FOO:W
Page 13
@APLSF
*TT
*)MAXCORE 352
*)LOAD A,APL
*)COPY FOO:W
*FILTER
*)ERASE FILTER
*)PCOPY APLT2V:SF2VX1 DRIVER
*DRIVER
*)OFF HOLD
! WORKSPACE A,APL SETUP COMPLETE
@APLSF
*TT
*)MAXCORE 352
*)LOAD B,APL
*)COPY FOO:W
*FILTER
*)ERASE FILTER
*)PCOPY APLT2V:SF2VX1 DRIVER
*DRIVER
*)OFF HOLD
! WORKSPACE B,APL SETUP COMPLETE
o Locked workspace processing (no user-defined filter)
! MIGRATING WS,PD TYPE ,APL
@APLSF
*TT
*)MAXCORE 352
*)LOAD WS,PD-FOO
*)PCOPY APLT2V:SF2VX1 DRIVER
*DRIVER
*)OFF HOLD
! WORKSPACE WS,PD SETUP COMPLETE
o Locked workspace processing - workspace skipped because user
doesn't know password
! MIGRATING WS,PD TYPE ,APL
! SKIPPING LOCKED WORKSPACE WS,PD
o /DA files processing (with the user-defined filter, must be named
DAFILTER in the specified workspace, for example, FOO:DA). Note
the file specification contains a device name.
! MIGRATING WRK:*,ADA TYPE ,ADA
! USING FILTER FOO:DA
@APLSF
*TT
*)MAXCORE 352
*)LOAD APLT2V:SF2VX4
*)COPY FOO:DA
* DAFILTER 'WRK:A,ADA'
*)ERASE DAFILTER
* DADRIVER 'WRK:A,ADA'
Page 14
*)OFF HOLD
! DA FILE WRK:A,ADA SETUP COMPLETE
@APLSF
*TT
*)MAXCORE 352
*)LOAD APLT2V:SF2VX4
*)COPY FOO:DA
* DAFILTER 'WRK:B,ADA'
*)ERASE DAFILTER
* DADRIVER 'WRK:B,ADA'
*)OFF HOLD
! DA FILE WRK:B,ADA SETUP COMPLETE
o /AS files processing (with the user-defined filter ASFILTER, which
is dyadic). Note the TT/BIT response to the "terminal..." prompt
for the /BIT character set.
! MIGRATING A,AAS TYPE ,AAS
! USING CHARACTER SET /TTY
! USING FILTER FOO:TTY
@APLSF
*TT
*)MAXCORE 352
*)LOAD APLT2V:SF2VX4
*)COPY FOO:TTY
* 1 ASFILTER 'A,AAS'
*)ERASE ASFILTER
* 1 ASDRIVER 'A,AAS'
*)OFF HOLD
! AS FILE A,AAS SETUP COMPLETE
! MIGRATING A,AAS TYPE ,AAS
! USING CHARACTER SET /KEY
! USING FILTER FOO:KEY
@APLSF
*TT
*)MAXCORE 352
*)LOAD APLT2V:SF2VX4
*)COPY FOO:KEY
* 2 ASFILTER 'A,AAS'
*)ERASE ASFILTER
* 2 ASDRIVER 'A,AAS'
*)OFF HOLD
! AS FILE A,AAS SETUP COMPLETE
! MIGRATING A,AAS TYPE ,AAS
! USING CHARACTER SET /BIT
! USING FILTER FOO:BIT
@APLSF
*TT/BIT
*)MAXCORE 352
*)LOAD APLT2V:SF2VX4
*)COPY FOO:BIT
* 2 ASFILTER 'A,AAS'
*)ERASE ASFILTER
* 2 ASDRIVER 'A,AAS'
*)OFF HOLD
Page 15
! AS FILE A,AAS SETUP COMPLETE
o /AS files processing (with user-defined filter). Note the file
specification contains [ppn].
! MIGRATING *,AAS[4,244] TYPE ,AAS
! USING CHARACTER SET /TTY
! USING FILTER FOO:AS
@APLSF
*TT
*)MAXCORE 352
*)LOAD APLT2V:SF2VX4
*)COPY FOO:AS
* 1 ASFILTER 'A,AAS[4,244]'
*)ERASE ASFILTER
* 1 ASDRIVER 'A,AAS[4,244]'
*)OFF HOLD
! AS FILE A,AAS[4,244] SETUP COMPLETE
@APLSF
*TT
*)MAXCORE 352
*)LOAD APLT2V:SF2VX4
*)COPY FOO:AS
* 1 ASFILTER 'B,AAS[4,244]'
*)ERASE ASFILTER
* 1 ASDRIVER 'B,AAS[4,244]'
*)OFF HOLD
! AS FILE B,AAS[4,244] SETUP COMPLETE
o /IS files processing (with user-defined filter). Note the file
specification contains both a device name and [ppn].
! MIGRATING WRK:*,AIS[4,244] TYPE ,AIS
! USING FILTER FOO:IS
@APLSF
*TT
*)MAXCORE 352
*)LOAD APLT2V:SF2VX4
*)COPY FOO:IS
* ISFILTER 'WRK:A,AIS[4,244]'
*)ERASE ISFILTER
* ISDRIVER 'WRK:A,AIS[4,244]'
*)OFF HOLD
! IS FILE WRK:A,AIS[4,244] SETUP COMPLETE
@APLSF
*TT
*)MAXCORE 352
*)LOAD APLT2V:SF2VX4
*)COPY FOO:IS
* ISFILTER 'WRK:B,AIS[4,244]'
*)ERASE ISFILTER
* ISDRIVER 'WRK:B,AIS[4,244]'
*)OFF HOLD
! IS FILE WRK:B,AIS[4,244] SETUP COMPLETE
Page 16
o /BS files processing (with the user-defined filter BSFILTER in
FOO:BI).
! MIGRATING *,ABI TYPE ,ABI
! USING FILTER FOO:BI
@APLSF
*TT
*)MAXCORE 352
*)LOAD APLT2V:SF2VX4
*)COPY FOO:BI
* BSFILTER 'A,ABI'
*)ERASE BSFILTER
* BSDRIVER 'A,ABI'
*)OFF HOLD
! BS FILE A,ABI SETUP COMPLETE
@APLSF
*TT
*)MAXCORE 352
*)LOAD APLT2V:SF2VX4
*)COPY FOO:BI
* BSFILTER 'B,ABI'
*)ERASE BSFILTER
* BSDRIVER 'B,ABI'
*)OFF HOLD
! BS FILE B,ABI SETUP COMPLETE
! MIG001,CTL [4,244]/AS COMPLETED
Note that @NOERROR means that SFTOVX continues processing in batch
no matter what messages it receives. The )ERASE that follows the
copying of the filter workspace insures that the filter function
will not be migrated.
3. The user runs DRIVER in APLT2V:SF2VX1 on DSK:TEST0.APL.
o Workspace TEST0.APL contains the following:
- channels 1, 2, 4, 6, and 8 assigned
- various system variables settings different from a CLEAR WS
- two groups
- six functions (1 locked; 1 containing an error)
- six variables
o DRIVER runs under APLSF, producing messages.
! MIGRATING TEST0,APL TYPE ,APL
@APLSF
terminal..TT
APL-20 DECSYSTEM-20 APLSF 2(552)
Page 17
TTY226) 12:26:50 TUESDAY 27-SEP-83 USER [4,244]
CLEAR WS
)MAXCORE 352
WAS 40P
)LOAD TEST0,APL
SAVED 12:24:12 27-SEP-83 8P
)PCOPY APLT2V:SF2VX1 DRIVER
SAVED 9:21:55 27-SEP-83 16P
DRIVER
" *** '[4,244]' REPLACED BY 'APL000:' IN WSID
" *** 'FOO,ADA [4,244]/DA' REPLACED BY 'APL001:FOO,ADA /DA' ON CHANNEL 1
" *** 'TWO,AAS [4,244]/AS' REPLACED BY 'APL002:TWO,AAS /AS' ON CHANNEL 2
" *** 'DEV:FOUR,AIS [4,244]/IS' REPLACED BY 'APL004:FOUR,AIS /IS' ON CHANNEL 4
" *** 'DEV:SIX,ADA [4,4]/DA' REPLACED BY 'APL006:SIX,ADA /DA' ON CHANNEL 6
" *** 'EIGHT,ABI [4,4]/BS' REPLACED BY 'APL008:EIGHT,ABI /BS' ON CHANNEL 8
'1 QUAD NAMES WERE REMOVED FROM THE HEADER OF FF'
'ASSIGNMENTS TO THE FOLLOWING QUAD NAMES WERE REPLACED WITH QUAD SINK IN FF
AV
'
'THE FOLLOWING PRIMITIVE FUNCTIONS WERE REPLACED WITH USER FUNCTIONS IN FF
.AB.OM.IB$
'
'THE FOLLOWING SYSTEM FUNCTIONS WERE REPLACED WITH USER FUNCTIONS IN FF
AV
'
" *** LOCKED LOCKED
" *** BIG INTEGER IN Y
)OFF HOLD
TTY226) 12:27:05 27-SEP-83
CONNECTED 0:00:15 CPU TIME 0:00:08
2233 STATEMENTS 9337 OPERATIONS
EXIT
@
o DRIVER produces a script in TEST0.W2V:. Note that APL000:, APL002:, APL004:,
APL006:, and APL008: must be defined on the VAX for TEST.W2V to work on the VAX.
" BUILDING TEST0,W2V [4,244]/AS 1983 9 27 12 26 53 675
)CLEAR
" *** '[4,244]' REPLACED BY 'APL000:' IN WSID
)WSID APL000:TEST0
)COPY APLT2V:SF2VX3
" *** 'FOO,ADA [4,244]/DA' REPLACED BY 'APL001:FOO,ADA /DA' ON CHANNEL 1
.LD.USASS ' 1 APL001:FOO.ADA /DA'
" *** 'TWO,AAS [4,244]/AS' REPLACED BY 'APL002:TWO,AAS /AS' ON CHANNEL 2
.LD.USASS ' 2 APL002:TWO.AAS /AS'
" *** 'DEV:FOUR,AIS [4,244]/IS' REPLACED BY 'APL004:FOUR,AIS /IS' ON CHANNEL 4
.LD.USASS ' 4 APL004:FOUR.AIS /IS'
" *** 'DEV:SIX,ADA [4,4]/DA' REPLACED BY 'APL006:SIX,ADA /DA' ON CHANNEL 6
.LD.USASS ' 6 APL006:SIX.ADA /DA'
" *** 'EIGHT,ABI [4,4]/BS' REPLACED BY 'APL008:EIGHT,ABI /BS' ON CHANNEL 8
.LD.USASS ' 8 APL008:EIGHT.ABI /BS'
.BXRESET
.BXAUS_0
Page 18
.BXCT_0
.BXGAG_0
.BXIO_0
.BXPP_10
.BXPW_79
.BXRL_0
.BXTIMELIMIT_0
A.US_''
A.US_A.US,'.BX:.KM.KJ '
.BXSF_10.ROA.US
A.US_''
A.US_A.US,'HI THERE - THIS IS .BXTRAP'
.BXTRAP_24.ROA.US
A.US_''
.BXLX_0.ROA.US'
A.US_''
A.US_A.US,')GROUP G1 A BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB C '
.XQ A.US
A.US_''
A.US_A.US,')GROUP G2 XXXXXXXXXXXXXXXXXXXXXXXXXXXXX Y ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ '
A.US_A.US,' AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA '
A.US_A.US,' '
.XQ A.US
A.US_''
A.US_A.US,'R_DUPSOUT X .KM.KJ'
A.US_A.US,'"REMOVES DUPLICATES FROM VECTOR .KM.KJ'
A.US_A.US,'R_((.IO.ROX)=X.IOX)/X_,X .KM.KJ'
A.US_.BX_.BXFX .BXBOX A.US .DM (0=1^0.RO A.US)/.BXERROR
A.US_''
A.US_A.US,'ERROR.KM.KJ'
A.US_A.US,'L:1 .KM.KJ'
A.US_A.US,'L:2 .KM.KJ''
A.US_.BX_.BXFX .BXBOX A.US .DM (0=1^0.RO A.US)/.BXERROR
A.US_''
A.US_A.US,'Z_A F B;T;.BXIO.KM.KJ'
A.US_A.US,'L:1 .KM.KJ'
A.US_A.US,'''1 2 3 4 5 6 7 8 9 0 + .DM'' .KM.KJ'
A.USA.US,'''.DD .NG < .LE = .GE > .NE & .OR - % $'' .KM.KJ'
A.US_A.US,'''Q W E R T Y U I O P _ .GO'' .KM.KJ'
A.US_A.US,'''? .OM .EP .RO ~ ^ .DA .IO .LO * { }'' .KM.KJ'
A.US_A.US,'''A S D F G H J K L ( ) .RK'' .KM.KJ'
A.US_A.US,'''.AL .CE .FL .US .DL .LD .SO '''' .BX [ ] .LK'' .KM.KJ'
A.US_A.US,'''Z X C V B N M , . /'' .KM.KJ'
A.US_A.US,'''LEFT .LU RIGHT .RU .DU .UU .DE .EN | ; : \'' .KM.KJ'
A.US_A.US,'''.ZA .ZB .ZC .ZD .ZE .ZF .ZG .ZH .ZI .ZJ .ZK .ZL .ZM'' .KM.KJ'
A.US_A.US,'''.ZN .ZO .ZP .ZQ .ZR .ZS .ZT .ZU .ZV .ZW .ZX .ZY .ZZ'' .KM.KJ'
A.US_A.US,'''.UD ! " .IB .XQ .FM .DQ .IQ .OQ .QQ .QD .GU .GD .PD'' .KM.KJ'
A.US_A.US,'''.NR .NN .LG .RV .TR .CR .CS .CB'' .KM.KJ'
A.US_.BX_.BXFX .BXBOX A.US .DM (0=1^0.RO A.US)/.BXERROR
A.US_''
'2 QUAD NAMES WERE REMOVED FROM THE HEADER OF FF'
A.US_A.US,'FF;.BXIO.KM.KJ'
A.US_A.US,' .LD.USOM ''.OM'' .KM.KJ'
A.US_A.US,'A .LD.USAB ''|'' .KM.KJ'
A.US_A.US,' .LD.USIB ''.IB'' .KM.KJ'
Page 19
A.US_A.US,'.BXSINK_ .LD.USAV .KM.KJ'
A.US_A.US,'''$'' .BXFMT ''$'' .KM.KJ'
A.US_.BX_.BXFX .BXBOX A.US .DM (0=1^0.RO A.US)/.BXERROR
'ASSIGNMENTS TO THE FOLLOWING QUAD NAMES WERE REPLACED WITH QUAD SINK IN FF
AV
'
'THE FOLLOWING PRIMITIVE FUNCTIONS WERE REPLACED WITH USER FUNCTIONS IN FF
|.OM.IB$
'
'THE FOLLOWING SYSTEM FUNCTIONS WERE REPLACED WITH USER FUNCTIONS IN FF
AV
'
A.US_''
A.US_A.US,'HOWDUPSOUT .KM.KJ'
A.US_A.US,'''THIS FUNCTION RETURNS A VECTOR FORMED BY TAKING THE RIGHT ARGUMENT'' .KM.KJ'
A.US_A.US,'''AND REMOVING DUPLICATES FROM IT.'' .KM.KJ'
A.US_A.US,'''THE RIGHT ARGUMENT MAY BE A NUMERIC OR CHARACTER SCALAR OR VECTOR.'' .KM.KJ'
A.US_A.US,''' '' .KM.KJ'
A.US_A.US,''' ....................TRY.......'' .KM.KJ'
A.US_A.US,'''.................................RO.BX_DUPSOUT .IO12'' .KM.KJ'
A.US_A.US,'''.................................RO.BX_DUPSOUT 12.RO .IO3 '' .KM.KJ'
A.US_A.US,'''NOTE THAT SCALARS BECOME VECTORS OF LENGTH 1'' .KM.KJ'
A.US_A.US,''' .RO.BX_DUPSOUT 1'' .KM.KJ'
A.US_A.US,'3 1 .RO'' '' .KM.KJ'
A.US_.BX_.BXFX .BXBOX A.US .DM (0=1^0.RO A.US)/.BXERROR
" *** LOCKED LOCKED
A.US_.IO0
A.US_A.US,0 1 2 3 4 5 6 7 8 9
A.US_A.US,10 11 12 13 14 15 16 17 18 19
A.US_A.US,20 21 22 23 24 25 26 27 28 29
A.US_A.US,30 31 32 33 34 35 36 37 38 39
A.US_A.US,40 41 42 43 44 45 46 47 48 49
A.US_A.US,50 51 52 53 54 55 56 57 58 59
A.US_A.US,60 61 62 63 64 65 66 67 68 69
A.US_A.US,70 71 72 73 74 75 76 77 78 79
A.US_A.US,80 81 82 83 84 85 86 87 88 89
A.US_A.US,90 91 92 93 94 95 96 97 98 99
X_100.ROA.US
A.US_.IO0
A.US_A.US,0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5
A.US_A.US,9.5 10.5 11.5 12.5 13.5 14.5 15.5 16.5 17.5
A.US_A.US,18.5 19.5 20.5 21.5 22.5 23.5 24.5 25.5 26.5
A.US_A.US,27.5 28.5 29.5 30.5 31.5 32.5 33.5 34.5 35.5
A.US_A.US,36.5 37.5 38.5 39.5 40.5 41.5 42.5 43.5 44.5
A.US_A.US,45.5 46.5 47.5 48.5 49.5 50.5 51.5 52.5 53.5
A.US_A.US,54.5 55.5 56.5 57.5 58.5 59.5 60.5 61.5 62.5
A.US_A.US,63.5 64.5 65.5 66.5 67.5 68.5 69.5 70.5 71.5
A.US_A.US,72.5 73.5 74.5 75.5 76.5 77.5 78.5 79.5 80.5
A.US_A.US,81.5 82.5 83.5 84.5 85.5 86.5 87.5 88.5 89.5
A.US_A.US,90.5 91.5 92.5 93.5 94.5 95.5 96.5 97.5 98.5
A.US_A.US,99.5
XX_100.ROA.US
A.US_.IO0
A.US_A.US,1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 <wrap>
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 <wrap>
Page 20
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1
A.US_A.US,1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 <wrap>
1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1
XXX_200.ROA.US
A.US_''
A.US_A.US,'.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS!.RV.TR.IB.QQ <wrap>
.LG.NN.NR".GU.GD.CR.CS.CB.SS.PD.QD.IQ.OQ.DQ$.CO.XQ.FM.SS.SS.SS.SS.SS.SS <wrap>
.DD<.LE.GE>?.OM.EP.RO^.DA.IO.AL.CE.FL()[].LU.RU.UU.US.SS.SS.SS_.GO.BX.NE=.DU.DE&
A.US_A.US,'.OR~/*#%+-.LO|;,.SO.EN.DL:''[email protected]@ <wrap>
.CO.LK.CO.CO.CO.DM{.RK}.CO.CO.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS <wrap>
.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS'
A.US_A.US,'.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS <wrap>
.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS <wrap>
.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS'
A.US_A.US,'.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.WN.KA.KB.KC <wrap>
.KD.KE.KF.KG.CC.KI.KJ.KK.KL.KM.KN.KO.KP.KQ.KR.KS.KT.KU.KV.KW.KX.KY.KZ.WE.WF <wrap>
.WG.WR.WU.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS0123456789.SS.SS.SS.SS.SS'
A.US_A.US,'.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS <wrap>
.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.LDABCDEFGHIJKLMNOPQRSTUVWXYZ.SS !.QU.PS$.PC.AP''()*+,-./01'
A.US_A.US,'23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~.WD.SS.SS'
A.US_A.US,'.SS.SS.UD.ZA.ZB.ZC.ZD.ZE.ZF.ZG.ZH.ZI.ZJ.ZK.ZL.ZM.ZN.ZO.ZP.ZQ.ZR.ZS.ZT.ZU.ZV.ZW.ZX.ZY.ZZ.SS.SS.SS.SS.SS'
XXXX_32 16.ROA.US
A.US_.IO0
" *** BIG INTEGER IN Y
A.US_A.US,8589934592 .NG8589934592 8589934592 .NG8589934592
Y_4.ROA.US
A.US_.IO0
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
Page 21
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
.LD.LDRANK_300.ROA.US
A.US_.IO0
A.US_A.US,2
YY_.LD.LDRANK.ROA.US
.BXSINK_.BXEX 2 6.RO 'A.US .LD.LDRANK'
)SAVE
o Using TEST0.W2V as input to VAX APL produces the workspace TEST0.APL. Note that TEST0.W2V is a /KEY file.
)IN TEST0.W2V/KEY
" BUILDING TEST0,W2V [4,244]/AS 1983 9 27 12 26 53 675
)CLEAR
CLEAR WS
" *** '[4,244]' REPLACED BY 'APL000:' IN WSID
)WSID APL000:TEST0
WAS CLEAR WS
)COPY APLT2V:SF2VX3
SAVED 26-SEP-1983 14:19:57 42 BLKS
" *** 'FOO,ADA [4,244]/DA' REPLACED BY 'APL001:FOO,ADA /DA' ON CHANNEL 1
.LD.USASS ' 1 APL001:FOO.ADA /DA'
1
" *** 'TWO,AAS [4,244]/AS' REPLACED BY 'APL002:TWO,AAS /AS' ON CHANNEL 2
.LD.USASS ' 2 APL002:TWO.AAS /AS'
2
" *** 'DEV:FOUR,AIS [4,244]/IS' REPLACED BY 'APL004:FOUR,AIS /IS' ON CHANNEL 4
.LD.USASS ' 4 APL004:FOUR.AIS /IS'
4
" *** 'DEV:SIX,ADA [4,4]/DA' REPLACED BY 'APL006:SIX,ADA /DA' ON CHANNEL 6
.LD.USASS ' 6 APL006:SIX.ADA /DA'
6
" *** 'EIGHT,ABI [4,4]/BS' REPLACED BY 'APL008:EIGHT,ABI /BS' ON CHANNEL 8
.LD.USASS ' 8 APL008:EIGHT.ABI /BS'
.BXASS FILE SPEC CONTAINING /BS IS UNSUPPORTED
.BXRESET
.BXAUS_0
.BXCT_0
.BXGAG_0
.BXIO_0
.BXPP_10
.BXPW_79
.BXRL_0
.BXTIMELIMIT_0
A.US_''
A.US_A.US,'.BX:<cr><lf> '
.BXSF_10.ROA.US
A.US_''
Page 22
A.US_A.US,'HI THERE - THIS IS .BXTRAP'
.BXTRAP_24.ROA.US
A.US_''
.BXLX_0.ROA.US
A.US_''
A.US_A.US,')GROUP G1 A BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB C '
.XQ A.US
A.US''
A.US_A.US,')GROUP G2 XXXXXXXXXXXXXXXXXXXXXXXXXXXXX Y ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ '
A.US_A.US,' AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA '
A.US_A.US,' '
.XQ A.US
A.US_''
A.US_A.US,'R_DUPSOUT X <cr><lf>'
A.US_A.US,'"REMOVES DUPLICATES FROM VECTOR <cr><lf>'
A.US_A.US,'R_((.IO.ROX)=X.IOX)/X_,X <cr><lf>'
A.US_.BX_.BXFX .BXBOX A.US .DM (0=1^0.RO A.US)/.BXERROR
DUPSOUT
A.US_''
A.US_A.US,'ERROR<cr><lf>'
A.US_A.US,'L:1 <cr><lf>'
A.US_A.US,'L:2 <cr><lf>'
A.US_.BX_.BXFX .BXBOX A.US .DM (0=1^0.RO A.US)/.BXERROR
2
6 LABEL ERROR (DUPLICATE LABEL)
L:2
^
A.US_''
A.US_A.US,'Z_A F B;T;.BXIO<cr><lf>'
A.US_A.US,'L:1 <cr><lf>'
A.US_A.US,'''1 2 3 4 5 6 7 8 9 0 + .DM'' <cr><lf>'
A.USA.US,'''.DD .NG < .LE = .GE > .NE & .OR - % $'' <cr><lf>'
A.US_A.US,'''Q W E R T Y U I O P _ .GO'' <cr><lf>'
A.US_A.US,'''? .OM .EP .RO ~ ^ .DA .IO .LO * { }'' <cr><lf>'
A.US_A.US,'''A S D F G H J K L ( ) .RK'' <cr><lf>'
A.US_A.US,'''.AL .CE .FL .US .DL .LD .SO '''' .BX [ ] .LK'' <cr><lf>'
A.US_A.US,'''Z X C V B N M , . /'' <cr><lf>'
A.US_A.US,'''LEFT .LU RIGHT .RU .DU .UU .DE .EN | ; : \'' <cr><lf>'
A.US_A.US,'''.ZA .ZB .ZC .ZD .ZE .ZF .ZG .ZH .ZI .ZJ .ZK .ZL .ZM'' <cr><lf>'
A.US_A.US,'''.ZN .ZO .ZP .ZQ .ZR .ZS .ZT .ZU .ZV .ZW .ZX .ZY .ZZ'' <cr><lf>'
A.US_A.US,'''.UD ! " .IB .XQ .FM .DQ .IQ .OQ .QQ .QD .GU .GD .PD'' <cr><lf>'
A.US_A.US,'''.NR .NN .LG .RV .TR .CR .CS .CB'' <cr><lf>'
A.US_.BX_.BXFX .BXBOX A.US .DM (0=1^0.RO A.US)/.BXERROR
F
A.US_''
'2 QUAD NAMES WERE REMOVED FROM THE HEADER OF FF'
2 QUAD NAMES WERE REMOVED FROM THE HEADER OF FF
A.US_A.US,'FF;.BXIO<cr><lf>'
A.US_A.US,' .LD.USOM ''.OM'' <cr><lf>'
A.US_A.US,'A .LD.USAB ''|'' <cr><lf>'
A.US_A.US,' .LD.USIB ''.IB'' <cr><lf>'
A.US_A.US,'.BXSINK_ .LD.USAV <cr><lf>'
A.US_A.US,'''$'' .BXFMT ''$'' <cr><lf>'
Page 23
A.US_.BX_.BXFX .BXBOX A.US .DM (0=1^0.RO A.US)/.BXERROR
FF
'ASSIGNMENTS TO THE FOLLOWING QUAD NAMES WERE REPLACED WITH QUAD SINK IN FF
AV
'
ASSIGNMENTS TO THE FOLLOWING QUAD NAMES WERE REPLACED WITH QUAD SINK IN FF
AV
'THE FOLLOWING PRIMITIVE FUNCTIONS WERE REPLACED WITH USER FUNCTIONS IN FF
|.OM.IB$
'
THE FOLLOWING PRIMITIVE FUNCTIONS WERE REPLACED WITH USER FUNCTIONS IN FF
|.OM.IB$
'THE FOLLOWING SYSTEM FUNCTIONS WERE REPLACED WITH USER FUNCTIONS IN FF
AV
'
THE FOLLOWING SYSTEM FUNCTIONS WERE REPLACED WITH USER FUNCTIONS IN FF
AV
A.US_''
A.US_A.US,'HOWDUPSOUT <cr><lf>'
A.US_A.US,'''THIS FUNCTION RETURNS A VECTOR FORMED BY TAKING THE RIGHT ARGUMENT'' <cr><lf>'
A.US_A.US,'''AND REMOVING DUPLICATES FROM IT.'' <cr><lf>'
A.US_A.US,'''THE RIGHT ARGUMENT MAY BE A NUMERIC OR CHARACTER SCALAR OR VECTOR.'' <cr><lf>'
A.US_A.US,''' '' <cr><lf>'
A.US_A.US,''' ....................TRY.......'' <cr><lf>'
A.US_A.US,'''.................................RO.BX_DUPSOUT .IO12'' <cr><lf>'
A.US_A.US,'''.................................RO.BX_DUPSOUT 12.RO .IO3 '' <cr><lf>'
A.US_A.US,'''NOTE THAT SCALARS BECOME VECTORS OF LENGHT 1'' <cr><lf>'
A.US_A.US,''' .RO.BX_DUPSOUT 1'' <cr><lf>'
A.US_A.US,'3 1 .RO'' '' <cr><lf>'
A.US_.BX_.BXFX .BXBOX A.US .DM (0=1^0.RO A.US)/.BXERROR
HOWDUPSOUT
" *** LOCKED LOCKED
A.US_.IO0
A.US_A.US,0 1 2 3 4 5 6 7 8 9
A.US_A.US,10 11 12 13 14 15 16 17 18 19
A.US_A.US,20 21 22 23 24 25 26 27 28 29
A.US_A.US,30 31 32 33 34 35 36 37 38 39
A.US_A.US,40 41 42 43 44 45 46 47 48 49
A.US_A.US,50 51 52 53 54 55 56 57 58 59
A.US_A.US,60 61 62 63 64 65 66 67 68 69
A.US_A.US,70 71 72 73 74 75 76 77 78 79
A.US_A.US,80 81 82 83 84 85 86 87 88 89
A.US_A.US,90 91 92 93 94 95 96 97 98 99
X_100.ROA.US
A.US_.IO0
A.US_A.US,0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5
A.US_A.US,9.5 10.5 11.5 12.5 13.5 14.5 15.5 16.5 17.5
A.US_A.US,18.5 19.5 20.5 21.5 22.5 23.5 24.5 25.5 26.5
A.US_A.US,27.5 28.5 29.5 30.5 31.5 32.5 33.5 34.5 35.5
A.US_A.US,36.5 37.5 38.5 39.5 40.5 41.5 42.5 43.5 44.5
Page 24
A.US_A.US,45.5 46.5 47.5 48.5 49.5 50.5 51.5 52.5 53.5
A.US_A.US,54.5 55.5 56.5 57.5 58.5 59.5 60.5 61.5 62.5
A.US_A.US,63.5 64.5 65.5 66.5 67.5 68.5 69.5 70.5 71.5
A.US_A.US,72.5 73.5 74.5 75.5 76.5 77.5 78.5 79.5 80.5
A.US_A.US,81.5 82.5 83.5 84.5 85.5 86.5 87.5 88.5 89.5
A.US_A.US,90.5 91.5 92.5 93.5 94.5 95.5 96.5 97.5 98.5
A.US_A.US,99.5
XX_100.ROA.US
A.US_.IO0
A.US_A.US,1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 <wrap>
0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 <wrap>
1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1
A.US_A.US,1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 <wrap>
0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1
XXX_200.ROA.US
A.US_''
A.US_A.US,'.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS!.RV.TR.IB.QQ.LG.NN.NR".GU.GD.CR.CS <wrap>
.CB.SS.PD.QD.IQ.OQ.DQ$.CO.XQ.FM.SS.SS.SS.SS.SS.SS.DD<.LE.GE>?.OM.EP.RO^.DA.IO.AL.CE.FL()[].LU.RU.UU <wrap>
.US.SS.SS.SS_.GO.BX.NE=.DU.DE&'
A.US_A.US,'.OR~/*#%+-.LO|;,.SO.EN.DL:''[email protected]@.CO.LK.CO.CO.CO.DM{ <wrap>
.RK}.CO.CO.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS <wrap>
.SS.SS.SS.SS.SS.SS'
A.US_A.US,'.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS <wrap>
.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS <wrap>
.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS'
A.US_A.US,'.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.WN.KA.KB.KC.KD.KE.KF.KG.CC.KI.KJ.KK.KL <wrap>
.KM.KN.KO.KP.KQ.KR.KS.KT.KU.KV.KW.KX.KY.KZ.WE.WF.WG.WR.WU.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS <wrap>
.SS0123456789.SS.SS.SS.SS.SS'
A.US_A.US,'.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS.SS <wrap>
.SS.SS.SS.LDABCDEFGHIJKLMNOPQRSTUVWXYZ.SS !.QU.PS$.PC.AP''()*+,-./01'
A.US_A.US,'23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~.WD.SS.SS'
A.US_A.US,'.SS.SS.UD.ZA.ZB.ZC.ZD.ZE.ZF.ZG.ZH.ZI.ZJ.ZK.ZL.ZM.ZN.ZO.ZP.ZQ.ZR.ZS.ZT.ZU.ZV.ZW.ZX.ZY.ZZ <wrap>
.SS.SS.SS.SS.SS'
XXXX_32 16.ROA.US
.BXSINK.BXEX 2 6.RO 'A.US .LD.LDRANK'
)SAVE
27-SEP-1983 13:01:49 62 BLKS
3a. The user runs ASDRIVER in APLT2V:SF2VX4 on DSK:A.AAS.
o A.AAS is created in TTY character set with []PW == 80 via the
following statements:
[1] (.IO10) .OQ[2] chan
[2] (3 4.RO'ABCD') .OQ[2] chan
[3] (4 .RO .FL 2*33) .OQ[2] chan
[4] (5 5.RO 0 1 0 1 0) .OQ[2] chan
Page 25
o ASDRIVER runs under APLSF, producing messages. Note that ASDRIVER
is dyadic.
1 ASDRIVER 'A,AAS'
" BUILDING A,A2V [4,244]/AS 1983 9 14 12 22 31 440
" ALL DONE WITH INPUT FILE: A,AAS /AS
o DSK:A.A2V is a VAX APL )INPUT script that reconstructs A.AAS on
the VAX.
" BUILDING A,A2V [4,244]/AS 1983 9 27 11 2 41 882
WS.USCHAN_.BXASS 'A.AAS/AS'
A.US_''
A.US_A.US,'1 2 3 4 5 6 7 8 9 10'
RECORD_20.ROA.US
RECORD.OQ[3]WS.USCHAN
A.US_''
A.US_A.US,'ABCD'
RECORD_4.ROA.US
RECORD.OQ[3]WS.USCHAN
A.US_''
A.US_A.US,'ABCD'
RECORD_4.ROA.US
RECORD.OQ[3]WS.USCHAN
A.US_''
A.US_A.US,'ABCD'
RECORD_4.ROA.US
RECORD.OQ[3]WS.USCHAN
A.US_''
A.US_A.US,'8589934592 8589934592 8589934592 8589934592'
RECORD_43.ROA.US
RECORD.OQ[3]WS.USCHAN
A.US_''
A.US_A.US,' 0 1 0 1 0'
RECORD_10.ROA.US
RECORD.OQ[3]WS.USCHAN
A.US_''
A.US_A.US,' 1 0 1 0 1'
RECORD_10.ROA.US
RECORD.OQ[3]WS.USCHAN
A.US_''
A.US_A.US,' 0 1 0 1 0'
RECORD_10.ROA.US
RECORD.OQ[3]WS.USCHAN
A.US_''
A.US_A.US,' 1 0 1 0 1'
RECORD_10.ROA.US
RECORD.OQ[3]WS.USCHAN
A.US_''
A.US_A.US,' 0 1 0 1 0'
RECORD_10.ROA.US
RECORD.OQ[3]WS.USCHAN
.BXDAS WS.USCHAN
" ALL DONE WITH INPUT FILE: A,AAS /AS
Page 26
3b. The user runs ISDRIVER in APLT2V:SF2VX4 on WRK:A.AIS.
o A.AIS is constructed via the following statements:
[1] (.IO10) .OQ chan
[2] (3 4.RO'ABCD') .OQ chan
[3] (4 .RO .FL 2*33) .OQ chan
[4] (5 5.RO 0 1 0 1 0) .OQ chan
[5] ((300 .RO 1).RO.NG77).OQ chan
o ISDRIVER runs under APLSF, producing messages. Note that APL002:
must be defined on the VAX for A.I2V to work there.
ISDRIVER 'WRK:A,AIS'
" BUILDING A,I2V [4,244]/AS 1983 9 14 12 22 31 440
" *** 'WRK:' REPLACED BY 'APL002:'
" *** BIG INTEGER IN RECORD
" ALL DONE WITH INPUT FILE: WRK:A,AIS /IS
o DSK:A.I2V is a VAX APL )INPUT script that reconstructs A.AIS on
the VAX. APL002: must be defined on the VAX for A.I2V to work
there.
" BUILDING A,I2V [4,244]/AS 1983 9 27 11 2 44 572
" *** 'WRK:' REPLACED BY 'APL002:'
WS.USCHAN_.BXASS 'APL002:A.AIS/IS'
A.US_.IO0
A.US_A.US,1 2 3 4 5 6 7 8 9 10
RECORD_10.ROA.US
RECORD.OQWS.USCHAN
A.US_''
A.US_A.US,'ABCDABCDABCD'
RECORD_3 4.ROA.US
RECORD.OQWS.USCHAN
A.US_.IO0
" *** BIG INTEGER IN RECORD
A.US_A.US,8589934592 8589934592 8589934592 8589934592
RECORD_4.ROA.US
RECORD.OQWS.USCHAN
A.US_.IO0
A.US_A.US,0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
RECORD_5 5.ROA.US
RECORD.OQWS.USCHAN
A.US_.IO0
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
Page 27
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
A.US_A.US,1 1 1 1 1 1 1 1 1 1
.LD.LDRANK_300.ROA.US
A.US_.IO0
A.US_A.US,.NG77
RECORD_.LD.LDRANK.ROA.US
RECORD.OQWS.USCHAN
.BXDAS WS.USCHAN
" ALL DONE WITH INPUT FILE: WRK:A,AIS /IS
3c. The user runs BSDRIVER in APLT2V:SF2VX4 on A.ABI[4,244].
o A.ABI was constructed via the following statements:
[1] (.IO10) .OQ chan, 1
[2] (3 4.RO'ABCD') .OQ chan, 1
[3] (4 .RO .FL 2*33) .OQ chan, 1
[4] (5 5.RO 0 1 0 1 0) .OQ chan, 1
o BSDRIVER runs under APLSF, producing messages. Note that APL003:
must be defined on the VAX for A.B2V to work there.
BSDRIVER 'A,ABI[4,244]'
" BUILDING A,B2V [4,244]/AS 1983 9 14 12 22 31 440
" *** '[4,244]' REPLACED BY 'APL003:'
" *** BIG INTEGER IN RECORD
" ALL DONE WITH INPUT FILE: A,ABI[4,244] /BS
o DSK:A.B2V is a VAX APL )INPUT script that reconstructs A.ABI as a
/IS file on the VAX (since /BS files do not exist in VAX APL).
APL003: must be defined on the VAX for A.B2V to work there.
" BUILDING A,B2V [4,244]/AS 1983 9 27 11 2 46 285
" *** '[4,244]' REPLACED BY 'APL003:'
Page 28
WS.USCHAN_.BXASS 'APL003:A.ABI/IS'
A.US_.IO0
A.US_A.US,1 2 3 4 5 6 7 8 9 10
RECORD_10.ROA.US
RECORD.OQWS.USCHAN
A.US_''
A.US_A.US,'ABCDABCDABCD'
RECORD_3 4.ROA.US
RECORD.OQWS.USCHAN
A.US_.IO0
" *** BIG INTEGER IN RECORD
A.US_A.US,8589934592 8589934592 8589934592 8589934592
RECORD_4.ROA.US
RECORD.OQWS.USCHAN
A.US_.IO0
A.US_A.US,0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0
RECORD_5 5.ROA.US
RECORD.OQWS.USCHAN
.BXDAS WS.USCHAN
" ALL DONE WITH INPUT FILE: A,ABI[4,244] /BS
3d. The users runs DADRIVER in APLT2V:SF2VX4 on WRK:A.ADA[4,244].
o A.ADA was constructed via the following statements:
[0] )CREATE 100 A.ADA
[1] (.IO10) .OQ[1] chan
[2] (3 4.RO'ABCD') .OQ[2] chan
[3] (4 .RO .FL 2*33) .OQ[3] chan
[4] (5 5.RO 0 1 0 1 0) .OQ[4] chan
o DADRIVER runs under APLSF, producing messages. Note that APL004:
must be defined on the VAX for A.D2V to work there.
DADRIVER 'WRK:A,ADA[4,244]'
" BUILDING A,D2V [4,244]/AS 1983 9 14 12 22 28 949
" *** 'WRK:[4,244]' REPLACED BY 'APL004:'
" *** BIG INTEGER IN RECORD
" ALL DONE WITH INPUT FILE: WRK:A,ADA[4,244] /DA
o DSK:A.D2V is a VAX APL )INPUT script that reconstructs A.ADA on
the VAX. APL004: must be defined on the VAX for A.B2V to work
there.
" BUILDING A,D2V [4,244]/AS 1983 9 27 11 2 48 105
" *** 'WRK:[4,244]' REPLACED BY 'APL004:'
WS.USCHAN_.BXASS 'APL004:A.ADA/DA'
A.US_.IO0
A.US_A.US,1 2 3 4 5 6 7 8 9 10
RECORD_10.ROA.US
RECORD .OQ[1] WS.USCHAN
A.US_''
A.US_A.US,'ABCDABCDABCD'
Page 29
RECORD_3 4.ROA.US
RECORD .OQ[2] WS.USCHAN
A.US_.IO0
" *** BIG INTEGER IN RECORD
A.US_A.US,8589934592 8589934592 8589934592 8589934592
RECORD_4.ROA.US
RECORD .OQ[3] WS.USCHAN
A.US_.IO0
A.US_A.US,0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
RECORD_5 5.ROA.US
RECORD .OQ[4] WS.USCHAN
.BXDAS WS.USCHAN
" ALL DONE WITH INPUT FILE: WRK:A,ADA[4,244] /DA
4. The text files created by each DRIVER are moved from the -20 to the VAX
by some means. Facilities for moving files are not part of this migration
tool. The user could, for example, use DECnet file transfer or ANSI
labeled magnetic tape.
5. Once the text files reside on the VAX, the SUBMIT function in the VAX
APL workspace, SF2VX5.APL, can be used to create a command procedure that
processes each text file as a )INPUT (/KEY) file to VAX APL.
o The following files reside in the default directory:
A.A2V text image of A.AAS on the -20
A.B2V text image of A.ABI on the -20
A.D2V text image of A.ADA on the -20
A.I2V text image of A.AIS on the -20
TEST0.W2V text image of TEST0.APL on the -20
o SUBMIT in SF2VX5.APL runs on the following text files:
)LOAD SF2VX5
SAVED 28-SEP-1983 10:48:06 50 BLKS
SUBMIT
ENTER FILE NAMES TO BE INCLUDED :[*.*;*] X:A.%2V
BUILDING DCL FILE SUB006.COM ***
$! INCLUDING APLD$:[USER]A.A2V;1
THE LOGICAL APL003 NEEDS TO BE DEFINED FOR FILE APLD$:[USER]A.B2V;1
EQUIVALENCE NAME?:[<CR> IF NONE ] <cr>
$! INCLUDING APLD$:[USER]A.B2V;1
THE LOGICAL APL004 NEEDS TO BE DEFINED FOR FILE APLD$:[USER]A.D2V;1
EQUIVALENCE NAME?:[<CR> IF NONE ] USRD$:[USER]
THE LOGICAL APL004 WILL BE DEFINED AS USRD$:[USER]
$! INCLUDING APLD$:[USER]A.D2V;1
THE LOGICAL APL002 NEEDS TO BE DEFINED FOR FILE APLD$:[USER]A.I2V;1
EQUIVALENCE NAME?:[<CR> IF NONE ] <cr>
$! INCLUDING APLD$:[USER]A.I2V;1
Page 30
DCL FILE SUB006.COM COMPLETED ***
SUBMIT
ENTER FILE NAMES TO BE INCLUDED :[*.*;*] TEST0.W2V
BUILDING DCL FILE SUB007.COM ***
THE LOGICAL APL000 NEEDS TO BE DEFINED FOR FILE USRD$:[USER.APL]TEST0.W2V;1
EQUIVALENCE NAME?:[<CR> IF NONE ] USRD$:[USER]
THE LOGICAL APL000 WILL BE DEFINED AS USRD$:[USER]
THE LOGICAL APL001 NEEDS TO BE DEFINED FOR FILE USRD$:[USER.APL]TEST0.W2V;1
EQUIVALENCE NAME?:[<CR> IF NONE ] <cr>
THE LOGICAL APL002 NEEDS TO BE DEFINED FOR FILE USRD$:[USER.APL]TEST0.W2V;1
EQUIVALENCE NAME?:[<CR> IF NONE ] <cr>
THE LOGICAL APL004 NEEDS TO BE DEFINED FOR FILE USRD$:[USER.APL]TEST0.W2V;1
EQUIVALENCE NAME?:[<CR> IF NONE ] <cr>
THE LOGICAL APL006 NEEDS TO BE DEFINED FOR FILE USRD$:[USER.APL]TEST0.W2V;1
EQUIVALENCE NAME?:[<CR> IF NONE ] <cr>
THE LOGICAL APL008 NEEDS TO BE DEFINED FOR FILE USRD$:[USER.APL]TEST0.W2V;1
EQUIVALENCE NAME?:[<CR> IF NONE ] <cr>
$! INCLUDING USRD$:[USER.APL]TEST0.W2V;1
DCL FILE SUB007.COM COMPLETED ***
)OFF
o The command files built by SUBMIT can be run indirectly or in
batch. The text file is processed by VAX APL and the file being
migrated is created. Note that answering "<cr>" to the request to
define a logical name leaves the logical name as previously
defined, either by a previous request in this SUBMIT execution or
by the user externally to SUBMIT.
SUB006.COM built in the previous step looks like the following:
$! BUILDING SUB006.COM/AS 1983 9 28 16 3 54 490
$SET NOON
$! INCLUDING APLD$:[USER]A.A2V;1
$ APL/TERM=TTY/NOSILENT
)OUTPUT SYS$OUTPUT:/TTY
)MAXCORE 1500
)INPUT APLD$:[USER]A.A2V;1/KEY
)OFF HOLD
$!
$! INCLUDING APLD$:[USER]A.B2V;1
$ APL/TERM=TTY/NOSILENT
)OUTPUT SYS$OUTPUT:/TTY
)MAXCORE 1500
)INPUT APLD$:[USER]A.B2V;1/KEY
)OFF HOLD
$!
$! INCLUDING APLD$:[USER]A.D2V;1
$ DEFINE APL004 USRD$:[USER]
$ APL/TERM=TTY/NOSILENT
)OUTPUT SYS$OUTPUT:/TTY
)MAXCORE 1500
)INPUT APLD$:[USER]A.D2V;1/KEY
Page 31
)OFF HOLD
$!
$! INCLUDING APLD$:[USER]A.I2V;1
$ APL/TERM=TTY/NOSILENT
)OUTPUT SYS$OUTPUT:/TTY
)MAXCORE 1500
)INPUT APLD$:[USER]A.I2V;1/KEY
)OFF HOLD
$!
SUB007.COM built in the previous step looks like the following:
$! BUILDING SUB007.COM/AS 1983 9 28 16 4 54 780
$SET NOON
$! INCLUDING APLD$:[USER]TEST0.W2V;1
$ DEFINE APL000 USRD$:[USER]
$ APL/TERM=TTY/NOSILENT
)OUTPUT SYS$OUTPUT:/TTY
)MAXCORE 1500
)INPUT APLD$:[USER]TEST0.W2V;1/KEY
)OFF HOLD
$!
4.0 INCOMPATIBILITES
Incompatibilities exist between APLSF and VAX APL. The action that the
migration tool takes on each of these incompatibilties is listed below.
"SFTOVX takes no action" means that the migration tool does not identify
the incompatibility, nor does SFTOVX replace it to simulate APLSF behavior.
Any transformations done by the migration tool are reported to the user
when the tool runs.
NOTE
These transformations do not take place
within quoted literals.
o Escape mode does not exist in VAX APL.
"@" on input to VAX APL in TTY mode will remain an "@". "@R", for
example, are not translated to .RO.
SFTOVX takes no action.
o Tabs in data and in files will remain as tabs. They are not
converted to spaces in VAX APL.
Page 32
o .Z@ is not recognized by VAX APL as the character underscored
delta.
SFTOVX takes no action on .Z@. Underscored delta is output in APL
characters by the migration tool. In VAX APL, .UD is underscored
delta.
o In APLSF, .RU is a "U" with the feet pointing to the right; .LU
is a "U" with the feet pointing to the left. In VAX APL, .RU is a
"U" with the feet pointing to the left and .LU is a "U" with the
feet pointing to the right (in other words, the directions of the
feet are opposite what they are in APLSF).
SFTOVX will output the "U" with the feet pointing to the right as
"left U" (.LU) and the "U" with the feet pointing to the left as
"right U" (.RU). The APL graphic from APLSF will be the same as
the APL graphic inside VAX APL.
o Dyadic $ is not supported in VAX APL.
SFTOVX converts a $ primitive function to .BXFMT.
o Monadic .EN, .DE and .OM are not supported in VAX APL.
SFTOVX converts the primitive functions .EN, .DE, and .OM to the
user-defined (DEC-provided) functions .LD.USEN, .LD.USDE, and
.LD.USOM which simulate their behavior under APLSF.
o If A is an integer in A/B in APLSF, it is an error. In VAX APL,
it is the function replicate.
SFTOVX takes no action.
o Both monadic and dyadic .DQ are fuzzy in VAX APL but not in APLSF.
SFTOVX replaces the primitive function .DQ with .LD.USDQ, which
sets .BXCT to 0.22204460E.NG15, APLSF's internal value for
singularity testing (established in APLSF v2 in edit 257) before
executing .DQ.
o Dyadic .AB is fuzzy in VAX APL but not in APLSF.
SFTOVX replaces the primitive function .AB with .LD.USAB, which
sets the local .BXCT to 0 if invoked dyadically.
o Floor and Ceiling apply .BXCT differently in VAX APL than in
APLSF.
Page 33
SFTOVX takes no action.
o A negative number raised to a non-integer power by means of dyadic
* is an error in VAX APL; it gives an answer in APLSF.
SFTOVX takes no action.
o Output from .FM format is different in VAX APL.
SFTOVX takes no action.
o VAX APL uses .BXCT of "absolute fuzz" to test for a near-integer.
SFTOVX takes no action.
o Monadic transpose of a scalar is a vector in APLSF; it is a
scalar in VAX APL.
SFTOVX takes no action.
o Monadic and dyadic ! (Beta and Gamma functions) give different,
more accurate answers in VAX APL than in APLSF.
SFTOVX takes no action.
o I-beams do not exist on the VAX.
SFTOVX replaces the primitive function .IB with .LD.USIB, which
simulates most of the documented I-beams and none of the
undocumented ones:
17 symbol table size, entries not simulated
18 condition of the ws always return 0 == ok
19 keying time always return 0 == .BXAI[4]
20 time of day in 60th seconds simulated
21 the CPU time in 60th seconds simulated
22 WS available in words return .BXWA % 4
23 system job number return .BXUL
24 APL sign-on time in 60th seconds
since midnight something like .bxAI[3]
25 current date .BXTS[2 3 1] reformatted
26 current line number returns 1^1.DA.BXLC
27 all line numbers returns 1.DA.BXLC
28 terminal character set 0 == APL; 1 == TTY
29 user's ppn return .BXAI[1]
30 clear the SI stack execute .BXRESET
31 number of statements executed get info from )CHARGE
32 number of operations executed get info from )CHARGE
Page 34
33 TOPS-10 only kilo-core seconds return 0
o .BXASCII is not supported in VAX APL.
SFTOVX replaces .BXASCII with a niladic function .LD.USASCII,
which returns 128 VAX APL .BXAV codes that resemble ASCII.
o .BXAV is different in VAX APL than in APLSF.
SFTOVX replaces .BXAV with a niladic function .LD.USAV, which
returns 512 VAX APL .BXAV codes that resemble .BXAV in APLSF.
o .BXRENAME may behave differently in VAX APL than it does in APLSF.
SFTOVX replaces .BXRENAME with the user-defined function
.LD.USRENAME which attempts to simulate the behavior of .BXRENAME
in APLSF.
o .BXENQ, DEQ, MTP, APPEND and FCM are not in VAX APL.
SFTOVX replaces these system names with user-defined functions,
for example, .LD.USENQ, which executes .BXBREAK '.BXENQ not
supported in VAX APL'.
o In APLSF, certain system variables and all system functions can be
localized in function headers or assigned to. In VAX APL these
system variables are niladic system functions so they cannot be
localized or assigned to.
The system names involved are the following:
AV ALPHA ALPHAU NUM CTRL LC
AI TS TT UL WA
SFTOVX removes these and all system function names from function
header local lists. It replaces assignment to them with
assignment to '.BXSINK_'. Therefore the only quad names allowed
in locals lists are the following:
AUS IO RL CT TIMELIMIT
SF ERROR PP GAG TIMEOUT
PW TRAP LX
o Several system commands in APLSF are not in VAX APL.
The system commands involved are the following:
MODE TABS LIB and DROP switches BLOT
C CALL CREATE ECHO
R RUN SEAL TIME
Page 35
For any of these to be used, they would have to be executed,
either with .XQ or .EP. Note that .EP returns 0 21 .ro 0 and .XQ
dies.
SFTOVX takes no action.
o In APLSF, the shape of the result of .EP')cmd' is a matrix of
.BXPW columns (if the result contains more than 1 row). In VAX
APL, the result is a vector with the rows delimited by CR-LF.
SFTOVX takes no action. Note that .BXBOX in VAX APL converts a
vector of lines delimited by CR-LF into a matrix.
o Passwords on workspaces and /DA files are spelled "-password" in
APLSF. The syntax is "/PASSWORD=password" in VAX APL.
Passwords may appear in )LOAD, )SAVE, )COPY, )PCOPY, .BXASS,
)CREATE, .BXQLD, .BXQCO, .BXQPC.
SFTOVX replaces .BXQLD, .BXQPC, .BXQCO, and .BXASS with, for
example, .LD.USQLD which checks for a "-password" at run-time and
change it to "/PASSWORD=password". SFTOVX takes no action on the
system commands.
o .BXTT returns different answers in VAX APL than in APLSF.
SFTOVX replaces the .BXTT system variable with the niladic
user-defined function .LD.USTT. This produces the following
results:
if VAX APL .BXTT is then .LD.USTT returns
2 == TTY 0 == TTY
3 == GIGI 3 == KEY
4 == LA 2 == LA or Tektronix
5 == KEY 3 == KEY
6 == BIT 4 == BIT
8 == VT102-PA/RA 3 == KEY
11 == Tektronix 4013 2 == LA or Tektronix
12 == Tektronix 4015 2 == LA or Tektronix
Note that VAX APL does not support TTYCOM, ONTEL or 2741 APL
terminals, which APLSF does.
o .FM and $ both output "-" for negative numbers in TTY mode in
APLSF. VAX APL outputs "-" only if .BXNG is 0.
SFTOVX does not set .BXNG in the VAX APL workspace since it also
affects .BXFI and .BXVI.
Page 36
o T.LDf and S.LDf set the trace and stop vectors in VAX APL. These
names are valid identifiers in VAX APL.
SFTOVX leaves these as identifiers; the trap and stop settings
for user-defined functions are not transferred.
o /BS, /BS* and /BU binary files are not supported in VAX APL.
.BXASS is replaced by .LD.USASS, which executes .BXBREAK if the
.BXASS fails. .BXASS reports a "not supported" error message for
the following facilities: passwords, [ppn], /BS, /DUMP.
o .BXCLS, DAS, CHS, DVC and FLS on .IO0 return information on all 12
channels.
SFTOVX replaces each of these system names with user-defined
functions. For example, .LD.USCLS checks to see if its argument
is an empty vector: if it is, it executes .BXCLS .BXCHANS and
returns .IO0 (these functions are not quiet in APLSF). They also
change channel numbers of the form 100+n to -n.
o .BXCIQ and COQ take different arguments and produce different
results in VAX APL than in APLSF.
.BXCIQ and COQ deal with internal representations, which are
different in the VAX than in APLSF. Therefore SFTOVX replaces
these system names with user-defined functions. For example,
.LD.USCIQ executes .BXBREAK 'CIQ IN VAX APL INCOMPATIBLE WITH
APLSF'.
o A trailing "lamp" on output to the terminal suppresses the next
CR-LF in APLSF. It is output simply as a trailing "lamp" in VAX
APL.
SFTOVX takes no action.
o STOPSET can be trapped in VAX APL. It cannot in APLSF.
SFTOVX takes no action.
o APLSF does very little shape-checking on indexed assignment.
SFTOVX takes no action.
o The character representation of a number can overflow on the VAX.
Numbers are transferred as character strings with .BXPP set to 18.
Rounding may cause the string to be a number outside the range of
Page 37
allowable numbers in VAX APL. A LIMIT ERROR is reported by VAX
APL.
SFTOVX takes no action.
o Some functions are quiet in VAX APL, but not in APLSF.
The only function that is quiet that is not being transformed is
.OQ. This function cannot be replaced with a user-defined
function because it takes an axis argument, which user-defined
functions can't do.
SFTOVX takes no action.
o .BXGAG values in APLSF are reversed in VAX APL.
SFTOVX takes no action.
o Valid value sets for certain system variables are different in VAX
APL than they are in APLSF.
- .BXCT in an APLSF workspace is migrated to VAX APL as
2.328E.NG10 even if it is larger than this value.
- .BXPP in an APLSF workspace is migrated to VAX APL as 16 even
if it is larger than this value.
- .BXRL in an APLSF workspace is migrated to VAX APL as .NG1+2*31
(2147483647).
- .BXTIMELIMIT in an APLSF workspace is converted from
milliseconds to seconds and is migrated to VAX APL as 255
seconds even if .BXTIMELIMIT is bigger than that value.
- The internal null character (APLSF .BXAV [103]) is removed from
.BXLX in an APLSF workspace before it is migrated to VAX APL.
- .BXPW in an APLSF workspace is migrated to VAX APL as 35 even
if .BXPW is smaller than that value.
o The integer range in APLSF is from -2*35 to .NG1+2*35. In
VAXAPL, the integer range is from -2*31 to .NG1+2*31. Any
integer outside of the VAXAPL range will be stored as a
floating point number under VAXAPL. The warning "BIG INTEGER
IN name" is issued. When using base and represent to pack
small values into integers, the packing may not work under
VAXAPL.
Page 38
5.0 ERROR MESSAGES
Error messages put out by the various pieces of SFTOVX:
o MIGRATE in SF2VX0
'MIG000,CTL THRU 999 IN USE'
MIGRATE cannot find a file spec of the form MIGnnn.CTL (where
"nnn" is a 3 digit number) to use as the batch control file it
wants to build. Execution will be suspended at this point - the
user can take remedial action by getting rid of files named
MIGnnn.CTL on DSK: and then typing _.GO .BXLC + 1 to restart
MIGRATE.
The functions MIGRATE and PERFORM in SF2VX0 do not set .BXTRAP,
which implies that software failures will display a message (only
the 1st line since )ECHO is OFF) and suspend execution at the line
in error. The user can then determine how to correct the failure.
o DRIVER in SF2VX1
'SI NOT EMPTY'
This is an informational message only. The SI stack in the
workspace being migrated contains suspended and/or pendent
functions. The workspace will be transferred but local copies of
functions and variables will be dumped out to the input script.
DRIVER does not set .BXTRAP, which implies that software failures
will display a message (only the 1st line since )ECHO is OFF) and
suspend execution at the line in error. The user can then
determine how to correct the failure.
o The file drivers, ASDRIVER, BSDRIVER, ISDRIVER and DADRIVER in
SF2VX4
'ERROR ASSIGNING INPUT FILE: name'
all four drivers display this error if the file is not found
'ERROR n READING FROM FILE name COMPONENT i'
'ERROR n READING FROM FILE name RECORD i'
DADRIVER says COMPONENT; all others say RECORD, where "n" is an
APLSF error number (see Appendix A in the VAX APL REFERENCE
Page 39
MANUAL), "name" is the file the driver is trying to read, and "i"
is the record or component number currently being read.
This message is then followed by the 1st line of .BXERROR, which
will be the text for error "n".
'ERROR 69 READING FROM FILE name,ADA COMPONENT 0
FILE FORMAT NOT DIRECT ACCESS'
'ERROR 70 READING FROM FILE name,ais RECORD 1
FILE FORMAT NOT INTERNAL SEQUENTIAL'
Processing of the file stops when an error occurs and the output
file (that is the VAX input script) being built is closed.
o All drivers check numeric data for integer values that are outside
the integer range in VAX APL. The warning "BIG INTEGER IN name"
means that such an integer was found in the variable name.
o While MIGRATE is interacting with the user, recoverable errors
(such as FILE NOT FOUND) are reported and the user is prompted for
alternate input. If the error is not recoverable, the function
suspends so the user can diagnose the failure.
o For functions that will most likely be executed in batch (for
example,the drivers), errors are reported and APLSF then suspends
execution. While running the control file built by MIGRATE from
batch, the next command will be )OFF HOLD which returns the user
to the "@" prompt. The user must examine the .LOG file from the
batch job to see if the process was successful. If the function
is run interactively, suspending the function gives the user the
chance to diagnose the problem. Note that if a user-defined
filter function is unsuccessful, the user can debug it if it is
being run interactively.