CA Japan seminar CA Easytrieve updates 2012/6/51. CA Easytrieve ®
活用セミナー
Easytrieve 活用例
2012 年 6 月 5 日
CA Technologies
メインフレーム・ソリューション事業部
丸川 隆司
2. アジェンダ
— INDEX フィールドの活用
— マクロ機能の活用
— CSV ファイルの作成方法
— HTML レポートの作成方法
— Easytrieve EXIT の活用
— R11 ご紹介
— Q&A
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
3. INDEX フィールドの活用
— Easytrieve のフィールド定義は、レコード中の開始位置を
固定値で指定しますが、 INDEX フィールドを使うことで
可変にできます。
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
4. INDEX を使用した文字列サーチ
ログファイル (80 バイト ) より、“ ABEND” の 5 文字をサーチする
INDEX フィールド
FILE INFILE F(80)
MOJI 1 5 A INDEX IDX1
*
FILE ERRFL F(80)
MOJI フィールドの開始位置
開始位置初期値設定 *
JOB INPUT INFILE = 1 + IDX1 の値
IDX1 = 0
DO WHILE IDX1 <= 75
IF MOJI = ‘ABEND’ IDX1 の最大値は 75 ( 80 - 5 )
PUT ERRFL FROM INFILE
END-IF
IDX1 = IDX1 + 1
END-DO 開始位置を 1 バイトずらす
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
5. INDEX を使用した可変セグメントレコード処理
可変 可変
セグメント
セグメント セグメント A セグメント A セグメント セグメント B セグメント B
~ A ~
A の数 (1) (2) B の数 (1) (n)
(n)
固定長 固定長
セグメントの数は可変なので、固定の OCCURS 指定では処
理できない・・・・
FILE INFILE V(360)
SEG-A-COUNT 5 3 N
SEG-A-DATA 8 5 A OCCURS???
*
SEG-B-COUNT ????
SEG-B-DATA ????
*
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
6. INDEX を使用した可変セグメントレコード処理
-続き
このようなレコードは INDEX を使用して開始位置を指定
することができます。
3 + SEG-A-CNT * 5
SEG-A-DATA SEG-A-DATA SEG-A-DATA SEG-B-DATA SEG-B-DATA
SEG-A-CNT ~ SEG-B-CNT ~
1 2 n 1 n
3 5 5 5 3 4 4
IDXB1=0 IDXA=0
IDXB2=0
FILE INFILE
SEG-A-CNT 5 3 N
SEG-A-DATA 8 5 A INDEX IDXA
*
SEG-B-CNT 5 3 N INDEX IDXB1
SEG-B-DATA 8 4 A INDEX IDXB2
*
JOB INPUT INFILE
IDXA = 0
IDXB1 = 3 + SEG-A-CNT * 5
IDXB2 = IDXB1
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
7. INDEX を使用した可変セグメントレコード処理
-続き
FILE INFILE
SEG-A-CNT 5 3 N
SEG-A-DATA 8 5 A INDEX IDXA
*
SEG-B-CNT 5 3 N INDEX IDXB1
SEG-B-DATA 8 4 A INDEX IDXB2
*
WK-CNTR W 3 N
*
JOB INPUT INFILE
IDXA = 0
IDXB1 = 3 + SEG-A-CNT * 5
IDXB2 = IDXB1
* SEG-A の処理
WK-CNTR = 1
DO WHILE WK-CNTR <= SEG-A-CNT
DISPLAY '*** SEGA : ' SEG-A-DATA
IDXA = IDXA + 5
WK-CNTR = WK-CNTR + 1
END-DO
* SEG-B の処理
WK-CNTR = 1
DO WHILE WK-CNTR <= SEG-B-CNT
DISPLAY '*** SEGB : ' SEG-B-DATA
IDXB2 = IDXB2 + 4
WK-CNTR = WK-CNTR + 1
END-DO
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
8. INDEX フィールドまとめ
— フィールド定義に INDEX を指定することにより、フィー
ルドの開始位置を動的に変更することができます。
— INDEX 指定は、ファイルフィールド、ワークフィールド
共に指定できます。
WK-FLD W 80 A
WK-FLD2 WK-FLD 2 A INDEX IDX1
WK-FLD3 WK-FLD 3 A INDEX IDX2
— INDEX 値の変更により、レコードまたはワークエリアの
範囲を超えないように注意が必要です。
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
9. マクロ機能の活用
— ファイルフィールド定義( COPY 句定義)
FILE INFILE
%INFILE
— 共通ロジック定義(部品化)
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
10. マクロ機能の活用(共通ロジック定義)
— Easytrieve のマクロ機能は、 COPY 句を登録するだけでな
く、ロジックを登録しておくこともできます。
— ロジックの場合にも、 COPY 句と同様に、 Easytrieve マク
ロライブラリ( PDS 、 Panvalet 、 Librarian 、 VSAM のい
ずれか)に、マクロメンバー名で登録しておきます。
— マクロ呼び出し命令は、 % マクロ名を指定します。
%macro-name parm1 parm2 ....
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
11. マクロ機能の活用(呼び出しサンプル)
— SUBSTRING 的な処理のサンプル
文字列 文字列
START1 LENGTH1 START2 LENGTH2 INDATA
① ②
FILE FILEA F(100)
START1 1 2 P 0
LENGTH1 3 2 P 0
START2 5 2 P 0
LENGTH2 7 2 P 0
INDATA 20 80 A
WK-MOJI W 5 A
JOB INPUT FILEA
* 文字列①の抽出
%SUBSTR INDATA START1 LENGTH1 WK-MOJI
DISPLAY WK-MOJI 2012 CA. All rights reserved.
Copyright © Easytrieve 活用セミナ 2012 年 6 月 5 日 .
12. マクロ機能の活用(マクロサンプル)
呼び出し側の
コーディング %SUBSTR INDATA START1 LENGTH1 WK-MOJI
MACRO 4 P1 P2 P3 P4
* DEFINE INPUT AREA
DEFINE WK-IN W 1000 A
呼び出されるマクロ
DEFINE WK-IN1 WK-IN 1 A INDEX WK-IDXIN
右の内容を
DEFINE WK-CNT W 5 P 0
SUBSTR の
* DEFINE OUTPUT AREA
メンバー名でマクロ
ライブラリに登録し DEFINE WK-OUT W 1000 A
ておく。
DEFINE WK-OUT1 WK-OUT 1 A INDEX WK-IDXOUT
WK-IDXIN = &P2 - 1. * SET START INDEX
WK-CNT = WK-IDXIN + &P3. * SET MAXIMUM LENGTH
IF WK-CNT > 1000. * CHECK IF AREA EXCEEDS MAX LEN
&P4 = 'ERROR'. * MAX LENGTH ERROR
ELSE
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
WK-IN = &P1. * INPUT AREA
13. マクロ機能の活用まとめ
— Easytrieve のマクロ機能は、ファイルフィールド定義、共
通ロジック定義で利用できます。
— フィールド定義同様に、良く利用される処理はマクロメ
ンバーとして登録し、共通に利用することでより生産性
を向上させることが可能になります。
— マクロソースの前後に MSTART 、 MEND の指定を行うこ
とで、プログラム中にマクロソースを組み込んで実行す
ることができます。これによって外部ファイルにマクロ
メンバーを作成する前のテストが可能になります。
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
14. CSV ファイルの作成方法
— Easytrieve を使って簡単に CSV ファイルを作成することが
できます。
— REPORT 機能と DISPLAY 機能の、 2 つの作成方法をご紹介
します。
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
15. CSV ファイルについて
— CSV ( Comma-Separated Values )カンマ区切りデータ
— スプレッドシート用データ(表形式データ)
− 可変長
− テキストデータ
− 区切り文字
— データのインポート / エキスポートで利用
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
16. REPORT 機能を使った CSV ファイル作成
FILE PERSNL F(80)
REGION 1 6 N MASK('ZZZZ99')
BRANCH 8 6 N MASK('ZZZ999')
NAME-LAST 15 10 M
NAME-FIRST 25 10 M
DEPT 36 4 A
GROSS 41 5 N 1 MASK('ZZZ9.9')
*
FILE CSVOUT V(360) PRINTER EXTENDED CSVIBM
* 拡張プリンター名の指定
JOB INPUT PERSNL
PRINT RPT1
* 見出し文字
REPORT RPT1 PRINTER CSVOUT LINESIZE 80 SPACE 0 TITLESKIP 0 +
NOADJUST NODATE NOHEADING NOPAGE PAGESIZE 32767
SEQUENCE REGION BRANCH
TITLE ' 地区番号 , 支店番号 , 姓 , 名 , 部門番号 , 支払額 '
LINE REGION ',' BRANCH ',' NAME-LAST ',' NAME-FIRST ',' +
明細項目
DEPT ',' GROSS
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
17. REPORT 機能を使った CSV ファイル作成(出力例)
BROWSE CAJAPAN.MARTA02.CSVFL1 LINE 00000000 CO
COMMAND ===> SCROLL
----+----1----+----2----+----3----+----4----+----5----+----6----+----7
********************************* Top of Data ************************
地区番号 , 支店番号 , 姓 , 名 , 部門番号 , 支払額
01, 001, 小山 , 正明 ,0903, 373.6
01, 001, 戸田 , 健志 ,0918,8046.4
01, 002, 表山 , 友義 ,0943, 759.2
01, 002, 新石 , 和広 ,0935,1461.6
01, 003, 短田 , 育弘 ,0915, 344.8
01, 003, 柊木 , 吉則 ,0914, 445.5
01, 003, 羽田 , 友幸 ,0911,4922.6
01, 004, 川中 , 満 ,0917,2839.2
01, 004, 丸海 , 智之 ,0911,3966.8
02, 001, 山畑 , 茂幸 ,0932, 360.8
02, 001, 豊田 , 一博 ,0921, 243.2
02, 002, 小泉 , 仁 ,0911, 242.4
02, 002, 白部 , 弘昌 ,0911, 386.4
02, 003, 木ノ上 , 貴司 ,0943,2385.2
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
18. DISPLAY 機能を使った CSV ファイル作成
FILE PERSNL F(80)
REGION 1 6 N MASK('ZZZZ99')
BRANCH 8 6 N MASK('ZZZ999')
NAME-LAST 15 10 M
NAME-FIRST 25 10 M
DEPT 36 4 A
GROSS 41 5 N 1 MASK('ZZZ9.9')
* 拡張プリンター名の指定
FILE CSVOUT V(360) PRINTER EXTENDED CSVIBM
* 見出し文字
JOB INPUT PERSNL
IF PERSNL:RECORD-COUNT = 1
DISPLAY CSVOUT ' 地区番号 , 支店番号 , 姓 , 名 , 部門番号 , 支払額
'
END-IF
明細項目
DISPLAY CSVOUT REGION ',' BRANCH ',' NAME-LAST ',' NAME-FIRST +
',' DEPT ',‘ GROSS
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
19. DISPLAY 機能を使った CSV ファイル作成(出力例)
BROWSE CAJAPAN.MARTA02.CSVFL2 LINE 00000000 COL
COMMAND ===> SCROLL =
----+----1----+----2----+----3----+----4----+----5----+----6----+----7-
********************************* Top of Data *************************
地区番号 , 支店番号 , 姓 , 名 , 部門番号 , 支払額
01, 001, 小山 , 正明 ,0903, 373.6
01, 001, 戸田 , 健志 ,0918,8046.4
01, 002, 表山 , 友義 ,0943, 759.2
01, 002, 新石 , 和広 ,0935,1461.6
01, 003, 短田 , 育弘 ,0915, 344.8
01, 003, 柊木 , 吉則 ,0914, 445.5
01, 003, 羽田 , 友幸 ,0911,4922.6
01, 004, 川中 , 満 ,0917,2839.2
01, 004, 丸海 , 智之 ,0911,3966.8
02, 001, 山畑 , 茂幸 ,0932, 360.8
02, 001, 豊田 , 一博 ,0921, 243.2
02, 002, 小泉 , 仁 ,0911, 242.4
02, 002, 白部 , 弘昌 ,0911, 386.4
02, 003, 木ノ上 , 貴司 ,0943,2385.2
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
20. CSV ファイル出力結果
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
21. CSV ファイル用拡張プリンター定義
— CSV ファイルを作成する処理で漢字文字、漢字フィール
ドを扱う場合には、出力ファイルに拡張プリンター指定
が必要です。
— CSV ファイル専用の拡張プリンターを定義しておくと便
利です。
— 既存の拡張プリンター設定を使用することも可能です。
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
22. CSV ファイル用拡張プリンター定義サンプル
****************************************************************
* CSVIBM
****************************************************************
PRINTER NAME ( CSVIBM ) -
TERMINAL ( 0E 0F ) -
DBCS-CODE ( IBM )
****************************************************************
* CSVFJ
****************************************************************
PRINTER NAME ( CSVFJ ) -
TERMINAL ( 28 29 ) -
DBCS-CODE ( JEF4040 )
****************************************************************
* CSVH
****************************************************************
PRINTER NAME ( CSVH ) -
TERMINAL ( 0AE2 0A41 ) -
DBCS-CODE ( KEIS )
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
23. CSV ファイル作成まとめ
— REPORT 機能、または DISPLAY 機能で CSV ファイルを簡
単に作成することができます。
— パック 10 進数等、数値データ編集処理や漢字データのシ
フトコード編集処理が不要です。
— Easy の仕様で仕様で先頭 1 バイトにブランクが入ります
。
— CSV ファイルの入出力機能拡張を計画中です。
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
24. HTML レポートの作成方法
— Easytrieve の拡張プリンタ機能を応用して、従来のレポー
トを HTML 形式のデータとして出力することができます
。
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
25. HTML レポートの利点
— ビジュアルなアピール
− フォント
− カラー
− フォーマット
— 配布が容易
− 集中保管
− リンクで配布
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
26. HTML レポートプログラムの例
変更点はわずか 2 か所のみ!
FILE PERSNL F(80)
REGION 1 6 N MASK('ZZZZ99') HEADING(' 地区番号 ')
BRANCH 8 6 N MASK('ZZZ999') HEADING(' 支店番号 ')
NAME-LAST 16 8 K HEADING(' 姓 ')
NAME-FIRST 26 8 K HEADING(' 名 ')
DEPT 36 4 A HEADING(' 部門 ')
GROSS 41 5 N 1 MASK('ZZZ9.9') HEADING(' 支給額 ')
LAST_KANA 47 10 A
FIRST_KANA 57 10 A HTML 拡張プリンター定義名の指定
*
FILE HTMLFL PRINTER EXTENDED HTML
*
JOB INPUT PERSNL
PRINT RPT1
*
REPORT に出力先を指定
REPORT RPT1 LINESIZE 80 PRINTER HTMLFL
SEQUENCE REGION D BRANCH D
TITLE '***** HTML サンプルレポート *****'
LINE REGION BRANCH NAME-LAST NAME-FIRST DEPT GROSS
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
27. HTML レポートサンプル
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
28. 拡張プリンター定義とは?
— MF 環境で、日本語プリンターにレポートを印刷するた
めの機能です。
— 各種日本語プリンターに対応した定義が行えます。
− フォント設定
− 漢字コード、シフトコード設定
− 改ページ、改行設定・・・・等々
— レポート出力するファイルや文字データへのヘッダー情
報、トレーラー情報を付加します。
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
29. HTML レポート用拡張プリンタ定義例
PRINTER NAME (
HTML ) -
DEFAULT-SIZE 1 1 )( -
DEFAULT-FONT (
1 2 3 ) -
FCB N ) ( -
DBCS-CODE IBM )( -
DEVICE (
DISK DISK ) -
RECORD (
V 20600 ) -
POINT-SKIP (
40 4C82996E-
4CA283998997A34093819587A48187857E7F-
9181A581A283998997A37F6E9585A6938995-
854DF&S15D4C61A283998997A36E ) -
CONCATENATE ( Y ) -
FILE-HEADER ( -
' <html><head><meta http-equiv=-
"Content-Type" content="charset=SJIS" />-
プリントレコー <script language="javascript">-
ドの最初に出力 function newline(n)-
{for( var i=0;i<n; i++ ) document.write("¥n")}-
される情報 </script>-
<title>Easytrieve HTML</title>-
</head><body><pre>' ) -
FILE-TRAILER ( ' </pre></body></html>' )
プリントレコード
の最後に出力され
る情報
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
30. HTML レポート用拡張プリンタ定義例-続き
FONT NUMBER ( 1 ) -
WIDTH (
3 ) -
DATA-TYPE (
EBCDIC ) -
HEIGHT (
01 ) -
FUNCTION-HEADER (
4CA297819540A2A3A893857E7F869695A3608681-
文字列の前 948993A87A0E42D442E20F400E43C4438D435643-
880F5E869695A360A289A9857AF2F497A75E7F6E ) -
に付加され FUNCTION-TRAILER ( 4C61A29781956E )
る情報 *
文字列の後に付
FONT NUMBER ( 2 ) - 加される情報
WIDTH (
4 ) -
DATA-TYPE (
DBCS ) -
HEIGHT 01( ) -
FUNCTION-HEADER (
4CA297819540A2A3A893857E7F869695A3608681-
948993A87A0E42D442E20F400E43C4438D435643-
880F5E869695A360A289A9857AF1F697A75E7F6E-
0E ) -
FUNCTION-TRAILER ( 0F-
4C61A29781956E )
*
FONT NUMBER ( 3 ) -
DATA-TYPE ( 1 2 )
<span style="font-family: MS ゴシック ;font-
</span> size:16px;">
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
31. 拡張プリンター定義ツール(計画中)
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
32. HTML レポート作成まとめ
— 拡張プリンタに HTML タグ設定カスタマイズを追加しま
す。
— 通常のレポート機能に、 HTML 設定を行った拡張プリン
タ名を指定します。
— 拡張プリンタの HTML カスタマイズは、今回のサンプル
以外にも様々な設定を行うことができます。
— 詳細はご相談ください。
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
33. Easytrieve EXIT の活用
— FILE EXIT
— SYSIN EXIT
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
34. FILE EXIT とは ?
— Easytrieve のファイルアクセスタイミングで実行される外
部ルーチン呼び出しポイント。
— Easytrieve がサポートしていないファイルのアクセスや、
特定の処理を追加したい場合に利用します。
− 圧縮ファイルの入出力
− 暗号化ファイルの入出力
− ファイル内の特定情報マスキング処理
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
35. FILE EXIT の動作(入力処理の場合)
FILE INFILE EXIT(SUBPGM USING(PARM1)) WORKAREA(100)
P1 : WORKAREA アドレ
制御コードの 内容
ス 値
P2 : 制御コードアドレ X’00’ 入力要求
ス X’08’ EOF 要求( EXIT 側で設定)
P3 : PARM1 のアドレス
JOB
INPUT SUBPGM
INFILE
— EXIT でファイルの入力を行い、 WORKAREA にデータを移送
— EOF 時には、制御コードに X’08’ を書き込んで、 Easy に通知
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
36. FILE EXIT の動作(出力処理の場合)
FILE OUFTL EXIT(SUBPGM USING(PARM1)) WORKAREA(100)
P1 : WORKAREA アドレ
制御コードの 内容
ス 値
P2 : 制御コードアドレ X’04’ 出力要求
ス X’08’ クローズ要求( Easy 側で設
定)
P3 : PARM1 のアドレス
PUT
SUBPGM
OUTFL
— WORKAREA の内容を EXIT で読み取り、ファイルに出力
— 制御コード値が X’08’ の場合は Easy の終了処理要求なので、ファイ
ルのクローズ処理を行う
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
37. SYSIN EXIT とは ?
— Easytrieve コンパイラがソースコードを読み込むタイミン
グで実行される外部ルーチン呼び出しポイント。
— SYSIN EXIT を使用する場合には、外部ルーチン側でソー
スコードを読み込んでから、 Easytrieve コンパイラに渡
します。
— コンパイル直前のソースコードを処理することができま
す。
− ユーザー独自コマンドの解析(プリコンパイラ処理)
− 管理情報の作成(コンパイル、実行日時の記録等)
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
38. SYSIN EXIT の動作
P1 : Easytrieve コンパイラ入力
アドレス
制御コードの 内容
P2 : 制御コードアドレス 値
X’08’ ソースの終了( EXIT 側で設
定)
ソース
Easytrieve SYSIN ステー
コンパイラ EXIT PGM トメン
ト
— Easytrieve のコンパイラが 1 行分のソースステートメントを入力する
タイミングで、 EXIT に処理が渡されます。( Easy 自身はソースを読
み込みません)
— EXIT 側でソースファイル( SYSIN )を読み込み、必要な処理を行っ
た後にコンパイラ入力アドレスにソースステートメントを設定して
、 Easytrieve に処理を戻します。
— ソースファイルの終了時には、制御コードに X’08’ を設定し
て、 Easytrieve に処理を戻します。Easytrieve 活用セミナ 2012 年 6 月 5 日 .
Copyright © 2012 CA. All rights reserved.
39. Easytrieve EXIT まとめ
— FILE EXIT により、サポートしていないファイルアクセス
が可能になります。(暗号化、圧縮ファイルの I/O 等)
— SYSIN EXIT により、ユーザーコマンドの追加等、独自の
機能拡張が可能になります。
— 設定方法等の詳細はご相談くださいませ。
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
40. R11 ご紹介
— Easytrieve リリース R11 より、 MF 環境だけでなく
UNIX 、 Linux 、 Windows などのオープン環境もサポート
します。
— 各プラットフォーム共通のソース、共通のユーティリテ
ィプログラムを使用します。
— 一部トピックのご紹介
− XML データ出力
− パフォーマンス改善
− Easytrieve Workbench
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
41. XML データ出力
— Easytrive の自動レポート機能に XML ファイルを出力する
機能が追加されます。
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
42. XML とは?
— XML は eXtensible Markup Language の略
— テキストデータの共通フォーマット
− 自己定義データ
− テキストベース
− マークアップ・タグと文字列
— プログラム間のデータ交換で使用
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
43. XML データ出力サンプル
FILE PERSNL V(80) SYSNAME(‘/EZT/SRC/TESTDATA.txt')
REGION 1 6 N
BRANCH 8 6 N
LAST_NAME 15 8 A
FIRST_NAME 23 8 A
DEPT 32 4 A
GROSS 37 5 N 1 MASK('ZZZ9.9')
*
FILE XMLFL PRINTER SYSNAME(‘/EZT/SRC/EZTPERSNL.xml')
*
JOB INPUT PERSNL START SPROC
PRINT RPT1
*
SPROC. PROC
DISPLAY XMLFL '<?xml-stylesheet type="text/xsl"' + XML パラメータ
' href="EZTPERSNL.xsl"?>' +
'<?xml version="1.0" encoding="Shift_JIS" ?>'
END-PROC
*
REPORT RPT1 PRINTER XMLFL LINESIZE 80 XML
LINE REGION BRANCH LAST_NAME FIRST_NAME DEPT GROSS
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
44. XML データ出力結果
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
45. IE 用スタイルシートでの編集レポート
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
46. XML データ出力まとめ
— 自動レポート機能を使った、簡単な XML ファイル出力が
可能です。
— ネイティブ XML ファイルタイプのサポートを計画中です
。
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
47. パフォーマンス改善
— VMF の代わりに WORKFILE を使用することにより、実行
時のパフォーマンスを向上させることができます。
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
48. VFM とは?
Virtual File Manager (仮想ワークファイル)
1 つの物理ファイル定義で、様々なワー
クエリアをサポート
複数 JOB 間の受け渡しデータセット
複数レポートの中間ファイル
実行パフォーマンス的には不利
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
49. WORKFILE 機能
— WORKFILE オプションを PARM ステートメントに指定し
ます。 WORKFILE ( {YES|NO} [number-of-cylinders]
PARM
— レポート用ワークファイルがダイナミックにアロケート
されます。
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
50. WORKFILE の利用結果
— パフォーマンスが最大で 8.5 倍改善されたケースあり。
— 例えば、 EXCP が 136,000 (R6.4 VFM) から 16,000 (R11 WF)
に減少など。
— 多数のデータを扱う複数レポート処理で効果があります
。
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
56. Q& A
?
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
57. プレゼンテーション条件
このプレゼンテーションは、 2012 年 2 月 22 日時点での最新の情報およびリソース配分に基
づいて作成されています。 CA は本書の内容を予告なく変更、撤回することがあります。この
プレゼンテーションに相反する記載があったとしても、このプレゼンテーションは、
( i ) CA ソフトウェア製品に関する既存または将来の使用許諾契約書またはサービス契約書
に基づく CA またはそのライセンシーの権利、義務、またはその双方に影響を及ぼす、または
( ii ) CA ソフトウェア製品の文書または仕様を変更することはありません。このプレゼンテ
ーションに記載されている機能の開発、リリース、およびその時期については、 CA が自己
の裁量で決定できるものとします。本書にこれと異なる記述があっても、本書で参照されて
いる任意の CA 製品の将来のリリース出荷時に、 CA はそのリリースを( i )これらの製品の
新規ライセンス契約者への販売のために提供し、( ii ) CA の保守およびサポートの一環とし
て、提供可能になり次第、これらの製品の既存のライセンス契約者に定期的なメジャー製品
リリースとして提供します。 このようなリリースは、現在 CA の保守およびサポートを利用
するこれらの製品の現在のライセンス契約者に、提供可能になり次第提供されることがあり
ます。この項の規定とこのプレゼンテーションに含まれるその他の情報に矛盾がある場合は
、この項が適用されるものとします。
Copyright © 2012 CA. All rights reserved. Easytrieve 活用セミナ 2012 年 6 月 5 日 .
59. お問い合わせ窓口
CA ジャパン・ダイレクト : 01 20-702-600
J pa irect@ .com
a nD ca
www.ca.com/j
p
www.ca.com/j
p/solutions/ma me.a
infra spx
Editor's Notes 本日はセミナーにご参加頂きましてありがとうございます。 私、 MF のプリセールスを担当しております。 皆様既にEasytrieveをご利用頂いていると思いますが、色々なお客様を訪問させて頂き、お話をお聞きすると、 意外と知られていない機能や、 MF データを OPEN 系データに加工する処理での応用などがあることがわかりました。 具体的な例をいくつかご紹介させていただきます。 アジェンダとしましては、 May 16, 2010 [Presentation Name via Insert tab > Header & Footer] Copyright © 2010 CA Easy のフィールド定義は、何バイト目から始まるフールドであるかを指定します。 この方法のメリットは ・処理に必要なフィールドだけ定義すればよい ・フィールド定義の順番を意識しなくてもよい INDEX 指定を行うことで、開始位置を動的に変更できます。 May 16, 2010 [Presentation Name via Insert tab > Header & Footer] Copyright © 2010 CA こちらのサンプルは、レコード中のどこかにある文字列をサーチする処理を INDEX を使って行うものです。 あるお客様では、このような文字列サーチ処理に 1 バイトのフィールドを OCCURS で定義して、サーチする文字の先頭文字が OCCURS の何番目にあるかを調べ、それ以降に目的の文字があるかどうかを 1 文字ずつチェックする処理を行われていました。 INDEX を利用すると、例えば 5 バイト分の文字列をサーチする場合には、 5 バイトのフィールドを定義して、開始位置を変更しながら目的の文字列を探し出すことが可能になります。 プログラム例 1)フィールド定義に「 INDEX index フィールド名」を指定する 2) INDEX を指定したフィールドは、定義上の開始位置+ index フィールドの値が、処理される開始位置になります。 3)つまり、 index フィールドに1を足せば、フィールドの開始位置が 1 バイト分後に移動することになります。 4) index フィールドの加算をループ処理することで、サーチ処理が可能になります。 5) index フィールドの最大値は、レコード長- INDEX を指定したフィールドの長さ INDEX により、文字列サーチや、可変文字長のデータ埋め込み処理等に応用できます。 May 16, 2010 [Presentation Name via Insert tab > Header & Footer] Copyright © 2010 CA セグメントレコード ご存じでしようか? 元々構造化 DB をフラットファイルにした物のようでして、ある固定長のデータの集まり(セグメント)が、いくつか連続して存在し、レコード毎にセグメントの数が異なるというものです。 例えば・・・ Easy ではこのようなレコードの処理には OCCURS 定義が思いつくのですが、オカレンス数を固定値で指定するため、オカレンス数が可変のレコードには使用できないことになります。 May 16, 2010 [Presentation Name via Insert tab > Header & Footer] Copyright © 2010 CA このような場合、 INDEX を使用して処理を行うことができます。 この例にありますように、セグメント A の後にセグメント B がある場合、レコードの固定長部分にインデックスフィールドを定義します。 1) SEG-A-CNT は、元々固定の位置にありますので、 INDEX は必要ありません、。 2) SEG-A-DATA と、 SEG-B-CNT 、セグメント B に、それぞれ INDEX を定義します。 3) SEG-A-DATA は、 5 バイトですので、インデックスに 5 づつ加算することで、処理するセグメントを移動できます。 4) SEG-B の開始位置は、セグメント A の後にありますので、インデックスにセグメント A 全体の長さを加算すれば良い 3 + SEG-A-CNT の値 * 5バイト 5)セグメント B は、インデックスに4づつ加算することで、処理するセグメントを移動できます。 May 16, 2010 [Presentation Name via Insert tab > Header & Footer] Copyright © 2010 CA ・ INDEX の最大値は、レコード長 - インデックス指定フィールドの長さ ・減算処理でレコードの右から左に処理を行うことも可能 是非ご活用ください May 16, 2010 [Presentation Name via Insert tab > Header & Footer] Copyright © 2010 CA May 16, 2010 [Presentation Name via Insert tab > Header & Footer] Copyright © 2010 CA May 16, 2010 [Presentation Name via Insert tab > Header & Footer] Copyright © 2010 CA May 16, 2010 [Presentation Name via Insert tab > Header & Footer] Copyright © 2010 CA May 16, 2010 [Presentation Name via Insert tab > Header & Footer] Copyright © 2010 CA May 16, 2010 [Presentation Name via Insert tab > Header & Footer] Copyright © 2010 CA MFデータを OPEN 系処理に移送したり、エクセル等のデータとして CSV データが良く利用されます。 May 16, 2010 [Presentation Name via Insert tab > Header & Footer] Copyright © 2010 CA CSV ファイルとは May 16, 2010 [Presentation Name via Insert tab > Header & Footer] Copyright © 2010 CA REPORT 機能から CSV ファイルを出力する例 1)レポート出力を行うファイルを定義します。(通常は SYSPRINT DD )、漢字フィールドを出力する場合には拡張プリンター定義を行います 2) REPORT 定義に出力ファイル名を PRINTER FILE 名で定義します。 3) TITLE 、 LINE に、 CSV レコードに出力させるフィールドをカンマリテラルと共に指定します。 May 16, 2010 [Presentation Name via Insert tab > Header & Footer] Copyright © 2010 CA REPORT 機能から CSV ファイルを出力する例 1)レポート出力を行うファイルを定義します。(通常は SYSPRINT DD )、漢字フィールドを出力する場合には拡張プリンター定義を行います 2) REPORT 定義に出力ファイル名を PRINTER FILE 名で定義します。 3) TITLE 、 LINE に、 CSV レコードに出力させるフィールドをカンマリテラルと共に指定します。 May 16, 2010 [Presentation Name via Insert tab > Header & Footer] Copyright © 2010 CA DISPLAY を使った CSV ファイル作成サンプルです。 1)出力ファイルの設定 2) CSV レコード 1 件分を DISPLAY 命令で指定ファイルに出力します May 16, 2010 [Presentation Name via Insert tab > Header & Footer] Copyright © 2010 CA DISPLAY を使った CSV ファイル作成サンプルです。 1)出力ファイルの設定 2) CSV レコード 1 件分を DISPLAY 命令で指定ファイルに出力します May 16, 2010 [Presentation Name via Insert tab > Header & Footer] Copyright © 2010 CA CSV ファイルは文字データ Easy のレポート機能、 DISPLAY 機能により、パック 10 進数や、漢字文字のシフトコード編集が不要。 May 16, 2010 [Presentation Name via Insert tab > Header & Footer] Copyright © 2010 CA May 16, 2010 [Presentation Name via Insert tab > Header & Footer] Copyright © 2010 CA フィールド名がタグとして出力される データは文字形式 May 16, 2010 [Presentation Name via Insert tab > Header & Footer] Copyright © 2010 CA 先ほどの XML データを、スタイルシートを用いてインターネットエキスプローラ上で表形式で表示させた例 May 16, 2010 [Presentation Name via Insert tab > Header & Footer] Copyright © 2010 CA CSV 、 HTML 、 XML とご紹介しましたが、 Easy を MF のレポート機能として利用するだけでなく、 OPEN 環境用のデータ作成ツールとしてもご活用頂けます。 しかもプログラム変更が少なくてすみます。 May 16, 2010 [Presentation Name via Insert tab > Header & Footer] Copyright © 2010 CA VFM is widely used but not well understood. JCL の EZTVFM というファイル定義が、 VFM 便利だが大量データレポートのパフォーマンス的には、あまり良くない。 May 16, 2010 [Presentation Name via Insert tab > Header & Footer] Copyright © 2010 CA レポート処理で VFM を使用させない為の機能として、 WORKFILE 機能が追加されました May 16, 2010 [Presentation Name via Insert tab > Header & Footer] Copyright © 2010 CA 大量のデータを複数のレポートで出力するプログラムで有効な機能 May 16, 2010 [Presentation Name via Insert tab > Header & Footer] Copyright © 2010 CA 便利なので通常は VFM の機能をご利用ください。 May 16, 2010 [Presentation Name via Insert tab > Header & Footer] Copyright © 2010 CA 現在、日本での出荷を検討中です。 ・ソース管理機能 ・プログラムエディタ ・コンパイラ ・デバッガ ・MFや、 UNIX 、 LINUX サーバーへの接続機能等 May 16, 2010 [Presentation Name via Insert tab > Header & Footer] Copyright © 2010 CA EASY は決して、枯れた言語ではありません。 簡単ですし、一度覚えるとなかなか忘れない言語です。 今後も機能拡張を予定しておりますので、どうぞご活用くださいませ。 May 16, 2010 [Presentation Name via Insert tab > Header & Footer] Copyright © 2010 CA May 16, 2010 [Presentation Name via Insert tab > Header & Footer] Copyright © 2010 CA