.sp 1.5i
.ft B
Appendix C: An example
.ft R
.nh
.nf


\h'+10u' 1	\fBprogram\fR factorials(input, output);
\h'+10u' 2	{ This program prints factorials }
\h'+10u' 3
\h'+10u' 4	\fBconst\fR
\h'+10u' 5	        FAC1 = 1;
\h'+10u' 6	\fBvar\fR
\h'+10u' 7	        i : integer;
\h'+10u' 8
\h'+10u' 9	\fBfunction\fR factorial(n : integer) : integer;
10	\fBbegin\fR
11	        \fBif\fR n = FAC1 \fBthen\fR
12	                factorial := FAC1
13	        \fBelse\fR
14	                factorial := n * factorial(n-1);
15	\fBend\fR;
16
17	\fBbegin\fR
18	        write('Give a number : ');
19	        readln(i);
20	        \fBif\fR i < 1 \fBthen\fR
21	                writeln('No factorial')
22	        \fBelse\fR
23	                writeln(factorial(i):1);
24	\fBend\fR.
.bp
.po
.DS
 mes 2,4,4					     loc 16
\&.1						     cal $_wrs
 rom 'factorials.p\(rs000'				     asp 12
i						     lin 19
 bss 4,0,0					     lae input
output						     cal $_rdi
 bss 540,0,0					     asp 4
input						     lfr 4
 bss 540,0,0					     ste i
 exp $factorial					     lae input
 pro $factorial, ?					     cal $_rln
 mes 9,4					     asp 4
 lin 11						     lin 20
 lol 0						     loe i
 loc 1						     loc 1
 cmi 4						     cmi 4
 teq						     tlt
 zeq *1						     zeq *1
 lin 12						     lin 21
 loc 1						    .4
 stl -4						     rom 'No factorial'
 bra *2						     lae output
1						     lae .4
 lin 14						     loc 12
 lol 0						     cal $_wrs
 lol 0						     asp 12
 loc 1						     lae output
 sbi 4						     cal $_wln
 cal $factorial					     asp 4
 asp 4						     bra *2
 lfr 4						    1
 mli 4						     lin 23
 stl -4						     lae output
2						     loe i
 lin 15						     cal $factorial
 mes 3,0,4,0,0					     asp 4
 lol -4						     lfr 4
 ret 4						     loc 1
 end 4						     cal $_wsi
 exp $m_a_i_n				     asp 12
 pro $m_a_i_n, ?				     lae output
 mes 9,0					     cal $_wln
 fil .1						     asp 4
\&.2						    2
 con input, output				     lin 24
 lxl 0						     loc 0
 lae .2						     cal $_hlt
 loc 2						     end 0
 lxa 0						     mes 4,24,'factorials.p\(rs000'
 cal $_ini
 asp 16
 lin 18
\&.3
 rom 'Give a number : '
 lae output
 lae .3
.DE