home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / TURBOPAS / ASC_WS.ZIP / ASC-WS.PAS
Encoding:
Pascal/Delphi Source File  |  1985-12-28  |  3.0 KB  |  102 lines

  1. {$C-,V-,U-}
  2. PROGRAM ASCII_To_Wordstar_Conversion;
  3. CONST
  4.   Lf : CHAR = #10;
  5.   Cr : CHAR = #13;
  6.   EOF_FileMark : CHAR = #26;
  7. TYPE
  8.   Filvar=STRING[14];
  9.   LineOfText=STRING[255];
  10. VAR
  11.   SourceFile,DestinationFile:Filvar;
  12.   ASCII_Source:TEXT;
  13.   WS_Target:FILE OF CHAR;
  14.   EditLine:LineOfText;
  15. {============================================================================}
  16. FUNCTION FileExists(Name_of_File:FilVar):BOOLEAN;
  17. VAR
  18.   The_File:FILE;
  19. BEGIN
  20.   Assign(The_File,Name_of_File);
  21.   {$I-}
  22.   Reset(The_File);
  23.   FileExists:=(IOResult=0);
  24.   {$I+};
  25.   Close(The_File);
  26. END;
  27. {============================================================================}
  28. FUNCTION NewValue(Letter:CHAR):CHAR;
  29. VAR
  30.   Num:INTEGER;
  31. BEGIN
  32.   If Ord(Letter) < 128 then NewValue:=Chr(Ord(Letter) + 128) else NewValue:=Letter;
  33. END;
  34. {============================================================================}
  35. PROCEDURE Enter_File_Names(VAR Source,Target:Filvar);
  36. VAR
  37.   TempSource,TempTarget:FILVAR;
  38. BEGIN
  39.   Repeat
  40.     Writeln;
  41.     Write('Enter the name of your source file : ');
  42.     Readln(TempSource);
  43.     Writeln;
  44.     Write('Enter the name of your target file : ');
  45.     Readln(TempTarget);
  46.   Until (FileExists(TempSource) AND Not FileExists(TempTarget));
  47.   Source:=TempSource;
  48.   Target:=TempTarget;
  49. END;
  50. {============================================================================}
  51. PROCEDURE Reconfigure_Line(Sentence:LineOfText);
  52. CONST
  53.   Blanks : Set Of Char = [#32,#160];
  54.   SoftReturn : CHAR = #141;
  55. VAR
  56.   Len,Index:INTEGER;
  57. BEGIN
  58.   Len:=Length(Sentence);
  59.   For Index:= 1 to Len do
  60.     Case Sentence[Index] of
  61.       #13        : Sentence[Index]:=#141;
  62.       #45        : If Index = Len then Sentence[Index]:=#31;
  63.       #32        : If Sentence[Index-1] in [#32,#160] then Sentence[Index]:=#160
  64.                      else Sentence[Index-1]:=NewValue(Sentence[Index-1]);
  65.       #128..#255 : Sentence[Index]:=#0;
  66.     End;
  67.   For Index:=1 to Len do If Sentence[Index] <> #0 then Write(WS_Target,Sentence[Index]);
  68.   Write(WS_Target,SoftReturn,Lf);
  69. END;
  70. {============================================================================}
  71. BEGIN
  72.   Enter_File_Names(SourceFile,DestinationFile);
  73.   Assign(ASCII_Source,SourceFile);
  74.   Reset(ASCII_Source);
  75.   Assign(WS_Target,DestinationFile);
  76.   Rewrite(WS_Target);
  77.   Writeln;
  78.   Writeln('A dot will appear for each source line that is processed.');
  79.   Writeln;
  80.   Write('>>> Standby. Conversion in progress...');
  81.   While Not EOF(ASCII_Source) do
  82.     Begin
  83.       Readln(ASCII_Source,EditLine);
  84.       Write('.');
  85.       Sound(1000);
  86.       Delay(10);
  87.       NoSound;
  88.       If EditLine = '' then
  89.         Begin
  90.           Write(WS_Target,Cr);
  91.           Write(WS_Target,Lf);
  92.         End
  93.         Else Reconfigure_Line(EditLine);
  94.     End;
  95.   Write(WS_Target,EOF_FileMark);
  96.   Writeln;
  97.   Writeln;
  98.   Writeln('>>> Finished conversion.');
  99.   Close(WS_Target);
  100.   Close(ASCII_Source);
  101. END.
  102.