A free-form calculation is coded in columns 8-80. Columns 6-7 must be blank.
In a free-form statement, the operation code does not need to begin in any specific position within columns 8-80. Any extenders must appear immediately after the operation code on the same line, within parentheses. There must be no embedded blanks between the operation code and extenders. Following the operation code and extenders, you specify the Factor 1, Factor 2, and the Result Field operands separated by blanks. If any of these are not required by the operation, you may leave them out. You can freely use blanks and continuation lines in the remainder of the statement. Each statement must end with a semicolon. The remainder of the record after the semicolon must be blank or contain an end-of-line comment.
eval pos = %scan (',': name);
pos = %scan (',': name);
For each record within a free-form calculation block, positions 6 and 7 must be blank.
To indicate the start of total calculations,
code a fixed-form calculation specification with a control level specified
in positions 7-8. The total calculations may be specified using free-form
calculation syntax. Since the free-form calculation specification does not
include a control-level entry, calculations to be performed on specific level
breaks should be conditioned using the statement "IF *INLx;". 
items += 1; 1
CL0 Total TAG 2
IF *INL1; 3
EXCEPT orderTotal;
orders += 1;
totalItems += items;
items = 0;
ENDIF;
*..1....+....2....+....3....+....4....+....5....+....6....+....7...+....
read file; // Get next record
dow not %eof(file); // Keep looping while we have
// a record
if %error;
dsply 'The read failed';
leave;
else;
chain(n) name database data;
time = hours * num_employees
+ overtime_saved;
pos = %scan (',': name);
name = %xlate(upper:lower:name);
exsr handle_record;
read file;
endif;
enddo;
begsr handle_record;
eval(h) time = time + total_hours_array (empno);
temp_hours = total_hours - excess_hours;
record_transaction();
endsr;
You can combine free-form and traditional calculation specifications in the same program, as shown below:
C testb OPEN_ALL flags 10
if *in10;
openAllFiles();
endif;