Modula-2でプログラミング -- FileFindの制作
2024-11-02


FIleSearche"モジュールを利用した、ファイマッチで指定されたファイル一覧を書き出すプログラム "FileFind"を作ってみました。

使い方は、このようにします。

C0#filefind
arguments>f*.mod *.def
C:FIND.MOD
C:FILEFIND.MOD
C:FILESEAR.MOD
C:CONIO.DEF
C:ADD16.DEF
C:SILLY.DEF
C:FILESEAR.DEF
C:STDFILEI.DEF
C:BDOSSTRU.DEF
C:BASICFIL.DEF
C:CMDARGS.DEF
C:SCREEN.DEF     

探すファイル名は、ファイルマッチを指定できます。複数指定できます。 この引数を受け取るには、以前紹介した自作の"CmdArgs"モジュール を使用しています。

プログラムは、このようになりました。

MODULE FileFind;
FROM InOut IMPORT WriteString,WriteLn;
FROM CmdArgs IMPORT Argc,Argv;
FROM FileSearch IMPORT MakeFileList,DumpFileList;

CONST
        MAXLINE = 128;

VAR
        FileMatch: ARRAY [0..MAXLINE-1] OF CHAR;
        nArgc: CARDINAL;
        NthFile: CARDINAL;

PROCEDURE Usage();
BEGIN
        WriteString('Usage: filefind filematch');WriteLn;
END Usage;

BEGIN
        nArgc := Argc();
        IF nArgc < 1 THEN
                Usage();
                HALT;
        END;

        NthFile := 0;
        WHILE NthFile < nArgc DO 
                Argv(NthFile,FileMatch);
                DumpFileList(MakeFileList(FileMatch));
                INC(NthFile);
        END;
END FileFind.

次々にファイルマッチを取り出し、該当するファイル名のリストを"MakeFileList"で作成し、 そのリストを"DumpFileLIst"で書き出します。"DumpFileList"は、"FileSearch"モジュールに実装しました。 こうすることで、ファイル名の保持のしかたをメインルーチンが知る必要がありません。

[コンピューター]
[CP/M]
[Modula-2]

コメント(全0件)
コメントをする


記事を書く
powered by ASAHIネット