home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
simtel
/
sigm
/
vols000
/
vol019
/
lstr.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1984-04-29
|
1KB
|
56 lines
(*$I+ [Show me the source code] *)
PROGRAM LONGLINE;
CONST
LINESIZE = 80 ;
TYPE
(*---Pascal/Z needs these TYPE definitions---*)
$STRING0 = STRING 0 ;
$STRING255 = STRING 255 ;
VAR
DONE : BOOLEAN ;
LINE : STRING LINESIZE ;
WORD : STRING 80 ;
(*---PASCAL/Z NEEDS THESE STRING FUNCTIONS---*)
FUNCTION LENGTH(X: $STRING255): INTEGER; EXTERNAL;
FUNCTION INDEX(X,Y :$STRING255): INTEGER; EXTERNAL;
PROCEDURE SETLENGTH(VAR X :$STRING0; Y :INTEGER); EXTERNAL;
(*-------------------------------------------*)
PROCEDURE HEADING;
BEGIN
WRITELN('TYPE ONE WORD AT A TIME AND THIS PROGRAM WILL');
WRITELN('ASSEMBLE THE WORDS INTO LINES OF ',LINESIZE:1, ' WORDS EACH');
WRITELN('TYPE ## TO STOP');
WRITELN;
END;
BEGIN(* MAIN PROGRAM *)
HEADING;
SETLENGTH(WORD,0);
DONE := FALSE;
{---ATTEMPT TO READ THE FIRST WORD---}
WRITE('Enter the first word: ');
READLN(WORD);
WHILE NOT DONE DO
BEGIN
SETLENGTH(LINE,0);
WHILE ( (LENGTH(LINE) + LENGTH(WORD)) < LINESIZE )
AND ( INDEX(WORD, '##')=0 ) DO
BEGIN(* Our Line will be composed of -
WORDS/SPACES/WORDS *)
IF LENGTH(WORD) < LINESIZE THEN APPEND(WORD, ' ');
(*---LINE := LINE + WORD---*)
APPEND( LINE, WORD );
WRITE('Enter the next word: ');
READLN(WORD);
IF WORD = '##' THEN DONE := TRUE;
END(*WHILE*);
WRITELN('Here is your Line:');
WRITELN(LINE)
END(* WHILE NOT DONE *)
END.