|
|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 161408 (0x27680)
Types: TextFile
Names: »D18«
└─⟦3d57f1d87⟧ Bits:30005867/disk03.imd Dokumenter (RCSL m.m.)
└─⟦this⟧ »D18«
Introduction to
RC COMAL
First Edition
A/S REGNECENTRALEN March 1978
Information Department RCSL 42-i 0784\f
Author: Thorkild Maaetoft and Børge Christensen
Text Editor: Inga Marcussen
KEY WORDS: RC 7000, RC 3600, RC COMAL, BASIC, Introduction,
Brief language summary.
ABSTRACT: This introduction defines the extensions, regarding
the BASIC generally used, which are implemented in RC
COMAL. The special use of the floppy disc and card
reader are also described. The final chapters contain a
summary of RC COMAL.
REMARKS: Issued by A/S Regnecentralen in co-operation with the
Computer Divison of the Tønder Statsseminarium.
Users osv.
Copyright A/S Regnecentralen, 1978
Printed by A/S Regnecentralen, Copenhagen\f
CONTENTS
1 WHAT IS RC COMAL Page5
2 NAMES OF VARIABLES, ASSIGNMENT OF VARIABLES7
2.1 Names of variables7
2.2 Assignment of variables 7
3 ADVANCED CONTROL STRUCTURES8
3.1 If p THEN .. ELSE .. ENDIF8
3.2 If p THEN .. ENDIF9
3.3 REPEAT .. UNTIL p10
3.4 WHILE p DO .. ENDWHILE11
3.5 CASE expr OF .. WHEN .. ENDCASE12
3.6 Procedures14
4 OPERATORS16
4.1 Boolean expressions16
5 TERMINAL COMMANDS18
6 SYSTEMS WITH A CARD READER19
7 SYSTEMS WITH FLOPPY DISCS21
8 SUMMARY OF RC COMAL23
8.1 RC COMAL statement types24
8.2 RC COMAL standard functions28
8.2.1 Functions for processing text strings 30
8.3 Matrix operations in RC COMAL30
8.4 Commands to logical discs32
8.5 Statements for file processing33
8.6 System commands in RC COMAL35
8.7 Commands in connection with batch runs37
\f
1 WHAT IS RC COMAL?
Since 1970 Regnecentralen has marketed the RC 7000 Minicomputer
System, primarily for teaching institutions.
T_o_d_a_y_, in 1978, there are RC 7000"s installed in over 100 schools,
colleges, universities and other educational institutions, which
makes it the most used mini-computer system for educational
purposes.
Originally the RC 7000 was based on the hardware and software of
the American firm Data General. The most frequently used pro-
gramming language was BASIC, due to the many benefits contained
in this language, especially for elementary teaching.
The RC 7000 is an all-Danish computer as both hardware and soft-
ware are developed and produced in Denmark by Regnecentralen. As
early as 1974, users ofthe RC 7000 expressed their wish for an
extension of Data General"s extended BASIC. It was found that
BASIC had some general shortcomings which made it less suitable,
for example, for procedure orientated structures.
The programming language COMAL was defined by Lecturer Benedict
Løfstedt, Århus University, and Lecturer Børge Christensen,
Tønder Statsseminarium (Teacher Training College). The language
contains extended BASIC, as the aim was that COMAL should be a
further development of BASIC.
A first version of COMAL was developed on an RC 7000 by Per
Christiansen and Knud Christensen at the computer division of the
Tønder Statsseminarium in 1975. More than three years experience
with COMAL EDP teaching at commercial schools, teacher training
colleges and in ordinary schools has shown that COMAL is e_a_s_i_e_r_
t_o_ _l_e_a_r_n_ than BASIC, one of the reasons being that it results in
programs which have a c_l_e_a_r_e_r_ _s_t_r_u_c_t_u_r_e_ and are therefore e_a_s_i_e_r_
t_o_ _r_e_a_d_ than the corresponding BASIC programs. By reading through
this introduction to RC COMAL, the reader will understand why
this is so.
RC COMAL is the final version of the COMAL language, and has been
developed by A/S Regnecentralen in continuous co-operation with
teachers from teacher training colleges, high schools and other
schools. RC COMAL contains significant improvements in relation
to the originally defined COMAL, and these improvements all aim\f
at making the language into an easy and flexible tool for
teaching in all places of education.
Incidentally, COMAL is an abbreviation of: C_O_M_mon A_lgorithmic
L_anguage.In the definition of the language, emphasis has been
put on the basic a_l_g_o_r_i_t_h_m_ _s_t_r_u_c_t_u_r_e_s_ being easy to describe and
easy to recognise.
This introduction is not meant as a textbook of RC COMAL. The
introduction has been written for readers who know the most
important language elements in BASIC, and contains therefore no
definitions or explanations of the most simple RC COMAL/BASIC
sentences.
This book contains first a description of extensions and new
language elements in RC COMAL in relation to BASIC. The last
chapter is a total survey, in diagrammatic form, of RC COMAL.
Additional literature about RC COMAL:
"RC COMAL Programming Guide", published by A/S Regnecentralen.
Børge Christensen: "RUN COMAL", published by Studentlitteratur.
Børge Christensen: Problems for "RUN COMAL", by the samepublisher.\f
2 Names of variables, assignment of variables
2.1 Names of variables
In RC COMAL, variables of all types are named according to the
prescription:
t t ....... t , i <8,
where t is a letter, while t , ....... t are letters or digits.
E_x_a_m_p_l_e_s_
LET INTEREST = CAPITAL * INTEREST RATE * NUMDAYS/360/100
LET NAME< = "OLE OLSEN"
LET TABLE (NUMBER, YEAR) = 126
2.2 Assignment of variables
In RC COMAL, LET sentences may contain more than one assignment:
LET var = expr ; var = expr ; .....; var = expr ,
where var , var , ....., var are names of variables, while expr
expr , ....., expr are constants, variables or formulae. A LET
sentence may contain as many assignments as the length of the
line permits.
E_x_a_m_p_l_e_s_
LET INTEREST RATE = 12; CAPITAL = 15000; NAME< = "OLE OLSEN"
This sentence has the same effect as three consecutive LET
sentences, each with its own assignment.
\f
3 Advanced control structures
In addition to the control structures in BASIC, the following are
found in RC COMAL:
(1) IF p THEN .. ELSE .. ENDIF
(2) IF p THEN .. ENDIF
(3) REPEAT .. UNTIL p
(4) WHILE p DO .. ENDWHILE
(5) CASE expr OF .. WHEN .. ENDCASE
3.1 IF p THEN .. ELSE .. ENDIF
The structure is built up as follows:
IF p THEN
A
t f
ELSEp
AB
B
ENDIF
p is a Boolean expression (an open statement); if p has the value
"true", then the program portion A described between IF p THEN
and ELSE is carried out, and if p has the value "false", the pro-
gram portion B described between ELSE and ENDIF is carried out.
When either A or B has been carried out, the program continues
with the next sentence after ENDIF.
The portion of the program text positioned between the control
sentences is inserted when a program list has been printed out
(see FOR .. NEXT in BASIC).
\f
E_x_a_m_p_l_e_s_
IF PRICE <100 THEN
PRINT "YOU MUST PAY (INCL. CHARGE): "; PRICE + 15;"KR."
ELSE
PRINT "YOU MUST PAY: "; PRICE; "KR."
ENDIF
INPUT "CHARACTER: ", CHARAC
LET SUM = SUM + CHARAC; NUMCAR = NUMCAR + 1
IF CHARAC < MIN THEN
LET NEXTMIN = MIN; MIN = CHARAC
ELSE
IF CHARAC <NEXTMIN THEN LET NEXTMIN = CHARAC
ENDIF
3.2 IF p THEN .. ENDIF
The structure is built up as follows:
IF p THEN t
p
A
fA
ENDIF
p is a Boolean expression; if p has the value "true", then the
program section A described between IF p THEN and ENDIF is
carried out, and if p has the value "false", then A is skipped.
In either case, the program continues with the next sentence
after ENDIF. The text between IF 9 THEN and ENDIF is inserted
when program lists are printed out.
In an RC COMAL program, up to seven IF p THEN .. (ELSE) .. ENDIF
branches inside one another are allowed.
\f
E_x_a_m_p_l_e_s_
READ TAL1, TAL2
IF TAL1 > TAL2 THEN
LET BUFFER = TAL1; TAL1 = TAL2 = BUFFER
ENDIF
PRINT TAL1, TAL2
_______
IF RND (0) < 3/10 THEN
LET H1 = H1 + 1
ELSE
IF RND (0) < 3/9 THEN
LET H2 = H2 + 1
ELSE
IF RND (0) < 3/8 THEN
LET H3 = H3 + 1
ELSE
IF RND (0) < 3/7 THEN
LET H4 = H4 + 1
ELSE
LET H5 = H5 + 1
ENDIF
ENDIF
ENDIF
ENDIF
3.3 REPEAT .. UNTIL p
The structure is built up as follows:
REPEAT
A
Af
p
UNTIL Pt
p is a Boolean expression; the program section A described between
REPEAT and UNTIL p is repeated until p has the value "true". Whenp
obtains this value, the program continues with the next sentence
after UNTIL p.
It should be noted that the program section A is carried out atleast
once if the interpreter reaches the REPEAT sentence, because the
control of the loop starts from the UNTIL sentence. The textbetween
REPEAT and UNTIL p is inserted when a program list is printedout.\f
3.4 WHILE p DO .. ENDWHILE
The structure is built up as follows:
WHILE p DO
t
A oA
f
ENDWHILE
p is a Boolean expression; the program section A described
between WHILE p DO and ENDWHILE is repeated as long as p has the
value "true". When p has the value "false" the program continues
with the next sentence after ENDWHILE.
It should be noted that if p has the value "false" when the
program reaches the WHILE sentence, the section A will not be
carried out at all, and the interpreter will just go straight on
to the next sentence after ENDWHILE. The text between WHILE p DO
and ENDWHILE will be inserted when a program list is printed.
In RC COMAL it is possible to have up to seven REPEAT .. UNTIL
loops and up to seven WHILE .. ENDWHILE loops inside and
i_n_d_e_p_e_n_d_e_n_t_ of one another. For example, there may be a total of
fourteen loops of the two types inside one another independent of
sequence, as long as seven of them are REPEAT loops and the rest
are WHILE loops.
The FOR .. NEXT loop inherited from BASIC has no influence on the
number of REPEAT and WHILE loops that there may be inside one
another (in RC COMAL there may be up to seven FOR .. NEXT loops
inside one another). The number of IF .. (ELSE) .. ENDIF branches
is also independent of any possibly inserted loops. In other
words, it is actually possible to have a total of 21 loops + 7
branches built into one another in an RC COMAL program. However,
the author does not remember having seen this in practical
application.
E_x_a_m_p_l_e_s_
INPUT "THE TWO NUMBERS:", A, B
LET X = A; Y = B
REPEAT (* EUCLID*)
LET REST = X TOWARD Y
LET X = Y; Y = REST
UNTIL REST = 0
PRINT "SFD FOR"; A; "AND"; B; "IS"; X
_______ \f
INPUT "NAME" (SURNAME CHRISTIAN NAME): ", NAME<
WHILE NAME< <> "END" DO
INPUT "ADDRESS:", ADR<
INPUT "TOWN (POSTNUMBER NAME OF TOWN): ", TOWN<
INPUT "NEXT NAME:", NAME<
ENDWHILE
N_o_t_e_
The use of GOTO sentences in connection with the control struc-
tures (1) - (4) may be problematic. Generally GOTOs should not be
used in the program sections A and B and certainly not if these
GOTO sentences refer to sentences which are outside the sentences
that start or finish the said program section. On the whole, the
use of GOTO should be restricted to unusual situations (for
example in the case of fault in input, etc.).
3.5 CASE expr OF .. WHEN .. ENDCASE
The structure is built up as follows:
CASE expr OF
A
WHEN <list>DD1UU
ADD1UU case .. of
WHEN <list>DD2UU
A A1 A2 . . . An
ADD2UU
.
.
.
WHEN <list>DDnUU
ADDnUU
ENDCASE
expr is an arithmetical expression (a constant, a variable or a
formula), one of the Boolean constants TRUE or FALSE, or a
variable string, and <list> is a list of arithmetical expressions,
a list of Boolean expressions, or a list of character sequences.\f
When the value of e_x_p_r_ has been calculated, the interpreter searches
in the lists after the various WHEN for a value which is equal to
that of e_x_p_r_. If such a value is found in <list> , the following
program section A will be carried out and then the program will
continue with the sentence after ENDCASE. If the relevant value
is not found, the alternative section A, which is placed immediate-
ly after the CASE sentence will be carried out, and then the pro-
gram will continue with the next sentence after ENDCASE.
The number of WHEN sentences following a produced CASE sentence
is unlimited, and you may have as many CASE .. ENDCASE inside one
another as you like.
The texts for A, A , A , ... A are inserted in relation to the
CASE, WHEN and ENDCASE sentences when a program list is printedout.
E_x_a_m_p_l_e_s_
INPUT "1 = IN, 2 = LIST, 3 = SEARCH, 4 = DELETE, 5 = STOP:",
JOBCODE
CASE JOBCODE OF
PRINT "THE CODE DOES NOT EXIST."
WHEN 1
REM (*NEW CODES INPUT*)
EXEC ENCODER
WHEN 2
REM (*PRINTOUT OF CODE LIST*)
EXEC PRINTOUT
WHEN 3
REM (*SEARCH A GIVEN CODE*)
EXEC SEARCH
WHEN 4
REM (*DELETE A GIVEN CODE*)
EXEC DELETE CODE
WHEN 5
REM (*END OF DAY*)
STOP
ENDCASE
_______
\f
INPUT SVAR<
CASE SVAR< OF
PRINT "READ INSTRUCTIONS PROPERLY"
WHEN "YES"
EXEC PANE1
WHEN "NO"
EXEC PANE2
WHEN "NONE", "NOTHING", "NOT ANY"
EXEC PANE3
ENDCASE
_______
INPUT "THE COEFFICIENTS A, B AND C", A,B,C
IF A <> 0 THEN
LET DETM = B* B-4* A*C
CASE TRUE OF
WHEN DETM > 0
LET X1 = (-B+SQR (DETM))/2/A; X2 = (-B-SQR (DETM))/2/A
PRINT"X1 ="; X1, "X2 ="; X2
WHEN DETM = 0
LET X =-B/2/A
PRINT "DOUBLEROOT: X ="; X
WHEN DETM <0
PRINT "NO REAL ROOTS".
ENDCASE
ELSE
PRINT "I THOUGHT WE WERE TO SOLVE QUADRATIC EQUATIONS?"
ENDIF
3.6 Procedures
It is a great advantage to use procedures to make the programs
clear and logical in their construction. This is why RC COMAL
also has an extension in this area.
If a program starts with the sentence
PROC <name>
where <name> is a character sequence with the same format as the
name of a variable (see section 2), and ends with the sentence
ENDPROC
this program may be called as a sub-program of another program by
using the sentence
EXEC <name>\f
When the sub-program has been run, the interpreter continues with
the sentence following immediately after the EXEC sentence from
which the call to the sub-program was made.
We may illustrate this in the following way:
...
EXEC <name>
...
END (*MAIN PROGRAM ENDED*)
...
PROC <name>
sub-progr.
ENDPROC
From a sub-program a new sub-program may be called, and so on to
a total of seven. This phenomenon provides the following picture:
PROC <name > PROC <name > PROC <name >
... ... ...
EXEC <name > EXEC <name > EXEC <name >
... ... ...
ENDPROC ENDPROC ENDPROC
\f
4 Operators
In addition to the usual arithmetical and logical operators, RC
COMAL contains the following facilities:
DIV : Whole number division, e.g. 11 DIV 4 (=2)
MOD : Modulus, e.g. 11 MOD 4 (=3)
AND : Logic "AND", e.g. (A > 10) AND (A < 20)
OR : Logic "OR", e.g. (A <20) OR (A > 30)
NOT : Logic negation, e.g. NOT (A <10)
While the two first, DIV and MOD are a convenient and logical
extension of the arithmetical operators, the last three (AND, OR
and NOT) provide a number of special applications in connection
with Boolean expressions, which will be explained in more detail.
4.1 Boolean expressions
In RC COMAL, Boolean expressions may be formed in the usual
Boolean algebra by using the operators AND, OR and NOT.
E_x_a_m_p_l_e_s_
IF MAXNR = 0 OR LAST = 10 THEN
UNTIL NAME< = "NONE" OR END = TRUE
WHILE SQR (OBS) <> 25 AND OBS <> 0 DO
UNTIL NODE = TRUE AND H(NODE) = 0 OR H(NODE) = LAST
In RC COMAL numerical variables may be used as (pseudo) Boolean
variables, because a numerical variable in the right context will
be understood as a Boolean variable with the value "false" if the
numerical variable in question has the numerical value 0 and the
value "true" in all other cases. In other words, "true" corresponds
to "different from 0", while "false" corresponds to "equal to 0".
To make it easier to remember this equivalent, we have introduced
in RC COMAL the constants TRUE and FALSE, which have the numerical
values 1 and 0 respectively.
\f
E_x_a_m_p_l_e_s_
When the sentence
LET WORKOUT = TRUE
has been carried out, WORKOUT has the value 1 and is therefore in
this sentence
IF WORKOUT THEN PRINT "THE DIVISION WORKS OUT"
interpreted as a Boolean variable of the value "true".
Due to the stated equivalence between numerical values and true-
ness values, Boolean expressions may be used in arithmetical
expressions. A Boolean expression with the value "true" is in
this connection interpreted as an arithmetical expression of the
value 1, while a Boolean expression which has the value "false"
is assigned the numerical value 0.
E_x_a_m_p_l_e_s_
In the sentence
DEF FNF (X) = (X<0)* (X+1) + (X=0) * X+(X>0) * (2*X+3)
the function FNF is given after a "division of the definition
volume".
If CLOSED and DOGLOOSE are variables of the values 1 (TRUE) and 0
(FALSE) respectively, the execution of the sentence
LET IND = CLOSED AND NOT DOGLOOSE
will result in the variable IND being assigned the value 1
(TRUE).
\f
5 Terminal commands
A number of new terminal commands in addition to the usual (RUN,
LIST etc.,) have been added in RC COMAL.
The following should be mentioned:
AUTO : Used when keying in programs.The command
starts the automatic generation of line
number: 10, 20, 30, .... etc.
RUNL : Starts the run of a program the same way as
RUN, but all printouts will be on the line
printer.
CON : Starts a program from the point where it was
last stopped. The program may be stopped by
means of a STOP statement, pressing ESC key,
etc..
CONL : As CON, but continues printout on the line
printer.
BATCH: Starts input of programs from the card\f
6 Systems with a card reader
An RC 7000 system with a card reader provides facilities for
BATCH runs, i.e., automatic run of, for example, the programs of
a whole class.
The cards are packed in a JOB (JOB = program + control cards) and
the various JOBs are packed together in a BATCH (BATCH = stack).
Each JOB is provided, for example, with the following control
cards:
1. SCRATCH <text>, where <text> is printed out before output
from the program.
2. LIST, prints out the program.
3. RUN, starts the execution of the program.
4. EOJ, (E_nd-O_f-J_ob) completes the individual job.
When the individual JOBs are stacked together in a BATCH, the
BATCH is placed in the card reader.
There are two terminal commands which may start running the
cards:
BATCH : All printouts will appear at the terminal
from which the command has been given.
BATCH "<LPT": All printouts appear on the line printer.
The card run is now fully automatic. If the programs contain
faults and cannot be run within a pre-determined time limit,
e.g., 60 seconds, the next job will be input automatically. It
should be noted that all other terminals and peripheral equipment
are not affected by the BATCH run, but continue undisturbed.
Two types of line marking cards may be used in RC COMAL, the
BATCH-BASIC card (HP-standard) and a newly designed RC COMAL
card. The new card contains all the types of RC COMAL statements.
Both these cards are shown on the next page.\f
Page 20 (2 cards)\f
7 Systems with floppy discs
RC COMAL contains software for handling FLOPPY DISCS.
The floppy disc has three primary fields of application:
1. System storage (e.g. RC COMAL)
2. Program storage
3. Data files.
When an RC 7000 SYSTEM is provided with a floppy disc, it would
be natural to use this for system start. This gives an easyand
convenient system start, which takes about 30 seconds. The main
application of the disc would probably be for program storage.
Programs are stored and called by means of a name of up to eight
characters. The number of programs which can be stored depends on
diskette"s capacity.
Finally, the disc may contain data files. Reading and printing of
data files may be carried out directly from the individual
program.
A new concept in connection with the floppy disc is the LOGICAL
DISC.
Before a disc plate is used for the first time, it must be
formatted, i.e., divided into a number of sub-sections called
logical discs.
The number of logical discs is dependent only on the size of the
individual logical discs that make up the whole disc. In prac-
tical applications, the number may vary from 1 to about 70
logical discs.
The formatted disc plate looks as follows:
Disc plate formatted into logical discs (LD)
Logical disc LD LD LD
Sub-indexes Main index
\f
The main index describes the logical discs. This index contains
information on names of the logical discs, protection keys, the
length of the logical disc and the number of users.
The contents of the main index will not be readily accessible to
"lay" users, but can be written out by means of a special program.
The sub-indexes contain information on the content of the logical
discs. The primary information in the index is the names of the
stored files (data files and programs) and their length. Any user
may be connected to a logical disc. In order to have access to a
logical disc the user must know the name of the logical disc and
this gives the user the right to read the files stored on it. If
the user wishes to write on the logical disc, then in addition to
the name he must give the protection key, which is a number in
the interval 0 to 65535. There are a number of terminal commands
connected with the use of the floppy disc.
CONNECT : Used for connecting the user to a logical disc. After
CONNECT follows the name of the logical disc and
protection key, if any. E.g., CONNECT "DISC 1", 637.
COPY : Used for copying files from one logical disc to another.
LOCK : Used from the master terminal to bar the connection of
users to the floppy disc.
LOOKUP : Prints out information from the sub-index in the
connectedlogical disc. This includes the printout of
the names of all the files.
RELEASE : Disconnects the terminal from the logical disc.
USERS : Prints out the number of users connected to the floppy
disc.
There are a number of RC COMAL statements connected with the use
of data files by programs. These are as follows:
CREATE, DELETE, RENAME, OPEN FILE, CLOSE FILE, INPUT FILE, PRINT
FILE, READ FILE, WRITE FILE, EOF (END OF FILE), MAT INPUT FILE,
MAT PRINT FILE, MAT READ FILE, MAT WRITE FILE.
These statements are not explained in this publication, but
further information may be obtained about them from the "RC COMAL
PROGRAMMING GUIDE".\f
8 Summary of RC COMAL
This summary provides, a brief though total picture of RC COMAL.
Naturally the summary cannot contain all features, and therefore,
further references should be made to the "RC COMAL PROGRAMMING
GUIDE". In the summary, the following abbreviations and symbols
are used:
<var> : The name of a numeric variable or the name
of a procedure.
<svar> : The name of a text string (alphanumeric
variable).
<expr> : Numeric, Boolean or alphanumeric expression.
<slit> : Alphanumeric constant, e.g., "PETER".
<val> : Numeric constant.
<lno> : Line numbers.
<statements> : One or more RC COMAL statements.
<ldnames> : The name of a logical disc.
<filename> : The name of a disc file or of a peripheral
unit.
<device> : The name of a peripheral unit.
<file> : The number of a user file.
<array> : Indicates a dimensioned variable.
<comment> : Comments.
<mvar> : The name of a matrix.
<recl> : Record length.
<recno> : Record number.
Indicates that one of the possibilities shown
may be selected.
Indicates that the contents may be omitted.
\f
8.1 RC COMAL statement types
F_o_r_m_a_t_/_D_e_s_c_r_i_p_t_i_o_n_
CASE <expr> OF
<statements-0>
WHEN <expr> ,<expr> ...
<statements-1>
.
.
.
WHEN <expr> ,<expr> ...
<statements-n>
ENDCASE <comment>
The expression following CASE is evaluated and compared -
with the expressions following WHEN. If there is a match
in the ith WHEN statement, statements-i is executed. If
no match is found, statements-0 is executed. Control is
then transferred to the first statement following
ENDCASE.
CHAIN <filename> THEN GOTO <lineno.>
Runs the SAVEd program referred to by a filename when the
statement is encountered in the user"s program. When used
as a command, CHAIN will LOAD, but not execute, the SAVEd
program.
<val> ,<val>
DATA <slit> ,<slit> ...
Provides values to be read into variables appearing in
READ or MAT READ statements.
DEF FN<a>(<d>) = <expr>
Used with the f_u_n_c_t_i_o_n_ FNa(d) to define a user function.
DELAY = <expr>
Interrupts program execution for a specified number of
seconds.
\f
<svar>(<m>) <svar>(<m>)
DIM <array>(<m>) ,<array>(<m>) ...
<array>(<row>,<col>)<array>(<row>,<col>)
Defines the size of string variables or numeric variable
arrays.
END <comment>
Terminates execution of the program.
EXEC <name>
Executes a procedure defined by PROC-ENDPROC.
FOR <control var> = <expr1> TO <expr2> STEP <expr3>
<statements>
NEXT <control var>
FOR begins a FOR-NEXT loop and defines the number of times
a block of statements is to be executed. NEXT is the last
statement in the loop and changes the value of the control
variable.
GOSUB <lno>
.
.
.
<statements>
RETURN <comment>
GOSUB transfers control to the first statement of a sub-
routine. RETURN is the last statement in a subroutine and
returns control to the first statement following the GOSUB
statement that called the subroutine.
GOTO <lno>
Transfers control unconditionally to a statement not in
normal sequential order.
IF <expr> THEN <statement>
Executes a single statement depending on whether an
expression is true or false. \f
IF <expr> THEN DO
<statements>
ENDIF <comment>
Executes a block of statements depending on whether an -
expression is true or false.
IF <expr> THEN DO
<statements-1>
ELSE <comment>
<statements-2>
ENDIF <comment>
Executes statements-1 if an expression is true, other-
wise statements-2.
<var>,<var>
INPUT <slit-0>, <svar> ,<slit-n> ,<svar> ...
Assigns values entered from the user"s terminal to
numeric or string variables.
<var><var>
LET <svar> = <expr> ; <svar> = <expr> ...
Assigns the value of an expression to a variable.
ON ERR THEN <statement>
Enables the programmer to take special action, if an error
occurs during program execution.
ON ESC THEN <statement>
Enables the programmer to take special action, if the
ESCape key is pressed during program execution.
GOTO
ON <expr> THEN GOSUB <lno> ,<lno> ...
Transfers control to one of several lines in a program
depending on the computed value of an expression when the
statement is executed. \f
T_<expr> <expr>
; <slit> , <sli
Figure 1. RC 3751 Flexible Disc Drive. (Showing diskette Door
open)
O_p_e_r_a_t_o_r_'_s_ _C_o_n_t_r_o_l_s_
1. DISKETTE DOOR - This door is opened by pressing
the push bar (4) inwards and is
closed by pressing the latch (2)
downwards.
2. LATCH - When pressed downwards this
closes the door.
RCSL No 42-i 1378\f
RESTORE <lno>
Resets the data element pointer to the beginning of the
data list or to a particular DATA statement.
STOP <comment>
Terminates execution of the current program.
TAB(<expr>)
Used in PRINT statements to tabulate the printing posi-
tion to the column number evaluated from an expression.
WHILE <expr> THEN DO
<statements>
ENDWHILE <comment>
Executes a block of statements repetitively while an ex-
pression is true. If the expression is false the first
time WHILE is encountered, the block of statements is not
executed even once.
8.2RC COMAL standard functio\f
FN<a>(<d>)
A user function which is defined by DEF and returns a
numeric value.
INT(<expr>)
Returns the value of the nearest integer not greater than
an expression.
LOG(<expr>)
Calculates the n_a_t_u_r_a_l_ logarithm of an expression.
RND(<expr>)
Produces a pseudo random number between 0 and 1.
SGN(<expr>)
Returns the algebraic sign of an expression.
SIN(<expr>)
Calculates the sine of an angle which is expressed in
radians.
SQR(<expr>)
Computes the square root of an expression.
SYS(<expr>)
Returns system information, based on an expression which
is evaluated to an integer, as follows:
0 Time of day.
1 Day.
2 Month.
3 Year.
4 Terminal port number.
5 Time used since terminal was logged on.
6 Number of file I/O statements executed.
7 Error code of last run-time error.
8 File number of last file referenced . \f
9 Page size.
10 Tab size.
11 Hour.
12 Minutes past last hour.
13 Seconds past last minute.
14 Constant (3.14159)
15 Constant e (2.71828).
TAN(<expr>)
Calculates the tangent of an angle which
is expressed in radians.
8.2.1Functions for processing text strings
CHR(<expr>)
T_ Returns the character corresponding to the number found
as an expression modulo 128.
<svar>
LEN( <slit> )
&_Returns the current number of characters in a string.
<svar>
ORD( <slit> )
Returns the decimal number of the first character of a
string.
8.3Matrix operations in RC COMAL
MAT <mvar1> = <mvar2>
Copies the elements of one matrix to another matrix.
MAT <mvar1> = <mvar2> UUU+DDD <mvar 3>
UUUU-DDDD
Performs the scalar addition or subtraction of two matrices.\f
MAT <mvar1> = UUU<mvar2>DDD * <mvar3>
UUUU(<expr>)DDDD
Performs the multiplication of one matrix by another
matrix or by a scalar.
<var> = DET(<expr>)
Returns the determinant of the last matrix inverted by a
MAT INV statement.
MAT <mvar> = CON
Initializes a matrix such that all elements are set to
one.
MAT <mvar> = IDN
Initializes a matrix such that all elements (i,i) are set
to one and the remaining elements are set to zero.
MAT INPUT <mvar1> ,<mvar2>, ... ,<mvar-n>
Assigns numeric values entered from the user"s terminal to
the elements of one or more matrices.
MAT <mvar1> = INV(<mvar2>)
Inverts a matrix and assigns the resultant element values
to another matrix.
;
MAT PRINT <mvar> , mvar> ... ;
Outputs the values of the elements of one or more matrices
on the user"s terminal.
MAT READ <mvar> ,<mvar> ...
Reads in numeric values from DATA statements and assigns
the values to the elements of one or more matrices. \f
MAT <mvar1> = TRN(<mvar2>)
Transposes a matrix and assigns the resultant element
values to another matrix.
MAT <mvar> = ZER
Initializes a matrix such that all elements are set to
zero.
T_
8.4Commands to logical discs
CONNECT <ldname> ,<expr>
Connects the user"s terminal to a logical disc for reading
or, if the protection key is correctly specified, for both
&_reading and writing.
COPY "<ldname>:<filename1>","<filename2>"
Copies a file (<filename1>) from any logical disc
(<ldname>) to a file (<filename2>) in the logical disc to
which the terminal is connected.
INIT <device>
Initializes the main catalog in a device containing
logical discs.
LOCK <device>
Locks a device, when changing discs or closing down the
system, so that no user can connect his terminal to a
logical disc in that device.
LOOKUP "LPT"
Returns a listing of the files in the logical disc to
which the terminal is connected.
RELEASE
Disconnects the user"s terminal from the logical disc to
which it is connected.\f
USERS <device>
Returns the number of users whose terminals are connected
to any logical disc in a device.
8.5Statements for file processing
CLOSE FILE(<file>)
Dissociates a filename and a user file number (see OPEN
FILE) so that the file no longer can be referenced. The
CLOSE form of the statement closes all open files.
CREATE <filename>,<size>,<recl>
Creates a file in the logical disc to which the user"s
terminal is connected.
DELETE <filename>
Deletes a file in the logical disc to which the user"s
terminal is connected.
EOF(<file>)
Returns a value of +1, if an end of file condition was
detected in the last INPUT FILE or READ FILE statement;
otherwise, a value of 0 is returned.
<var><var>
INPUT FILE(<file>) , <svar> , <svar> ...
Reads data in ASCII format from a sequential access file
for the variables in the argument list.
MAT INPUT FILE(<file>) , <mvar> ,<mvar> ...
Reads data in ASCII format from a sequential access file
for the matrix variables in the argument list.
MAT PRINT FILE(<file>) , <mvar> ,<mvar> ...
Writes matrix data in ASCII format to a sequential access
file.\f
MAT READ FILE(<file>,<recno>) , <mvar> ,<mvar> ...
Reads data in binary format from a sequential access file
or record of a random access file for the matrix variables
in the argument list.
MAT WRITE FILE(<file>,<recno>) , <mvar> ,<mvar> ...
Writes matrix data in binary format to a sequential access
file or record of a random access file.
OPEN FILE(<file>,<mode>) , <filename>
Associates a filename, i.e. a disc file or a device, with
a user file number so that the file can be referenced in
other file I/O statements; also specifies how the file is
to be used.
<expr> , <expr> ,
PRINT FILE(<file>) , <slit> ; <slit> ... ;
<svar> <svar>
Writes data in ASCII format to a sequential access file.
<expr> <expr>
PRINT FILE(<file>) , USING <format>, <slit> , <slit> ... ,
<svar> ; <svar> ;
Writes data in ASCII format to a sequential access file,
using a specified output format.
<var><var>
READ FILE(<file>,<recno>) , <svar> , <svar> ...
Reads data in binary format from a sequential access file
or record of a random access file for the variables in the
argument list.
RENAME <filename1>,<filename2>
Renames a file in the logical disc to which the user"s
terminal is connected.
\f
<expr> <expr>
WRITE FILE(<file>,<recno>) , <slit> , <slit> ...
<svar> <svar>
Writes data in binary format to a sequential access file
or record of a random access file.
8.6 System commands in RC COMAL
<lno n1>,<lno n2>
<lno n1>
<lno n1>,
,<lno n2>
Deletes one or more statements in a program.
<lno n1>
STEP
AUTO , <lno n2>
STEP
<lno n1> , <lno n2>
Provides automatic line numbers in a program, thereby
making it easier to enter programs from a terminal.
BATCH "<LPT"
Places the terminal in batch mode and causes the system to
start reading cards from the mark-sense card reader. Job
output will appear on the terminal or, if the BATCH "<LPT"
form of the command is used, on the line printer.
BYE
T_
Logs the terminal off the system.
CON
&_ CONL
Continues execution of the current program after the
execution of a STOP statement in the program, after the
ESCape key has been pressed, or after an error has
occurred. Output from PRINT statements will appear on
the terminal or, if the CONL form of the command is used,
on the line printer.\f
ENTER <filename>
Merges the statement lines from the disc file or the
device specified by a filename into the current program
storage area.
<lno n1>
TO
LIST , <lno n2> <filename>
TO
<lno n1> , <lno n2>
Outputs part or all of the currently loaded program in
ASCII format to the disc file or the device specified by a
filename or, if no filename is specified, to the terminal.
LOAD <filename>
Loads a previously SAVEd program in binary format from the
disc file or the device specified by a filename into the
user"s program storage area.
NEW
Clears all currently stored program statements and
variables from core memory and closes any open files.
PAGE=<expr>
Sets the right-hand margin of the terminal.
<lno n1>
TO
PUNCH , <lno n2>
TO
<lno n1> , <lno n2>
Outputs part or all of the currently loaded program in
ASCII format to the terminal punch (when present).
\f
<lno n1>
STEP
RENUMBER , <lno n2>
STEP
<lno n1> , <lno n2>
Renumbers the statements in the current program.
RUN <lno>
RUNL <filename>
Executes the current program, either from the lowest
numbered statement or from a specified line number, or
loads and executes a previously SAVEd program as the
current program. Output from PRINT statements will appear
on the terminal or, if the RUNL form of the command is
used, on the line printer.
SAVE <filename>
Writes the currently loaded program, including the current
values of all variables and parameters, in binary format
to the disc file or the device specified by a filename.
SIZE
Returns the number of bytes used by the current program
and the numbers of bytes left.
TAB=<expr>
Sets the zone spacing between the print elements output by
PRINT statements.
8.7 Commands in connection with batch runs
EOJ
Terminates a job.
SCRATCH <text>
Initiates a job.
TIME=<val>
Specifies how may seconds a job may run.If nothing is
specified, TIME = 60 seconds.\f
RC COMAL
- EN KORT INTRODUKTION
Første udgave
A/S REGNECENTRALEN Februar 1978
Informationsafdelingen RCSL 42-i 0779\f
Forfatter: Thorkild Maaetoftog Børge Christensen
Tekstredaktør: Inga Marcussen
NØGLEORD: RC 7000, RC 3600, RC COMAL, BASIC, INTRODUKTION,
Kortfattet sprogoversigt.
ABSTRACT: Denne introduktion beskriver de udvidelser, i forhold
til almindeligt anvendt BASIC, som er implementeret i
RC COMAL. Desuden beskrives specielt anvendelse af
floppy disc samt kortlæser. Sidste kapitel er en total
oversigt over RC COMAL.
BEM@RKNING: Udgivet af A/S Regnecentralen, i samarbejde med
Dataafdelingen ved Tønder Statsseminarium.
Brugere osv.
Copyright A/S Regnecentralen, 1978
Tryk: A/S Regnecentralen, København \f
INDHOLDSFORTEGNELSE
1 HVAD ER RC COMALSide 5
2 VARIABELNAVNE7
2.1 Variabeltildeling7
3 AVANCEREDE STYRESTRUKTURER8
3.1 If p THEN .. ELSE .. ENDIF8
3.2 If p THEN .. ENDIF9
3.3 REPEAT .. UNTIL p10
3.4 WHILE p DO .. ENDWHILE11
3.5 CASE udtr OF .. WHEN .. ENDCASE12
3.6 Procedurer14
4 OPERATORER16
4.1 Boolske udtryk16
5 TERMINALKOMMANDOER18
6 SYSTEMER MED KORTL@SER19
7 SYSTEMER MED FLEXIBLE DISC21
8 OVERSIGT OVER RC COMAL23
8.1 RC COMAL sætningstyper24
8.2 RC COMAL standardfunktioner28
8.2.1 Funktioner til behandling af tekststrenge30
8.3 Matrix operationer i RC COMAL30
8.4 Kommandoer til logiske disce31
8.5 Sætninger til fil-behandling32
8.6 Systemkommandoer i RC COMAL34
8.7 Kommandoer i forbindelse med batch-kørsel36\f
1 Hvad er RC COMAL
Regencentralen har siden 1970 markedsført RC 7000 Minidatamat-
systemet, primært til undervisningsinstitutioner.
RC 7000 er en ren dansk datamat, idet såvel hardware som software
udvikles og produceres i Danmark af Regnecentralen.
Programmeringssproget COMAL blev defineret af lektor Benedict
Løfstedt, Århus Universitet, og lektor Børge Christensen, Tønder
Statsseminarium. Sproget indeholder extended basic som en ægte
delmængde.
En første version af COMAL blev udviklet på en RC 7000 af Per
Christiansen og Knud Christensen ved Tønder Statsseminariums
dataafdeling, i 1975. Mere end tre års erfaringer med COMAL ved
undervisning i datalære ved bl.a. gymnasier, på seminarier og i
folkeskoler har vist, at COMAL er l_e_t_t_e_r_e_ _a_t_ _l_æ_r_e_ end BASIC.
Dette bl.a. fordi det giver anledning til programmer, som har en
k_l_a_r_e_r_e_ _o_p_b_y_g_n_i_n_g_ og derfor er n_e_m_m_e_r_e_ _a_t_ _l_æ_s_e_ end tilsvarende
BASIC-programmer. Ved en gennemlæsning af denne introduktion til
RC COMAL vil læseren forstå, hvorfor det forholder sig således.
RC COMAL er den endelige version af COMAL-sproget og er udviklet
af A/S Regnecentralen i stadig samarbejde med lærere fra semi-
narier, gymnasier og folkeskoler. RC COMAL indeholder væsentlige
forbedringer i forhold til det oprindeligt definerede COMAL, og
disse forbedringer tager alle sigte på at gøre sproget til et let
og smidigt redskab for undervisningen i de almene skoleformer.
COMAL er iøvrigt en forkortelse for: C_O_M_mon A_lgorithmic L_anguage
(Almindeligt algoritmesprog). Ved definitionen af sproget er der
lagt stor vægt på, at de grundlæggende a_l_g_o_r_i_t_m_e_s_t_r_u_k_t_u_r_e_r_ skal
være lette at beskrive og lette at genkende.
Denne introduktion er ikke ment som en lærebog i RC COMAL.
Introduktionen er skrevet for læsere, som kender de vigtigste
sprogelementer i BASIC, og indeholder derfor ikke definitioner
eller forklaringer på de mest simple RC COMAL/BASIC sætninger.
Bogen indeholder først en beskrivelse af udvidelser og nye sprog-
elementer i RC COMAL i forhold til BASIC. Sidste kapitel er en
totaloversigt, i skematisk form, over RC COMAL.
\f
Yderligere litteratur om RC COMAL:
"RC COMAL Programming Guide", udgivet af A/S Regnecentralen.
Børge Christensen: "RUN COMAL", udgivet af Studentlitteratur.
Børge Christensen: Opgaver til "RUN COMAL", samme udgiver.\f
2 Variabelnavne
I RC COMAL navngives variable af alle typer efter forskriften:
t t ....... t , i 1 8,
hvor t er et bogstav, mens t , ....... t er bogstaver ellercifre.
E_x_e_m_p_l_e_r_
LET RENTE = KAPITAL * RENTEFOD * ANTDAGE/360/100
LET NAVN< = "OLE OLSEN"
LET TABEL (NUMMER, AARG) = 126
2.1 Variabeltildeling
I RC COMAL kan LET-sætninger indeholde mere end n tildeling:
LET var = udtr ; var = udtr ; .....; var = udtr
hvor var , var , ....., var er variabelnavne, ....., mens udtr ,
udtr , ....., udtr er konstanter, variable eller formler. En
LET-sætning kan indeholde så mange tildelinger, som linielængden
tillader.
E_x_e_m_p_l_e_r_
LET RENTEFOD = 12; KAPITAL = 15000; NAVN< = "OLE OLSEN"
Denne sætning har samme virkning som tre på hinanden følgende LET
sætninger med hver sin tildeling.
\f
3 Avancerede styrestrukturer
Ud over styrestrukturerne i BASIC findes følgende i RC COMAL:
(1) IF p THEN .. ELSE .. ENDIF
(2) IF p THEN .. ENDIF
(3) REPEAT .. UNTIL p
(4) WHILE p DO .. ENDWHILE
(5) CASE udtr OF .. WHEN .. ENDCASE
3.1 IF p THEN .. ELSE .. ENDIF
Strukturen er opbygget således:
IF p THEN
A f s
ELSE p
B A B
ENDIF
p er et Boolsk udtryk (et åbent udsagn); hvis p har værdien
"sand", udføres den programdel A, som er beskrevet mellen IF p
THEN og ELSE, og hvis p har værdien "falsk", udføres den program-
del B, der er beskrevet mellem ELSE og ENDIF. Når enten A eller B
er udført, går udførelsen af programmet videre med sætningen
efter ENDIF.
Den del af programteksten, som ligger mellem styresætningerne,
indrykkes, når der udskrives en programliste (jvf. FOR .. NEXT i
BASIC).
\f
E_k_s_e_m_p_l_e_r_
IF PRIS < 100 THEN
PRINT "DE SKAL BETALE (INCL. GEBYR): "; PRIS + 15; "KR."
ELSE
PRINT "DE SKAL BETALE: "; PRIS; "KR."
ENDIF
INPUT "KARAKTER: ", KARAK
LET SUM = SUM + KARAK; ANTKAR = ANTKAR + 1
IF KARAK < MIN THEN
LET N@STMIN = KARAK
ELSE
IF KARAK < N@STMIN THEN LET N@STMIN = KARAK
ENDIF
3.2 IF p THEN .. ENDIF
Strukturen er opbygget således:
s
IF p THEN p
A
f
ENDIF A
p er et Boolsk udtryk; hvis p har værdien "sand", bliver det
programafsnit A, som er beskrevet mellem IF p THEN og ENDIF,
udført, og hvis p har værdien "falsk", overspringes A. I begge
tilfælde fortsættes udførelsen af programmet med sætningen efter
ENDIF. Den tekst, som står mellem IF p THEN og ENDIF bliver
indrykket, når der udskrives en programliste.
I et RC COMAL-program må man have op til syv IF p THEN .. (ELSE)
.. ENDIF forgreninger inden i hinanden.
\f
E_k_s_e_m_p_l_e_r_
READ TAL1, TAL2
IF TAL1 > TAL 2 THEN
LET BUFFER = TAL1; TAL1 = TAL2; TAL2 = BUFFER
ENDIF
PRINT TAL1, TAL2
_ _ _ _ _ _ _
IF RND (0) < 3/10 THEN
LET H1 = H1 + 1
ELSE
IF RND (0) < 3/9 THEN
LET H2 = H2 + 1
ELSE
IF RND (0) < 3/8 THEN
LET H3 = H3 + 1
ELSE
IF RND (0) < 3/7 THEN
LET H4 = H4 + 1
ELSE
LET H5 = H5 + 1
ENDIF
ENDIF
ENDIF
ENDIF
3.3 REPEAT .. UNTIL p
Strukturen er opbygget således:
REPEAT
A
A f
p
UNTIL p s
p er et Boolsk udtryk; det programafsnit A, som er beskrevet
mellem REPEAT og UNTIL p, bliver gentaget indtil p har værdien
"sand". Når p antager denne værdi, fortsættes udførelsen af
programmet med sætningen efter UNTIL p.
Det bør bemærkes, at programafsnittet A udføres mindst n gang
når fortolkeren når REPEAT-sætningen, fordi styringen af løkken
sker fra UNTIL-sætningen. Teksten mellem REPEAT og UNTIL p bliver
indrykket, når der udskrives en programliste.
\f
3.4 WHILE p DO .. ENDWHILE
Strukturen er opbygget således:
WHILE p DO
s
A p A
ENDWHILE f
p er et Boolsk udtryk; det programafsnit A, som er beskrevet
mellem WHILE p DO og ENDWHILE bliver gentaget, så længe p har
værdien "sand". Når p har værdien "falsk", fortsættes program-
udførelsen med sætningen efter ENDWHILE.
Det kan bemærkes, at hvis p har værdien "falsk", når udførelsen
af programmet når til WHILE-sætningen, bliver afsnittet A slet
ikke udført, men fortolkeren fortsætter uden videre med sætningen
efter ENDWHILE. Teksten mellem WHILE p DO og ENDWHILE indrykkes,
når der skrives en programliste.
I RC COMAL kan man have op til syv REPEAT .. UNTIL-løkker og op
til syv WHILE .. ENDWHILE-løkker inden i og u_a_f_h_æ_n_g_i_g_ af hinanden.
Man kan altså f.eks. have ialt 14 løkker af de to typer inden i
hinanden, uafhængig af rækkefølge, blot 7 af dem er REPEAT-løkker
og de øvrige WHILE-løkker. Den fra BASIC arvede FOR .. NEXT-løkke
har ingen indflydelse på det antal REPEAT- og WHILE-løkker, man
kan have inden i hinanden (i RC COMAL kan man for øvrigt have op
til syv FOR .. NEXT-løkker inden i hinanden). Antallet af IF ..
(ELSE) .. ENDIF-forgreninger er også uafhængig af eventuelle
indlejrede løkker. Man kan altså faktisk have ialt 21 løkker + 7
forgreninger indbygget i hinanden i et RC COMAL-program.
Forfatteren mindes dog ikke at have set dette i praksis.
E_k_s_e_m_p_l_e_r_
INPUT "DE TO TAL:", A, B
LET X = A; Y = B
REPEAT (* EUKLID*)
LET REST = X MOD Y
LET X = Y; Y = REST
UNTIL REST = 0
PRINT "SFD FOR"; A; "OG"; B; "ER"; X
_ _ _ _ _ _ _
\f
INPUT "NAVN (EFTERNAVN FORNAVN): ", NAVN<
WHILE NAVN< <> "SLUT" DO
INPUT "ADRESSE:", ADR<
INPUT "BY (POSTNR BYNAVN): ", BY<
INPUT "N@STE NAVN: ", NAVN<
ENDWHILE
B_e_m_æ_r_k_n_i_n_g_
Brugeren af GOTO-sætninger i forbindelse med styrestrukturerne
(1) - (4) kan være problematisk. I almindelighed bør man ikke
bruge GOTO"er i programafsnittene A og B, og helt bestemt ikke,
hvis disse GOTO-sætninger henviser til sætninger, som ligger uden
for de sætninger, som indleder eller afslutter de nævnte
programafsnit.
Brugeren af GOTO bør i det hele taget forbeholdes usædvanlige
situationer (f.eks. i tilfælde af fejl i inddata m.m.).
3.5 CASE udtr OF .. WHEN .. ENDCASE
Strukturen er opbygget således:
CASE udtr OF
A
WHEN <liste>DD1UU
ADD1UU case..of
WHEN <liste>DD2UU
A A1 A2 . . . An
ADD2UU
.
.
.
WHEN <liste>DDnUU
ADDnUU
ENDCASE
u_d_t_r_ er et aritmetisk udtryk (en konstant, en variabel eller en
formel), en af de Boolske konstanter TRUE eller FALSE, eller en
strengvariabel, og <l_i_s_t_e_> , er en liste af aritmetiske udtryk,
en liste af Boolske udtryk eller en liste af tegnfølger. \f
Når værdien af u_d_t_r_ er udregnet, søger fortolkeren i listerne
efter de forskellige WHEN, efter en størrelse, der har samme
værdi, som u_d_t_r_. Hvis en sådan størrelse findes i <liste> ,
bliver det efterfølgende programafsnit A udført, og derefter
fortsættes programudførelsen med sætningen efter ENDCASE. Hvis
den relevante størrelse ikke findes, udføres det alternative
afsnit A, som står anført umiddelbart efter CASE-sætningen, og
derpå fortsættes med sætningen efter ENDCASE.
Antallet af WHEN-sætninger efter en forelagt CASE-sætning er
ubegrænset, og man kan have så mange CASE .. ENDCASE inden i hin-
anden, som man ønsker.
Teksterne til A, A , A , ... A indtrykkes i forhold til CASE-,
WHEN- og ENDCASE-sætningerne, når der udskrives en programliste.
E_k_s_e_m_p_l_e_r_
INPUT "1 = IND, 2 = LISTE, 3 = SØG, 4 = SLET, 5 = STOP:", JOBKODE
CASE JOBKODE OF
PRINT "DEN KODE FINDES IKKE."
WHEN 1
REM (*NYE KODER INDSKRIVES*)
EXEC INDKODER
WHEN 2
REM (*UDSKRIFT AF KODELISTE*)
EXEC UDSKRIFT
WHEN 3
REM (*SØG EN GIVEN KODE*)
EXEC SØGNING
WHEN 4
REM (*SLET EN GIVEN KODE*)
EXEC SLETKODE
WHEN 5
REM (*FYRAFTEN*)
STOP
ENDCASE
_______
INPUT SVAR<
CASE SVAR< OF
PRINT "LÆS INSTRUKTIONEN ORDENTLIG"
WHEN "JA"
EXEC RUDE1
WHEN "NEJ"
EXEC RUDE2
WHEN "INGEN", "INTET", "IKKE NOGET"
EXEC RUDE3
ENDCASE
_______\f
INPUT "KOEFFICIENTERNE A, B OG C:", A, B, C
IF A <> 0 THEN
LET DETM = B* B-4* A*C
CASE TRUE OF
WHEN DETM > 0
LET X1 = (-B+SQR (DETM))/2/A; X2 = (-B-SQR (DETM))/2/A
PRINT "X1 ="; X1, "X2 =; X2
WHEN DETM = 0
LET X = -B/2/A
PRINT "DOBBELTROD: X ="; X
WHEN DETM <0
PRINT "INGEN REELLE RØDDER".
ENDCASE
ELSE
PRINT "JEG TROEDE, VI SKULLE LØSE ANDENGRADSLIGNINGER?"
ENDIF
3.6 Procedurer
Man kan med stor fordel benytte sig af procedurer til at gøre sit
program overskueligt og logisk i opbygningen. RC COMAL har derfor
også en udvidelse på dette felt.
Hvis et program inledes med sætningen
PROC <navn>
hvor <navn> er en tegnfølge, der har samme format som et variabel-
navn (jvf. afsnit 2), og afsluttes med sætningen
ENDPROC
kan dette program kaldes som et underprogram af et andet program
ved brug af sætningen
EXEC <navn>
Når underprogrammet er blevet udført, fortsætter fortolkeren med
den sætning, der følger lige efter den EXEC-sætning, fra hvilket
opkaldet til underprogrammet skete.
\f
Vi kan illustrere det således:
...
EXEC <navn>
...
END (*HOVEDPROGRAM SLUT*)
...
PROC <navn>
underprogr.
ENDPROC
Fra et underprogram kan man kalde et nyt underprogram, og således
videre til en dybde af ialt syv. Fænomenet afgiver følgende
billede:
PROC <navn > PROC <navn > PROC <navn >
... ... ...
EXEC <navn > EXEC <navn > EXEC <navn >
... ... ...
ENDPROC ENDPROC ENDPROC
\f
4 Operatorer
Udover de sædvanlige aritmetiske og logiske operatorer indeholder
RC COMAL følgende faciliteter:
DIV : Heltalsdivision, eks. 11 DIV 4 (=2)
MOD : Modulus, eks. 11 MOD 4 (=3)
AND : Logisk "OG", eks. (A>10) AND (A<20)
OR : Logisk "ELLER", eks. (A<20) OR (A>30)
NOT : Logisk negation, eks. NOT (A<10)
Mens de to første, DIV og MOD, er en bekvem og logisk udvidelse
af de aritmetiske operatorer, giver de sidste tre (AND, OR og
NOT) en række specielle anvendelser i forbindelse med Boolske
udtryk, hvilket skal belyses nærmere.
4.1 Boolske udtryk
I RC COMAL kan man danne Boolske udtryk i sædvanlig Boolsk
algebra under benyttelse af operatorerne AND, OR og NOT.
E_k_s_e_m_p_l_e_r_
IF MAXNR = 0 OR SIDSTE = 10 THEN
UNTIL NAVN< = "NONE" OR SLUT = TRUE
WHILE SQR (OBS) <> 25 AND OBS <> 0 DO
UNTIL NODE = TRUE AND H(NODE) = 0 OR H(NODE) = SIDST
I RC COMAL kan numeriske variable anvendes som (pseudo) Boolske
variable, idet en numerisk variabel i rette sammenhæng opfattes
som en Boolsk variabel med værdien "falsk", hvis den pågældende
numeriske variable har talværdien 0, og værdien "sand" i alle
andre tilfælde. "Sand" svarer altså til "forskellig fra 0" mens
"falsk" svarer til "lig med 0". For at gøre det lettere at huske
denne ækvivalens, kan man i RC COMAL indføre konstanterne TRUE
og FALSE, der har talværdierne hhv. 1 og 0.
\f
E_k_s_e_m_p_l_e_r_
Når sætningen
LET GÅOP = TRUE
er udført, har GÅOP værdien 1 og bliver derfor i denne sætning
IF GÅOP THEN PRINT "DIVISIONEN GÅR OP"
fortolket som en Boolsk variabel med værdien "sand".
På grund af den nævnte ækvivalens mellem talværdier og sandheds-
værdier, kan man anvende Boolske udtryk i aritmetiske udtryk. Et
Boolsk udtryk, som har værdien "sand", bliver i denne sammenhæng
tolket som et aritmetisk udtryk med værdien 1, mens et Boolsk
udtryk, som har værdien "falsk", får tillagt talværdien 0.
E_k_s_e_m_p_l_e_r_
I sætningen
DEF FNF (X) = (X<0) * (X+1) + (X=0) * X+(X>0) * (2*X+3)
er funktionen FNF givet efter en "opdeling afdefinitionsmængden".
Hvis LUKKET og HUNDLØS er variable med værdierne hhv. 1 (TRUE) og
0 (FALSE), vil udførelsen af sætningen
LET IND = LUKKET AND NOT HUNDLØS
bevirke, at den variable IND får tildelt værdien 1 (TRUE).
\f
5 Terminalkommandoer
En række nye terminalkommandoer udover de almindelige (RUN, LIST
osv.) er tilføjet RC COMAL.
Følgende skal omtales:
AUTO : Anvendes ved indtastning af programmer.
Kommandoen starter automatisk generering af
linienumre: 10, 20, 30, ...... osv.
RUNL : Starter udførelsen af et program ligesom RUN,
men alle udskrifter vil komme på linieskriveren.
CON : Starter et program fra det sted, det sidst
blev standset. Programmet kan standses ved
hjælp af en STOP-sætning, tryk på ESC-tast o.l.
CONL : Som CON, men fortsætter med udskrift på
linieskriveren.
BATCH :Starter indlæsning af programmer fra kort-
læseren.
BATCH "<LPT": Som BATCH, men med udskrift på linieskriver.\f
6 Systemer med kortlæser ,
RC 7000 systemer med kortlæser giver mulighed for afvikling af
BATCH-kørsler, dvs. automatisk kørsel af f.eks. en hel klasses
programmer.
Kortene pakkes i JOB (JOB = program + styrekort) og de forskellige
JOB pakkes sammen til en BATCH (BATCH = bunke).
Hvert JOB forsynes f.eks. med følgende styrekort:
1. SCRATCH <tekst>, hvor <tekst> udskrives før output fra
programmet.
2. LIST, udskriver programmet.
3. RUN, starter programudførelsen.
4. EOJ, (E_nd-O_f-J_ob) afslutter det enkelte job.
Når de enkelte JOB er sammenpakket til en BATCH, anbringes
kortstakken i kortlæseren.
Der fines to terminalkommandoer, som kan starte kørslen af
kortene:
BATCH : Alle udskrifter vil fremkomme på terminalen,
hvorfra kommandoen er afgivet.
BATCH "<LPT": Alle udskrifter fremkommer på linieskriveren.
Kortkørslen sker nu fuldautomatisk. Såfremt programmerne inde-
holder fejl, så de ikke kan køres inden for en nærmere fastlagt
tidsgrænse, f.eks. 60 sek., vil næste job automatisk blive
indlæst.
Det skal bemærkes, at alle øvrige terminaler og ydre enheder ikke
påvirkes af BATCH-kørslen, men fortsætter uhindret.
I RC COMAL kan anvendes to typer stregmarkeringskort, nemlig
BATCH-BASIC kortet (HP-standard) samt et nydesignet RC COMAL
kort. Det nye kort indeholder samtlige RC COMAL sætningstyper. \f
Side 19 (2 kort)\f
7 Systemer med flexible disc
I RC COMAL findes programmel til håndtering af FLEXIBLE DISC
(Floppy Disc).
Flexible disc"en har tre primære anvendelsesområder:
1. Systemopbevaring (f.eks. RC COMAL)
2. Programopbevaring
3. Arbejde med datafiler
Når et RC 7000 SYSTEM er forsynet med en flexible disc, vil det
være naturligt, at denne anvendes ved systemopstart. Dette giver
en let og behagelig systemopstart, som er overstået på ca. 30
sek.
Hovedanvendelsen af disc"en vil nok være programopbevaring.
Programmer opbevares og kaldes ved hjælp af et navn på indtil 8
tegn. Antallet af programmer, som lagres, er kun afhængig af
diskettens kapacitet.
Endelig kan disc"en indeholde datafiler. Læsning og skrivning af
datafiler kan udføres direkte fra det enkelte program.
Et nyt begreb i forbindelse med flexible disc er begrebet LOGISK
DISC. Inden en diskette (disc-plade) tages i brug første gang,
skal denne formatteres, dvs. inddeles i et antal underområder,
logiske disce.
Antallet af logiske disce er kun afhængig af den enkelte logiske
disc"s størrelse. I praksis vil antallet kunne variere fra 1 til
ca. 70.
Den formatterede diskette ser således ud:
Diskette formatteret med logiske disce (LD)
Logisk disc LD LD LD
Underkataloger Hovedkatalog\f
Hovedkataloget beskriver de logiske disce. I kataloget findes
oplysninger om navne på de logiske disce, beskyttelsesnøgler, den
logiske disc"s længde samt antallet af brugere.
Hovedkatalogets indhold vil ikke være umiddelbart tilgængeligt
for "menige" brugere, men kan udskrives ved hjælp af et specielt
program.
e
Underkatalogerne indeholder oplysninger om indholdet af de logisk
disce. De primære oplysninger i kataloget er navnene på de op-
bevarede filer (datafiler og programmer) samt længden på disse.
Hver bruger kan tilkoble sig en logisk disc. For at tilkoble sig
den logiske disc, skal brugeren kende navnet på den logiske disc,
og dette giver brugeren ret til at læse de filer, der opbevares
på denne. Hvis brugeren ønsker at skrive på den logiske disc, må
han udover navnet anføre beskyttelsesnøglen, som er et tal i
intervallet 0 til 65535. I forbindelse med flexible disc findes
en række terminalkommandoer:
CONNECT: Anvendes til at tilknytte brugeren til en logisk disc.
Efter CONNECT anføres navnet på den logiske disc, samt
evt. beskyttelsesnøgle. F.eks. CONNECT "DISC 1", 637.
COPY : Anvendes til kopiering af filer fra en logisk disc til
en anden.
LOCK : Anvendes fra masterterminalen til at spærre for til-
kobling af brugere til flexible disc"en.
LOOKUP : Udskriver oplysninger fra underkataloget i den til-
sluttende logiske disc. Bl.a. udskrives navnene på alle
filer.
RELEASE: Frakobler terminalen fra den logiske disc.
USERS : Udskriver antal brugere tilkoblet flexible disc"en.
I forbindelse med anvendelse af datafiler i programmer findes en
lang række RC COMAL sætninger. Følgende kan anvendes:
CREATE, DELETE, RENAME, OPEN FILE, CLOSE FILE, INPUT FILE, PRINT
FILE, READ FILE, WRITE FILE, EOF (END OF FILE), MAT INPUT FILE,
MAT PRINT FILE, MAT READ FILE, MAT WRITE FILE.
Disse sætninger skal ikke belyses nærmere her, men yderligere
oplysninger kan fås i "RC COMAL PROGRAMMING GUIDE". \f
8 Oversigt over RC COMAL
Denne oversigt giver i kort form et totalt billede af RC COMAL.
Oversigten kan naturligvis ikke indeholde alle finesser, og vi må
derfor henvise til manualen, hvis man vil søge yderligere
information.
I oversigten anvendes følgende forkortelser og symboler:
<var> : Navnet på en numerisk variabel, eller navnet
på en procedure.
<svar> : Navnet på en tekststreng (alfanumerisk varia-
bel).
<udtr> : Numerisk, Boolsk eller alfanumerisk udtryk.
<slit> : Alfanumerisk konstant, f.eks. "PETER".
<val> : Numerisk konstant.
<lnr> : Linienumre.
<statements> : En eller flere RC COMAL sætninger.
<ldnames> : Navnet på en logisk disc.
<filename> : Navnet på en disc file eller på en ydre enhed.
<device> : Navnet på en ydre enhed.
<file> : Nummeret på en bruger fil.
<array> : Angiver en dimensioneret variabel.
<comment> : Kommentarer.
<mvar> : Navnet på en matrix.
<recl> : Record-længde.
<recno> : Record-nummer.
Angiver at der kan vælges en af de viste
muligheder.
Angiver at det viste kan udelades.
\f
8.1 RC COMAL sætningstyper
F_o_r_m_a_t_/_b_e_s_k_r_i_v_e_l_s_e_
CASE <udtr> OF
<statements> - 0>
WHEN <udtr> , <udtr> ...
<statements> - 1
.
.
.
WHEN <udtr> ,<udtr> ...
<statements>-n>
ENDCASE <comment>
udtrykket efter CASE udregnets og sammenlignes med de udtryk, der
efterfølger sætninger med WHEN. Hvis der er overensstemmelse i
den I"te WHEN-sætning, udføres statements-I. Hvis ingen overens-
stemmelse findes, udføres statements-0. Programmet fortsætter
efter ENDCASE.
CHAIN <filename> THEN GOTO <lnr>
Starter et SAVE"d program med navnet <filename>.
<val> ,<val>
DATA ...
<slit> ,<slit>
Definerer data til sætningerne READ og MAT READ
DEF FN <a>(<d>) = <udtr>
Brugerdefineret funktion, som senere kan kaldes som funktionen
FNa (d).
DELAY = <udtr>
Afbryder programudførelsen i et specificeret antal sekunder (udtr).
<svar>(<m>) <svar>(<m>)
DIM <array>(<m>), , <array>(<m>) ...
<array>(<row>,<col>) <array>(<row>,<col>)\f
Dimensionerer længden af tekststrenge (svar (m)) længden af en-
dimensionale numeriske indicerede variable (array (m)) samt
størrelsen af to-dimensionale numeriske indicerede variable
(array (r,s)).
END <comment>
Standser udførelsen af et kørende program.
EXEC <name>
Udfører proceduren <name>, defineret at PROC-ENDPROC.
FOR <control var> = <udtr1> TO <udtr2> STEP <udtr3>
<statements>
NEXT <control var>
FOR starter en FOR-NEXT løkke og definerer antallet af
løkkegennemløb. Løkken afsluttes af NEXT.
GOSUB <lnr>
.
.
.
<statements>
RETURN <comment>
GOSUB kalder underprogrammet med start i <lnr>. Underprogrammet
afsluttes af RETURN og programudførelsen fortsætter umiddelbart
efter GOSUB.
GOTO <lnr>
Programudførelsen fortsætter i linien med linienummer <lnr>.
IF <udtr> THEN <statement>
Udfører en enkelt sætning (<statement>) afhængig af om <udtr> er
sandt eller falsk.
IF <udtr> THEN DO
<statements>
ENDIF
Udfører en række sætninger (<statements>) afhængig af om <udtr>
er sandt eller falsk.
\f
IF <udtr> THEN DO
<statements-1>
ELSE <comment>
<statements-2>
ENDIF <comment>
Udfører <statements-1> hvis <udtr> er sandt, og <statements-2>
hvis <udtr> er falsk.
<var>,<var>
INPUT <slit-0>, ,<slit-n>
<svar> ,<var>
Tilknytter værdier indtastet fra brugerens terminal til numeriske
og alfanumeriske variable. For att lette operatøren kan
ledetekster indføjes (<slit>).
<var> <var>
LET = <udtr> ; = <udtr> ...
<svar> <svar>
Tildeler værdien af <udtr> til en variabel.
ON ERR THEN <statement>
Hvis en fejl opstår under programudførelsen, udføres <statement>.
ON ESC THEN <statement>
Hvis der trykkes på ESC-tasten under programudførelse, udføres
<statement>.
GOTO
ON <udtr> THEN <lnr> ,<lnr> ...
GOSUB
Programudførelsen fortsætter i et af de i listen specificerede
linienumre, afhængig af den udregnede værdi af <udtr>.
<udtr> <udtr>
;<slit> , <slit> ,
PRINT <svar> ; <svar> ... ;
Udskriver det i sætningen specificerede på brugerens terminal.
\f
<udtr> <udtr>
PRINT USING <format> , <slit> , <slit> ... ,
<svar> ; <svar> ;
Udskriver det i sætningen specificerede i et brugerdefineret
format (<format>).
PROC <var>
<statements>
ENDPROC <comment>
Definerer en procedure. Når proceduren kaldes af EXEC, fortsætter
programudførelsen i første linie efter PROC. ENDPROC er sidste
linie i proceduren, og programudførelsen fortsætter derefter
umiddelbart efter den EXEC-sætning, som kaldte proceduren.
RANDOMIZE
Foranlediger at tilfældigtalsgeneratoren startes et vilkårligt
sted, når denne kaldes af standardfunktionen RND (X).
<var>,<var>
READ
<svar>,<svar> ...
Læser værdier fra data-sætningen og tilknytter disse værdier til
de variable nævnt i lister efter READ.
REM <comment>
Indsætter forklarende tekster i programmet. Påvirker ikke program-
udførelsen.
REPEAT <comment>
<statements>
UNTIL <udtr>
Udfører <statements> et antal gange indtil <udtr> er sandt.
<statement> gennemløbes dog altid mindst n gang.
RESTORE <lnr>
Tilbagestiller data-pointeren til første data i datalisten eller
til en specificeret DATA-sætning.\f
STOP <comment>
Standser udførelsen af et kørende program.
TAB (<udtr>)
Bruges i print-sætninger til at tabulere skrivehovedet til den
position, der fås ved at udregne <udtr>.
WHILE <udtr> THEN DO
<statements>
ENDWHILE <comment>
Udfører <statements> gentagne gange, sålænge <udtr> er sandt.
Hvis <udtr> er falsk ved første gennemløb, udføres <statements>
ikke.
8.2 RC COMAL standardfunktioner
F_o_r_m_a_t_/_b_e_s_k_r_i_v_e_l_s_e_
ABS (<udtr>)
Giver den numeriske værdi af <udtr>.
ATN (<udtr>)
Giver den vinkel, i radianer, hvis tangens er lig med <udtr>
(arctangens).
COS (<udtr>)
Giver cosinus til <udtr>. <udtr> i radianer.
EXP (<udtr>)
Giver e (2.71828) opløftet til <udtr> "te potens.
FN <a> (<d>)
Brugerdefineret funktion, som er defineret i DEF-sætningen.
INT (<udtr>)
Giver den hele del af <udtr>.
\f
LOG (<udtr>)
Giver den naturlige logaritme af <udtr>.
RND (<udtr>)
Giver et tilfældigt tal mellem 0 og 1.
SGN (<udtr>)
Giver fortegnet for <udtr>.
SIN (<udtr>)
Giver sinus til <udtr>. <udtr> i radianer.
SQR (<udtr>)
Giver kvadratroden af <udtr>.
SYS (<udtr>)
Giver systeminformationer, baseret på værdien af <udtr>. <udtr>
antager følgende værdier:
<_u_d_t_r_>_ S_Y_S_(_<_u_d_t_r_>_)_
0 Sekunder siden midnat
1 Dagen i måneden
2 Måneden i året
3 Året
4 Terminalnummer
5 Tidsforbrug siden "LOG ON"
6 Antal udførte filestatements
7 Fejlkoden for sidst opståede fejl
8 Nummeret på sidst anvendte fil
9 Størrelsen af page
10 Størrelsen af tab
11 Timer siden midnat
12 Minutter siden sidste time
13 Sekunder siden sidste minut
14 Konstanten (3.14159)
15 Konstanten e (2.71828) \f
TAN (<udtr>)
Giver tangens til <udtr>. <udtr> i radianer.
8.2.1 F_u_n_k_t_i_o_n_e_r_ _t_i_l_ _b_e_h_a_n_d_l_i_n_g_ _a_f_ _t_e_k_s_t_s_t_r_e_n_g_e_
CHR (<udtr>)
Giver ASCII tegnet, som svarer til værdien af <udtr>.
<svar>
LEN(<slit>)
Giver længden af tekststrengen.
<svar>
ORD(<slit>)
Giver det decimale tal, som svarer til første tegn i
tegnstrengen.
8.3 Matrix operationer i RC COMAL
F_o_r_m_a_t_/_B_e_s_k_r_i_v_e_l_s_e_
MAT <mvar 1> = <mvar 2>
Kopier elementerne i en matrix til en anden.
MAT <mvar 1> = <mvar 2> +_<mvar 3>
Matrixaddition og matrixsubtraktion.
<mvar 2>
MAT <mvar 1> = * <mvar 3>
(<udtr>)
Multiplicerer en matrix med en anden matrix eller med en skalar.
<var> = DET (<udtr>)
Giver determinanten af den sidst inverterede matrix.
\f
MAT <mvar> = CON
Etstilling af matrix (1-taller overalt).
MAT <mvar> = IDN
Enhedsmatrix (1-taller i diagonal, nul i resten).
MAT INPUT <mvar 1> ,<mvar 2>, .., <mvar n>
Tildeler numeriske værdier indtastet fra brugerens terminal, til
en eller flere matricer.
MAT <mvar 1> = INV (<mvar 2>)
Inverterer en matrix og tildeler resultatet til en anden matrix.
;
MAT PRINT <mvar> , <mvar> ... ;
Udskriver elementerne i en eller flere matricer.
MAT READ <mvar> ,<mvar> ...
Læser numeriske data fra DATA-sætningen og tilknytter disse
værdier til en eller flere matricer.
MAT <mvar 1> = TRN (<mvar 2>)
Matrixtransponering.
MAT <mvar> = ZER
Nulstilling av matrix (nuller overalt).
8.4 Kommandoer til logiske disce
F_o_r_m_a_t_/_B_e_s_k_r_i_v_e_l_s_e_
CONNECT <ldname> ,<udtr> Tilkobler brugerens terminal til den
logiske disc <ldname>. Hvis beskyttelsesnøglen <udtr> kendes,
tillades både læsning og skrivning. Ellers tillades kun læsning.
\f
COPY "<ldname>:<filename1>","<filename 2>"
Kopierer <filename1> fra den logiske disc <ldname> til filen
<filename2> på den logiske disc terminalen er tilsluttet.
INIT <device>
Initialiserer hovedkataloget på <device>.
LOCK <device>
Forhindrer tilkobling af nye brugere til <device>; f.eks. ved
skift af diskette.
LOOKUP "LPT"
Udskriver en liste over filerne i den tilkoblede logiske disc.
RELEASE
Frigiver terminalen fra den tilkoblede logiske disc.
USERS <device>
Angiver antallet af brugere tilkoblet <device>.
8.5 Sætninger til fil-behandling
CLOSE FILE(<file>)
Lukker en eller flere filer.
CREATE <filename>,<size>,<recl>
Opretter en fil i den tilknyttede logiske disc.
DELETE <filename>
Sletter en fil i den tilknyttede logiske disc.
EOF (<file>)
Funktion som giver + 1, hvis filen <file> er løbet ud over sidste
element. I modsat fald fås 0.\f
<var> <var>
INPUT FILE (<file>) , <svar> , <svar> ...
Indlæser data i ASCII format fra en sekventiel datafil i de
specificerede variable.
MAT INPUT FILE (<file>) , <mvar> ,<mvar> ...
Indlæser data i ASCII format fra en sekventiel datafil i de
specificerede matricer.
MAT PRINT FILE (<file>) , <mvar> ,<mvar> ...
Skriver matrice-data i ASCII format i en sekventiel datafil.
MAT READ FILE (<file>,<recno>) , <mvar> ,<mvar> ...
Læser data i binært format fra en sekventiel datafil eller en
record fra en random access fil til de specificerede matrice
variable.
MAT WRITE FILE (<file>,<recno>) , <mvar> ,<mvar> ...
Skriver matrice-data i binært format i en sekventiel datafil
eller i en record i en random access fil.
OPEN FILE (<file>,<mode>) , <filename>
Åbner en datafil, så den senere kan kaldes fra andre
file-statements.
<udtr> , <udtr>,
PRINT FILE (<file>) , <slit> ; <slit> ... ;
<svar> <svar>
Skriver data i ASCII format i en sekventiel datafil.
<udtr><udtr>
PRINT FILE (<file>) , USING <format> , <slit> , <slit>...,
;<svar>;<svar>;
Skriver data i ASCII format i en sekventiel datafil, hvor der
anvendes et specificeret format (<format>).\f
<var> <var>
READ FILE (<file> ,<recno>) , <svar> , <svar> ...
Læser data i binært format fra en sekventiel datafil eller fra en
record i en random access til de specificerede variable.
RENAME <filename1> , <filename2>
Giver en fil på den logiske disc et nyt navn.
<udtr> <udtr>
WRITE FILE (<file> ,<recno>) , <slit> , <slit> ...
<svar><svar>
Skriver data i binært format i en sekventiel datafil eller i en
record i en random access fil.
8.6 Systemkommandoer i RC COMAL
<lnr1> , <lnr2>
<lnr1>
<lnr1>,
,<lnr2>
Sletter en eller flere linienumre.
<lnr1>
STEP
AUTO ,<lnr2>
STEP
<lnr1> , <lnr 2>
Udskriver automatisk linienumre i forbindelse med programmering.
BATCH "LPT"
Sætter terminalen i BATCH-tilstand, og starter automatisk
indlæsning af en jobstrøm fra kortlæseren. Output vil komme
henholdsvis på terminalen eller hvis BATCH "<LPT" anvendes, på
linieskriveren.
BYE
Frakobler terminalen fra systemet.\f
CON
CONL
Fortsætter udførelsen af et standset program. Output fra PRINT-
sætninger vil komme på terminalen eller hvis CONL anvendes, på
linieskriveren.
ENTER <filename>
Indlæser programmet filename i det eksisterende program.
<lnr1>
LISTTO
, <lnr 2> <filename>
< TO
<lnr1 , <lnr2>
Udskriver det aktuelle program i ASCII format enten på terminalen
eller, hvis specificeret, på filen <filename>.
LOAD <filename>
Indlæser et i forvejen SAVE"d program i binært format fra
<filename> ind i brugerens lager.
NEW
Sletter programmet i brugers lager og lukker alle filer.
PAGE = <udtr>
Fastsætter terminalens højre margin.
<lnr1>
TO
PUNCH,<lnr2>
TO
<lnr1> , <lnr2>
Udlæser det aktuelle program i ASCII format på terminalens hulle-
enhed. \f
<lnr1>
STEP
RENUMBER,<lnr2>
STEP
<lnr 1> , <lnr2>
Giver det aktuelle program nye linienumre.
RUN <lnr>
RUNL <filename>
Udfører det aktuelle program enten fra det laveste linienummer
eller fra <lnr>. Hvis <filename> angives, indlæses programmet fra
disc og udføres. Hvis RUNL anvendes, vil output fra
printsætninger komme på linieskriveren.
SAVE <filename>
Skriver det aktuelle program, inclusive alle værdier af aktuelle
variable og parametre, i binært format i <filename>.
SIZE
Giver størrelsen i bytes af det aktuelle program.
TAB = <udtr>
Angiver zonebredden ved udskrift.
8.7 Kommandoer i forbindelse med batch-kørsel
EOJ
Definerer slutning af et job.
SCRATCH <text>
Initialiserer et job.
TIME = <val>
Specificerer den tid et job tillades at køre. Hvis intet
specificeres, er TIME = 60 sek.
\f
LIMITS
COMMAND VARIABLES DESCRIPTION COMMENTS
MIN. MAX.
faa customer no. 0 999994 Starts new invoice
invoice type 0 9
debitor no. 0 999994
fb address line 1 0 35 chars. Enters delivery address. Only necessary if
address line 2 0 35 chars. delivery address
address line 3 0 35 chars. differs from invoice
address line 4 0 35 chars. address.
address line 5 0 35 chars.
fc address line 1 0 35 chars. Enters invoice address. Only necessary if
address line 2 0 35 chars. customer"s invoice
address line 3 0 35 chars. address does notexist
address line 4 0 35 chars. in customer file or
address line 5 0 35 chars. different address is
required.
fca order reference 0 32 chars.
fcb delivery code 1 10 Information on mode of Either delivery code or
delivery text 0 35 chars. delivery. delivery text must be
entered.
fcc terms of payment code 1 5 Information on terms of Terms of payment code
terms of payment text 0 35 chars. payment. must be entered.\f
LIMITS
COMMAND VARIABLES DESCRIPTION COMMENTS
MIN. MAX.
fcd subsidiary code 0 Codification information.
salesman no. 800000 899999
sales type 1 8
trade 0 99
media 0 99
district 0 999
fce our reference 26 chars.
fch date Closes entries to invoice Date is typed: ddmmyy
head.
fc? Displays invoice head.
fd quantity -2 2 Enters article
article no. 6 8 digits information.
unit price 0 2
article name 32 chars.
free of charge omitted f
fe account no. 7 digits Visible percentwise The percent variable is
percent -2 2 discount/surcharge. written in units of
account text 0 32 chars. 0.01%, i.e. 10% should
be typed in as 1000.
ff account no. 7 digits Invisible percentwise The percent variable is
percent -2 2 discount/surcharge. written in units of
0.01%, i.e. 10% should
be typed in as 1000.
\f
LIMITS
COMMAND VARIABLES DESCRIPTION COMMENTS
MIN. MAX.
fg account no. 7 digits Visible sum
sum -2 2 discount/surcharge.
account text 0 32 chars.
fh account no. 7 digits Invisible sum
sum -2 2 discount/surcharge.
fia zero set code omitted 0 Subtotal on invoice. If the zero set code is
omitted then the sub-
total will not be set
to zero.
fib zero set code omitted 0 Subtotal on display only. If the zero set code is
omitted then the sub-
total will not be set
to zero.
fja Fixed subtotal on invoice.
fjb Fixed subtotal on display
only.
fk text no Text in description
text 0 32 chars. section of invoice.
fp accountno 1 7 digits double discount
percent 1 -10000 +10000 surcharge
accountno 2 7 digits
percent 2 -10000 +10000
accounttext 32 chars.
\f
LIMITS
COMMAND VARIABLES DESCRIPTION COMMENTS
MIN. MAX.
fq vatcode no. 1 5 V A T
f? from line no. Visual check of invoice
to line no. 1 500 body visible lines "from
line no." "to line no."
fl Cancels the result of the
last entered command.
fn no of labels 0 999 Closes the invoice.
text 46 chars.
fo Invoice test print.
fx Cancels the present
invoice.
v? article no. 8 digits Display this article on
the terminal display.
k? customer no. 0 999994 Display this customer on
the terminal display.
d? debitor no. 0 999994 Display this debtor on
the terminal display.
s? field no. 1 109 Display this field from
company file on the
terminal display. \f
Program Name: INVOICING Process Name: .....................
1.0 Introduction
The following describes the procedure from the loading of the
program (see Section 6.2) to the point where the program can be
operated. The actual operation of the program INVOICING is
described in the sections 4.1 and 4.2 of this appendix.
P_r_o_g_r_a_m_ _I_n_i_t_i_a_l_i_z_a_t_i_o_n_
N_o_t_e_:_ The following procedure can only be performed from the
"process owner terminal", i.e. that terminal where the
"process name" in Section 5.2.1 is entered.
1) When the command to load the program has been given as
described in Section 6.2.1 the following will appear on the
terminal display:
# invoicing (program loaded in Section 6.2.1)
RC 6000 Invoicing System Version 25.08.76
Invoicing date <system date>
<country code> <country name>
2) It will take approximately 3 minutes for the program to
initialize, whereafter the following will appear on the
terminal display:
Initializing end (Attention tone sounds to indicate
ESC and process name to operator that the system is
waiting.)
N_o_t_e_:_ From now on the procedure can be carried out from any
terminal.
3) Type:
ESC
The text
att #
will appear on the terminal display.
4) Type:
<process name> RETURN (Process name is given at the
beginning of this appendix.)
RCSL No. 42-i 0825
Page 1 of37\f
The following will appear on the terminal display:
RC 6000 Invoicing Routine
<system date> <time>
#
5) Type:
id <identification text> RETURN
The following will now appear on the terminal display:
#
6) Type:
da <flxname>
where <flxname> is the name used under the flxdope program.
7) Proceed to Section 1.1 Invoice Head.
R_e_m_o_v_i_n_g_ _t_h_e_ _I_N_V_O_I_C_I_N_G_ _P_r_o_g_r_a_m_
1) When the # appears on the terminal display,
Type:
luk <identification text> RETURN
N_o_t_e_:_ The following can only be performed from the "process
owner terminal", i.e. that terminal where the "process
name" in Section 5.2 was originally entered.
2) When the # appears on the terminal display,
Type:
end
If other terminals are open when the "process owner terminal"
operator writes "end", then the following will appear on the
terminal display:
terminal <identification text> still running
and a worning tone sounds.
This terminal must be closed using the procedure in (1)
before the end command is effective.
3) If the end command is accepted the following appears on the
terminal display:
RCSL No. 42-i 0825
Page 2 of37\f
invoicing system terminated
end <number>
#
Hereafter a new program can be loaded as described in Section
5.2.1.
If a fatal failure (e.g. power failure) occurs during operation
of the invoicing program:
1. Insert a flexible disc.
2. Save the file named invlog on the flexible disc.
3. Close down the system.
4. Make a DISC COPY of the drum from yesterday on the drum used
today.
5. Make a DISC COPY at the disc with the debtors from yesterday
on the disc used today.
6. Flxload the invlog from the flexible disc to the drum.
7. Restart the invoicing program so:
# invoicing invlog again. yes.
1.1 Invoice Head
Examine the order form:
If THE CUSTOMER NO. IS GIVEN, AND IT IS AN INVOICE (invoice
type 0 or 1) type:
faa <customer no.> "<invoice type>" RETURN
The customer must exist in the customerfile. The customer"s name
and address are shown on the display.
If the invoice is a normal invoice, invoice type 0, the variable
<invoice type> can be omitted.
If THE CUSTOMER NO. IS GIVEN, AND IT IS A CREDIT NOTE (invoice
type, 2, 3, 8 or 9) type:
faa: <invoice type> <customer no.> RETURN
In this case the customer no. must correspond to a debtor in the
debtor file.
If THE CUSTOMER NO. IS NOT GIVEN
type:
faa :<invoice type> RETURN
RCSL No. 42-i 0825
Page 3 of37\f
If INVOICE TYPE IS 0 simply type:
faa RETURN (normal situation).
If the CUSTOMER NO. is not given, then when the # character
appears on the display the invoice address must be entered as
follows:
Type: fc <address line 1> RETURN
fc <address line 2> RETURN
fc <address line 3> RETURN
and so on, up to a maximum of 5 address lines.
Remember that all text imputs must be preceded and followed by
the " character.
The sixth successive use of the fc command will return to
address line 1, the seventh to address line 2, and so on, so
that corrections may be made. If fc followed by RETURN is
typed the corresponding line will be unchanged. If a blank line
is required, where previously text has been written, then type
fc " " RETURN.
1.1.1 If the DELIVERY ADDRESS DIFFERS FROM THE INVOICE ADDRESS
then the delivery address must be entered as follows:
Type: fb <delivery address line 1> RETURN
fb <delivery address line 2> RETURN
fb <delivery address line 3> RETURN
and so on up to a maximum of 5 address lines.
Remember that all text inputs must be preceded and followed by
the " character.
The sixth successive use of the fb command will return to
address line 1, the seventh to address line 2, and so on, so
that corrections may be made. If a blank line is required, where
previously text has been written, then type fb " " RETURN.
1.1.2 If CUSTOMER ORDER REFERENCE IS GIVEN
Type:
fca "<order reference>" RETURN
RCSL No. 42-i 0825
Page4 of37\f
If an error is discovered in the entered information then retype
the command with the correct information.
If an error message appears on the terminal display then, if
necessary, see Section 1.4 Error Messages, under the appropriate
error no.
1.1.3 If DELIVERY CODE IS GIVEN
Type:
fcb "<delivery code>" RETURN
or:
fcb : "<delivery text>" RETURN
Remember that all text inputs must be preceded and followed by
the " character.
If an error is discovered in the entered information then retype
the command with the correct information.
If an error message appears on the terminal display then, if
necessary, see Section 1.4 Error Messages, under the appropriate
error no.
The delivery code is a numerical code (01-10) covering a selec-
tion of standard texts. If none of these standard texts can be
applied to the present invoice then a delivery text of maximum
35 characters can be used instead.
1.1.4 If TERMS OF PAYMENT ARE GIVEN
Type:
fcc <terms of payment code> "<terms of payment text>"
Remember that all text inputs must be preceded and followed by
the " character.
If an error is discovered in the entered information then retype
the command with the correct information.
If an error message appears on the terminal display then, if
necessary, see Section 1.4 Error Messages, under the appropriate
error no.
RCSL No. 42-i 0825
Page 5 of37\f
The terms of payment code is a numeric code covering a selection
of standard texts. If none of these4 standard texts can be
applied to the present invoice then a terms of payment text of
maximum 35 characters can be used instead.
1.1.5 CODIFICATION MUST BE GIVEN
Type:
fcd "<subsidiary code>"<salesman no.><sale type><trade><media>
<district> RETURN
If an error is discovered in the entered information then retype
the command with the correct information.
If an error message appears on the terminal display then, if
necessary, see Section 1.4 Error Messages, under the appropriate
error no.
1.1.6 If OUR REFERENCE is given
Type:
fce <our reference> RETURN
If an error is discovered in the entered information then retype
the command with the correct information.
<our reference> is a text of maximum 26 characters.
1.1.7 TO DISPLAY THE INVOICE HEAD
Type:
fc? RETURN
The complete invoice head will now be shown on the terminal
display. If mistakes are observed in the displayed invoice head
then they can be corrected simply by typing in the appropriate
command with the correct variables.
N_o_t_e_:_ BE CAREFUL whencorrecting. Make sure that optional
variables in a command are not forgotten when
corrections are made.
1.1.8 CLOSING ENTRIES TO THE INVOICE HEAD MUST BE MADE
Type:
fch "<date>" RETURN
If an error message appears on the terminal display then, if necess-
ary, see Section 1.4 Error Messages, under the appropriate errorno.
RCSL No. 42-i 0825
Page 6 of37\f
This command closes entries to the invoice head and hereafter, if
corrections are necessary, the command fx must be used. The fx
command will cancel the present invoice.
The variable date must be entered if a different invoice date than
that given automatically by the RC 6000 System is required.
1.2 Invoice Body
Examine the order form:
1.2.1 Enter the ARTICLE LINES
Type:
fd <quantity> <article no.> "<unit price>" "<article text>"
"<free of charge>" RETURN
Normally, it will only be necessary to enter quantity and article
no. as the other variables (unit price, article text, free of
charge) are optional. If these variables are to be used, it will be
indicated on the order form.
If "free of charge" is required then simply type an "f" character
for this variable.
Remember that all text inputs must be preceded and followed by a "
character.
If the sales type from the codification is <= 4 then unit price 1
from the article file is used, if not unit price 2 is used.
If an error message appears on the terminal display then, if
necessary, see Section 1.4 Error Messages, under the appropriate
error no.
1.2.2 A_s_c_e_r_t_a_i_n_ _t_y_p_e_ _o_f_ _d_i_s_c_o_u_n_t_/_s_u_r_c_h_a_r_g_e_ _r_e_q_u_i_r_e_d_
There are 4 types of discount/surcharge line:
1. Visible line - percentwise adjustment
2. Invisible line -percentwise adjustment
3. Visible line - sum adjustment
4. Invisible line - sum adjustment
A visible line is a discout/surcharge line which will appear on the
invoice.
RCSL No. 42-i 0825
Page7 of37\f
An invisible line is a discount/surcharge line which does not
itself appear on the invoice, but modifies the last entered article
line.
Instructions as to which type of discount/surcharge line should be
applied can be found on the order form. If no instructions are
given then use the visible percentwise adjustment.
1.2.2.1 If A VISIBLE PERCENTWISE ADJUSTMENT IS REQUIRED
Type:
fe <account no.> <percent> "<account text>" RETURN
The variables account no. and percent will be found on the order
form.
Remember that all text inputs must be preceded and followed by a "
character.
The fe command may be used at any point on the invoice body. If
this command is used after an article line then a percentage
discount/surcharge will be given on the price of that article. If,
however, this command is used after a subtotlal line then a
percentage discount/surcharge is given on all the articles included
in the subtotal.
If an error is discovered in the entered information then use the
fl command to cancel the line and then retype the fe command.
If an error message appears on the terminal display then, if
necessary, see Section 1.4 Error Messages, under the appropriate
error no.
1.2.2.2 If AN INVISIBLE PERCENTWISE ADJUSTMENT IS REQUIRED
Type:
ff <account no.> <percent> RETURN
The variables account no. and percent will be found on the order
form.
If an error is discovered in the entered information then use the
fl or fx command to cancel the line and then retype the ff command.
If an error message appears on the terminal display then, if
necessary, see Section 1.4 Error Messages, under the appropriate
error no.
RCSL No. 42-i 0825
Page 8 of37\f
1.2.2.3 If A VISIBLE SUM ADJUSTMENT IS REQUIRED
Type:
fg <account no.> <sum> "<account text>" RETURN
The variables account no. and sum will be found on the order form.
The fg command may be used at any point on the invoice body.
If an error is discovered in the entered information then use the
fl or fx command to cancel the last line or the complete invoice.
If an error message appears on the terminal display then, if
necessary, see Section 1.4 Error Messages, under the appropriate
error no.
1.2.2.4 If AN INVISIBLE SUM ADJUSTMENT IS REQUIRED
Type:
fh <account no.> <sum> RETURN
The variables account no. and sum will be found on the order form.
The fh command may be used at any point on the invoice body, but
may only be used in special circumstances.
If an error is discovered in the entered information then use the
fl or fx command to cancel the last line or the complete invoice.
If an error message appears on the terminal display then, if
necessary, see Section 1.4 Error Messages, under the appropriate
error no.
1.2.2.5 If A DOUBLE VISIBLE PERCENTWISE ADJUSTMENT IS REQUIRED
Type:
fp <accountno. 1><percent 1><accountno. 2><percent 2>"<text>" RETURN
The variables account nos and percents will be found on the order
form.
The fp-command may be used at any point on the invoice body. If
this command is used after an article line then the percentage
discounts/surcharges will be given on the price of that article.
If, however, this command is used after a subtotal line then the
percentages/discounts are given on all the articles included in the
subtotal.
RCSL No. 42-i 0825
Page 9 of37\f
At the invoice sheet there would be one percentwise adjustment
calculated as the sum of percent 1 and percent 2. The text used is
the text tied up with accountno 1 unless the text variable is used.
Internal in the system it react as if you have typed the command fe
twice with account no. 1 percent 1 and account no. 2 percent 2,
respectively.
1.2.2.6 if V. A. T. IS REQUIRED
Type:
fq "vatcode"
This command produce a fixed subtotal at the invoice followed by a
percentage adjustment with percentage and accountno selected from
company file depending on "vatcode". If vatcode is one or omitted
the percentage in companyfile field 35 and accountno in field 36
are selected. If vatcode is 2 the contend of field 37 and 38 are
used a.s.o.
N_o_t_e_: If an error is discovered in the entered information then use
the fl command twice, first time to cancel the percentage
adjustment and second time to cancel the fixed subtotal.
1.2.3 If A SUBTOTAL LINE IS REQUIRED ON THE INVOICE
Type:
fia "<zero set code>" RETURN
The subtotal will then appear on the terminal display and on the
completed invoice.
If the zero set code = 0 then the subtotal will be set to zero
after display. If the zero set code is omitted then the subtotal
will not be set to zero after display, i.e. type fia RETURN.
If an error is discovered, by the operator, in the entered
information then use the fl command to cancel the line and retype
the fia command.
If an error message appears on the terminal display then, if
necessary, see Section 1.4 Error Messages, under the appropriate
error no.
RCSL No. 42-i 0825
Page 10 of37\f
1.2.4 If A SUBTOTAL IS REQUIRED ON THE DISPLAY ONLY
Type:
fib <zero set code> RETURN
The subtotal will then appear on the terminal display only.
If the zero set code = 0 then the subtotal will be set to zero
after display. If the zero set code is omitted the subtotal will
not be set to zero.
N_o_t_e_._: Zero-setting at this point will, in practice, only be
made if a subtotal must be accumulated from this point.
If an error is discovered in the entered information then use the
fl command to cancel the last line and retype the fib command.
If an error message appears on the terminal display then, if
necessary, see Section 1.4 Error Messages, under the appropriate
error no.
1.2.5 If A FIXED SUBTOTAL IS REQUIRED ON THE INVOICE
Type:
fja RETURN
The fixed subtotal will then appear on the terminal display and on
the completed invoice. Fixed subtotal is set to zero at the start
of a new invoice.
This fixed subtotal command can be used, for example, to
accumulate the total on the invoice before VAT. This amount is then
used as the basis of the VAT calculation.
If an error message appears on the terminal display then, if
necessary, see Section 1.4 Error Messages, under the appropriate
error no.
1.2.6 If A FIXED SUBTOTAL IS REQUIRED ON THE DISPLAY ONLY
Type:
fjb RETURN
The fixed subtotal will then appear on the terminal display only.
This facility is intended only for checking purposes.
RCSL No. 42-i 0825
Page 11 of37\f
If an error message appears on the terminal display then, if
necessary, see Section 1.4 Error Messages, under the appropriate
error no.
1.2.7 If A TEXT IS REQUIRED IN THE DESCRIPTION SECTION OF THE INVOICE
Type:
fk "<textno>" "<text>" RETURN
If the variable <textno> is used then the text with that number and
texttype 5 is fetched from the textfile.
If only the variable <text> is used then the entered text is used.
If neither <textno> or <text> are used, then there would be a blank
line on the invoice.
The text can contain up to a maximum of 32 characters per line.
Remember that all text inputs must be preceded and followed by a "
character.
If an error is discovered in the entered information then use the
fl command to cancel the last line and retype the fk command.
If an error message appears on the terminal display then, if
necessary, see Section 1.4 Error Messages, under the appropriate
error no.
1.2.8 If A VISUAL CHECK OF THE INVOICE BODY WITH VISIBLE LINES
ONLY IS REQUIRED
Type:
f? <from line no.> <to line no.> RETURN
The corresponding visible lines from the invoice body will now
appear on the terminal display. As a general rule 20 lines can be
simultaneously displayed on the terminal display. Use this command
with the variables set at 1 20, 21 40, 41 60 etc., until the
required area on the invoice is found.
1.2.9 If A VISUAL CHECK OF THE INVOICE, WITH BOTH VISIBLE AND
INVISIBLE LINES, IS REQUIRED
Type:
f?? <from line no.> <to line no.> RETURN
The corresponding visible and invisible lines from the invoice will
now appear on the terminal display. As a general rule 20 lines can
RCSL No. 42-i 0825
Page 12 of37\f
be simultaneously displayed on the terminal display. Use this
command with the variables set at 1 20, 21 40, 41 60 etc., until
the required area on the invoice is found.
1.2.10 If CORRECTIONS TO LINES ENTERED TO THE INVOICE BODY ARE
NECESSARY
Type:
fl RETURN
The result of the last entered command will be cancelled be it an
article line, a discount/surcharge line, a subtotal line or a text
line.
Successive use of the fl command will cancel lines from the bottom
of the invoice body.
Before cancelling lines in the invoice body, make sure that the
effect of cancelling the lines can be seen on the terminal display.
Use the f?? command, if necessary.
1.2.11 If CANCELLING OF THE COMPLETE INVOICE IS NECESSARY
Type:
fx RETURN
1.2.12 If AN INVOICE TEST-PRINT IS REQUIRED
Type:
fo RETURN
The printer will then write out an invoice layout pattern so that a
text alignment check on the invoice can be made.
1.2.13 CLOSE THE INVOICE
Type:
fn "<no of labels>" "<text>" RETURN
The variable <no of labels> is optional and need only be typed in
if delivery address labels are required for delivery.
<text> can contain up to 46 characters.
The invoice is now complete and will be written out on the printer.
RCSL No. 42-i 0825
Page 13 of37\f
N_o_t_e_: If the text
change diskette
appears on terminal display after fn command then the flexible disc
is full. The program will now stop. The following procedure should
then be followed:
1) Remove the flexible disc.
2) Insert new flexible disc which has already been named with
flxdopeprogram (see Section 5) and has color green.
3) Repress WRITE PROTECT pushbutton. Light must be out.
4) Type:
da <flxname> RETURN
This tells the postings program what the flexible disc is
called.<flxname> should appear on the flexible disc cover.
5)When the # character appears proceed with invoicing program,
i.e. type fn again.
N_o_t_e_: The command db can be used at any time to remove a
flexibledisc before it is full, if necessary, I.e.,
Type:
db RETURN
The flexible disc can now be removed.
1.3 Summary of Invoicing Commands
The following pages are a summary of all the commands associated
with invoicing. The variables belonging to the various commands are
written in the correct order with information on the upper and
lower limits which these variables can take in practice. The
description section states the function of the command and the
comments section informs of any special requirements which may be
valid for a particular command or its variables.
RCSL No. 42-i 0825
Page 14 of37\f
1.4 Error Messages - Invoicing
Error messages will have the following general appearance:
error <error message no.>
<error message text line 1>
"<error message text line 2>"
"<error message text line 3>"
"<figure 1>"
"<figure 2>"
"<figure 3>"
The following is a numerical list of error messages with further
information together with suggestions for remedial action.
E_r_r_o_r_ _M_e_s_a_g_e_ _N_o_._ _1_._
Text: Payment code does not exist in companyfile.
Information:The number of paymentcodes created in company
file, and the paymentcode just put in or
fetched from customerfile.
Cause: The number just entered with the fcc command
or the paymentcode fetchedfrom the customer
identidified with the customer number in faa-
command does not correspond to any payment
condition in company file.
Remedial action: Put in an existing payment condition code or
a payment condition text with the commandfcc.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _2_
Text: Sale account does not exist in account file.
Information: Sales account from companyfile.
Cause: Lack of correspondence between Sale account
in Company File and the sale account existing
in the account file.
Remedial action: Cancel the current invoice and wait until the
files are corrected by means of File
Maintenance program before invoicing again.
RCSL No. 42-i 0825
Page 19 of37\f
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _3_
Text: Command context incorrect.
Information: None.
Cause: A command used where it may not be used, e.g.
a command to the invoice head after the
invoice head has been closed with the fce
command.
Remedial action: Use an allowed command or cancel the current
invoice.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _4_
Text: Article unknown.
Information: None.
Cause: Article with entered article no. does not
exist in article file because:
a) article no. entered incorrectly
b) article no. incorrectly written on order
form
c) article no. not yet entered in article
file.
Remedial action: a) Invoice after correction.
b) Return order form to order administration.
c) Enter article no. into article file.
RCSL No. 42-i 0825
Page 20 of37\f
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _5_
Text: Article name does not exist in textfile.
Information: None.
Cause: The article exists in the article file, but
the article description does not exist in the
text file.
Remedial action: Enter article name together with the command
and make a note of the fact that the article
name must be entered the next time file
maintenance is carried out.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _6_
Text: Insufficient space for article name or
account text on this invoice sheet.
Information: The number of lines left on the actual
invoice sheet.
Cause: This error message can only occur if an
article or account text required more than
one line on the invoice, and this article or
account occurs at the bottom of an invoice
sheet.
Remedial action: 1) Retype the command and use the optional
text parameter to type in an abbreviated
article name or account text.
2) Start a new invoice sheet.
RCSL No. 42-i 0825
Page21 of37\f
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _7_
Text: No more room on this invoice.
Information: None.
Cause: All the available memory space allocated to
an invoice is occupied. This memory space con-
tains the "invisible lines" (i.e. those which
do not appear on the invoice) as well as the
"visible lines" (i.e. those which are printed
out on the invoice). It is, therefore, not
possible to give the maximum no. of sheets
one invoice may contain, as this will depend
on the complexity of the invoice.
Remedial action: This error message occurs prematurely, so
that there is always sufficient room for a
subtotal line, a surcharge/discount line, and
a V.A.T. line.
The necessary lines should be entered and the
invoice closed. The rest of the order should
be written on a new invoice to the same customer.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _8_
Text: Account no. unknown.
Information: None.
Cause: The account no. used in the
surcharge/discount line does not exist in the
account file.
a) Is the account no. entered correctly?
b) Is the correct account no. used?
c) Has the account number been entered to the
account file?
Remedial action: a) Enter the command once again with the
correct account no.
b) and c) Cancel the current invoice and keep
the order form until the account file is
brought up-to-date or the account no. is
corrected.
RCSL No. 42-i 0825
Page 22 of 37\f
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _9_
Text: Both customerno and debitorno have been typed
in, or debitorno and invoice type less 2 have
been given.
Information: None.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _1_0_
Text: Salesman/salestype incorrect.
Information: None.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _1_1_
Text: Account for invoice total or account for
rounding of coins does not exist in the
account file. Invoice is now cancelled.
Information: Account - from company file.
Cause: Lack of agreement between codes in company
file and account file.
Remedial action: The current invoice is cancelled automatically.
Terminate the run in the normal way. Do not
attempt to invoice before the files are
corrected by means of the file maintenance
program.
RCSL No. 42-i 0825
Page 23 of 37
\f
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _1_2_
Text: Incorrect remainder 7 check.
Information: None.
Cause: The entered customer no cannot exist because
the remainder 7 check is incorrect.
Remedial action: Enter the command once more with the correct
number, or return the order form to order
administration for correction of thecustomer
no.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _1_3_
Text: Delivery code and delivery text have both been
omitted.
Information: None.
Cause: Either delivery code or delivery text must be
typed in. Neither of these have been entered.
Remedial action: Type one of the commands and the corresponding
parameter or omit them. If the command is
omitted the corresponding area on the invoice
will remain blank.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _1_4_
Text: Terms of payment code out of range.
Information: None.
Cause: Terms of payment code greater than the limit in
company file.
Remedial action: Use an existing code.
RCSL No. 42-i 0825
Page 24 of 37 \f
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _1_5_
Text: Salesman/trade incorrect.
Information: None.
Cause: Salesman/trade combination does not exist in
codification file.
Remedial action: If the codes are correctly entered (i.e. the
same as those on the order form), return the
order form to order administration. Either
the order form is incorrectly filled out or
the codification file is incorrect.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _1_6_
Text: Salesman/media incorrect.
Information: None.
Cause: Salesman/media combination does not exist in
codification file.
Remedial action: If the codes entered are the same as those on
the order form then return the order form to
order administration.Either the order form is
incorrectly filled out or the codification
file is incorrect.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _1_7_
Text: Salesman/district incorrect.
Information: None.
Cause: Salesman/district combination does not exist in
codification file.
Remedial action: If the codes are correctly entered (i.e. the
same as those on the order form), return the
order form to order administration. Either
the order form is incorrectly filled out or
the codification file is incorrect.
RCSL No. 42-i 0825
Page 25 of 37\f
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _1_8_
Text: Trade/sale Type/media incorrect.
Information: None.
Cause: If trade code is 0 or media code is 0 or both
are 0, then sale type cannot take the values
1, 2, 5 or 6.
Remedial action:Chech codification on order form. If this is
typed in correctly then return order form to
order administration.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _1_9_
Text: Salesman does not exist in statistics file.
Information: None.
Cause: The salesman exists in the codification file,
but not in the statistics file.
Remedial action: Cancel the invoice and correct the files.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _2_0_
Text: Named commands to invoice head required.
Information: <command>
<command>
Cause: After the closing entry to the invoice head,
the commands written out are found to be
missing.
Remedial action: Type the required commands with the
corresponding parameters.
RCSL No. 42-i 0825
Page 26 of 37\f
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _2_1_
Text: Information from sales statistics file has
disappeared.
Information: <salesman no.>
Cause: Program or hardware error. Failure to comply
with installation requirements.
Remedial action: Check sales statistics file.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _2_2_
Text: Incorrect invoice type.
Information: None.
Cause: Only 0 Normal invoice
1 Internal invoice
2 Internal credit note
3 Internal credit note
8 External credit note
9 External credit note
are allowed.
Remedial action: Retype the command with the correct invoice
type, if possible; if not, cancel the invoice.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _2_3_
Text: Date must be in same calendar year as system"s
date.
Information: <system date>
Cause: The date typed in is not in the same year as
the system"s date, i.e. the date entered when
the system is started.
Remedial action: Enter the correct date or interrupt invoicing
routine and start system up with the appropriate
date.
RCSL No. 42-i 0825
Page 27 of 37
\f
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _2_4_
Text: Post-dated invoice.
Information: <system date>
Cause: The entered date must not be post-dated
relative to the system date.
Remedial action: Retype the command with the correct date.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _2_5_
Text: Incorrect date.
Information: None.
Cause: The entered date does not comply with the rules
for dates (e.g. 310476 or 401399 are incorrect).
The correct format is:
<dat> <month> <year>
e.g. 130776.
Remedial action: Retype command with the correct date.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _2_6_
Text: Article does not exist in article file.
Information: None.
Cause: Error message occurs with command v? "display
article".
Remedial action:1) Check that article no. is typed correctly in.
Or:
2) Note that this article must be opened when
File Maintenance program is used.
RCSL No. 42-i 0825
Page 28 of 37\f
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _2_7_
Text: Customer does not exist in customer file.
Information: None.
Remedial action: 1) Check that customer no. is typed correctly
in. Or:
2) Note that this customer no. must be opened
when File Maintenance program is used.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _2_8_
Text: Printer error.
Information: None.
Cause: 1) Paper empty
2) Paper creased
3) Printer not selected
4) Printer not switched on.
.
Remedial action: 1) Put more paper in printer
2) Replace creased paper
3) Select printer
4) Switch printer on.
If an invoice remain in the system, it will
be output together with the next output.
See also instructions for your printer in
Section 8 Operation of Peripheral Equipment.
RCSL No. 42-i 0825
Page 29 of 37\f
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _2_9_
Text: Printer testprint error.
Information: None.
Cause: 1) Paper empty
2) Paper creased
3) Printer not selected
4) Printer not switched on.
Remedial action: 1) Put paper in printer
2) Replace creased paper
3) Select printer
4) Switch printer on.
See also instructions for your printer in
Section 8 Operation of Peripheral Equipment.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _3_0_
Text: Standard text does not exist in textfile.
Information: None
Cause: Text with entered textno. does not exist in
textfile, because
a) text no. entered incorrectly
b) text no. incorrectly written on order form
c) text no. not yet entered in the text file.
Remedial action: a) put in textno correct
b) return order form to order administration
c) enter the text manualy to the invoice and
enter the text in textfile by means of the
maintenance program when invoicing is
finished.
RCSL No. 42-i 0825
Page 30 of 37\f
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _3_1_
Text: Hard error on terminal.
Information: None.
Cause: Power supply to terminal cut off,
Connection faulty or cut off,
Hardware error.
The error message appears on the main
terminal. If the program is performing an
invoicing routine the invoice currently under
preparation at the terminal will be
cancelled.
Remedial action: Try to start the terminal with the attention
key (ESC <process name>).
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _3_2_
Text: Unknown command.
Information: None
Cause: An unacceptable command has been typed, in
error.
Remedial action: Avoid the use of this command. Use an
acceptable command.
RCSL No. 42-i 0825
Page 31 of 37\f
T_ E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _3_3_
Text: Account no 1 does not exist in account file.
Information: None.
Cause: Account with the first entered account no.
does not exist in account file, because:
a) account no. entered incorrectly
b) account no. incorrectly written on order
form
c) account no. not yet entered in account
file.
Remedial action: a) enter account no. correct
b) return order form to order administration
c) enter account no. into account file by
means of the maintenance program.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _3_4_
Text: Text in numeric field.
Information: None.
Cause: An attempt to put text in a numeric field of
company file.
Remedial action: Type the correct field no. or correct
information.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _3_5_
Text: Entered value is out of range.
Information: None.
Cause: A value which lies outside of the specified
min-max limits for the chosen field.
Remedial action: Type the correct field no., or type an
appropriate value in the field.
RCSL No. 42-i 0825
Page 32 of 37\f
T_ E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _3_6_
Text: Numeric value in text field.
Information: None.
Cause: An attempt to put in a numeric value in a
text field of company file.
Remedial action: Type the correct field no., - correct
information or use the right command.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _3_7_
Text: Terminal identification does not exist.
Information: None.
Cause: Occurs when the "luk" command is used. The
identification text used has not been used
before, or the terminal in question is
already closed.
Remedial action:
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _3_8_
Text: Debtor is not inserted in debtorfile.
Information: Code for reason.
Cause: Depending on code
2: A debtor with the same debtor no.
(invoice no.) already in file.
3: Too expensive in running time (will only
happen in very extreme situations).
4: File is full.
5: Length error (program or hardware error).
6: No buffer (will only occur if an extreme
large number of debtors are created in one
run of the program.
Remedial action: The invoice is printed out and written on the
floppy. Various files are updated, but the
debtor is not inserted in the debtorfile.
RCSL No. 42-i 0825
Page 33 of 37\f
T_ E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _3_9_
Text: Account desappeared from account file.
Information: <Account no.>
Cause: Program or hardware error.
Remedial action: The line will be automatically set to zero,
but the opposite entry in the account file
does not occur.
Check total account file.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _4_0_
Text: Account no. 2 does not exist in account file.
Information: None.
Cause: Analogous to error 33.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _4_1_
Text: Terminal identification text reserved.
Information: None.
Cause: Another terminal is using the same
identification text.
Remedial action: Choose another identification text.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _4_2_
Text: No more lines to cancel.
Information: None.
Cause: No lines in invoice body.
RCSL No. 42-i 0825
Page 34 of 37\f
T_ E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _4_5_
Text: Customer disappeared during the invoicing
process.
Information: Number of the disappeared customer.
Cause: Program or hardware error.
Error Messages No. 43, 44, 46, 47 and 48.
See Postings program.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _4_9_
Text: Pct. or sum equal zero.
Information: None.
Cause: An attempt to give a discount at 0. Possible
a space between the minus sign and the
figures.
E_x_a_m_p_l_e_:_
fe 7777770 - 1000 would give this error. The
correct way typing this command is
fe 7777770 -1000
Remedial action: Retype the command in the correct way.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _5_0_
Text: Delivery code does not exist in the company
file.
Information: The number of delivery codes opened in the
company file.
Cause: Analogous to error message no. 1.
RCSL No. 42-i 0825
Page 35 of 37\f
T_ E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _2_0_7_
Text: VAT-percent not created in company file.
Information: None.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _2_5_1_
Text: Debtor disappeared during the invoicing
process.
Information: The number of the disappeared debtor.
Cause: Possibly program or hardware error or access
to the same debtor from to terminals.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _2_5_2_
Text: No room for additional invoice references on
the customer.
Information: None.
Cause: The customer has got more than 28 not paid
invoices.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _2_5_3_
Text: No room for additional invoice references on
the customer.
Information: None.
Cause: As error message 252, but invoicing from to
terminals to the same customer.
RCSL No. 42-i 0825
Page 36 of 37\f
T_ E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _2_5_4_
Text: No sale to this customer.
Information: None.
Cause: There is a mark for no further sale on the
customer record.
E_r_r_o_r_ _M_e_s_s_a_g_e_ _N_o_._ _3_0_3_
Text: Debtor does not exist in debtorfile.
RCSL No. 42-i 0825
Page 37 of 37
\f
Program Name: CREATEFILE Process Name: .....................
1.0 Introduction
The following describes the procedure from the loading of the
program (see Section 6.2) to the point where the program can be
operated. The actual operation of the program CREATE FILE is
described in sections 1.1 of this appendix.
P_r_o_g_r_a_m_ _I_n_i_t_i_a_l_i_z_a_t_i_o_n_
N_o_t_e_: The following procedure can only be performed from the
"process owner terminal", i.e. that terminal where the
"process name" in Section 5.2.1 was originally entered.
1) When the command to load the program has been given as
describedin Section 6.2.1 the following will appear on the
terminal display.
#createfile
input std. file number and file size or
special file name. input 0 if stop
#
2) Proceed to Section 1.1 of this appendix.
R_e_m_o_v_i_n_g_ _t_h_e_ _C_R_E_A_T_E_ _F_I_L_E_ _P_r_o_g_r_a_m_
1) Type:
0
The following will appear on the terminal display:
end <number>
#
Hereafter a new program can be loaded as described in Section
5.2.1.
RCSL No. 42-i 0828
Page 1 of4\f
1.1 Procedure
1) Calculate the required file size in segments as follows:
File 1 - Article File
Number of articles x 20/512+20%
File 2 - Customer File
Number of customers x 200/512+20%
File 3 - Account File
Number of accounts x 40/512+20%
File 4 - Codification Check File
Number of keys x 4/512+20%
File 5 - Text File
Number of texts x 232/512+20%
File 8 - Statistics File
Number of salesmen x 52/512+20%
When these calculations have been made add 2-3 segments to
each to allow room for file headings.
2) Type each file no. and file size (no. of segments) as
instructed by the RC 6000 system (see 7.0 Introduction step
(1)). If we use the previous example of an account file
(file no. 3) requiring 8 segments, then
Type:
3 8 RETURN
Or, more generally,
Type:
<file no.><file size> RETURN
The following will now appear on the terminal display:
start create file : <file name>
4) Wait approximately 3 minutes until the following appears on
the terminal display:
RCSL No. 42-i 0828
Page 2 of4\f
end create
input std. file number and file size or
special file name . input 0 if stop
#
5) If <file size> = 0 is typed for a particular file no. then the
file will be given a standard file size.
If this method is used then the files will be expanded auto-
matically when required during use of the MAINTAIN program,
i.e. the following text will appear on the terminal display:
start reorg. filename : <filename>
Wait approximately 3 minutes until the following appears on
the terminal display:
end reorg.
#
Now continue with MAINTAIN program.
If you want to put in new records in a file, it is necessary that
the file contains some free space. When the file is filled up,
it is reorganized, that means, that the records are spread over a
greater area, so that there are about 25% free space between them.
To save room at the disc, it is possible to compress the files
after updating so that the records are placed close one after
another. That is done with the program compress, - see below. If
you wantto reorganize the file, you can use the program
reorgfile.
The calls of reorgfile and compress is done so:
reorgfile
#RETURN
compress
type std filenumber
type 0 to stop
#5 RETURN
RCSL No. 42-i 0828
Page 3 of4\f
reorgfile
start :textreg.
compress
reorgfile
end
compress
type std number
type 0 to stop
# 0 RETURN
END XX
#
RCSL No. 42-i 0828
Page 4 of4\f
Editing Commands
A complete line can be written on the terminal display without
the RC 6000 acting on the command. The RC 6000 will first react
when the RETURN key is depressed.
It is therefore possible to correct typing errors before the
RETURN key is depressed.
The line editing commands are the RUB OUT and LIND FEED keys.
Pressing RUB OUT will delete the last typed character, whereas
pressing LINE FEED will delete the complete line. When RUB OUT
is depressed the & character will appear on the terminal display,
and when LINE FEED is depressed the % character will appear on
the terminal display.
E_x_a_m_p_l_e_ _1_
Type: abcd RUB OUT efgh RUB OUT RUB OUT RUB OUT i RETURN
The RC 6000 will read the line as follows:
abcei
E_x_a_m_p_l_e_ _2_
Type: abcd LINE FEED RETURN
The RC 6000 will read a blank line.
E_x_a_m_p_l_e_ _3_
Type: abcd LINE FEED efg RETURN
The RC 6000 will read the line as follows:
efg
N_o_t_e_:_ A common error message is ! syntax
This indicates that an error has been made during the typing in
of a command or its variables. It could for example be a spelling
error. The exclamation mark (!) appears almost directly under the
character in error. When a syntax error appears the command has
not been accepted, therefore retype the command correctly.
RCSL No. 42-i 0422
Page 1 of 1\f
\f
«eof»