80-Bus News

  

September-October 1983, Volume 2, Issue 5











Page 20 of 67











20

There are also three special functions to extract numeric values from a Field string. They are:

CVI = Convert String to Integer number. cvs = Convert String to Single Precision number. CVD = Convert String to Double Precision number.

For example:

20 DEFDBL A-H

80 OPEN ....

90 FIELD£1,8 AS NUMBERS, etc

130 GET£1,6 ‘ie; READ record number 6 140 NUM=CVD(NUMBER$ )

150 ete

Here record number 6 is read and the Field ‘NUMBER$’ is converted into a Double Precision value that is stored in variable ‘’NUM’ for further processing. Note the declaration of the precision of numeric variables in 20. The main advantage of the use of CV and MK functions is that less space is required in the records, and on disk.

EXTENDED FIELDS and ARRAYS.

Tt is often necessary to store a lot of Data in the Fields of one Record. For example the amount spent per month on Petrol. It would be very tedious to have to type in something like ....., 4 AS JAN$S, 4 AS FEBS etc. (It is also convenient to restrict line lengths to less than 80 characters to allow as much use as possible of the extended screen editing features of SYS/GEMINI CP/M). Fortunately it is possible to continue FIFLD statements on to several lines, and to use FOR-NEXT loops in their construction:–

10 DIM MTH$(11),DATESS(11),BALANCES(11),etc 20 MTH$(0)="JAN" :MTH$(1)="FEB": ete

70 OPEN "R",£1, "SALARY. DAT", 214

80 FOR X=0 TO 11

90 FIELD£1,20 AS NAME$,24 AS STREET$S,18 AS TOWN$S,8 AS POSTCODES

100 FIELD£1,70 AS DUMMY$,(12*X) AS SPACE$,4 AS BALANCES (X),8 AS DATESS(X) 110 NEXT X

This example is not so easy to understand.

Line 20 – The names of the months are stored in an array so that they can be printed using a FOR-NEXT loop as desired later.

The file is OPEN’ed. It is assumed that it stores the Monthly salary and Date of payment for the person named in the record. The Record is 214 bytes long as will be shown.

Sets up Fields for the self evident bits of Data.There is not sufficient room in 90 to continue unless a non-screen editable line is entered. The Fields in line 90 occupy 70 bytes.

The first Field is a ‘dummy’ to ensure that all the Fields in line 100 start later than Fields in line 90.As long as no Data is LSET or RSET into the Field DUMMY$ then Data in the Fields of line 90 is not corrupted. SPACE$ is another dummy, used as described below.

Continue the loop until 12 ‘BALANCE’ and ‘DATE’ fields are set.

Line 70

Line 90

Line 100

Line 110


This is an OCR’d version of the scanned page and likely contains recognition errors.











Page 20 of 67