外部記述ALIASの使用

V7R1からは、外部記述に定義したALIASがRPGでも使用できる様になっています。SQLでは長いフィールド名を使う方がしっくり来るので、Open系言語との連携するRPGなどでは、統一した方が混乱も無いかもしれませんね。

```RPG:ITEM.dds
     A*****************************************************************
     A*S  販売管理システム                                         *
     A*SS 受発注管理                                               *
     A*****************************************************************
     A*   ITEM     商品            　         XX/XX/XX  CSC)XXXX  *
     A*****************************************************************
     A                                      UNIQUE
     A          R ITEMR                     TEXT('商品マスター')
     A            CODE           5S 0       COLHDG('コード')
     A                                      ALIAS(ITEM_CODE)
     A            KANA          60O         COLHDG('カナ')
     A                                      ALIAS(ITEM_ZENKAKU_KANA)
     A            HANKAN        60A         COLHDG('半角カナ')
     A                                      ALIAS(ITEM_HANKAKU_KANA)
     A            NAME          60O         COLHDG('名称')
     A                                      ALIAS(ITEM_NAME)
     A            VENDC          5S 0       COLHDG('仕入先コード')
     A                                      ALIAS(ITEM_VENDOR_CODE)

```

```RPG:USR402R.rpgle
     H****************************************************************
     H*-------------------------------*
     H*----<<日付・著作権    >>-----*
     H*-------------------------------*
     H DATEDIT(*YMD)
     H COPYRIGHT('(C) ushiday - ')
     H*-------------------------------*
     H*----<<コンパイル条件  >>-----*
     H*-------------------------------*
     H DFTACTGRP(*NO) ACTGRP(*NEW)
     H OPTION(*NOUNREF)
     H BNDDIR('QC2LE')
     F*----<<ファイル定義   >>-----*
     FITEM      IF   E           K DISK
     D*----<<変数定義 >>-----*
     D*
     D REC           E DS                  EXTNAME(ITEM : *INPUT)
     D                                     QUALIFIED
     D                                     ALIAS
     D*
     D print           PR                  EXTPROC('print')                     標準出力関数
     D    msg                      1000A   VARYING CONST
     C*-------------------------------*
     C*----<<メインルーチン  >>-----*
     C*-------------------------------*
      /FREE
           print ('プログラム開始') ;

           //読取り
           READ ITEM REC  ;

           IF %EOF ;
               print ('レコードありません') ;
           ELSE  ;
               print ('商品名は' + REC.ITEM_NAME   )    ;
           ENDIF ;

           print ('プログラム終了') ;
           //終了
           *INLR = *ON    ;
           RETURN        ;

      /END-FREE
     P****************************************************************
     P** < print             >: 標準出力                          **
     P****************************************************************
     P print           B                   EXPORT
     D print           PI
     D    msg                      1000A   VARYING CONST
     D printf          PR              *   EXTPROC('printf')
     D    template                     *   VALUE OPTIONS(*STRING)
     D    string                       *   VALUE OPTIONS(*STRING)
     D    dummy                        *   VALUE OPTIONS(*NOPASS)
     D*
     D NEWLINE         C                   X'15'
     D*タイムスタンプ
     D WTIMESTAMP      S               Z
     D WDATE8          S              8S 0
     D WTIME6          S              6S 0
      /FREE
          WTIMESTAMP = %TIMESTAMP()   ;
          WDATE8     = %DEC(%DATE(WTIMESTAMP) : *ISO );
          WTIME6     = %DEC(%TIME(WTIMESTAMP) : *HMS );
          printf ( %EDITW(WTIME6:'  :  :  ')+ ' %s' + NEWLINE : msg) ;
      /END-FREE
     P                 E
```

●実行結果
![2015-12-04_184943.png](https://qiita-image-store.s3.amazonaws.com/0/100029/b65b345d-17aa-ba3e-d3d9-cae4240814b6.png)