Rational Developer for System z
Enterprise PL/I for z/OS, Version 3.8, プログラミング・ガイド

C 関数の使用

C 関数 fopen と fread を使用して、ファイルを読み取って フォーマット済み 16 進数としてダンプするプログラムを 書きたいとしましょう。

このプログラムのコードは、次のように簡単なものです。

図 60. fopen と fread を使用してファイルをダンプするコードの例
   filedump:
     proc(fn) options(noexecops main);

     dcl fn             char(*) var;

     %include filedump;

     file = fopen( fn, 'rb' );

     if file = sysnull() then
       do;
         display( 'file could not be opened' );
         return;
       end;

     do forever;
       unspec(buffer) = ''b;

       read_In = fread( addr(buffer), 1, stg(buffer), file );

       if read_In = 0 then
         leave;

       display(    heximage(addr(buffer),16,' ')  ||  '  '
                || translate(buffer,(32)'.',unprintable)  );

       if read_In < stg(buffer) then
         leave;
     end;

     call fclose( file );
   end filedump;

次のように、INCLUDE ファイル filedump の宣言のほとんどは 自明なものです。

図 61. filedump プログラムの宣言
     define struct      1 file;
     define alias       file_Handle  handle file;

     define alias       size_t unsigned fixed bin(32);
     define alias       int signed fixed bin(31);

     dcl file           type(file_Handle);
     dcl read_In        fixed bin(31);
     dcl buffer         char(16);

     dcl unprintable    char(32) value( substr(collate(),1,32) );

Terms of use | Feedback

This information center is powered by Eclipse technology. (http://www.eclipse.org)