H DATEDIT(*YMD/) BNDDIR('QC2LE') F********** IFS の読み取り ******************************************** F* F* COMIPLE: F* CRTRPGMOD QTEMP/TESTRED SRCFILE(MYSRCLIB/QRPGLESRC) AUT*ALL) F* CRTPGM MYLIB/TESTRED MODULE(QTEMP/TESTRED) ACTGRP(*NEW) AUT(*ALL) F* F********************************************************************** D FD S 10I 0 D OPEN_ PR 10I 0 EXTPROC('ナニオト') D PATH * VALUE D FLAG 10I 0 VALUE D MODE 10I 0 VALUE OPTIONS(*NOPASS) D CODEPAGE 10I 0 VALUE OPTIONS(*NOPASS) D TOPAGE 10I 0 VALUE OPTIONS(*NOPASS) D READ_ PR 10I 0 EXTPROC('ネオアエ') D FILEID 10I 0 VALUE D BUFF * VALUE D LEN_ 10I 0 VALUE D CLOSE_ PR EXTPROC('ウツナヘオ') D FILEID 10I 0 VALUE D LSTAT_ PR 10I 0 EXTPROC('ツヘホアホ') D PATH * VALUE D INFO * VALUE D INFO DS 128 QUALIFIED D ALLOCSIZE 5U 0 OVERLAY(INFO:47) D INFO_P S * INZ(%ADDR(INFO)) D TRUE S 10I 0 INZ(0) D FALSE S 10I 0 INZ(-1) D PERROR_ PR EXTPROC('ニオネネナネ') D STR * VALUE D O_RDONLY S 10I 0 INZ(1) D PATH S 14A INZ('/A001/TEST.TXT') D TMPLEN S 10I 0 D BYTE_RED S 10I 0 D RES S 10I 0 D MSG S 80A INZ(' オープン・エラーです ') D ATTR S 80A INZ(' 属性が取得できません ') D SUCCESS S 16A INZ(' 読取り成功です ') D TMPBUF S * D ANS S 1A /FREE FD = OPEN_(%ADDR(PATH): O_RDONLY); // ファイルをオープンする IF (FD < 0); PERROR_(%ADDR(MSG)); RETURN; ELSE; RES = LSTAT_(%ADDR(PATH): INFO_P);// 属性を取得 IF (RES = FALSE); PERROR_(%ADDR(ATTR)); CLOSE_(FD); RETURN; ENDIF; TMPLEN = INFO.ALLOCSIZE;// 割振り長を取得 IF ( TMPLEN < 0 ); PERROR_(%ADDR(SUCCESS)); RETURN; ELSE; TMPBUF = %ALLOC(TMPLEN);// 動的にメモリを確保 BYTE_RED = READ_(FD: TMPBUF: TMPLEN); // READ 読取り DSPLY SUCCESS '' ANS; DEALLOC TMPBUF; // 確保したメモリを解放 ENDIF; ENDIF; CLOSE_(FD); *INLR = *ON; /END-FREE