標準のPascal(ISO7185Assign
)には、プログラマーがファイル変数にある種のファイル名を割り当てることができる手順はありませんでした。TurboPascalおよびその他の派生物にのみ表示されました。
それで...標準に準拠している場合、特定のファイルへのハンドルを開くにはどうすればよいですか?
私が見つけた最も近いものは、このIrie Pascalの例です:
program vowels(f, output);
var
f : file of char;
tot, vow : integer;
c : char;
begin
reset(f);
tot := 0;
vow := 0;
while not eof(f) do
begin
read(f, c);
case c of
'a', 'e', 'i', 'o', 'u',
'A', 'E', 'I', 'O', 'U'
: vow := vow + 1;
otherwise
end;
tot := tot + 1;
end;
writeln('Total characters read = ', tot);
writeln('Vowels read = ', vow)
end.
これは、スタートアップパラメータとしてファイル名を指定できる可能性があることを示しています。これは、IriePascalを使用して機能します。ただし、これをP5で使用しようとすると、これは、私が見つけた最新のコンピューター用の標準準拠のPascalコンパイラーに最も近いはず**** Error: external file unknown 'f '
です。それで、標準的な方法は何でしょうか?それとも、これは実際には標準的な方法であり、P5は何か間違ったことをしていますか?
編集:標準もサンプルを提供します
program copy (f, g);
var f,g : file of real;
begin
reset(f) ; rewrite(g);
while not eof(f) do
begin
g^ := f^ ; get(f) ; put(g)
end
end.
しかし、私はそれをどのコンパイラでも動作させることができませんでした。
Edit2:
このようにそれを行う:
program copy (f, g);
var f,g : file of char;
begin
reset(f) ; rewrite(g);
while not eof(f) do
begin
g^ := f^ ; get(f) ; put(g)
end
end.
入江で問題なく動作し、規格に準拠しています。これを使用して、起動パラメータとしてファイル名を指定できます。
ただし、Marco van de Voortが説明しているように、
ISO 7185には、プログラムがファイル名を指定するための標準的な方法がまったくないため、そのような方法はすでに7185を超えています(バインドはISO 10206、割り当てはUCSD / BP、リセットの2番目のパラメーターはGPCとIの拡張です)他のコンパイラを考えてみてください)。
(ソース)