BEGIN
	CLASS FmtLines;
		HIDDEN ch, main;					! private members;
	BEGIN
		CHARACTER ch;						! communication;

		PROCEDURE main;						! mimic uC++ coroutine main;
		BEGIN
			INTEGER g, b;

			WHILE TRUE DO BEGIN				! for as many characters;
				FOR g := 1 STEP 1 UNTIL 5 DO BEGIN		! groups of 5;
					FOR b := 1 STEP 1 UNTIL 4 DO BEGIN	! blocks of 4;
						OutChar( ch );
						Detach;				! suspend();
					END;
					OutText( "  " );
				END;
				OutImage;					! start newline;
			END;
		END;

		PROCEDURE prt( chp );
			CHARACTER chp;
		BEGIN
			ch := chp;						! communication;
			Call( THIS FmtLines );			! resume();
		END;
		! FmtLines constructor code;
		Detach;								! return to declaration;
		main;								! call main as last line of constructor;
	END FmtLines;
	! program main equivalent;
	REF(FmtLines) fmt;						! objects are references;
	INTEGER i;

	fmt :- NEW FmtLines;
	FOR i := Rank( ' ' ) STEP 1 UNTIL Rank( 'z' ) DO BEGIN
		fmt.prt( Char( i ) );
	END
END;

! Local Variables: ;
! tab-width: 4 ;
! compile-command: "cim Fmt.sim" ;
! End: ;
