($title_img_alt)

こちらからの投稿は、先頭に表示されているコメントへの返信になります。
RE:スプールファイル【御礼】 NG さん [ 3月14日(金) 10時15分 ]
> 基本的には NG さんの言われるようにPF に変換して調べることに
> なりますが API を使ってもよいというのであればと
> いうことで調べてみました。
> 
> 米国サイトでは下記のようなCLP でベージ・カウント・プログラムを作っ
ている人が
> いました。
> 
> 
>
http://iprodeveloper.com/rpg-programming/retrieve-spooled-file-page-count
> 
> PGM
> 
>      DCL VAR(&STRPAGE) TYPE(*DEC) LEN(5 0)
>      DCL VAR(&ENDPAGE) TYPE(*DEC) LEN(5 0)
> 
>      OVRPRTF FILE(PRINTER) HOLD(*YES)
>      CALL    PGM(<i>mylib/myrpgpgm</i>)
>      DLTOVR  FILE(PRINTER)
> 
>  <font color="blue">    PAGCNT  COUNT(&ENDPAGE)
>      CHGVAR  VAR(&STRPAGE) VALUE(&ENDPAGE - 1)
> 
>      CHGSPLFA FILE(PRINTER) SPLNBR(*LAST) +
>               PAGERANGE(&STRPAGE &ENDPAGE)</font>
> 
>      RLSSPLF  FILE(PRINTER) SPLNBR(*LAST)
> 
>  ENDPGM
> 
> 
> プログラムは
> 
>
http://www.pentontech.com/IBMContent/Documents/article/55320_274_PagCnt.zip
> 
> からダウンロードできるとありました。
> これをダウンロードして解凍したところ上記に含まれているCLPソースは次
のとおりです。
> 
> 
>
---------------------------------------------------------------------------
> ----
> PGM     PARM(&NUMPAGES)
> 
>     DCL VAR(&NUMPAGES)  TYPE(*DEC)  LEN(5 0)
>     DCL VAR(&RCVVAR)    TYPE(*CHAR) LEN(2048)
>     DCL VAR(&RCVVARLEN) TYPE(*CHAR) LEN(4)
>     DCL VAR(&SPLFNAME)  TYPE(*CHAR) LEN(10)
>     DCL VAR(&JOBNAME)   TYPE(*CHAR) LEN(26)
>     DCL VAR(&SPLFNBR)   TYPE(*CHAR) LEN(4)
>     DCL VAR(&PAGECHAR)  TYPE(*CHAR) LEN(4)
> 
>     CHGVAR VAR(%BIN(&RCVVARLEN)) VALUE(2048)
> 
>     /**********************************************************+
>      * DETERMINE THE LAST SPOOLED FILE CREATED IN THIS
 JOB    *+
>      **********************************************************/
> 
>     CALL PGM(QSPRILSP) PARM(&RCVVAR             +
>                             &RCVVARLEN 
         +
>                             'SPRL0100' 
         +
>                             
X'0000000000000000' )
> 
>     CHGVAR VAR(&SPLFNAME) VALUE(%SST(&RCVVAR  9 10))
>     CHGVAR VAR(&JOBNAME)  VALUE(%SST(&RCVVAR 19 26))
>     CHGVAR VAR(&SPLFNBR)  VALUE(%SST(&RCVVAR 45  4))
> 
> 
>     /**********************************************************+
>      * RETRIEVE THE SPOOLED FILE ATTRIBUTES       
            *+
>      **********************************************************/
> 
>     CALL PGM(QUSRSPLA) PARM(&RCVVAR             +
>                             &RCVVARLEN 
         +
>                             'SPLA0100' 
         +
>                             &JOBNAME  
          +
>                             ' '    
             +
>                             ' '    
             +
>                             &SPLFNAME 
          +
>                             &SPLFNBR  
          +
>                             
X'0000000000000000' )
> 
>     CHGVAR VAR(&PAGECHAR) VALUE(%SST(&RCVVAR 141 4))
>     CHGVAR VAR(&NUMPAGES) VALUE(%BIN(&PAGECHAR))
> 
> ENDPGM
>
---------------------------------------------------------------------------
> ----
> 
> [解説]
> つまり スプール・ファイル名, ジョブ名, スプール番号がわかれば
> API : QUSRSPLA だけで
>     CALL PGM(QUSRSPLA) PARM(&RCVVAR             +
>                             &RCVVARLEN 
         +
>                             'SPLA0100' 
         +
>                             &JOBNAME  
          +
>                             ' '    
             +
>                             ' '    
             +
>                             &SPLFNAME 
          +
>                             &SPLFNBR  
          +
>                             
X'0000000000000000' )
> 
>     CHGVAR VAR(&PAGECHAR) VALUE(%SST(&RCVVAR 141 4))
>     CHGVAR VAR(&NUMPAGES) VALUE(%BIN(&PAGECHAR))
> 
> のようにすればページ数 &NUMPAGES が取得できるというものです。
> 意外と簡単ですね。
> 
> 
ありがとうございます。
なるほど・・うまくできました!!

お名前

パスワード

メールアドレス

タイトル

ホームページ

アドレス

項目