CL

184. CLPで文字列を印刷するには?

CLPの処理でも印刷を指定できるようにしておきたい場合がある。
一体CLPだけで印刷ができるのだろうか?

しかしそのためだけに印刷プログラムを作成するのも
面倒なものである。
そういうときに手軽に印刷出力する方法を紹介すしよう。

              DCL        VAR(&VALUE) TYPE(*CHAR) LEN(32767) 

              OVRPRTF    FILE(STDOUT) TOFILE(QPRINT) OVRSCOPE(*JOB) 
              CALLPRC    PRC('printf') PARM((&VALUE *BYREF))        
              DLTOVR     FILE(STDOUT) LVL(*JOB)        

 
 

[解説]

ご覧のようにたった3行で変数 &VALUEの内容を印刷出力する。
STDOUT というのはC言語の標準出力であってそれをQPRINTに
リダイレクトするとこの印刷出力になるというわけである。
関数: printf はC言語のライブラリー関数であるので
このCLPのソース・タイプはCLPではなく CLLE で作成しておいて
CRTCLPGM でコンパイルするのではなく
CRTBNDCL でコンパイルすること。

これはかなり便利なテクニックであり弊社の製品にも組み込まれている。
しかしAI に相談したところ「CLPで印刷出力は不可能」との回答であった。