The use of ConPLAN requires a sequence of steps to turn an ICL PLAN source into an executable BS2000 program. The most convenient way to convert and test a PLAN module is by the use of  the BS2000 procedure P.PLAN which performs editing, conversion, assemby, linkage and loading of the converted ICL program.
The conversion system consists of a number of components, such as procedures, macros, executable modules etc, that work in concert but may also be used independently of each other. This chapter describes the most common way to operate the various parts of ConPLAN. 

4.1 Data Converter SPIN (SPool-IN)

If the ICL program sources are not yet available in machine-readable format on a BS2000 computer, the first step of the conversion procdure will usually be to transfer the required program sources from the ICL system to a BS2000 user-id. The most convenient way of performing this step is to copy the PLAN sources onto a standard ICL magnetic tape and, using the data converter SPIN, import this tape into BS2000 (note: SPIN was written in ICL PLAN and itself converted by ConPLAN to BS2000 assembler).

SPIN generates a BS2000 EDT-compatible SAM-file in EBCDIC with the attributes


If the block size of the input file is larger than 512 ICL words, an output file with BLKSIZE=(STD,2) will be generated. To execute SPIN requires the procedure P.SPIN and the module C.SPIN to be available as catalogued files. The command is:

/DO P. SPIN [,[outfile], BLKSIZE=bln]  where:


the name of the SAM output file. The file name can consist of  up to 47 characters.


indicates the number of PAM pages per input block (bln defaults to 1). One PAM page must be provided for every 512 ICL words, i.e. if the ICL block size is 600 words, a bln of 2 must be specified.

Upon execution, C.SPIN requests the tape label of the ICL tape. The correct label needs to be entered at this point, as the ConPLAN data management system CDMS will not allow the label to be ignored. If the label is not known, a dummy one can be specified; after attempting to open the tape file, the CDMS issues a warning, displaying both true and dummy labels. The procedure run should then be aborted via the operator console by acknowledging the BS2000 "mount correct tape"- message with tsn.N and restarted, this time specifying the correct label. 

The sources on tape are copied into a single SAM file. In order for ConPLAN to process the sources further they need to be broken up into individual SAM-files, one source segment per file. The names of these files must conform to the P.PLAN naming standard, which requires them to be named SRC.PLAN.prog, where prog is the program name specified in the PLAN #PROGRAM directive. 
On completion of P.SPIN (or the program C.SPIN), the tape will be rewound and unloaded. 


The program SPIN may also be used to import other ICL data files from magnetic tape into BS2000

4.2 Conversion Procedure P.PLAN

The procedure P.PLAN comprises all steps necessary to edit, convert, compile, link and test a PLAN program. It assumes that a PLAN source has already been catalogued as a BS2000 SAM file (see 4.1 Data Converter SPIN (Spool-in)).
To call it, enter:

/DO P.PLAN, prog  [,F=func]  [,IDA=ida]  [,PRINT=gcode]     where:

prog The name of the PLAN segment. The segment is to be catalogued as SRC.PLAN.prog
func A function code which controls the entry into P.PLAN. The following entry points are defined:
  ED Load the PLAN segment SRC.PLAN.prog into EDT. The source can then be edited. To leave EDT, store the edited program, then enter EDT-command HALT (default).
  CO Convert the PLAN source SRC.PLAN.prog by executing C.ConPLAN. The result of the conversion is the SAM file SRC.ASS.prog
  AS Assemble the converted source SRC.ASS.prog and write the created module "prog" into the LMS library LIB.LMS.APPL
  LI Link the module "prog" and write the linked module into the file C.prog
  LO Load the relocatable module C.prog with IDA=Y
  EX Execute the relocatable module C.prog with IDA=N
ida YES Create symbolic dictionary at assembly time (default).
  NO No symbolic dictionary
gcode NOGEN  Machine instructions generated by $PLAN will not be listed (default)
  GEN All machine instructions generated by $PLAN will be listed

4.3 Compiler C.ConPLAN

The module C.ConPLAN should only be executed through the conversion procedure P.PLAN as certain parameter settings require complementary settings when executing ASSEMBF. These settings effect the depth of macro-expansion printed on the resulting assembler listing (for details see 4.2 - Conversion Procedure P.PLAN).

ConPLAN the file name
SRC.PLAN.prog     where prog is the PLAN program name, specified in the #PROGRAM directive.

If required, other file names can be assigned by use of the LINK-names


for the input file 
for the output file

4.3.1 Preparation of PLAN Sources

In general it will not be necessary to change PLAN sources manually, provided they are syntactically correct. It is necessary for program sources to be written in strict adherence with the rules described in the official ICL PLAN manual. Attention should be paid to the following points:

Address labelsA label is only recognized if it begins in col. 1 of the input record. In PLAN, if a referenced symbol is undefined, the compiler will allocate a location in LOWER memory. ConPLAN does not check the availability of the required symbols. However, the "UNDEFINED"-flags issued by ASSEMBF at compilation time allow the user to manually insert the missing data items in the original source and repeat the conversion
InstructionsAn instruction is only recognized if it begins in col. 7
AccumulatorsAccumulator numbers are to begin in col. 13
OperandsOperands are only recognized if they begin in col. 16. No spaces are allowed between operands unless the preceding operand is a character string.
LiteralsThe form '/addr.ptr', indicating a count of 0, would be tolerated by PLAN compilers but not by ConPLAN. It must be correctly written '8/addr.ptr' in order to be recognized.

4.3.2 Control Statements

After execution, ConPLAN reads control statements from the source SYSDTA, until either encountering EOF or reading the statement "END". Control statements must begin in column 1 of the input record.


NOGEN and GEN control the assembler listing of macros whose names begin with the character $. NOGEN suppresses the listing of the expansion of such macros but instructs ASSEMBF to enter the their memory address into the field "LOCTN" of the assembler listing. This feature creates a more compact print output while at the same time providing the memory addresses needed for testing with the BS2000 interactive debugging aids.
GEN forces the expansion of all macros beginning with the character $ (i.e. affecting mainly the emulator-macro $PLAN). The assembler listing generated will be several times longer than with NOGEN. Note that the extended listing will only be needed when debugging the emulator itself.


END terminates the input of control statements.