home *** CD-ROM | disk | FTP | other *** search
- {$C-,V-,U-}
- PROGRAM ASCII_To_Wordstar_Conversion;
- CONST
- Lf : CHAR = #10;
- Cr : CHAR = #13;
- EOF_FileMark : CHAR = #26;
- TYPE
- Filvar=STRING[14];
- LineOfText=STRING[255];
- VAR
- SourceFile,DestinationFile:Filvar;
- ASCII_Source:TEXT;
- WS_Target:FILE OF CHAR;
- EditLine:LineOfText;
- {============================================================================}
- FUNCTION FileExists(Name_of_File:FilVar):BOOLEAN;
- VAR
- The_File:FILE;
- BEGIN
- Assign(The_File,Name_of_File);
- {$I-}
- Reset(The_File);
- FileExists:=(IOResult=0);
- {$I+};
- Close(The_File);
- END;
- {============================================================================}
- FUNCTION NewValue(Letter:CHAR):CHAR;
- VAR
- Num:INTEGER;
- BEGIN
- If Ord(Letter) < 128 then NewValue:=Chr(Ord(Letter) + 128) else NewValue:=Letter;
- END;
- {============================================================================}
- PROCEDURE Enter_File_Names(VAR Source,Target:Filvar);
- VAR
- TempSource,TempTarget:FILVAR;
- BEGIN
- Repeat
- Writeln;
- Write('Enter the name of your source file : ');
- Readln(TempSource);
- Writeln;
- Write('Enter the name of your target file : ');
- Readln(TempTarget);
- Until (FileExists(TempSource) AND Not FileExists(TempTarget));
- Source:=TempSource;
- Target:=TempTarget;
- END;
- {============================================================================}
- PROCEDURE Reconfigure_Line(Sentence:LineOfText);
- CONST
- Blanks : Set Of Char = [#32,#160];
- SoftReturn : CHAR = #141;
- VAR
- Len,Index:INTEGER;
- BEGIN
- Len:=Length(Sentence);
- For Index:= 1 to Len do
- Case Sentence[Index] of
- #13 : Sentence[Index]:=#141;
- #45 : If Index = Len then Sentence[Index]:=#31;
- #32 : If Sentence[Index-1] in [#32,#160] then Sentence[Index]:=#160
- else Sentence[Index-1]:=NewValue(Sentence[Index-1]);
- #128..#255 : Sentence[Index]:=#0;
- End;
- For Index:=1 to Len do If Sentence[Index] <> #0 then Write(WS_Target,Sentence[Index]);
- Write(WS_Target,SoftReturn,Lf);
- END;
- {============================================================================}
- BEGIN
- Enter_File_Names(SourceFile,DestinationFile);
- Assign(ASCII_Source,SourceFile);
- Reset(ASCII_Source);
- Assign(WS_Target,DestinationFile);
- Rewrite(WS_Target);
- Writeln;
- Writeln('A dot will appear for each source line that is processed.');
- Writeln;
- Write('>>> Standby. Conversion in progress...');
- While Not EOF(ASCII_Source) do
- Begin
- Readln(ASCII_Source,EditLine);
- Write('.');
- Sound(1000);
- Delay(10);
- NoSound;
- If EditLine = '' then
- Begin
- Write(WS_Target,Cr);
- Write(WS_Target,Lf);
- End
- Else Reconfigure_Line(EditLine);
- End;
- Write(WS_Target,EOF_FileMark);
- Writeln;
- Writeln;
- Writeln('>>> Finished conversion.');
- Close(WS_Target);
- Close(ASCII_Source);
- END.
-