'begin'
	'comment'
		321.a60:			oct '90
		Erik Schoenfelder

		This is the
			0. Start with a natural number n.
			1. If n is odd, set n to be 3 * n + 1
			   If n is even, set n to be n / 2
			   Repeat step 1 until n is equal 1.
			2. Print the number of repetitons.
		fun.
		And: Who knows, if this termimates for any n...
	;

	'integer' 'procedure' doit (n);
	'value' n;
	'integer' n;
	'begin'
		'boolean' 'procedure' odd (x);
			'value' x; 'integer' x;
			odd := n 'notequal' (n 'div' 2) * 2;

		'integer' count;

		count := 0;
	do:
		'if' odd (n) 'then'
			n := 3 * n + 1
		'else'
			n := n 'div' 2;

		count := count + 1;
	
		'if' n 'notequal' 1 'then' 'goto' do;

		doit := count;
	'end';


	'integer' i, n, val, max, NN;

	NN := 12;

	vprint ("Hi!\n                n           iterations\n");
	'for' i := 1 'step' 1 'until' NN 'do'
		vprint (i, doit (i));
	vprint ("...");

	vprint ("\nnow looking for maxima:");
	vprint ("\n                n           iterations\n");

	n := 0;  max := -1;
	'for' i := 1 'step' 1 'until' NN 'do' 'begin'
	do:
		n := n + 1;
		val := doit (n);
		'if' val 'notgreater' max 'then' 'goto' do;

		vprint (n, val);
		max := val;
	'end';
	vprint ("...\ndone.")
'end'
