星期一, 11月 06, 2023

2004-11-20 如何將訊息紀錄於 JobLog ? (API Qp0zLprintf(Print Formatted Job Log Data))


如何將訊息紀錄於 JobLog ? (API Qp0zLprintf(Print Formatted Job Log Data))

將訊息紀錄於 JobLog 有幾種方式, 可以呼叫 CL 指令 SNDPGMMSG 或 API QMHSNDPM ,
但是有一 API Qp0zLprintf (Print Formatted Job Log Data) 更容易使用, 其參數
使用方式如同 C 函式 printf, 但必須於字串尾端加上 X'25' 表示訊息結尾. 


File  : QRPGLESRC
Member: WRTJOBLOGR
Type  : RPGLE
Usage : CRTBNDRPG WRTJOBLOGR
      : CALL WRTJOBLOGR


     H DEBUG  OPTION(*SRCSTMT:*NODEBUGIO) DFTACTGRP(*NO) ACTGRP(*CALLER)

     D Qp0zLprintf     PR            10I 0 ExtProc('Qp0zLprintf')
     D  szOutputStg                    *   Value OPTIONS(*STRING)
     D                                 *   Value OPTIONS(*STRING:*NOPASS)
     D                                 *   Value OPTIONS(*STRING:*NOPASS)
     D                                 *   Value OPTIONS(*STRING:*NOPASS)
     D                                 *   Value OPTIONS(*STRING:*NOPASS)
     D                                 *   Value OPTIONS(*STRING:*NOPASS)
     D                                 *   Value OPTIONS(*STRING:*NOPASS)
     D                                 *   Value OPTIONS(*STRING:*NOPASS)
     D                                 *   Value OPTIONS(*STRING:*NOPASS)
     D                                 *   Value OPTIONS(*STRING:*NOPASS)
     D                                 *   Value OPTIONS(*STRING:*NOPASS)

     D ProdNo          S              5  0 Inz(1234)
     D ProdName        S             30    Inz('Testing')

     C                   Callp     Qp0zLprintf('Hello OS/400'+X'25')

     C                   callp     Qp0zLprintf('ProdNo: %s %s' + X'25' :
     C                                %char(ProdNo):%Trimr(ProdName))

     C                   Eval      *InLr = *On

執行 CALL WRTJOBLOGR 後, DSPJOBLOG 會有如下訊息:

     Hello OS/400        
     ProdNo: 1234 Testing

此 API 非常方便於除錯或紀錄程式執行狀態.





沒有留言: