Q言語コンバージョン・サービス

プログラム例

プログラム名
PRT001
パラメータ
発注日 10桁
取引先 7桁
入力/出力
プログラム「PRT001」がORDERを帳票として出力する。
入力ファイル
ファイル名 ORDER
レコード長 80桁
レイアウト
項目 タイプ 桁数 備考
取引先CD X  
発注日 X 10  
商品名 X  
数量 PACK 桁数=5
単価 PACK 桁数=5
データ X 51  
帳票仕様
ページ行数 30
ページ幅 132
ヘッダ行数
フッター行数
論理ページ幅
論理ページの数
論理ページの行数 19
出力された帳票のイメージ ページ全体を物理ページと呼ぶ。ページの上下にある固定部分をそれぞれヘッダ、フッターと呼ぶ。繰り返しの部分を論理ページと呼ぶ。

このページのトップへ戻る

Qプログラム例

      
*------------------------------------------------*
*パラメータ(WP)
*  レイアウト            変数名
*   1-2  : パラメータ長  FILLER
*   3-12 : 発注日        WP3Z10
*  13-19 : 取引先ID    WP13Z7
*  21-80 : 予備
*------------------------------------------------*
PRT001   START WP=(W80)



*------------------------------------------------*
*ファイル:発注マスタ
*    項目名  TYPE  LEN   変数名
*    取引先     X    6   M1Z6         
*    発注日     X   10   M7Z10        
*    商品名     X    6   M17Z6        
*    数量       P    5   M23P3   
*    単価       P    5   M26P3  
*    データ     X   52   M29Z52
*------------------------------------------------*
SYS101   INP   R80


*------------------------------------------------*
*帳票(発注明細)
*  ページ行数           30
*  ページ幅            132
*  ヘッダ行数            6
*  フッター行数          5
*  論理ページの幅       25
*  論理ページ数          3
*  論理ページの行数     19
*------------------------------------------------*
SYSOT1   PRIJ  F30,E9P,BOX(1:19,3:25)
         EQU   WCAL=(P3)




*-------------------------------------------------------*
*物理ページ ヘッダ行   出力処理
*-------------------------------------------------------*
HPAGEJ SECT
*1行目  無し
     LISJ
*2行目
     SET   KD'発注明細',J30K9
     SET   KYM,J70E9 ; システム日付
     SET   KTI,J80E9 ; システム時刻
     LISJ
*3行目: 無し
     LISJ
*4行目: 
     SET   KD'発注日',J1K9
     SET   WP3Z10    ,J15E9
     LISJ
*5行目: 
     SET   KD'取引先ID',J1K9
     SET   WP13Z7        ,J15E9
     LISJ





*-------------------------------------------------------*
*論理ページ ヘッダ行   出力処理
*-------------------------------------------------------*
PAGEJ SECT
*1行目
     SET   KD'商品名',J1K9
     SET   KD'数量'  ,J8K9
     SET   KD'価格'  ,J20K9
     LISJ

*-------------------------------------------------------*
*マスタ入力−レコード選別
*-------------------------------------------------------*
*発注マスターファイルから 指定した日付/取引先IDのレコードを読み取る
RECORD   SECT
*    日付
     IF (M7Z10 # WP3Z10) THEN
        GO READ
     ENDIF
*    日付
     IF (M1Z6  # WP13Z7) THEN
        GO READ
     ENDIF

*-------------------------------------------------------*
*マスタ入力−レコード処理
*-------------------------------------------------------*
SAMPLE   SECT
     SET M17Z6    , J1E9        ;商品名
     SET M23P3    , J8X4E9      ;数量(ゼロサプレス4桁)
     CAL WCAL=M23P3*M26P3       ;価格=単価×数量
     SET WCAL     , J13R7.1E9   ;価格(カンマ編集7桁)
*
     END
      
    

このページのトップへ戻る

変換されたCOBOLプログラム例

      
       IDENTIFICATION           DIVISION.
       PROGRAM-ID. PRT001 INITIAL.
       ENVIRONMENT              DIVISION.
       CONFIGURATION SECTION.
       SPECIAL-NAMES.
                COPY CBLSPCNQ.
       INPUT-OUTPUT             SECTION.
       FILE-CONTROL.
      *------------------------------------------------*
      *ファイル:発注マスタ 
      *    項目名  TYPE  LEN   変数名
      *    取引先     X    6   M1Z6
      *    発注日     X   10   M7Z10
      *    商品名     X    6   M17Z6
      *    数量       P    5   M23P3
      *    単価       P    5   M26P3
      *    データ     X   52   M29Z52
      *------------------------------------------------*
           SELECT  INP              ASSIGN       TO DISK-SYS101.
      *------------------------------------------------*
      *帳票(発注明細)
      *  ページ行数           30
      *  ページ幅            132
      *  ヘッダ行数            6
      *  フッター行数          5
      *  論理ページの幅       25
      *  論理ページ数          3
      *  論理ページの行数     19
      *------------------------------------------------*
           SELECT  PRIJ             ASSIGN       TO PRINTER-SYSOT1.
       DATA                      DIVISION.
       FILE                      SECTION.
       FD INP.
       01  INP-REC                  PIC X(80).
       01  INP-REC-R1.
             03  M1Z6               PIC X(6).
             03  M7Z10              PIC X(10).
             03  M17Z6              PIC X(6).
             03  M23P3              PIC S9(5) COMP-3.
             03  M26P3              PIC S9(5) COMP-3.
             03  M29Z51             PIC X(52).
       FD PRIJ.
       01  PRIJ-REC.
             03  PRIJ-REC-DATA      PIC X(384).
       WORKING-STORAGE           SECTION.
       COPY CONVWRK.
             03  INP-REC-ADD        PIC X(80).
             03  INP-REC-ADD-SAVE   PIC X(80).
             03  INP-REC-PREV       PIC X(80).
       01  WK-PGMNAME               PIC X(10) VALUE 'PRT001'.
       COPY Q_DEFWORK.
       COPY Q_DEFMAT        ・・・・・・
       COPY Q_DEFSYS        ・・・・・・
       COPY Q_DEFATTR.
       COPY Q_DEFPRIJ       ・・・・・・

      *-----------------------------------------------------------
      *ユーザー定義変数
      *-----------------------------------------------------------
       01  WCAL                     PIC S9(5) COMP-3 VALUE ZERO.


       LINKAGE                   SECTION.
      *------------------------------------------------*
      *パラメータ(WP)
      *  レイアウト            変数名
      *   1-2  : パラメータ長  FILLER
      *   3-12 : 発注日        WP3Z10
      *  13-19 : 取引先ID    WP13Z7
      *  21-80 : 予備
      *------------------------------------------------*
       01  WP                       PIC X(80).
       01  WP-R1                    REDEFINES WP.
             03  FILLER             PIC X(2).
             03  WP3Z10             PIC X(10).
             03  WP13Z7             PIC X(7).
       PROCEDURE                DIVISION USING  WP.
       COPY Q_MAIN.
      *
       VALUE-RTN     SECTION.
       VALUE-RTN-START.
           CONTINUE.
       VALUE-RTN-EXT. EXIT.
      *
      *-------------------------------------------------------*
      *マスタ入力−レコード選別
      *-------------------------------------------------------*
      *発注マスターファイルから 指定した日付/取引先IDのレコードを
      *読み取る
       RECORD-RTN     SECTION.
       RECORD-RTN-START.
      *    日付
           IF (M7Z10  NOT =  WP3Z10) THEN
              MOVE Q-GO-READ       TO Q-GO-XXX
              GO TO RECORD-RTN-EXT
           END-IF
      *    日付
           IF (M1Z6   NOT =  WP13Z7) THEN
              MOVE Q-GO-READ       TO Q-GO-XXX
              GO TO RECORD-RTN-EXT
           END-IF.

       RECORD-RTN-EXT. EXIT.
      *
            中略
      *
      *-------------------------------------------------------*
      *マスタ入力−レコード処理
      *-------------------------------------------------------*
       SAMPLE-RTN     SECTION.
       SAMPLE-RTN-START.
      *商品名
      *
           MOVE M17Z6           TO PRIJ-LW(1:6)
            中略
      *数量(ゼロサプレス4桁)
      *
           MOVE M23P3           TO ORG-DATA
            中略
      *価格=単価×数量
           COMPUTE WCAL = M23P3 * M26P3
      *価格(カンマ編集7桁)
      *
           MOVE WCAL            TO ORG-DATA
            中略
      *
       SAMPLE-RTN-EXT. EXIT.
      *
      *-------------------------------------------------------*
      *物理ページ ヘッダ行   出力処理
      *-------------------------------------------------------*
       HPAGEJ-RTN     SECTION.
       HPAGEJ-RTN-START.
      *1行目  無し
      *
           MOVE 'H'             TO PRIJ-CHOL
           MOVE 0               TO PRIJ-CNTL-1
           MOVE SPACE           TO PRIJ-CNTL-2
            中略
           PERFORM PRIJ-HEADSET
      *2行目
      *
           MOVE N'発注明細'        TO W-DBCSCONS
            中略
           PERFORM PRIJ-CHRATR
      * システム日付
      *
           MOVE Q-KYM             TO PRIJ-LW(70:8)
           MOVE W-E9            TO PRIJ-CTYP
            中略
           PERFORM PRIJ-CHRATR
      * システム時刻
      *
           MOVE Q-KTI             TO PRIJ-LW(80:8)
           MOVE W-E9            TO PRIJ-CTYP
            中略
           PERFORM PRIJ-HEADSET
      *3行目: 無し
      *
           MOVE 'H'             TO PRIJ-CHOL
            中略
           PERFORM PRIJ-HEADSET
      *4行目:
      *
           MOVE N'発注日'         TO W-DBCSCONS
            中略
       HPAGEJ-RTN-EXT. EXIT.
      *
      *-------------------------------------------------------*
      *論理ページ ヘッダ行   出力処理
      *-------------------------------------------------------*
       PAGEJ-RTN     SECTION.
       PAGEJ-RTN-START.
      *1行目
      *
           MOVE N'商品名'         TO W-DBCSCONS
            中略
           PERFORM PRIJ-CHRATR
      *
           MOVE N'数量'          TO W-DBCSCONS
            中略
           PERFORM PRIJ-CHRATR
      *
           MOVE N'価格'          TO W-DBCSCONS
            中略
           PERFORM PRIJ-CHRATR
      *
            中略
           PERFORM PRIJ-HEADSET.
       PAGEJ-RTN-EXT. EXIT.
      *
       HFOOTJ-RTN     SECTION.
       HFOOTJ-RTN-START.
            中略
       HFOOTJ-RTN-EXT. EXIT.
      *
            中略
      *----------------------------------------
      *ブレイク処理 1〜9
      *----------------------------------------
       BREAK1-RTN     SECTION.
       BREAK1-RTN-START.
            中略
       BREAK1-RTN-EXT. EXIT.
            中略
      *
       COPY Q_READINP       ・・・・・・
       COPY Q_PRIJ          ・・・・・・
      *----------------------------------------
      * 初期化処理
      *----------------------------------------
       INITIALIZE-RTN     SECTION.
       INITIALIZE-RTN-START.
       COPY Q_SETDTM.
           OPEN INPUT INP
           MOVE LENGTH OF INP-REC TO Q-RLM
           OPEN OUTPUT PRIJ.
      *
       INITIALIZE-RTN-EXT. EXIT.
      *----------------------------------------
      * 終了処理
      *----------------------------------------
       FINAL-RTN     SECTION.
       FINAL-RTN-START.
           PERFORM PRIJ-EJECT
           CLOSE INP
           CLOSE PRIJ
           MOVE Q-CDR TO RETURN-CODE
           CALL TOLRTC USING RETURN-CODE.
       FINAL-RTN-EXT. EXIT.
      
    

このページのトップへ戻る