アプリケーション・プログラミング exec dli コマ …ibm ims batch terminal simulator...

163
IMS アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS) 9 SD88-6549-01 (英文原典:SC18-7811-02)

Upload: others

Post on 25-Dec-2019

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

IMS

アプリケーション・プログラミング:EXEC DLI コマンド (CICS および IMS)

第 9 版

SD88-6549-01

(英文原典:SC18-7811-02)

���

Page 2: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer
Page 3: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

IMS

アプリケーション・プログラミング:EXEC DLI コマンド (CICS および IMS)

第 9 版

SD88-6549-01

(英文原典:SC18-7811-02)

���

Page 4: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

お願い本書および本書で紹介する製品をご使用になる前に、 123ページの『特記事項』に記載されている一般情報をお読みください。

本書は、SC18-7811-01 (英語原典のみ) の改訂版です。このバージョンに対する技術変更点は、 xvページの『変更の要約』に要約があります。

IBM 発行のマニュアルに関する情報のページ

http://www.ibm.com/jp/manuals/

こちらから、日本語版および英語版のオンライン・ライブラリーをご利用いただけます。また、マニュアルに関するご意見やご感想を、上記ページよりお送りください。今後の参考にさせていただきます。

(URL は、変更になる場合があります)

お客様の環境によっては、資料中の円記号がバックスラッシュと表示されたり、バックスラッシュが円記号と表示されたりする場合があります。

 原 典: SC18-7811-02

IMS

Application Programming: EXEC DLI Commands for CICS and IMS

Version 9

 発 行: 日本アイ・ビー・エム株式会社

 担 当: ナショナル・ランゲージ・サポート

第1刷 2007.7

この文書では、平成明朝体™W3、平成明朝体™W7、平成明朝体™W9、平成角ゴシック体™W3、平成角ゴシック体™

W5、および平成角ゴシック体™W7を使用しています。この(書体*)は、(財)日本規格協会と使用契約を締結し使用しているものです。フォントとして無断複製することは禁止されています。

  注* 平成明朝体™W3、平成明朝体™W7、平成明朝体™W9、平成角ゴシック体™W3、平成角ゴシック体™W5、平成角ゴシック体™W7

© Copyright International Business Machines Corporation 1974, 2006. All rights reserved.

© Copyright IBM Japan 2007

Page 5: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

目次図 . . . . . . . . . . . . . . . . . v

表 . . . . . . . . . . . . . . . . . vii

本書について . . . . . . . . . . . . ix内容の要約 . . . . . . . . . . . . . . . ix前提知識 . . . . . . . . . . . . . . . ix本書で使用される IBM 製品名 . . . . . . . . x構文図の読み方 . . . . . . . . . . . . . xiご意見の送付方法 . . . . . . . . . . . . xiii

変更の要約 . . . . . . . . . . . . . xv現行版での IMS 第 9 版 に対する本書の変更 . . . xvIMS 第 9 版に関する本書の変更点 . . . . . . xvIMS 第 9 版ライブラリーの変更点 . . . . . . xv新規および改訂されたタイトル . . . . . . . xv編成上の変更 . . . . . . . . . . . . xvi用語の変更 . . . . . . . . . . . . . xviIMS のアクセシビリティー機能 . . . . . . xvi

第 1 章 IMS を使用した EXEC DLI アプリケーション・プログラムの処理 . . . . 1EXEC DLI を使用する前に . . . . . . . . . 1データベース階層の例 . . . . . . . . . . . 3

第 2 章 アプリケーション・プログラム・エレメントの定義 . . . . . . . . . . . 7アプリケーション・インターフェース・ブロック(AIB) の指定 . . . . . . . . . . . . . . 7

AIB マスク . . . . . . . . . . . . . . 7AIB サポートに関する CICS の制約事項 . . . . 7

DL/I インターフェース・ブロック (DIB) の指定 . . 8キー・フィードバック域の定義 . . . . . . . . 11入出力域の定義 . . . . . . . . . . . . . 12

COBOL 入出力域 . . . . . . . . . . . 12PL/I 入出力域 . . . . . . . . . . . . 13アセンブラー言語入出力域 . . . . . . . . 13

第 3 章 アプリケーション・プログラムの作成 . . . . . . . . . . . . . . . . 15プログラミングの指針 . . . . . . . . . . . 15アセンブラー言語でのプログラム・コーディング 16COBOL でのプログラム・コーディング . . . . 20PL/I でのプログラム・コーディング . . . . . 24C でのプログラム・コーディング . . . . . . 28

EXEC DLI プログラムの実行準備 . . . . . . . 34EXEC DLI に必要な変換プログラム・オプション 34EXEC DLI に必要なコンパイラー・オプション 35EXEC DLI に必要なリンケージ・エディター・オプション . . . . . . . . . . . . . . 35

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド . . . . . . . . 37PCB および PSB . . . . . . . . . . . . 37入出力 PCB . . . . . . . . . . . . . 37代替 PCB . . . . . . . . . . . . . . 37DB PCB . . . . . . . . . . . . . . 37GSAM PCB . . . . . . . . . . . . . 38PCB の要約 . . . . . . . . . . . . . 38PSB の形式 . . . . . . . . . . . . . 39

EXEC DLI コマンド . . . . . . . . . . . 39EXEC DLI コマンド一覧 . . . . . . . . . 40DLET コマンド . . . . . . . . . . . . 41GN コマンド . . . . . . . . . . . . . 43GNP コマンド . . . . . . . . . . . . 49GU コマンド . . . . . . . . . . . . . 55ISRT コマンド . . . . . . . . . . . . 61POS コマンド . . . . . . . . . . . . 67REPL コマンド . . . . . . . . . . . . 69RETRIEVE コマンド . . . . . . . . . . 73SCHD コマンド . . . . . . . . . . . . 75TERM コマンド . . . . . . . . . . . . 76システム・サービス・コマンド . . . . . . . 77ACCEPT コマンド . . . . . . . . . . . 78CHKP コマンド . . . . . . . . . . . . 78DEQ コマンド . . . . . . . . . . . . 80LOAD コマンド . . . . . . . . . . . . 81LOG コマンド . . . . . . . . . . . . 82QUERY コマンド . . . . . . . . . . . 82REFRESH コマンド. . . . . . . . . . . 83ROLB コマンド . . . . . . . . . . . . 84ROLL コマンド . . . . . . . . . . . . 85ROLS コマンド . . . . . . . . . . . . 86SETS コマンド . . . . . . . . . . . . 88SETU コマンド . . . . . . . . . . . . 89STAT コマンド . . . . . . . . . . . . 90SYMCHKP コマンド . . . . . . . . . . 91XRST コマンド . . . . . . . . . . . . 93

第 5 章 データベースのリカバリーとデータベース保全性の維持. . . . . . . . . 97バッチ・プログラムまたは BMP プログラムでのチェックポイントの出し方 . . . . . . . . . . 97

CHKP コマンドの出し方 . . . . . . . . . 98SYMCHKP コマンドの出し方 . . . . . . . 98

プログラムの再始動および位置の検査 . . . . . 98データベース更新の動的バックアウト: ROLL および ROLB コマンド . . . . . . . . . . . . 98中間バックアウト・ポイントの使用: SETS およびROLS コマンド . . . . . . . . . . . . . 99

© Copyright IBM Corp. 1974, 2006 iii

||

Page 6: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

第 6 章 高速機能データベースの処理 101サブセット・ポインターを使用した DEDB の処理 101サブセット・ポインターを使用する準備 . . . 104サブセット・ポインターの指定 . . . . . . 104サブセット・ポインターのオプション . . . . 105サブセット・ポインターの状況コード . . . . 113

POS コマンド . . . . . . . . . . . . . 114特定の順次従属セグメントの位置指定 . . . . 114最後に挿入された順次従属セグメントの位置指定 115POS コマンドの使用によるフリー・スペースの識別 . . . . . . . . . . . . . . . 115P 処理オプション . . . . . . . . . . . 116

第 7 章 コマンド・レベル・プログラムと呼び出しレベル・プログラムの比較 . . 117IMS および CICS に対する DL/I 呼び出し . . . 117EXEC DLI コマンドと DL/I 呼び出しの比較 . . . 118コマンド・コードとオプションの比較 . . . . . 119

第 8 章 データ可用性の強化 . . . . . 121データベース可用性状況コードの受け取り . . . . 121データベース可用性に関する情報入手 . . . . . 121

特記事項. . . . . . . . . . . . . . 123プログラミング・インターフェース情報 . . . . 125商標 . . . . . . . . . . . . . . . . 126

参考文献. . . . . . . . . . . . . . 127IMS 第 9 版のライブラリー . . . . . . . . 127補足資料 . . . . . . . . . . . . . . . 128資料コレクション . . . . . . . . . . . . 128このライブラリーに載っているアクセシビリティー関連の資料 . . . . . . . . . . . . . . 128

索引 . . . . . . . . . . . . . . . 129

iv アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

||

|||

Page 7: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

図1. コマンド・レベルのバッチ・プログラムまたは

BMP プログラムの構造 . . . . . . . . . 22. 医療機関の階層構造 . . . . . . . . . . 33. サブセット・ポインターを使用した、セグメント・オカレンスの長いチェーンの処理 . . 102

4. 複数のサブセット・ポインターを設定する例 1035. サブセット・ポインターを設定する別の例 1036. サブセット・ポインターがどのようにチェーンをサブセットに分けるか . . . . . . . 104

7. 通帳に対して実行される処理の例 (通帳が使用不可の場合) . . . . . . . . . . . . 106

8. 通帳に対して実行される処理の例 (通帳が使用可能な場合) . . . . . . . . . . . . 106

9. セグメント・チェーンの最初のセグメントの検索 . . . . . . . . . . . . . . 107

10. 現在位置の次のセグメントへのサブセット・ポインターの移動 . . . . . . . . . . 109

11. 無条件でのサブセット・ポインターの現行位置への設定 . . . . . . . . . . . . 111

12. 条件付きでのサブセット・ポインターの現行位置への設定 . . . . . . . . . . . 112

© Copyright IBM Corp. 1974, 2006 v

Page 8: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

vi アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 9: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

表1. ライセンス・プログラムの正式名と短縮名 x2. PATIENT セグメント . . . . . . . . . 33. ILLNESS セグメント . . . . . . . . . . 44. TREATMNT セグメント. . . . . . . . . 45. BILLING セグメント . . . . . . . . . . 56. PAYMENT セグメント . . . . . . . . . 57. HOUSEHOLD セグメント . . . . . . . . 58. PCB 情報の要約 . . . . . . . . . . . 399. EXEC DLI コマンド一覧 . . . . . . . . 41

10. IMS および CICS コマンド・レベル・アプリケーション・プログラムで使用可能な DL/I呼び出し . . . . . . . . . . . . . 117

11. 呼び出しレベル・プログラムとコマンド・レベル・プログラムの比較: コマンドと呼び出し 118

12. 呼び出しレベル・プログラムとコマンド・レベル・プログラムの比較: コマンド・コードとオプション . . . . . . . . . . . . 119

© Copyright IBM Corp. 1974, 2006 vii

Page 10: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

viii アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 11: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

本書について

本書は、Information Management Software for z/OS® Solutions Information Center の一部として入手できます。Information Management Software for z/OS Solutions

Information Center 内の情報を表示するには、http://publib.boulder.ibm.com/infocenter/

imic にアクセスします。本書は、PDF および BookManager 形式でも入手可能です。 PDF 形式および BookManager 形式の現行バージョンは、IMS ライブラリーのページ (www.ibm.com/software/data/ims/library.html) から入手できます。

本書は、IMS™ 環境で、EXEC DLI コマンドを使用する CICS® アプリケーション・プログラマーを対象にしています。本書は EXEC DLI コマンドをリストして説明し、アプリケーション・プログラムを作成する手順について説明します。データベースの使用法 (データベースでの位置設定、複数位置設定の使用法、2 次索引と論理関係の使用法など) については、「IMS 第 9 版: アプリケーション・プログラミング : データベース・マネージャー」を参照してください。

内容の要約本書は、EXEC DLI コマンドを使用して、アプリケーション・プログラムの DL/I

部分を作成するための基本的な内容を説明しています。また、EXEC DLI コマンド、システム・サービス呼び出し、修飾ステートメント、EXEC DLI オプション、DIB (DL/I インターフェース・ブロック)、入出力域、および状況コードといった、IMS コマンド・レベル・アプリケーション・プログラムの部分に関する参照情報も記載しています。これらに関する章は、IMS アプリケーション・プログラミングを十分理解していて、特定状況コードの意味の検索などのみが必要である熟練したプログラマー向けです。

前提知識IBM® では、IMS の学習に役立つような講習会や自習講座を数多く提供しています。全講座のリストは、ワールド・ワイド・ウェブの IMS のホーム・ページ(www.ibm.com/ims) に記載されています。

本書では、対象読者が CICS プログラマーであり、「CICS Family: General

Information」および Web の IMS ホーム・ページ (www.ibm.com/ims) の Library ページで説明されている機能、機構、ハードウェア、ソフトウェアについて理解していることを前提にしています。

また、CICS プログラムを作成するプログラマーが、「CICS Transaction Server for

z/OS CICS アプリケーション・プログラミング」および他の CICS 用資料で説明されている基本事項について理解していることを前提にしています。

© Copyright IBM Corp. 1974, 2006 ix

Page 12: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

本書で使用される IBM 製品名本書では、表 1 に示されるライセンス・プログラムは、短縮名で参照されます。

表 1. ライセンス・プログラムの正式名と短縮名

ライセンス・プログラムの正式名 ライセンス・プログラムの短縮名

IBM Application Recovery Tool for IMS and

DB2®

Application Recovery Tool

IBM CICS Transaction Server for OS/390® CICS

IBM CICS Transaction Server for z/OS CICS

IBM DB2 Universal Database™ DB2 Universal Database

IBM DB2 Universal Database for z/OS DB2 UDB for z/OS

IBM Enterprise COBOL for z/OS and OS/390 Enterprise COBOL

IBM Enterprise PL/I for z/OS and OS/390 Enterprise PL/I

IBM High Level Assembler for MVS™ & VM

& VSE

High Level Assembler

IBM IMS Advanced ACB Generator IMS Advanced ACB Generator

IBM IMS Batch Backout Manager IMS Batch Backout Manager

IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator

IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

IBM IMS Command Control Facility for z/OS IMS Command Control Facility

IBM IMS Connect for z/OS IMS Connect

IBM IMS Connector for Java™ IMS Connector for Java

IBM IMS Database Control Suite IMS Database Control Suite

IBM IMS Database Recovery Facility for z/OS IMS Database Recovery Facility

IBM IMS Database Repair Facility IMS Database Repair Facility

IBM IMS DataPropagator™ for z/OS IMS DataPropagator

IBM IMS DEDB Fast Recovery IMS DEDB Fast Recovery

IBM IMS Extended Terminal Option Support IMS ETO Support

IBM IMS Fast Path Basic Tools IMS Fast Path Basic Tools

IBM IMS Fast Path Online Tools IMS Fast Path Online Tools

IBM IMS Hardware Data

Compression-Extended

IMS Hardware Data Compression-Extended

IBM IMS High Availability Large Database

(HALDB) Conversion Aid for z/OS

IBM IMS HALDB Conversion Aid

IBM IMS High Performance Change

Accumulation Utility for z/OS

IMS High Performance Change Accumulation

Utility

IBM IMS High Performance Load for z/OS IMS HP Load

IBM IMS High Performance Pointer Checker

for OS/390

IMS HP Pointer Checker

IBM IMS High Performance Prefix Resolution

for z/OS

IMS HP Prefix Resolution

IBM Tivoli® NetView® for z/OS Tivoli NetView for z/OS

x アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 13: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

表 1. ライセンス・プログラムの正式名と短縮名 (続き)

ライセンス・プログラムの正式名 ライセンス・プログラムの短縮名

IBM WebSphere® Application Server for z/OS

and OS/390

WebSphere Application Server for z/OS

IBM WebSphere MQ for z/OS WebSphere MQ

IBM WebSphere Studio Application Developer

Integration Edition

WebSphere Studio

IBM z/OS z/OS

さらに、本書では、以下のIBM 製品名称も参照しています。

v 「IBM C/C++ for MVS」または「IBM C/C++ for MVS/ESA」は、「C/MVS」または「C++/MVS」として参照されます。

v 「IBM CICS for MVS」は「CICS」として参照されます。

v 「IBM COBOL for MVS & VM」、「IBM COBOL for OS/390 & VM」、または「IBM COBOL for z/OS & VM」は、「COBOL」として参照されます。

v 「IBM DataAtlas for OS/2」は「DataAtlas」として参照されます。

v 「IBM Language Environment for MVS & VM」は、「言語環境プログラム」として参照されます。

v 「IBM PL/I for MVS & VM」または「IBM PL/I for OS/390 & VM」は、「PL/I」として参照されます。

構文図の読み方本書で使用されている構文図には、以下の規則が適用されています。

v 構文図は、経路を示す線に沿って、左から右、上から下に読み取ります。以下の規則が使用されます。

– >>--- 記号は、構文図の始まりを示します。

– ---> 記号は、構文図が次の行に続くことを示します。

– >--- 記号は、この構文図が直前の行から続いていることを示します。

– --->< 記号は、構文図の終わりを示します。

v 必須項目は、水平線 (メインパス) 上に表示されます。

�� required_item ��

v オプション項目は、メインパスより下に示されます。

�� required_itemoptional_item

��

メインパスより上にオプショナル項目が示されている場合は、その項目が構文エレメントの実行に影響することはなく、読みやすくするためのみの表記です。

��optional_item

required_item ��

本書について xi

Page 14: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

v 複数の項目から選択できる場合は、縦方向に並べて (スタック) 示されます。

それらの項目の中から 1 つを選択する必要がある 場合は、スタックの中の 1 つの項目がメインパス上に表示されます。

�� required_item required_choice1required_choice2

��

それらの項目から 1 つを選択することがオプションである場合は、スタック全体がメインパスの下に表示されます。

�� required_itemoptional_choice1optional_choice2

��

デフォルト項目が含まれている場合、その項目はメインパスより上に示され、他の選択項目はメインパスより下に示されます。

�� required_itemdefault_choice

optional_choiceoptional_choice

��

v メインパスの上方にある左に戻る矢印線は、項目が反復可能であることを示します。

�� required_item � repeatable_item ��

反復矢印線にコンマが含まれている場合は、反復項目をコンマで区切る必要があります。

�� required_item �

,

repeatable_item ��

スタック上方の反復矢印線は、スタック内の項目を反復できることを示しています。

v 1 つの構文図を複数のフラグメントに分割しなければならない場合もあります。構文フラグメントはメインの構文図とは別に示されますが、フラグメントの内容は、図のメインパス上にあるものとして読む必要があります。

�� required_item fragment-name ��

xii アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 15: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

fragment-name:

required_itemoptional_item

v IMS では、b 記号は、該当位置にブランクが 1 つあることを示します。

v キーワード、および該当する場合はキーワードの最小の省略語は、大文字で表されます。これらは、示されているとおりに入力する必要があります。変数は、すべて小文字のイタリック文字で示されます (例えば、column-name)。これらは、ユーザーが指定する名前または値を表します。

v キーワードとパラメーターは、構文図で間に句読点が示されていない場合は、少なくとも 1 つのスペースで分離します。

v 句読記号、括弧、算術演算子、およびその他の記号は、構文図で示されたとおりに入力します。

v 脚注は、例えば (1) のように、数字を括弧で囲んで示してあります。

ご意見の送付方法お客様のご意見を送り返していただくことは、弊社が正確な情報を提供し、品質の高い情報を提供するうえで重要なことです。本書またはその他の IMS 関連資料についてコメントのある場合、次のいずれかの方法でお送りください。

v Information Management Software for z/OS Solutions Information Centerの各ページの下部にある「ご意見」リンクをクリックしてください。インフォメーション・センターは、http://publib.boulder.ibm.com/infocenter/imzic にあります。

v IMS Library ページ (www.ibm.com/software/data/ims/library.html) にアクセスして、Library Feedback リンクをクリックし、現れたページにご意見を入力してから送信してください。

v ご意見を E メールで [email protected] までお送りください。その際、資料名、資料番号、IMS のバージョン、および、可能であればコメントしたいテキストの特定の場所 (たとえば、PDF のページ番号またはインフォメーション・センターの見出し) を忘れずに入力してください。

本書について xiii

Page 16: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

xiv アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 17: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

変更の要約

現行版での IMS 第 9 版 に対する本書の変更本版には、技術上の変更および編集上の変更が含まれています。

IMS 第 9 版に関する本書の変更点本書には、IMS 第 9 版の編集上の変更が含まれています。

IMS 第 9 版ライブラリーの変更点IMS 第 9 版の IMS ライブラリーの変更としては¤ タイトルの追加 1 つ、タイトルの変更 1 つ、編成上の変更、および主要な用語の変更があります。変更は、変更されたテキストの左側に縦線 (|) を付けて示してあります。

IMS 第 9 版の情報は、http://publib.boulder.ibm.com/infocenter/imzic にあるInformation Management Software for z/OS Solutions Information Centerでご利用いただけるようになりました。Information Management Software for z/OS Solutions

Information Center は、IMS、IMS ツール、DB2 Universal Database (UDB) for

z/OS、DB2 ツール、および DB2 照会報告書作成プログラム (QMF™) のための製品情報に対する集中アクセス用グラフィカル・ユーザー・インターフェースを提供します。

新規および改訂されたタイトルIMS 第 9 版ライブラリーでの主要な変更の詳細は次のとおりです。

v IMS 第 9 版: IMS Connect 手引きおよび解説書

当ライブラリーには新規の資料である「IMS 第 9 版: IMS Connect 手引きおよび解説書」が収録されています。この資料はソフトコピー形式のみで、Information

Management Software for z/OS Solutions Information Center の一部として、またPDF および BookManager® 形式で提供されます。

IMS 第 9 版は、統合化された IMS Connect 機能を提供します。これは、IMS

Connectツール (プログラム番号 5655-K52) に置き換わる機能です。本書では、IMS Connect という用語は、特に断りのないかぎり、IMS 第 9 版の一部として組み込まれた IMS Connect 機能のことを指します。

v 旧資料「IMS 第 8 版 : IMS Java ユーザーの手引き」は、表題が「IMS 第 9 版:

IMS Java 手引きおよび解説書」となりました。この資料はソフトコピー形式のみで、Information Management Software for z/OS Solutions Information Center の一部として、また PDF および BookManager 形式で提供されます。

v IMS 第 9 版のライブラリーを補足するために、小売りの書籍「An Introduction to

IMS」Dean H. Meltz、Rick Long、Mark Harrington、Robert Hain、および Geoff

Nicholls 共著 (ISBN # 0-13-185671-5) が IBM Press から入手可能になりました。詳しくは、IMS Web サイト (www.ibm.com/ims) を参照してください。

© Copyright IBM Corp. 1974, 2006 xv

Page 18: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

編成上の変更IMS 第 9 版ライブラリーに含まれる以下の資料に対して編成上の変更が行われました。

v IMS 第 9 版: カスタマイズの手引き

v IMS 第 9 版: IMS Java 手引きおよび解説書

v IMS 第 9 版: メッセージおよびコード 第 1 巻

v IMS 第 9 版: ユーティリティー解説書: システム

ADFSSMPL (SDFSSMPL ともいう) データ・セットの内容を説明する「IMS 第 9

版: カスタマイズの手引き」に新しい付録が追加されました。

『DLIModel ユーティリティー』という表題の章が「IMS 第 9 版: IMS Java 手引きおよび解説書」から「IMS 第 9 版: ユーティリティー解説書: システム」に移動しました。

「IMS 第 9 版: IMS Java 手引きおよび解説書」に記載されていた DLIModel ユーティリティーのメッセージは「IMS 第 9 版: メッセージおよびコード 第 1 巻」に移されました。

用語の変更IMS 第 9 版では、IMS コマンドに関する新しい用語が取り入れられています。

タイプ 1 コマンド通常、先頭にスラッシュ文字が先行するコマンド。これは、有効な任意のIMS コマンド送信元から入力することができます。IMS 第 8 版では、これらのコマンドはクラシック・コマンドと呼ばれていました。

タイプ 2 コマンドOM API を介してのみ入力されるコマンド。タイプ 2 コマンドは、タイプ1 コマンドより柔軟であり、より広い範囲に適用できます。IMS 第 8 版では、これらのコマンドは、IMSplex コマンドまたは拡張 コマンドと呼ばれていました。

IMS のアクセシビリティー機能アクセシビリティー機能は、運動障害または視覚障害など身体に障害を持つユーザーが情報技術製品を快適に使用できるようにサポートします。

アクセシビリティー機能以下のリストは、IMS における主なアクセシビリティー機能を示しています。これらの機能は、以下をサポートしています。

v キーボードのみの操作。

v スクリーン・リーダー (読み上げソフトウェア) によって通常使用されるインターフェース。

注: Information Management Software for z/OS Solutions Information Center

(http://publib.boulder.ibm.com/infocenter/imzic にあります)、およびその関連資料は、アクセシビリティーが使用可能です。マウスの代わりにキーボードを使用してすべての機能を操作できます。

xvi アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

Page 19: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

キーボード・ナビゲーションインフォメーション・センターおよび IMS ISPF パネル機能には、キーボードまたはキーボード・ショートカット・キーを使用してアクセスできます。

インフォメーション・センターのナビゲートに関する情報は、http//publib.boulder.ibm.com/infocenter/imzic にあるインフォメーション・センター・ホームでキーボードを使用して検索できます。

TSO/E または ISPF を使用しての IMS ISPF パネルのナビゲートに関する情報については、 「z/OS V1R1.0 TSO/E Primer」、「z/OS V1R5.0 TSO/E User’s Guide」、および「z/OS V1R5.0 ISPF User’s Guide, Volume 1」を参照してください。上記の資料には、キーボード・ショートカットまたはファンクション・キー (PF キー) の使い方など、インターフェースのナビゲーション方法が説明されています。それぞれの資料では、PF キーのデフォルトの設定値とそれらの機能の変更方法についても説明しています。

IBM におけるアクセシビリティーアクセシビリティーに対する IBM のコミットメントについて詳しくは、www.ibm.com/able で「IBM Human Ability and Accessibility Center」を参照してください。

変更の要約 xvii

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

Page 20: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

xviii アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 21: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

第 1 章 IMS を使用した EXEC DLI アプリケーション・プログラムの処理

この章では、CICS プログラムのコンポーネントについて説明します。また、この例で使用される階層のサンプルについても説明します。

EXEC DLI アプリケーションは EXEC DLI コマンドを使用して DL/I データベースの読み取りと更新を行います。 これらのアプリケーションは、純粋なバッチ・プログラム、DBCTL または DB/DC を使用して実行する BMP プログラム、DBCTL

を使用したオンライン CICS プログラムのいずれかとして実行できます。 DBCTL

を使用している場合には、EXEC DLI プログラムからシステム・サービス・コマンドも出すことができます。

IMS DB/DC は、DBCTL と同様のサービスを提供します。

以下のトピックには追加情報が記載されています。

v 『EXEC DLI を使用する前に』

v 3ページの『データベース階層の例』

EXEC DLI を使用する前に2ページの図 1 は、DL/I データベースにアクセスするために EXEC DLI コマンドを使用するプログラムの主なエレメントを示しています。 CICS プログラムと、( 2

ページの図 1 に示す) コマンド・レベルのバッチ・プログラムまたは BMP プログラムの主な相違点は、バッチ・プログラムの場合は、PSB をスケジュールしないことと、CICS プログラムの場合は、チェックポイントを出さないことです。 2ページの図 1 の左側に示されている番号は、この図の後の注に対応しています。

© Copyright IBM Corp. 1974, 2006 1

|

|

|

|

|

|

Page 22: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

図 1 の注 :

�1� 入出力域。 DL/I は入出力域を使ってプログラムとの間でセグメントの受け渡しを行います。 セグメントごとに異なる入出力域を使用することもできます。

�2� キー・フィードバック域。 DL/I は、要求があったとき、検索された最低レベルのセグメントの連結キーをキー・フィードバック域に渡します。

�3�DL/I インターフェース・ブロック (DIB)。 DL/I および CICS は、各コマンドの結果を DIB に入れます。DIB には、呼び出しレベルのインターフェースを使用するプログラムの DB PCB に戻される情報のほとんどが格納されます。

注: �3� と �4� の間の水平線は、宣言セクションの終わりとプログラムの実行可能コード・セクションの始まりを表しています。

�4� プログラムの入り口。プログラムの入り口時点でプログラムに制御が渡されます。

�5�EXEC DLI コマンドを発行する。 コマンドは、データベース内の情報の読み取りや更新を行います。

�6� 状況コードを検査する。 出した各コマンドの結果を調べる場合は、データベースを処理するために EXEC DLI コマンドを出したあと、およびチェックポイント・コマンドを出したあとで、DIB に入っている状況コードを検査しなければなりません。

�7� チェックポイントを発行する。必要に応じてチェックポイントを発行して、どこから再始動するか設定します。 チェックポイントを実行すると、データベースの変更がコミットされるとともに、リソースが解放されます。

�8� 終了。 制御がオペレーティング・システムに戻り、データベースの変更がコミットされ、リソースが解放されます。

図 1. コマンド・レベルのバッチ・プログラムまたは BMP プログラムの構造

EXEC DLI を使用する前に

2 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 23: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

要件 : CICS Transaction Server for z/OS は、この版の IMS で実行します。特に区別する必要がない限りは、サポートされるどの版も CICS と呼ばれます。サポートされているソフトウェアの詳細なリストについては、「IMS 第 9 版: リリース計画の手引き」を参照してください。

データベース階層の例例の多くは、図 2 の図に示すような医療機関の階層構造を使用しています。このデータベースには、診療所がその患者について保有している情報が入っています。 それらの例を理解するためには、データベースに含まれている階層およびセグメントについてよく知っていなければなりません。

次の各表では、階層内の各セグメントのレイアウトを示します。 セグメントのフィールド名は、各表の最初の行に示されています。それぞれのフィールド名の下の数値は、そのフィールドに定義された長さをバイト数で表しています。

v PATIENT セグメント

表 2 では PATIENT セグメントを示します。

このセグメントは、次の 3 つのフィールドから構成されます。

– 患者の番号 (PATNO)

– 患者の名前 (NAME)

– 患者の住所 (ADDR)

PATIENT は固有のキー・フィールド PATNO を持っています。PATIENT セグメントは、患者番号に基づく昇順に保管されます。 このデータベースにおいて最も低い患者番号は 00001 で、最も高い患者番号は 10500 です。

表 2. PATIENT セグメント

フィールド名 フィールド長

PATNO 5

NAME 10

ADDR 30

v ILLNESS セグメント

4ページの表 3 では ILLNESS セグメントを示します。

図 2. 医療機関の階層構造

EXEC DLI を使用する前に

第 1 章 IMS を使用した EXEC DLI アプリケーション・プログラムの処理 3

|

Page 24: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

このセグメントは、次の 2 つのフィールドから構成されます。

– 患者が病気のために来院した日付 (ILLDATE)

– 病名 (ILLNAME)

キー・フィールドは ILLDATE です。 1 人の患者が同じ日に複数の病気で診療所を訪れる可能性があるため、このキー・フィールドは固有ではありません。つまり、同じ (等しい) キー・フィールド値をもつ ILLNESS セグメントが複数存在するということです。

データベース管理者 (DBA) は、通常、インストール時に、等しいキーをもつ、またはキーをもたないデータベース・セグメントを配置する順序を決定します。DBA は、DBD の SEGM ステートメントの RULES キーワードを使用してセグメントの順序を指定することができます。

等しいキーをもつ、またはキーをもたないセグメントの場合、RULES はそのセグメントの挿入位置を決定します。RULES=LAST のとき、等しいキーをもつ複数の ILLNESS セグメントは、そのキーのなかで先入れ先出し法 (FIFO) で保管されます。固有キーをもつ ILLNESS セグメントは、RULES に関係なく、日付フィールドの昇順に保管されます。ILLDATE は、YYYYMMDD という形式で指定されます。

表 3. ILLNESS セグメント

フィールド名 フィールド長

ILLDATE 8

ILLNAME 10

v TREATMNT セグメント

表 4 では TREATMNT セグメントを示します。

このセグメントは、次の 4 つのフィールドから構成されます。

– 治療日 (DATE)

– 患者に投与された薬品 (MEDICINE)

– 患者が受け取った薬品の量 (QUANTITY)

– その治療を処方した医師の名前 (DOCTOR)

TREATMNT セグメントのキー・フィールドは DATE です。 1 人の患者が同じ日に複数の治療を受ける場合もあるため、DATE は非固有キー・フィールドです。 TREATMNT は、ILLNESS と同様、RULES=LAST をもつものとして指定されています。 TREATMNT セグメントも先入れ先出し法で保管されます。 DATE

は、ILLDATE と同じ形式 (YYYYMMDD) で指定されます。

表 4. TREATMNT セグメント

フィールド名 フィールド長

DATE 8

MEDICINE 10

QUANTITY 4

DOCTOR 10

データベース階層の例

4 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 25: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

v BILLING セグメント

表 5 では BILLING セグメントを示します。このセグメントには、現在の請求金額を示すフィールドしかありません。 BILLING にはキー・フィールドはありません。

表 5. BILLING セグメント

フィールド名 フィールド長

BILLING 6

v PAYMENT セグメント

表 6 では PAYMENT セグメントを示します。このセグメントには、当月の支払金額を示すフィールドしかありません。PAYMENT セグメントにはキー・フィールドはありません。

表 6. PAYMENT セグメント

フィールド名 フィールド長

PAYMENT 6

v HOUSHOLD セグメント

表 7 では HOUSHOLD セグメントを示します。

このセグメントは、次の 2 つのフィールドから構成されます。

– 患者の世帯構成員の名前 (RELNAME)

– 各世帯構成員と患者の関係 (RELATN)

HOUSEHOLD セグメントのキー・フィールドは RELNAME です。

表 7. HOUSEHOLD セグメント

フィールド名 フィールド長

RELNAME 10

RELATN 8

データベース階層の例

第 1 章 IMS を使用した EXEC DLI アプリケーション・プログラムの処理 5

Page 26: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

データベース階層の例

6 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 27: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

第 2 章 アプリケーション・プログラム・エレメントの定義

この章では、アプリケーション・インターフェース・ブロック (AIB) および DL/I

インターフェース・ブロック (DIB) と一緒に EXEC DLI コマンドを使用する方法について説明します。フィードバック域および入出力域の定義についても説明します。

以下のトピックには追加情報が記載されています。

v 『アプリケーション・インターフェース・ブロック (AIB) の指定』

v 8ページの『DL/I インターフェース・ブロック (DIB) の指定』

v 11ページの『キー・フィードバック域の定義』

v 12ページの『入出力域の定義』

アプリケーション・インターフェース・ブロック (AIB) の指定EXEC DLI コマンドは AIB インターフェースを使用できます。 たとえば、AIB インターフェースを使用すると、GU コマンドの形式は PCB 形式を使用した EXEC

DLI GU USING PCB(n) ではなく、EXEC DLI GU AIB(aib) になります。

CICS Transaction Server 1.1 以降では、 37ページの『第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド』に記載されている EXEC DLI コマンドがAIB 形式 (および PCB 形式) でサポートされています。

CICS Transaction Server 1.1 以降、および IMS/ESA® 第 5 版では、EXEC DLI インターフェースの使用により、AIB 専用コマンド ICMD、RCMD、および GMSG

がサポートされています。

CICS EDF (実行診断機能) デバッグ・トランザクションは、PCB タイプの要求を処理する場合と同様に、AIB EXEC DLI 要求もサポートしています。

AIB マスクAIB マスクはアプリケーションによって指定され、EXEC 呼び出しで PCB 番号の代わりに参照されなければなりません (たとえば、EXEC DLI GU AIB(aib))。

AIBRETRN = X'00000000' または X'00000900' の場合、DIBSTAT フィールドには有効な STATUS コードが設定されています。アプリケーションは他の値についてAIBRETRN をテストし、応答する必要があります。

AIB サポートに関する CICS の制約事項機能シップのための制約事項は、次のとおりです。

v AIBLEN フィールドは 128 ~ 256 バイトでなければなりません。 推奨値は 128

バイトです。

v PSB 内の PCB に LIST=NO が指定されていてはなりません。

© Copyright IBM Corp. 1974, 2006 7

|

|

|

Page 28: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

DL/I インターフェース・ブロック (DIB) の指定プログラムが DL/I コマンドを実行するたびに、DL/I は状況コードとその他の情報を DL/I インターフェース・ブロック (DIB) を介してプログラムに戻します。DIB

は IMS PCB のサブセットです。プログラムは、状況コードを検査して、コマンドが正しく実行されたかどうか確認する必要があります。

各プログラムの作業ストレージには独自の DIB があります。 DIB の内容は、そのプログラムの中で実行された最後の DL/I コマンドの状況を表します。 プログラムの DIB に入っている情報が、トランザクションで使用している別のプログラムに必要な場合、この情報をそのプログラムに渡さなければなりません。

DIB 内のフィールドにアクセスするときは、変換プログラムによってプログラム内に自動的に生成されるラベルを使用します。

制約事項: それらのラベルは予約済みであり、再定義することはできません。

COBOL、PL/I、アセンブラー言語、C などのプログラムでは、一部の変数名が必須となります。

COBOL プログラム

DIBVER PICTURE X(2)DIBSTAT PICTURE X(2)DIBSEGM PICTURE X(8)DIBSEGLV PICTURE X(2)DIBKFBL PICTURE S9(4) COMPUTATIONALDIBDBDNM PICTURE X(8)DIBDBORG PICTURE X(8)

DIBVER CHAR(2)DIBSTAT CHAR(2)DIBSEGM CHAR(8)DIBSEGLV CHAR(2)DIBKFBL FIXED BINARY (15,0)DIBDBDNM CHAR(8)DIBDBORG CHAR(8)

アセンブラー言語プログラム

DIBVER CL2DIBSTAT CL2DIBSEGM CL8DIBSEGLV CL2DIBKFBL HDIBDBDNM CL8DIBDBORG CL8

C プログラム

unsigned char dibver {2} ;unsigned char dibstat {2} ;unsigned char dibsegm {8} ;unsigned char dibfic01 ;unsigned char dibfic02 ;unsigned char dibseglv {2} ;signed short int dibkfbl ;unsigned char dibdbdnm {8} ;unsigned char dibdborg {8} ;unsigned char dibfic03 {6} ;

DL/I インターフェース・ブロック (DIB) の指定

8 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 29: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

以下の注では、各変数名の内容について説明します。括弧で囲まれた名前は、変数名に入っている情報にアクセスする時に使用されるラベルです。

1. 変換プログラムのバージョン (DIBVER)

これは、プログラムが使用している DIB 形式のバージョンです。 (DIBVER は文書化と問題判別に使用されます。)

2. 状況コード (DIBSTAT)

DL/I は、各 DL/I コマンドを実行後、このフィールドに 2 文字の状況コードを入れます。 このコードは、コマンドの結果を記述します。

DL/I コマンドの処理後、DL/I は、このコマンドに続く次の順次命令で制御をプログラムに戻します。各コマンドの実行後、プログラムはまず最初に状況コード・フィールドをテストし、適切な処置を行う必要があります。 このコマンドが完全に正常に実行されたときは、このフィールドにブランクが入ります。

このフィールドに戻される状況コードは次のとおりです (プログラムに戻される状況コードは、以下のコードだけです)。

�� (ブランク) コマンドは完全に成功しました。

BA GU、GN、GNP、DLET、REPL、ISRT コマンドの実行後に戻されます。 データがありませんでした。

BC DLET、REPL、ISRT コマンドの実行後に戻されます。デッドロックが検出されました。

FH GU、GN、GNP、DLET、REPL、ISRT、POS、CHKP、SYMCHKP コマンドの実行後に戻されます。 DEDB にアクセスできませんでした。

FW GU、GN、GNP、DLET、REPL、ISRT、POS コマンドの実行後に戻されます。通常の許容バッファー・スペースよりも多くのスペースが必要です。

GA 修飾されていない GN および GNP コマンドの実行後に戻されます。DL/I はセグメントを戻しましたが、このセグメントは、最後に戻されたセグメントよりも階層レベルが高くなっています。

GB GN コマンドの実行後に戻されます。 DL/I は GN コマンドを正しく実行しようとしてデータベースの終わりに達したため、プログラムの入出力域にセグメントを戻しませんでした。

GD ISRT コマンドの実行後に戻されます。 プログラムが出した ISRT コマンドに、挿入されるセグメントより高いすべてのレベルに対してSEGMENT オプションが指定されていませんでした。

GE GU、GN、GNP、ISRT、STAT コマンドの実行後に戻されます。 DL/I は、ユーザーが要求したセグメント、あるいはユーザーが挿入しようとしているセグメントの親を 1 つも見つけることができませんでした。

GG 読み取りコマンドに対するものです。 処理オプション GOT またはGON を指定しているプログラムが検索しようとしているセグメントに無効ポインターが含まれている場合、DL/I は、このプログラムに GG 状況コードを戻します。

GK 修飾されていない GN および GNP コマンドの実行後に戻されます。DL/I は、修飾されていない GN または GNP 要求を正しく実行するセグ

DL/I インターフェース・ブロック (DIB) の指定

第 2 章 アプリケーション・プログラム・エレメントの定義 9

Page 30: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

メントを戻しますが、このセグメントのタイプが最後に戻されたセグメントのタイプと異なります (ただし、レベルは同じです)。

II ISRT コマンドの実行後に戻されます。 ユーザーが挿入しようとしているセグメントがすでにデータベースにあります。 セグメントを挿入しようとする前にこのセグメントのパスを設定しておかなかった場合にも、このコードが戻される場合があります。 ユーザーが挿入しようとしているセグメントが、別の階層またはデータベース・レコードの中の同一キーをもつセグメントと一致している場合があります。

LB LOAD コマンドを出した後にだけロード・プログラムが戻されます。 ロードしようとしているセグメントがすでにデータベースにあります。DL/I は、キー・フィールドをもつセグメントに対してのみこの状況コードを戻します。

NI ISRT と REPL コマンドの実行後に戻されます。 挿入または置き換えようとしているセグメントは、重複項目を禁止している 2 次索引に重複項目の挿入を要求しています。この状況コードは、ログ・レコードを直接アクセス・ストレージに書き込むバッチ・プログラムに対して戻されます。ディスクにログを記録しない CICS プログラムがこの状況を検出すると、プログラム (トランザクション) が異常終了します。

TG TERM コマンドの実行後に戻されます。 PSB がスケジュールされていないのに、プログラムが PSB を終了させようとしました。

これらの DIBSTAT 状況コードは例外条件を示すものであり、プログラムに戻されるのはこれらの状況コードだけです。その他の状況コードはすべてエラー条件を示し、トランザクションまたはバッチ・プログラムを異常終了させます。CICS プログラムからエラー・ルーチンに制御を渡す場合には、CICS HANDLE

ABEND コマンドを出すことができます。異常終了コードの最後の 2 バイトが、異常終了の原因となった IMS 状況コードです。 HANDLE ABEND コマンドの詳細については、ご使用のバージョンの CICS のアプリケーション・プログラミング解説書を参照してください。バッチ BMP プログラムは、異常終了 1041 で異常終了します。

3. セグメント名 (DIBSEGM)

これは、正常にアクセスされた最も低いレベルのセグメントの名前です。検索が成功すると、このフィールドに検索セグメントの名前が入ります。 検索が失敗すると、このフィールドには、要求されたセグメントに通じるパスに沿う、このコマンドを正しく実行した最後のセグメントが入ります。

XRST コマンドを出すと、このフィールドにはブランク (正常に始動したことを示す) か、チェックポイント ID (プログラムが再始動したポイントのチェックポイント ID を示す) が設定されます。

以下のいずれかのコマンドを出した後で、このフィールドをテストします。

v GN

v GNP

v GU

v ISRT

DL/I インターフェース・ブロック (DIB) の指定

10 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 31: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

v LOAD

v RETRIEVE

v XRST

4. セグメント・レベル番号 (DIBSEGLV)

これは、検索された最低レベル・セグメントの階層レベルです。 IMS DB は、要求されたセグメントを検索するときに、セグメントのレベル番号を文字形式でこのフィールドに入れます。ユーザーがパス・コマンドを出すと、IMS DB は検索された最低レベルのセグメントの番号を格納します。 IMS DB は、要求されたセグメントを見つけられなかった場合には、IMS DB が検出した、コマンドを正しく実行する最後のセグメントのレベル番号を戻します。これは、要求されたセグメントの検索時に IMS DB が検出した最後のパスの最低レベル・セグメントです。

以下のいずれかのコマンドを出した後で、このフィールドをテストします。

v GN

v GNP

v GU

v ISRT

v LOAD

v RETRIEVE

5. キー・フィードバック長 (DIBKFBL)

これはハーフワードのフィールドであり、このフィールドには、読み取りコマンドで KEYFEEDBACK オプションを使用したとき、連結キーの長さが入ります。 ユーザーが指定したキー・フィードバック域の長さでは連結キーが入りきらない場合、キーは切り捨てられ、この区域は完全な連結キーの実際の長さを示します。

6. データベース記述名 (DIBDBDNM)

これは、フルワードのフィールドで、DBD の名前が入ります。 DBD は、データベースを記述するときに使用されるすべての情報を格納する DL/I 制御ブロックです。DIBDBDNM フィールドは、QUERY コマンドによってのみ戻されます。

7. データベース編成 (DIBDBORG)

これは、フルワードのフィールドで、データベース編成のタイプ (HDAM、HIDAM、HISAM、HSAM、GSAM、SHSAM、INDEX、または DEDB) を指定します。そのタイプの右側には、ブランクが埋め込まれています。DIBDBORG フィールドは、QUERY コマンドによってのみ戻されます。

キー・フィードバック域の定義セグメントの連結キーを検索するためには、キーを入れる区域を定義しなければなりません。戻される連結キーは、検索された最低レベル・セグメントのキーです。(検索セグメントは、DIB の中の DIBSEGM フィールドおよび DIBSEGLV フィールドに表示されます。)

DL/I インターフェース・ブロック (DIB) の指定

第 2 章 アプリケーション・プログラム・エレメントの定義 11

Page 32: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

読み取り (GET) コマンドで KEYFEEDBACK オプションを指定して、キー・フィードバック域名を指定します。

連結キーは、セグメントのキーと、その親のすべてに対するキーとで構成されます。 たとえば、患者番号が 05142 で日付が 1988 年 1 月 2 日の ILLNESS セグメントの連結キーを要求したものとします。0514219880102 が、キー・フィードバック・フィールドに戻されます。この数は、PATIENT セグメントのキー・フィールド (PATNO) に、ILLNESS セグメントのキー・フィールド (ILLDATE) が連結されたものです。

ユーザーが定義したキー・フィードバック域が短すぎて連結キー全体が入らないと、このキーは切り捨てられます。

入出力域の定義プログラムとデータベースの間でセグメントをやりとりするときに、入出力域を使用します。 入出力域に何が入るかは、ユーザーが出すコマンドの種類によって異なります。

v セグメントを検索するとき、DL/I は要求されたセグメントを入出力域に入れます。

v 新しいセグメントを追加する場合は、ISRT コマンドを出す前に入出力域でこの新しいセグメントを作成しておきます。

v セグメントを変更する前に、まず入出力域でセグメントを検索して DLET またはREPL コマンドを出します。

制約事項: 入出力域は、データベースから検索するかデータベースに追加する最長セグメントが入るだけの長さでなければなりません (この長さがないと、ストレージのオーバーラップが発生します。)1 つのコマンドで複数のセグメントを検索、追加、または置換する場合は、セグメントごとに 1 つの入出力域を定義してください。

セグメントが入出力域でどのように見えるかを示す例として、1988 年 3 月 3 日に診療所に来た Robert James の ILLNESS セグメントを検索したとします。 彼は、咽頭炎のため治療を受けました。入出力域に戻されたデータは、次のとおりです。

19880303STREPTHROA

COBOL 入出力域COBOL プログラムでは、入出力域を 01 レベルの作業ストレージ項目として定義してください。 この区域を 02 項目でさらに定義することができます。

IDENTIFICATION DIVISION....DATA DIVISION.WORKING-STORAGE SECTION.01 INPUT-AREA.

02 KEY PICTURE X(6).02 FIELD PICTURE X(84).

キー・フィードバック域の定義

12 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 33: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

PL/I 入出力域PL/I では、DL/I 呼び出しに使用される入出力域の名前は、固定長文字ストリング、大構造、接続配列、または調整可能文字ストリングの名前でなければなりません。制約事項: PL/I 入出力域を小構造の名前、または属性 VARYING 付き文字ストリングの名前にすることはできません。入出力域を小構造として定義したい場合は、小構造を指すポインターをパラメーターとして使用することができます。

プログラムは、入出力域を固定長文字ストリングとして定義してから、その文字ストリングの名前を渡すか、あるいは前述の方法の 1 つで入出力域を定義してから、その定義を指すポインター変数を渡さなければなりません。サブストラクチャーまたは配列エレメントを使用したい場合は、DEFINED または BASED 属性を使用してください。

DECLARE 1 INPUT_AREA,2 KEY CHAR(6),2 FIELD CHAR(84);

アセンブラー言語入出力域

アセンブラー言語プログラムの入出力域は、次のようにフォーマット設定されます。

IOAREA DS 0CL90KEY DS CL6FIELD DS CL84

入出力域の定義

第 2 章 アプリケーション・プログラム・エレメントの定義 13

Page 34: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

入出力域の定義

14 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 35: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

第 3 章 アプリケーション・プログラムの作成

この章では、EXEC DLI コマンドを使用してプログラムを実行するためのプログラミングの指針と準備について説明します。また、アセンブラー言語、COBOL、PL/I、C、C++ でのスケルトン・プログラムも収録しています。

以下のトピックには追加情報が記載されています。

v 『プログラミングの指針』

v 34ページの『EXEC DLI プログラムの実行準備』

プログラミングの指針ここでは、効率的でエラーのないプログラムを作成する上での指針について説明します。

プログラムが出す DL/I 要求の数、タイプ、および順序は、プログラムの能率に影響します。 プログラムの設計が悪くても、正しくコーディングされているかぎり、プログラムは動作します。 下記の推奨事項は、アプリケーション・プログラムに対する最も効率の良い設計開発を行うのに役立ちます。効率の悪い設計のプログラムはパフォーマンスに悪影響を及ぼし、またそのプログラムの変更も難しくなります。特定のコマンドまたは呼び出しの組み合わせがパフォーマンスにどのように影響するかを理解することによって、そのような問題の回避や、より効率の良いプログラムの設計に役立ちます。

プログラムについて一般的な呼び出し順序を計画したら、以下の指針を使用して、計画した順序をさらに改善してください。通常、要求順序が効率の良いものであれば、内部 DL/I 処理も効率良く行われます。

v 最も単純な呼び出しを使用してください。 要求を修飾して DL/I の検索範囲を狭めますが、必要以上に修飾しないでください。

v 必要なセグメントまでの最短パスを DL/I に指定する要求または一連の要求を使用してください。

v プログラムでは最小限の要求しか使用しないでください。プログラムが DL/I 要求を出すたびに、システム時刻とリソースが使用されます。不必要な呼び出しは、次の処置を行うことにより削除できます。

– 同じパスにある複数のセグメントの置き換え、検索、または挿入を行う場合は、パス要求を使用してください。 これを行うために複数の要求を使用している場合は、不必要な要求を出していることになります。

– プログラムが個別の入出力域にセグメントを保管し、次にこのセグメントが必要になる時にはこの入出力域からセグメントを取り出せるように、順序を変更してください。 プログラムの実行中に、プログラムが同じセグメントを複数回検索している場合は、不必要な要求を出していることになります。

– GB、GE、および II 状況コードが出される結果となるような、不必要で非生産的な要求を見越して取り除いてください。 たとえば、特定のセグメント・タイプに対して GN を出す際に、そのセグメント・タイプのオカレンスの数が分

© Copyright IBM Corp. 1974, 2006 15

|

|

|

Page 36: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

かっている場合は、GN は出さないでください。GE 状況コードが発生する原因となります。 プログラムが検索したオカレンスの数を記録しておくことができるため、そのセグメント・タイプのすべてのオカレンスが検索されたことが分かった時点で別の処理を継続することができます。

– 各親セグメントの存在を確認するには、読み取り要求を出すのではなく、親セグメントについて修飾した挿入要求を出してください。 セグメントを挿入する場合、親セグメントが存在しないと従属セグメントを挿入することはできません。 DL/I が GE 状況コードを戻すときは、親セグメントが 1 つも存在していないということです。

v プログラム論理の主要セクションは一緒にしておいてください。 たとえば、エラー・ルーチンおよび印刷ルーチンなどの条件付きルーチンへは、正常処理を続けるためにプログラムの別の部分において分岐し、それらの周囲で分岐しないでください。

v データの物理的な配置を効率的に使用する呼び出し順を使用してください。 セグメントは、できるかぎり階層順でアクセスしてください。階層を逆方向に移動しないでください。

v データベース・レコードは、ルート・セグメントのキー・フィールド順に処理してください。 (HDAM データベースの場合、この順序は、使用されているランダム化ルーチンによって異なります。詳細については、DBA を調べてください。)

v プログラムの論理、およびコマンドまたは呼び出しの構造を、データベースの構造に大きく依存した方法で構築しないでください。階層の現行構造によっては、プログラムの柔軟性が損なわれます。

アセンブラー言語でのプログラム・コーディング次のサンプルは、アセンブラー言語で書かれた CICS オンライン・プログラムです。このサンプル・プログラムでは、コマンド・レベル・プログラムのさまざまな部分がどのように組み合わされているか、および EXEC DLI コマンドがどのようにコーディングされているかを示しています。

一部のコマンドを除き、このプログラムは、バッチ、BMP、CICS プログラムに適用されます。違いはいずれも、サンプル・アセンブラー・コードの注で強調して示してあります。サンプル・コードの右側の番号は、このような注を指しています。

*ASM XOPTS(CICS,DLI)* �1�R2 EQU 2R3 EQU 3R4 EQU 4R11 EQU 11R12 EQU 12R13 EQU 13DFHEISTG DSECTSEGKEYA DS CL4SEGKEYB DS CL4 �2�SEGKEYC DS CL4SEGKEY1 DS CL4SEGKEY2 DS CL4CONKEYB DS CL8SEGNAME DS CL8SEGLEN DS HPCBNUM DS HAREAA DS CL80AREAB DS CL80 �3�

プログラミングの指針

16 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

|

|

|

|

|

|

|

Page 37: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

AREAC DS CL80AREAG DS CL250AREASTAT DS CL360* COPY MAPSET********************************************************************* INITIALIZATION* HANDLE ERROR CONDITIONS IN ERROR ROUTINE �4�* HANDLE ABENDS (DLI ERROR STATUS CODES) IN ABEND ROUTINE* RECEIVE INPUT MESSAGE********************************************************************SAMPLE DFHEIENT CODEREG=(R2,R3),DATAREG=(R13,R12),EIBREG=R11 �5�*

EXEC CICS HANDLE CONDITION ERROR(ERRORS) �6�*

EXEC CICS HANDLE ABEND LABEL(ABENDS) �6�*

EXEC CICS RECEIVE MAP (’SAMPMAP’) MAPSET(’MAPSET’) �6�* ANALYZE INPUT MESSAGE AND PERFORM NON-DLI PROCESSING********************************************************************* SCHEDULE PSB NAMED ’SAMPLE1’********************************************************************

EXEC DLI SCHD PSB(SAMPLE1) �7�BAL R4,TESTDIB CHECK STATUS

********************************************************************* RETRIEVE ROOT SEGMENT AND ALL ITS DEPENDENTS********************************************************************

MVC SEGKEYA,=C’A300’ �8�EXEC DLI GU USING PCB(1) SEGMENT(SEGA) INTO(AREAA) X

SEGLENGTH(80) WHERE(KEYA=SEGKEYA) FIELDLENGTH(4)BAL R4,TESTDIB CHECK STATUS

GNPLOOP EQU *EXEC DLI GNP USING PCB(1) INTO(AREAG) SEGLENGTH(250)CLC DIBSTAT,=C’GE’ LOOK FOR END �9�BE LOOPDONE DONE AT ’GE’BAL R4,TESTDIB CHECK STATUSB GNPLOOP

LOOPDONE EQU ********************************************************************** INSERT NEW ROOT SEGMENT********************************************************************

MVC AREAA,=CL80’DATA FOR NEW SEGMENT INCLUDING KEY’EXEC DLI ISRT USING PCB(1) SEGMENT(SEGA) FROM(AREAA) X

SEGLENGTH(80)BAL R4,TESTDIB CHECK STATUS

********************************************************************* RETRIEVE 3 SEGMENTS IN PATH AND REPLACE THEM********************************************************************

MVC SEGKEYA,=C’A200’MVC SEGKEYB,=C’B240’MVC SEGKEYC,=C’C241’EXEC DLI GU USING PCB(1) X

SEGMENT(SEGA) WHERE(KEYA=SEGKEYA) X�10�FIELDLENGTH(4) XINTO(AREAA) XSEGLENGTH(80) XSEGMENT(SEGB) WHERE(KEYB=SEGKEYB) FIELDLENGTH(4) XINTO(AREAB) X

アセンブラー言語でのプログラム・コーディング

第 3 章 アプリケーション・プログラムの作成 17

Page 38: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

SEGLENGTH(80) XSEGMENT(SEGC) WHERE(KEYC=SEGKEYC) FIELDLENGTH(4) XINTO(AREAC) XSEGLENGTH(80)

BAL R4,TESTDIB* UPDATE FIELDS IN THE 3 SEGMENTS

EXEC DLI REPL USING PCB(1) XSEGMENT(SEGA) FROM(AREAA) SEGLENGTH(80) XSEGMENT(SEGB) FROM(AREAB) SEGLENGTH(80) XSEGMENT(SEGC) FROM(AREAC) SEGLENGTH(80)

BAL R4,TESTDIB CHECK STATUS********************************************************************* INSERT NEW SEGMENT USING CONCATENATED KEY TO QUALIFY PARENT********************************************************************

MVC AREAC,=CL80’DATA FOR NEW SEGMENT INCLUDING KEY’MVC CONKEYB,=C’A200B240’EXEC DLI ISRT USING PCB(1) X

SEGMENT(SEGB) KEYS(CONKEYB) KEYLENGTH(8) XSEGMENT(SEGC) FROM(AREAC) SEGLENGTH(80)

BAL R4,TESTDIB CHECK STATUS********************************************************************* RETRIEVE SEGMENT DIRECTLY USING CONCATENATED KEY* AND THEN DELETE IT AND ITS DEPENDENTS********************************************************************

MVC CONKEYB,=C’A200B230’EXEC DLI GU USING PCB(1) X

SEGMENT(SEGB) XKEYS(CONKEYB) KEYLENGTH(8) XINTO(AREAB) SEGLENGTH(80)

BAL R4,TESTDIB CHECK STATUSEXEC DLI DLET USING PCB(1) X

SEGMENT(SEGB) SEGLENGTH(80) FROM(AREAB)BAL R4,TESTDIB CHECK STATUS

********************************************************************* RETRIEVE SEGMENT BY QUALIFYING PARENT WITH CONCATENATED KEY,* OBJECT SEGMENT WITH WHERE OPTION USING A LITERAL,* AND THEN SET PARENTAGE** USE VARIABLES FOR PCB INDEX, SEGMENT NAME, AND SEGMENT LENGTH********************************************************************

MVC CONKEYB,=C’A200B230’MVC SEGNAME,=CL8’SEGA’MVC SEGLEN,=H’80’MVC PCBNUM,=H’1’EXEC DLI GU USING PCB(PCBNUM) X

SEGMENT((SEGNAME)) XKEYS(CONKEYB) KEYLENGTH(8) SETPARENT XSEGMENT(SEGC) INTO(AREAC) SEGLENGTH(SEGLEN) XWHERE(KEYC=’C520’)

BAL R4,TESTDIB CHECK STATUS********************************************************************* RETRIEVE DATABASE STATISTICS********************************************************************

EXEC DLI STAT USING PCB(1) INTO(AREASTAT) XVSAM FORMATTED LENGTH(360)

BAL R4,TESTDIB CHECK STATUS********************************************************************* RETRIEVE ROOT SEGMENT USING BOOLEAN OPERATORS

アセンブラー言語でのプログラム・コーディング

18 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 39: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

********************************************************************

MVC SEGKEY1,=C’A050’MVC SEGKEY2,=C’A150’EXEC DLI GU USING PCB(1) SEGMENT(SEGA) INTO(AREAA) X

SEGLENGTH(80) FIELDLENGTH(4,4,4,4) XWHERE(KEYA > SEGKEY1 AND KEYA < SEGKEY2KEYA > ’A275’ AND KEYA < ’A350’)

BAL R4,TESTDIB CHECK STATUS********************************************************************* TERMINATE PSB WHEN DLI PROCESSING IS COMPLETED********************************************************************

EXEC DLI TERM �11�********************************************************************* SEND OUTPUT MESSAGE********************************************************************

EXEC CICS SEND MAP(’SAMPMAP’) MAPSET(’MAPSET’) �6�EXEC CICS WAIT TERMINAL

********************************************************************* COMPLETE TRANSACTION AND RETURN TO CICS********************************************************************

EXEC CICS RETURN �12�********************************************************************* CHECK STATUS IN DIB********************************************************************TESTDIB EQU *

CLC DIBSTAT,=C’ ’ IS STATUS BLANK �13�BER R4 YES - RETURN

* HANDLE DLI STATUS CODES REPRESENTING EXCEPTIONAL CONDITIONS*

BR R4 RETURNERRORS EQU ** HANDLE ERROR CONDITIONS*ABENDS EQU ** HANDLE ABENDS INCLUDING DLI ERROR STATUS CODES*

END

サンプル・アセンブラー・コードに対する注

�1�EXEC DLI コマンドを含む CICS オンライン・プログラムの場合、DLI オプションと CICS オプションを指定しなければなりません。EXEC DLI コマンドを含むバッチ・プログラムまたは BMP プログラムの場合は、 DLI オプションのみを指定しなければなりません。

�2� 再入可能にするため、DFHEISTG に、プログラムが使用する各区域 (すなわち、入出力域、キー・フィードバック域、およびセグメント名域) を定義します。

�3� (単一のコマンドで) 検索、追加、または置き換えを行うセグメントごとに入出力域を定義します。

�4� EXEC DLI を含むバッチまたは BMP プログラムの場合、z/OS のレジスター保管規則に従って、入り口でレジスターを保管し、出口でレジスターを復元しなければなりません。

アセンブラー言語でのプログラム・コーディング

第 3 章 アプリケーション・プログラムの作成 19

Page 40: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

�5� バッチまたは BMP プログラムでは、DFHEIENT が入り口でレジスターを保管します。バッチ・プログラムでは、EIBREG パラメーターを指定しないでください。

�6� バッチ・プログラムまたは BMP プログラムでは、EXEC CICS コマンドをコーディングしないでください。

�7� CICS オンライン・プログラムでは、プログラムを使用するために PSB を取得するには SCHD PSB コマンドを使用します。バッチ・プログラムまたはBMP プログラムでは PSB をスケジュールしてはなりません。

�8� この GU コマンドは、キー値が A300 の SEGA が最初に現れる位置を検索します。 アセンブラー言語プログラムでは、KEYLENGTH またはSEGLENGTH オプションを指定する必要はありません。

�9� この GNP コマンドは、セグメント SEGA の従属セグメントをすべて検索します。 GE 状況コードは、従属セグメントがそれ以上ないことを示します。

�10� この GU コマンドは、パス・コマンドの例です。 セグメントごとに、別々の入出力域を使用してください。

�11� CICS オンライン・プログラムでは、先にスケジュールされた PSB がTERM コマンドによって終了させられます。バッチ・プログラムまたは BMP プログラムでは、PSB を終了させてはなりません。

�12� バッチまたは BMP プログラムの場合、EXEC CICS RETURN の代りに任意指定の RCREG パラメーターを指定した DFHEIRET をコーディングしてください。 RCREG パラメーターは、戻りコードが入るレジスターを識別します。

�13� 各コマンドを出したあと、DIB の状況コードを検査する必要があります。

COBOL でのプログラム・コーディング次のサンプル・プログラムは、COBOL で書かれています。このサンプル・プログラムでは、コマンド・レベル・プログラムのさまざまな部分がどのように組み合わされているか、および EXEC DLI コマンドがどのようにコーディングされているかを示しています。このサンプル・プログラムは、COBOL V4 コンパイラー(5734-CB2)、OS/VS COBOL コンパイラー (5740-CB1)、IBM COBOL for z/OS &

VM (5688-197)、および VS COBOL II コンパイラー (5668-958 および 5668-940)

に適用されます。

一部のコマンドを除き、このプログラムは、バッチ、BMP、CICS プログラムに適用されます。違いはいずれも、サンプル COBOL コードの注で強調して示してあります。サンプル・コードの右側の番号は、このような注を指しています。

CBL LIB,APOST,XOPTS(CICS,DLI) IDENTIFICATION DIVISION.PROGRAM-ID. SAMPLE. �1�ENVIRONMENT DIVISION.CONFIGURATION SECTION.

.* SOURCE-COMPUTER. IBM-370.

.* OBJECT-COMPUTER. IBM-370.DATA DIVISION.WORKING-STORAGE SECTION.77 SEGKEYA PIC X(4).77 SEGKEYB PIC X(4). �2�77 SEGKEYC PIC X(4).77 SEGKEY1 PIC X(4).77 SEGKEY2 PIC X(4).77 SEGKEY3 PIC X(4).77 SEGKEY4 PIC X(4).

アセンブラー言語でのプログラム・コーディング

20 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 41: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

77 CONKEYB PIC X(8).77 SEGNAME PIC X(8).77 SEGLEN COMP PIC S9(4).77 PCBNUM COMP PIC S9(4).01 AREAA PIC X(80).* DEFINE SEGMENT I/O AREA01 AREAB PIC X(80).01 AREAC PIC X(80). �3�01 AREAG PIC X(250).01 AREASTAT PIC X(360).* COPY MAPSET.PROCEDURE DIVISION.** **************************************************************** INITIALIZATION* HANDLE ERROR CONDITIONS IN ERROR ROUTINE* HANDLE ABENDS (DLI ERROR STATUS CODES) IN ABEND ROUTINE* RECEIVE INPUT MESSAGE* ****************************************************************

EXEC CICS HANDLE CONDITION ERROR(ERRORS) END-EXEC. �4�*

EXEC CICS HANDLE ABEND LABEL(ABENDS) END-EXEC. �4�*

EXEC CICS RECEIVE MAP (’SAMPMAP’) MAPSET(’MAPSET’) END-EXEC. �4�* ANALYZE INPUT MESSAGE AND PERFORM NON-DLI PROCESSING** **************************************************************** SCHEDULE PSB NAMED ’SAMPLE1’* ****************************************************************

EXEC DLI SCHD PSB(SAMPLE1) END-EXEC.PERFORM TEST-DIB THRU OK. �5�

** **************************************************************** RETRIEVE ROOT SEGMENT AND ALL ITS DEPENDENTS* ****************************************************************

MOVE ’A300’ TO SEGKEYA.EXEC DLI GU USING PCB(1) SEGMENT(SEGA) INTO(AREAA)

SEGLENGTH(80) WHERE(KEYA=SEGKEYA) �6�FIELDLENGTH(4)

END-EXEC.PERFORM TEST-DIB THRU OK.

GNPLOOP.EXEC DLI GNP USING PCB(1) INTO(AREAG) SEGLENGTH(250)END-EXEC.IF DIBSTAT EQUAL TO ’GE’ THEN GO TO LOOPDONE.PERFORM TEST-DIB THRU OK.GO TO GNPLOOP.

LOOPDONE.*

* **************************************************************** INSERT NEW ROOT SEGMENT* ****************************************************************

MOVE ’DATA FOR NEW SEGMENT INCLUDING KEY’ TO AREAA.EXEC DLI ISRT USING PCB(1) SEGMENT(SEGA) FROM(AREAA)

SEGLENGTH(80) END-EXEC.PERFORM TEST-DIB THRU OK.

** **************************************************************** RETRIEVE 3 SEGMENTS IN PATH AND REPLACE THEM* ****************************************************************

MOVE ’A200’ TO SEGKEYA.MOVE ’B240’ TO SEGKEYB.

COBOL でのプログラム・コーディング

第 3 章 アプリケーション・プログラムの作成 21

Page 42: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

MOVE ’C241’ TO SEGKEYC.EXEC DLI GU USING PCB(1)

SEGMENT(SEGA) WHERE(KEYA=SEGKEYA) FIELDLENGTH(4) �7�INTO(AREAA)SEGLENGTH(80)

SEGMENT(SEGB) WHERE(KEYB=SEGKEYB) FIELDLENGTH(4)INTO(AREAB)SEGLENGTH(80)

SEGMENT(SEGC) WHERE(KEYC=SEGKEYC) FIELDLENGTH(4)INTO(AREAC)SEGLENGTH(80)

END-EXEC.PERFORM TEST-DIB THRU OK.

* UPDATE FIELDS IN THE 3 SEGMENTSEXEC DLI REPL USING PCB(1)

SEGMENT(SEGA) FROM(AREAA) SEGLENGTH(80)SEGMENT(SEGB) FROM(AREAB) SEGLENGTH(80)SEGMENT(SEGC) FROM(AREAC) SEGLENGTH(80)

END-EXEC.PERFORM TEST-DIB THRU OK.

** **************************************************************** INSERT NEW SEGMENT USING CONCATENATED KEY TO QUALIFY PARENT* ****************************************************************

MOVE ’DATA FOR NEW SEGMENT INCLUDING KEY’ TO AREAC.MOVE ’A200B240’ TO CONKEYB.EXEC DLI ISRT USING PCB(1)

SEGMENT(SEGB) KEYS(CONKEYB) KEYLENGTH(8)SEGMENT(SEGC) FROM(AREAC) SEGLENGTH(80)

END-EXEC.PERFORM TEST-DIB THRU OK.

** **************************************************************** RETRIEVE SEGMENT DIRECTLY USING CONCATENATED KEY* AND THEN DELETE IT AND ITS DEPENDENTS* ****************************************************************

MOVE ’A200B230’ TO CONKEYB.EXEC DLI GU USING PCB(1)

SEGMENT(SEGB)KEYS(CONKEYB) KEYLENGTH(8)INTO(AREAB) SEGLENGTH(80)

END-EXEC.PERFORM TEST-DIB THRU OK.EXEC DLI DLET USING PCB(1)

SEGMENT(SEGB) SEGLENGTH(80) FROM(AREAB) END-EXEC.PERFORM TEST-DIB THRU OK.

** ***************************************************************

* RETRIEVE SEGMENT BY QUALIFYING PARENT WITH CONCATENATED KEY,* OBJECT SEGMENT WITH WHERE OPTION,* AND THEN SET PARENTAGE** USE VARIABLES FOR PCB INDEX, SEGMENT NAME, AND SEGMENT LENGTH* ****************************************************************

MOVE ’A200B230’ TO CONKEYB.MOVE ’C520’ TO SEGKEYC.MOVE ’SEGA’ TO SEGNAME.MOVE 80 TO SEGLEN.MOVE 1 TO PCBNUM.EXEC DLI GU USING PCB(PCBNUM)

SEGMENT((SEGNAME))KEYS(CONKEYB) KEYLENGTH(8) SETPARENT

SEGMENT(SEGC) INTO(AREAC) SEGLENGTH(SEGLEN)WHERE(KEYC=SEGKEYC) FIELDLENGTH(4) END-EXEC.

COBOL でのプログラム・コーディング

22 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 43: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

PERFORM TEST-DIB THRU OK.** **************************************************************** RETRIEVE DATABASE STATISTICS* ****************************************************************

EXEC DLI STAT USING PCB(1) INTO(AREASTAT)VSAM FORMATTED LENGTH(360) END-EXEC.

PERFORM TEST-DIB THRU OK.** **************************************************************** RETRIEVE ROOT SEGMENT USING BOOLEAN OPERATORS* ****************************************************************

MOVE ’A050’ TO SEGKEY1.MOVE ’A150’ TO SEGKEY2.MOVE ’A275’ TO SEGKEY3.MOVE ’A350’ TO SEGKEY4.EXEC DLI GU USING PCB(1) SEGMENT(SEGA) INTO(AREAA)

SEGLENGTH(80) FIELDLENGTH(4,4,4,4)WHERE(KEYA > SEGKEY1 AND KEYA < SEGKEY2 OR

KEYA > SEGKEY3 AND KEYA < SEGKEY4)END-EXEC.PERFORM TEST-DIB THRU OK.

** ***************************************************************

* TERMINATE PSB WHEN DLI PROCESSING IS COMPLETED* ****************************************************************

EXEC DLI TERM END-EXEC. �8�** **************************************************************** **************************************************************** SEND OUTPUT MESSAGE* ****************************************************************

EXEC CICS SEND MAP(’SAMPMAP’) MAPSET(’MAPSET’) END-EXEC.EXEC CICS WAIT TERMINAL END-EXEC.

** **************************************************************** COMPLETE TRANSACTION AND RETURN TO CICS* ****************************************************************

EXEC CICS RETURN END-EXEC.** **************************************************************** CHECK STATUS IN DIB* ****************************************************************TEST-DIB.

IF DIBSTAT EQUAL TO ’ ’ THEN GO TO OK.OK. �9�ERRORS.* HANDLE ERROR CONDITIONSABENDS.* HANDLE ABENDS INCLUDING DLI ERROR STATUS CODES

サンプル COBOL コードに対する注:

�1�EXEC DLI コマンドを含む CICS オンライン・プログラムの場合、DLI オプションと CICS オプションを指定しなければなりません。EXEC DLI コマンドを含むバッチ・プログラムまたは BMP プログラムの場合は、 DLI オプションのみを指定しなければなりません。

COBOL でのプログラム・コーディング

第 3 章 アプリケーション・プログラムの作成 23

Page 44: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

�2� プログラムが使用する区域、すなわち入出力域、キー・フィードバック域、およびセグメント名域のそれぞれを、レベル 77 または 01 の作業ストレージ項目として定義します。

�3� (単一のコマンドで) 検索、追加、または置き換えを行うセグメントごとに入出力域を定義します。

�4� バッチ・プログラムまたは BMP プログラムでは、EXEC CICS コマンドをコーディングしないでください。

�5� CICS オンライン・プログラムでは、SCHD PSB コマンドを使用して PSB を取得します。バッチ・プログラムまたは BMP プログラムでは、PSB をスケジュールしてはなりません。

�6� この GU コマンドは、キー値が A300 の SEGA が最初に現れる位置を検索します。 IBM COBOL for z/OS & VM (および VS COBOL II) では、KEYLENGTH と SEGLENGTH の指定はオプションです。COBOL V4 およびOS/VS COBOL では、KEYLENGTH と SEGLENGTH の指定は必須です。

�7� この GU コマンドは、パス・コマンドの例です。検索するセグメントごとに、別々の入出力域を使用しなければなりません。

�8� CICS オンライン・プログラムでは、先にスケジュールされた PSB が、TERM コマンドによって終了させられます。バッチ・プログラムまたは BMP プログラムでは、PSB を終了させてはなりません。

�9� 各コマンドを出したあと、DIB の状況コードを検査する必要があります。

PL/I でのプログラム・コーディング以下は、PL/I で書かれたサンプル・プログラムです。このサンプル・プログラムでは、コマンド・レベル・プログラムの異なる部分がどのように互いに適合しているか、および EXEC DLI コマンドがどのようにコーディングされているかを示しています。

一部のコマンドを除き、このプログラムは、バッチ、BMP、CICS プログラムに適用されます。違いはいずれも、サンプル PL/I コードの注で強調して示してあります。サンプル・コードの右側の番号は、このような注を指しています。

*PROCESS INCLUDE,GN,XOPTS(CICS,DLI); �1�SAMPLE: PROCEDURE OPTIONS(MAIN);DCL SEGKEYA CHAR (4);DCL SEGKEYB CHAR (4); �2�DCL SEGKEYC CHAR (4);DCL SEGKEY1 CHAR (4);DCL SEGKEY2 CHAR (4);DCL SEGKEY3 CHAR (4);DCL SEGKEY4 CHAR (4);DCL CONKEYB CHAR (8);DCL SEGNAME CHAR (8);DCL PCBNUM FIXED BIN (15);DCL AREAA CHAR (80);

/* DEFINE SEGMENT I/O AREA */DCL AREAB CHAR (80);DCL AREAC CHAR (80); �3�DCL AREAG CHAR (250);DCL AREASTAT CHAR (360);

%INCLUDE MAPSET/* *//* *//* ************************************************************ *//* INITIALIZATION */

COBOL でのプログラム・コーディング

24 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

|

|

|

|

Page 45: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

/* HANDLE ERROR CONDITIONS IN ERROR ROUTINE *//* HANDLE ABENDS (DLI ERROR STATUS CODES) IN ABEND PROGRAM *//* RECEIVE INPUT MESSAGE *//* ************************************************************ *//* */EXEC CICS HANDLE CONDITION ERROR(ERRORS); �4�/* */EXEC CICS HANDLE ABEND PROGRAM(’ABENDS’); �4�/* */EXEC CICS RECEIVE MAP (’SAMPMAP’) MAPSET(’MAPSET’); �4�/* ANALYZE INPUT MESSAGE AND PERFORM NON-DLI PROCESSING *//* *//* ************************************************************ *//* SCHEDULE PSB NAMED ’SAMPLE1’ *//* ************************************************************ *//* */EXEC DLI SCHD PSB(SAMPLE1);CALL TEST_DIB; �5�

/* ************************************************************* *//* RETRIEVE ROOT SEGMENT AND ALL ITS DEPENDENTS *//* ************************************************************* *//* */SEGKEYA = ’A300’;EXEC DLI GU USING PCB(1) SEGMENT(SEGA) INTO(AREAA)WHERE(KEYA=SEGKEYA); �6�CALL TEST_DIB;

GNPLOOP:EXEC DLI GNP USING PCB(1) INTO(AREAG); �7�IF DIBSTAT = ’GE’ THEN GO TO LOOPDONE;CALL TEST_DIB;GO TO GNPLOOP;

LOOPDONE:/* *//* ************************************************************ *//* INSERT NEW ROOT SEGMENT *//* ************************************************************ *//* */AREAA = ’DATA FOR NEW SEGMENT INCLUDING KEY’;EXEC DLI ISRT USING PCB(1) SEGMENT(SEGA) FROM(AREAA);CALL TEST_DIB;/* *//* ************************************************************* *//* RETRIEVE 3 SEGMENTS IN PATH AND REPLACE THEM *//* ************************************************************* *//* */SEGKEYA = ’A200’;SEGKEYB = ’B240’;SEGKEYC = ’C241’;EXEC DLI GU USING PCB(1)

SEGMENT(SEGA) WHERE(KEYA=SEGKEYA) �8�INTO(AREAA)

SEGMENT(SEGB) WHERE(KEYB=SEGKEYB)INTO(AREAB)

SEGMENT(SEGC) WHERE(KEYC=SEGKEYC)INTO(AREAC);

CALL TEST_DIB;/* UPDATE FIELDS IN THE 3 SEGMENTS */EXEC DLI REPL USING PCB(1)

SEGMENT(SEGA) FROM(AREAA)SEGMENT(SEGB) FROM(AREAB)SEGMENT(SEGC) FROM(AREAC);

CALL TEST_DIB;/* *//* ************************************************************* *//* INSERT NEW SEGMENT USING CONCATENATED KEY TO QUALIFY PARENT *//* ************************************************************* */

PL/I でのプログラム・コーディング

第 3 章 アプリケーション・プログラムの作成 25

Page 46: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

/* */AREAC = ’DATA FOR NEW SEGMENT INCLUDING KEY’;CONKEYB = ’A200B240’;EXEC DLI ISRT USING PCB(1)

SEGMENT(SEGB) KEYS(CONKEYB)SEGMENT(SEGC) FROM(AREAC);

CALL TEST_DIB;/* *//* ************************************************************ *//* RETRIEVE SEGMENT DIRECTLY USING CONCATENATED KEY *//* AND THEN DELETE IT AND ITS DEPENDENTS *//* ************************************************************ *//* */CONKEYB = ’A200B230’;EXEC DLI GU USING PCB(1)

SEGMENT(SEGB)KEYS(CONKEYB)INTO(AREAB);

CALL TEST_DIB;EXEC DLI DLET USING PCB(1)

SEGMENT(SEGB) FROM(AREAB);CALL TEST_DIB;/* */

/* ************************************************************* *//* RETRIEVE SEGMENT BY QUALIFYING PARENT WITH CONCATENATED KEY, *//* OBJECT SEGMENT WITH WHERE OPTION *//* AND THEN SET PARENTAGE *//* *//* USE VARIABLES FOR PCB INDEX, SEGMENT NAME *//* ************************************************************* *//* */CONKEYB = ’A200B230’;SEGNAME = ’SEGA’;SEGKEYC = ’C520’;PCBNUM = 1;EXEC DLI GU USING PCB(PCBNUM)

SEGMENT((SEGNAME))KEYS(CONKEYB) SETPARENT

SEGMENT(SEGC) INTO(AREAC)WHERE(KEYC=SEGKEYC);

CALL TEST_DIB;/* *//* ************************************************************* *//* RETRIEVE DATABASE STATISTICS *//* ************************************************************* *//* */EXEC DLI STAT USING PCB(1) INTO(AREASTAT) VSAM FORMATTED;CALL TEST_DIB;/* *//* ************************************************************ *//* RETRIEVE ROOT SEGMENT USING BOOLEAN OPERATORS *//* ************************************************************ *//* */SEGKEY1 = ’A050’;SEGKEY2 = ’A150’;SEGKEY3 = ’A275’;SEGKEY4 = ’A350’;EXEC DLI GU USING PCB(1) SEGMENT(SEGA) INTO(AREAA)

WHERE(KEYA > SEGKEY1 AND KEYA < SEGKEY2 ORKEYA > SEGKEY3 AND KEYA < SEGKEY4);

CALL TEST_DIB;/* *//* ************************************************************* *//* TERMINATE PSB WHEN DLI PROCESSING IS COMPLETED *//* ************************************************************* *//* */

PL/I でのプログラム・コーディング

26 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 47: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

EXEC DLI TERM;�9�

/* *//* ************************************************************* *//* SEND OUTPUT MESSAGE *//* ************************************************************* *//* */EXEC CICS SEND MAP(’SAMPMAP’) MAPSET(’MAPSET’); �4�EXEC CICS WAIT TERMINAL;/* *//* ************************************************************* *//* COMPLETE TRANSACTION AND RETURN TO CICS *//* ************************************************************* *//* */EXEC CICS RETURN; �4�/* *//* ************************************************************ *//* CHECK STATUS IN DIB *//* ************************************************************ *//* */

TEST_DIB: PROCEDURE;IF DIBSTAT = ’ ’ RETURN; �10�

/* HANDLE DLI STATUS CODES REPRESENTING EXCEPTIONAL CONDITIONS *//* */

OK:END TEST_DB;ERRORS:

/* HANDLE ERROR CONDITIONS *//* */

END SAMPLE;

サンプル PL/I コードに対する注:

�1�EXEC DLI コマンドを含む CICS オンライン・プログラムの場合、DLI オプションと CICS オプションを指定しなければなりません。EXEC DLI コマンドを含むバッチ・プログラムまたは BMP プログラムの場合は、 DLI オプションのみを指定しなければなりません。

�2� 自動ストレージに、各領域、すなわち入出力域、キー・フィードバック域、およびセグメント名域を定義します。

�3�(単一のコマンドで) 検索、追加、または置き換えを行うセグメントごとに入出力域を定義します。

�4� バッチ・プログラムまたは BMP プログラムでは、EXEC CICS コマンドをコーディングしないでください。

�5� CICS オンライン・プログラムでは、SCHD PSB コマンドを使用して PSB を取得します。バッチ・プログラムまたは BMP プログラムでは、PSB をスケジュールしてはなりません。

�6� この GU コマンドは、キー値が A300 の SEGA が最初に現れる位置を検索します。 KEYLENGTH および SEGLENGTH オプションを指定する必要がないことに注意してください。

�7� この GNP コマンドは、セグメント SEGA の従属セグメントをすべて検索します。 GE 状況コードは、従属セグメントがそれ以上ないことを示します。

�8� この GU コマンドは、パス・コマンドの例です。検索するセグメントごとに、別々の入出力域を使用しなければなりません。

PL/I でのプログラム・コーディング

第 3 章 アプリケーション・プログラムの作成 27

Page 48: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

�9� CICS オンライン・プログラムでは、先にスケジュールされた PSB が、TERM コマンドによって終了させられます。バッチ・プログラムまたは BMP プログラムでは、PSB を終了させてはなりません。

�10� 各コマンドを出したあと、DIB の状況コードを検査する必要があります。

C でのプログラム・コーディング以下は、C で書かれたサンプル・プログラムです。このサンプル・プログラムでは、コマンド・レベル・プログラムの異なる部分がどのように互いに適合しているか、および EXEC DLI コマンドがどのようにコーディングされているかを示しています。

一部のコマンドを除き、このプログラムは、バッチ、BMP、CICS プログラムに適用されます。違いはいずれも、サンプル C コードの注で強調して示してあります。サンプル・コードの右側の番号は、このような注を指しています。

#include < string.h> �1�#include < stdio.h > �2�

char DIVIDER[120] = "-----------------------------------------\------------------------------------------------------------------";

char BLANK[120] = " \\0";

char BLAN2[110] = " \\0";

char SCHED[120] = "Schedule PSB(PC3COCHD) " �3�char GN1[120] = "GN using PCB(2) Segment(SE2ORDER) check dibstat \

is blank";char GNP1[120] = "GNP using PCB(2) check dibstat = GK or blank \

(or GE for last GNP)";char GU1[120] = "GU using PCB(2) Segment(SE2ORDER) where(\

FE2OGREF=000000’’) check dibstat blank";char GU2[120] = "GU using PCB(2) Segment(SE2ORDER) where(\

FE2OGREF=000999’’) check dibstat blank";char REP1[120] = "REPLACE using PCB(2) Segment(SE2ORDER) check \

dibstat is blank";char DEL1[120] = "DELETE using PCB(2) Segment(SE2ORDER) check \

dibstat is blank";char INS1[120] = "INSERT using PCB(2) Segment(SE2ORDER) where\

(FE2OGREF=’’000999’’) check dibstat is blank";char TERM[120] = "TERM - check dibstat is blank";char STAT[120] = "STAT USING PCB(2) VSAM FORMATTED";char DATAB[6] = "000999";char DATAC[114] = " REGRUN TEST INSERT NO1.";char START[120] = "PROGXIV STARTING";char OKMSG[120] = "PROGXIV COMPLETE";int TLINE = 120;int L11 = 11;int L360 = 11;struct {

char NEWSEGB[6];char NEWSEGC[54];

} NEWSEG;char OUTLINE[120]; �4�struct {

char OUTLINA[9];char OUTLINB[111];

} OUTLIN2;struct {

char OUTLINX[9];char OUTLINY[6];char OUTLINZ[105];

} OUTLIN3;

PL/I でのプログラム・コーディング

28 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 49: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

char GUIOA[60];char GNIOA[60];struct {

char ISRT1[6];char ISRT2[54];

} ISRTIOA;struct {

char REPLIO1[6];char REPLIO2[54];

} REPLIOA;struct {

char DLET1[6];char DLET2[54];

} DLETIOA;struct {

char STATA1[120];char STATA2[120];char STATA3[120];

} STATAREA;struct {

char DHPART[2];char RETCODE[2]

} DHABCODE;

main(){

EXEC CICS ADDRESS EIB(dfheiptr); �5�strcpy(OUTLINE,DIVIDER);SENDLINE();strcpy(OUTLINE,START);SENDLINE();

/* *//* SCHEDULE PSB *//* */

strcpy(OUTLINE,SCHED);SENDLINE();EXEC DLI SCHEDULE PSB(PC3COCHD); �6�SENDSTAT();TESTDIB();

/* *//* ISSUE GU REQUEST *//* */

strcpy(OUTLINE,GU1);SENDLINE();EXEC DLI GET UNIQUE USING PCB(2) �7�

SEGMENT(SE2ORDER)WHERE(FE2OGREF>="000000")INTO(&GUIOA) SEGLENGTH(60);

strcpy(OUTLIN2.OUTLINA,"SE2ORDER=");strcpy(OUTLIN2.OUTLINB,GUIOA);SENDLIN2();SENDSTAT();TESTDIB();

/* *//* ISSUE GNP REQUEST *//* */

do {strcpy(OUTLINE,GNP1);SENDLINE();EXEC DLI GET NEXT IN PARENT USING PCB(2) �8�

INTO(&GNIOA) SEGLENGTH(60);strcpy(OUTLIN2.OUTLINA,"SEGMENT=");strcpy(OUTLIN2.OUTLINB,GNIOA);SENDLIN2();SENDSTAT();if (strncmp(dibptr->dibstat,"GE",2) != 0) �9�TESTDIB();

C でのプログラム・コーディング

第 3 章 アプリケーション・プログラムの作成 29

Page 50: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

} while (strncmp(dibptr->dibstat,"GE",2) != 0);/* *//* ISSUE GN REQUEST *//* */

strcpy(OUTLINE,GN1);SENDLINE();EXEC DLI GET NEXT USING PCB(2)

SEGMENT(SE2ORDER) �10�INTO(&GNIOA) SEGLENGTH(60);

strcpy(OUTLIN2.OUTLINA,"SE2ORDER=");strcpy(OUTLIN2.OUTLINB,GNIOA);SENDLIN2();SENDSTAT();

TESTDIB();/* *//* INSERT SEGMENT *//* */

strcpy(OUTLINE,INS1);SENDLINE();strcpy(NEWSEG.NEWSEGB,DATAB); �11�strcpy(NEWSEG.NEWSEGC,DATAC);strcpy(ISRTIOA.ISRT1,NEWSEG.NEWSEGB);strcpy(ISRTIOA.ISRT2,NEWSEG.NEWSEGC);strcpy(OUTLIN3.OUTLINX,"ISRT SEG=");strcpy(OUTLIN3.OUTLINY,ISRTIOA.ISRT1);strcpy(OUTLIN3.OUTLINZ,ISRTIOA.ISRT2);SENDLIN3();EXEC DLI ISRT USING PCB(2)

SEGMENT(SE2ORDER)FROM(&ISRTIOA) SEGLENGTH(60);

SENDSTAT();if (strncmp(dibptr->dibstat,"II",2) == 0)

strncpy(dibptr->dibstat," ",2);TESTDIB();

/* *//* ISSUE GN REQUEST *//* */

strcpy(OUTLINE,GN1);SENDLINE();EXEC DLI GET NEXT USING PCB(2) �12�

SEGMENT(SE2ORDER)INTO(&GNIOA) SEGLENGTH(60);

strcpy(OUTLIN2.OUTLINA,"SE2ORDER=");strcpy(OUTLIN2.OUTLINB,GNIOA);SENDLIN2();SENDSTAT();TESTDIB();

/* *//* GET INSERTED SEGMENT TO BE REPLACED *//* */

strcpy(OUTLINE,GU2);SENDLINE();EXEC DLI GET UNIQUE USING PCB(2) �13�

SEGMENT(SE2ORDER)WHERE(FE2OGREF="000999")INTO(&ISRTIOA) SEGLENGTH(60);

strcpy(OUTLIN3.OUTLINX,"ISRT SEG=");strcpy(OUTLIN3.OUTLINY,ISRTIOA.ISRT1);strcpy(OUTLIN3.OUTLINZ,ISRTIOA.ISRT2);SENDLIN3();SENDSTAT();TESTDIB();

/* *//* REPLACE SEGMENT *//* */

strcpy(OUTLINE,REP1);SENDLINE();

C でのプログラム・コーディング

30 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 51: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

strcpy(REPLIOA.REPLIO1,DATAB); �14�strcpy(REPLIOA.REPLIO2,"REGRUN REPLACED SEGMENT NO1.");strcpy(OUTLIN3.OUTLINX,"REPL SEG=");strcpy(OUTLIN3.OUTLINY,REPLIOA.REPLIO1);strcpy(OUTLIN3.OUTLINZ,REPLIOA.REPLIO2);SENDLIN3();EXEC DLI REPLACE USING PCB(2)

SEGMENT(SE2ORDER)FROM(&REPLIOA) SEGLENGTH(60);

SENDSTAT();TESTDIB();

/* *//* ISSUE GN REQUEST *//* */

strcpy(OUTLINE,GN1);SENDLINE();EXEC DLI GET NEXT USING PCB(2) �15�

SEGMENT(SE2ORDER)INTO(&GNIOA) SEGLENGTH(60);

strcpy(OUTLIN2.OUTLINA,"SE2ORDER=");strcpy(OUTLIN2.OUTLINB,GNIOA);SENDLIN2();SENDSTAT();TESTDIB();

/* *//* GET REPLACED SEGMENT *//* */

strcpy(OUTLINE,GU2);SENDLINE();EXEC DLI GET UNIQUE USING PCB(2) �16�

SEGMENT(SE2ORDER)WHERE(FE2OGREF="000999")INTO(&REPLIOA) SEGLENGTH(60);

strcpy(OUTLIN3.OUTLINX,"REPL SEG=");strcpy(OUTLIN3.OUTLINY,REPLIOA.REPLIO1);strcpy(OUTLIN3.OUTLINZ,REPLIOA.REPLIO2);SENDLIN3();SENDSTAT();TESTDIB();

/* *//* ISSUE DELETE REQUEST *//* */

strcpy(OUTLINE,DEL1);SENDLINE();strcpy(DLETIOA.DLET1,REPLIOA.REPLIO1); �17�strcpy(DLETIOA.DLET2,REPLIOA.REPLIO2);strcpy(OUTLIN3.OUTLINX,"DLET SEG=");strcpy(OUTLIN3.OUTLINY,DLETIOA.DLET1);strcpy(OUTLIN3.OUTLINZ,DLETIOA.DLET2);SENDLIN3();EXEC DLI DELETE USING PCB(2)

SEGMENT(SE2ORDER)FROM(&DLETIOA) SEGLENGTH(60);

SENDSTAT();TESTDIB();

/* *//* ISSUE STAT REQUEST *//* */

strcpy(OUTLINE,STAT);SENDLINE();EXEC DLI STAT USING PCB(2) �18�

VSAM FORMATTEDINTO(&STATAREA);

SENDSTT2();TESTDIB();

/* *//* ISSUE TERM REQUEST */

C でのプログラム・コーディング

第 3 章 アプリケーション・プログラムの作成 31

Page 52: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

/* */strcpy(OUTLINE,TERM);SENDLINE();EXEC DLI TERM; �19�SENDSTAT();TESTDIB();strcpy(OUTLINE,DIVIDER);SENDLINE();SENDOK();

/* *//* RETURN TO CICS *//* */

EXEC CICS RETURN;}

/* *//* *//* */

SENDLINE(){

EXEC CICS SEND FROM(OUTLINE) LENGTH(120); �20�EXEC CICS WRITEQ TD QUEUE("PRIM") FROM(OUTLINE) LENGTH(TLINE);strcpy(OUTLINE,BLANK);return;

}

SENDLIN2(){

EXEC CICS SEND FROM(OUTLIN2) LENGTH(120);EXEC CICS WRITEQ TD QUEUE("PRIM") FROM(OUTLIN2) LENGTH(TLINE);strcpy(OUTLIN2.OUTLINA,BLANK,9);strcpy(OUTLIN2.OUTLINB,BLANK,111);return;

}

SENDLIN3(){

EXEC CICS SEND FROM(OUTLIN3) LENGTH(120);EXEC CICS WRITEQ TD QUEUE("PRIM") FROM(OUTLIN3) LENGTH(TLINE);strcpy(OUTLIN3.OUTLINX,BLANK,9);strcpy(OUTLIN3.OUTLINY,BLANK,6);strcpy(OUTLIN3.OUTLINZ,BLANK,105);return;

}

SENDSTAT(){

strncpy(OUTLIN2.OUTLINA,BLANK,9);strncpy(OUTLIN2.OUTLINB,BLAN2,110);strcpy(OUTLIN2.OUTLINA," DIBSTAT=");strcpy(OUTLIN2.OUTLINB,dibptr->dibstat);EXEC CICS SEND FROM(OUTLIN2) LENGTH(11);EXEC CICS WRITEQ TD QUEUE("PRIM") FROM(OUTLIN2) LENGTH(L11);strcpy(OUTLINE,DIVIDER);SENDLINE();return;

}

SENDSTT2(){

strncpy(OUTLIN2.OUTLINA,BLANK,9);strncpy(OUTLIN2.OUTLINB,BLAN2,110);strcpy(OUTLIN2.OUTLINA," DIBSTAT=");strcpy(OUTLIN2.OUTLINB,dibptr->dibstat);EXEC CICS SEND FROM(STATAREA) LENGTH(360);EXEC CICS WRITEQ TD QUEUE("PRIM") FROM(STATAREA)

LENGTH(L360);return;

C でのプログラム・コーディング

32 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 53: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

}

SENDOK(){

EXEC CICS SEND FROM(OKMSG) LENGTH(120);EXEC CICS WRITEQ TD QUEUE("PRIM") FROM(OKMSG) LENGTH(TLINE);return;

}

TESTDIB() �21�{

if (strncmp(dibptr->dibstat," ",2) == 0)return;

else if (strncmp(dibptr->dibstat,"GK",2) == 0)return;

else if (strncmp(dibptr->dibstat,"GB",2) == 0)return;

else if (strncmp(dibptr->dibstat,"GE",2) == 0)return;

else{

EXEC CICS ABEND ABCODE("PETE"); �22�EXEC CICS RETURN;

}return;

}

サンプル C コードに対する注:

�1� ストリング処理機能にアクセスするには、標準ヘッダー・ファイルstring.h を組み込まなければなりません。

�2� 標準入出力ライブラリーにアクセスするには、標準ヘッダー・ファイルstdio.h を組み込まなければなりません。

�3�DL/I メッセージを定義します。

�4� 入出力域を定義します。

�5� プログラムを始動します。

�6�PSB PC3COCHD を定義します。

�7� 最初のコマンドを出します。 SE2ORDER セグメントの最初のオカレンスを検索して、配列 OUTLIN2 に書き込みます。

�8� 次のセグメントを読み取って配列 OUTLIN2 に書き込むために GNP コマンドを出します。

�9� GE 状況コードは読み取るセグメントがないことを示します。

�10� 次のセグメント SE2ORDER を読み取って、配列 OUTLIN2 に書き込みます。

�11� セグメントを配列 OUTLIN3 に挿入します。

�12� 次のセグメントを検索して配列 OUTLIN2 に書き込むために、GN を出します。

�13� 置き換える次のセグメントを読み取って OUTLIN3 に書き込みます。

�14� セグメントを置き換え、配列 OUTLIN3 に書き込みます。

�15� 次のセグメントを読み取って配列 OUTLIN2 に書き込みます。

�16� 置換されたセグメントを読み取り、配列 OUTLIN3 に書き込みます。

�17� セグメントの内容を配列 OUTLIN3 に書き込んだ後、DELETE コマンドを出します。

C でのプログラム・コーディング

第 3 章 アプリケーション・プログラムの作成 33

Page 54: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

�18�STAT REQUEST コマンドを出します。

�19�TERM コマンドを出します。

�20� 出力処理を行います。

�21� 戻りコードを検査します。

�22� バッチ・プログラムまたは BMP プログラムでは、EXEC CICS コマンドをコーディングしないでください。

EXEC DLI プログラムの実行準備次の手順にしたがってプログラムの実行準備を行います。

1. EXEC DLI コマンドと EXEC CICS コマンドを変換するために、CICS コマンド言語変換プログラムを実行します。 COBOL、PL/I、アセンブラー言語の各プログラムには、それぞれ個別の変換プログラムがあります。

2. プログラムをコンパイルします。

3. 次のものをリンク・エディットします。

v 適切な CICS インターフェース・モジュールをもつオンライン・プログラム

v IMS インターフェース・モジュールをもつバッチまたは BMP プログラム

プログラムを変換、コンパイル、およびリンク・エディットするために、CICS 提供プロシージャーを使用することができます。 使用するプロシージャーは、プログラムのタイプ (バッチ、BMP、または CICS オンライン) およびどの言語で作成されたか (COBOL、PL/I、またはアセンブラー言語) によって異なります。

EXEC DLI に必要な変換プログラム・オプション

CICS 提供プロシージャーを使用してプログラムを準備する場合でも、特定の変換プログラム・オプションを指定しなければなりません。

EXEC DLI コマンドを含む CICS オンライン・プログラムの場合、DLI オプションと CICS オプションを指定しなければなりません。EXEC DLI コマンドを含むバッチ・プログラムまたは BMP プログラムの場合は、 DLI オプションを指定しなければなりません。 .

変換プログラムを呼び出す EXEC ジョブ制御ステートメントにおいても、これらのオプションを指定できます。両方のメソッドを使用した場合、 CBL および*PROCESS ステートメントは、EXEC ステートメントで指定されたオプションを無効にします。変換プログラム・オプションの詳細については、「CICS Transaction

Server for CICS アプリケーション・プログラミング・ガイド」を参照してください。

COBOL プログラムで使用する変換プログラム・オプションが COBOL コンパイラー・オプションと矛盾しないようにしてください。IBM COBOL for z/OS & VM

プログラムを変換する場合は、必ず COBOL for z/OS & VM 変換プログラム・オプションを使用してください。同様に、VS COBOL II プログラムを変換する場合は、COBOL II 変換プログラム・オプションを使用してください。

C でのプログラム・コーディング

34 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 55: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

EXEC DLI に必要なコンパイラー・オプションCOBOL for z/OS & VM を使用してバッチ COBOL プログラムをコンパイルし、このプログラムを z/OS の AMODE(31) で実行する場合は、コンパイラー・オプション RENT を使用してください。VS COBOL II を使用してバッチ COBOL プログラムをコンパイルし、このプログラムを z/OS の AMODE(31) で実行する場合は、コンパイラー・オプション RES と RENT を使用してください。CICS プログラムのために使用する必要のあるコンパイラー・オプションの詳細については、「CICS アプリケーション・プログラミング・リファレンス」を参照してください。

EXEC DLI に必要なリンケージ・エディター・オプション

使用しているコンパイラーがサポートしている場合には、EXEC コマンドを使用して作成されたプログラムを、AMODE(31) RMODE(ANY) としてリンクすることができます。

ユーザー・プログラムの実行準備

第 3 章 アプリケーション・プログラムの作成 35

Page 56: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

ユーザー・プログラムの実行準備

36 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 57: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド

この章では、プログラム仕様ブロック (PSB) とさまざまな種類のプログラム連絡ブロック (PCB) について説明します。また、EXEC DLI コマンドのリストを記載し、それぞれのコマンドについて説明します。各コマンドごとに構文図を示し、それと一緒にオプション、制約事項、使用法、使用法を説明する例を示します。

以下のトピックには追加情報が記載されています。

v 『PCB および PSB』

v 39ページの『EXEC DLI コマンド』

PCB および PSBDBCTL 環境で使用されるプログラム仕様ブロック (PSB) には、次のものを含めることができます。

v 入出力 PCB

v 代替 PCB (複数の場合もある)

v DB PCB (複数の場合もある)

v GSAM PCB (複数の場合もある)

入出力 PCBDBCTL 環境では、DBCTL サービス要求を出すためには入出力 PCB が必要です。他のタイプの PCB とは異なり、入出力 PCB は PSB の生成時に定義されませんが、アプリケーション・プログラムが入出力 PCB を使用している場合は、その旨を PSB スケジューリング要求の中で示さなければなりません。

代替 PCB代替 PCB は論理端末を定義するので、応答を端末に送る必要がある場合には、入出力 PCB の代りに代替 PCB を使用することができます。代替 PCB は、CICS-DBCTL 環境で使用される PSB に含まれますが、IMS DC 環境でのみ使用されます。DBCTL を使用する CICS アプリケーションでは、代替 PCB、MSDB

PCB、または GSAM PCB を指定するコマンドを出しても成功しません。しかし、このようなタイプの PCB を含む PSB を CICS-DBCTL 環境でスケジュールすることができます。

代替 PCB は、呼び出しレベルのアプリケーション・プログラムに戻される PCB アドレス・リストに含まれます。 EXEC DLI アプリケーション・プログラムでは、PSB の中に代替 PCB があると、PCB キーワードで使用される PCB 数に影響します。

DB PCBデータベース PCB (DB PCB) は、アプリケーション・プログラムの、データベースとのインターフェースを定義する PCB です。 アプリケーション・プログラムに

© Copyright IBM Corp. 1974, 2006 37

|

|

|

|

Page 58: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

よって使用されるデータベース視点ごとに、1 つの DB PCB が必要です。 それは、全機能 PCB、DEDB PCB、または MSDB PCB のいずれかです。

GSAM PCBGSAM PCB は、アプリケーション・プログラムの GSAM 操作用インターフェースを定義します。

DBCTL を使用すると、デフォルトで CICS プログラムは、スケジュール後にプログラムに渡されるパラメーター・リストの最初の PCB として DB PCB を受け取ります。ただし、アプリケーション・プログラムが入出力 PCB を処理できる場合は、ユーザーが SCHD コマンドに SYSSERVE キーワードを指定して、このことを示します。 したがって、入出力 PCB が、アプリケーション・プログラムに戻されるパラメーター・アドレス・リスト内の最初の PCB になります。

PCB の要約ここでは、さまざまなタイプのアプリケーション・プログラムで使用される入出力PCB および代替 PCB に関する情報を要約します。

推奨: システム・サービス要求を出す予定であれば、以下の各項をお読みください。

DB バッチ・プログラムユーザーが CMPAT=Y を指定したかどうかにかかわらず、DL/I によってプログラムに提供される PCB のリストには、必ず代替 PCB が含まれます。I/O PCB は、CMPAT オプションの指定に従って戻されます。

CMPAT=Y を指定すると、PCB リストには、入出力 PCB のアドレス、代替 PCB

のアドレス、および DB PCB のアドレスがこの順序で含まれます。

CMPAT=Y を指定しないと、PCB リストには、代替 PCB のアドレス、そのあとにDB PCB のアドレスが含まれます。

BMP プログラム、MPP、および IFP入出力 PCB と代替 PCB は、常に BMP プログラムに渡されます。また、入出力PCB と代替 PCB は、常に MPP アプリケーション・プログラムと IFP アプリケーション・プログラムにも渡されます。

PCB リストには、入出力 PCB のアドレス、代替 PCB のアドレス、および DB

PCB のアドレスがこの順序で含まれます。

DBCTL を使用する CICS プログラム最初の PCB は、SYSSERVE キーワードの指定の有無にかかわらず、常に最初のDB PCB を参照します。

39ページの表 8 に入出力 PCB と代替 PCB に関する情報をまとめました。最初の列は各種の DB 環境を示しています。2 番目の列と 3 番目の列は、指定された環境で入出力 PCB と代替 PCB がそれぞれ有効かどうかを示しています。

PCB および PSB

38 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

|

|

|

|

|

|

Page 59: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

表 8. PCB 情報の要約

環境

EXEC DLI

PCB(n) に含まれる入出力 PCB カウント

PCB(n) に含まれる代替 PCB カウント

CICS DBCTL1 不可 不可

CICS DBCTL2 不可 不可

BMP 可 可

Batch3 不可 可

Batch4 可 可

注:

1. SYSSERVE オプションなしの SCHD コマンドが出された場合

2. SYSSERVE オプションを指定した SCHD コマンドが、CICS の DBCTL コマンドに対して、または DBCTL を使用するリモート CICS システムにより実行される機能シップ済みコマンドに対して出された場合

3. PSBGEN ステートメント上で CMPAT=N が指定された場合

4. PSBGEN ステートメント上で CMPAT=Y が指定された場合

PSB の形式PSB のフォーマットは次のとおりです。

[IOPCB][Alternate PCB ... Alternate PCB][DBPCB ... DBPCB][GSAMPCB ... GSAMPCB]

各 PSB には、少なくとも 1 つの PCB がなければなりません。I/O PCB は、システム・サービス・コマンドを実行するためにアドレス可能でなければなりません。代替 PCB は、IMS オンライン・プログラムに対してのみ使用されますが、このタイプのプログラムは、トランザクション・マネージャーと一緒にしか実行できません。プログラムをトランザクション・マネージャーの下で実行しない場合でも、代替 PCB を使用できることに注意してください。DB PCB は、全機能 PCB、DEDB

PCB、または MSDB PCB のいずれであってもかまいません。

EXEC DLI コマンドEXEC DLI コマンドのみが、EXEC DLI で使用可能です。これらのコマンドは、バッチ・プログラム、BMP 領域 (DBCTL または DB/DC を実行する)、またはDBCTL を使用した CICS プログラムで、DL/I データベースの読み取りと更新を行う場合に使用できます。

この章の例では、 PL/I 区切り文字を使用しています。コマンドはフリー・フォームでコーディングします。示されているキーワード、オペランド、パラメーターがコンマで区切られている場合、コンマの前後にはブランクを入れないでください。 キーワード、オペランド、およびパラメーターがブランクで区切られている場合は、ブランクをいくつでも入れることができます。コマンドの形式は、COBOL、PL/I、アセンブラー言語の各プログラム、C/370™、C++/370 で同一です。

PCB および PSB

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド 39

|

|

|

|

Page 60: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

41ページの表 9 にバッチ・プログラム、BMP プログラム、オンライン・プログラムで使用できるコマンドを要約します。次のトピックでの説明では、EXEC DLI コマンドの一般的な構文を示し、パラメーターおよび変数別に情報を示します。

v 『EXEC DLI コマンド一覧』

v 41ページの『DLET コマンド』

v 43ページの『GN コマンド』

v 49ページの『GNP コマンド』

v 55ページの『GU コマンド』

v 61ページの『ISRT コマンド』

v 67ページの『POS コマンド』

v 69ページの『REPL コマンド』

v 73ページの『RETRIEVE コマンド』

v 75ページの『SCHD コマンド』

v 76ページの『TERM コマンド』

v 77ページの『システム・サービス・コマンド』

v 78ページの『ACCEPT コマンド』

v 78ページの『CHKP コマンド』

v 80ページの『DEQ コマンド』

v 81ページの『LOAD コマンド』

v 82ページの『LOG コマンド』

v 82ページの『QUERY コマンド』

v 83ページの『REFRESH コマンド』

v 84ページの『ROLB コマンド』

v 85ページの『ROLL コマンド』

v 86ページの『ROLS コマンド』

v 88ページの『SETS コマンド』

v 89ページの『SETU コマンド』

v 90ページの『STAT コマンド』

v 91ページの『SYMCHKP コマンド』

v 93ページの『XRST コマンド』

各コマンドの例については、 3ページの『データベース階層の例』を参照してください。

EXEC DLI コマンド一覧41ページの表 9 に、すべての EXEC DLI コマンドを要約します。この表では、EXEC DLI コマンドを示し、各コマンドがバッチ、バッチ型 BMP、または DBCTL

使用 CICS 環境で有効かどうかを示します。

EXEC DLI コマンド

40 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

|

Page 61: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

表 9. EXEC DLI コマンド一覧

要求タイプ

プログラム特性

バッチ バッチ型 BMP

DBCTL 使用CICS1

ACCEPT コマンド4 可 可 可

CHKP コマンド4 可 可 不可

DEQ コマンド4 可 可 可

DLET コマンド 4 可 可 可

読み取りコマンド (GU, GHU, GN, GHN, GNP, GHNP)4 可 可 可

GMSG コマンド5 不可 可 可

ICMD コマンド5 不可 可 可

ISRT コマンド4 可 可 可

LOAD コマンド 可 不可 不可

LOG コマンド4 可 可 可

POS コマンド4 不可 可 可

QUERY コマンド4 可 可 可

RCMD コマンド5 不可 可 可

REFRESH コマンド4 可 可 可

REPL コマンド4 可 可 可

RETRIEVE コマンド 可 可 不可

ROLB コマンド 可 可 不可

ROLL コマンド 可 可 不可

ROLS コマンド2,4 可 可 可

SCHD コマンド 不可 不可 可

SETS コマンド2,4 可 可 可

SETU コマンド 可 可 不可

STAT コマンド3,4 可 可 可

SYMCHKP コマンド 可 可 不可

TERM コマンド 不可 不可 可

XRST コマンド 可 可 不可

注:

1. CICS リモート DL/I 環境では、DBCTL を使用するリモート CICS への機能シップを行っている場合、「DBCTL

使用 CICS」の欄のコマンドがサポートされます。

2. ROLS コマンドと SETS コマンドは、PSB に DEDB が入っているときは有効ではありません。

3. STAT は、プロダクト・センシティブ・プログラミング・インターフェースです。

4. AIB 形式でサポートされています。

5. IMS 第 9 版: オペレーション・ガイド の AOI 資料で説明しています。

DLET コマンド削除 (DLET) コマンドは、データベースからセグメントとその従属セグメントを削除するために使用されます。

EXEC DLI コマンド一覧

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド 41

|

Page 62: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

形式

�� EXEC DLI DLETUSING PCB(expression) VARIABLE

� SEGMENT(name)SEGMENT((area)) SEGLENGTH(expression)

FROM(area) �

�SETZERO(data_value)

��

オプション

USING PCB(expression)コマンドのために使用する DB PCB を指定します。 その引数には、整数データ型に変換されるものであれば、どのような式でも指定できます。数値を指定することもできるし、あるいはプログラムの中で数値を含んでいるハーフワードを指す参照を指定することもできます。

VARIABLEセグメントが可変長であることを示します。

SEGMENT(name)検索、挿入、削除、あるいは置き換えを行いたいセグメント・タイプの名前を指定することにより、コマンドを修飾します。

SEGMENT((area))プログラムの中でセグメント・タイプの名前を含んでいる区域の参照です。 コマンドでセグメントの名前を指定する代りに、区域を指定することができます。

SEGLENGTH(expression)検索されたセグメントが入る入出力域の長さを指定します。その引数には、整数データ型に変換されるものであれば、どのような式でも指定できます。数値を指定することもできるし、あるいはプログラムの中で数値を含んでいるハーフワードを指す参照を指定することもできます。 (COBOL プログラムでは、INTO オプションまたは FROM オプションを指定しているすべての SEGMENT レベルに必要です。)

要件: SEGLENGTH に指定する値は、この呼び出しで処理する最長セグメントの長さ以上でなければなりません。

FROM(area)追加、置き換え、または削除されるセグメントを含んでいる区域を指定します。1 つのコマンドで 1 つ以上のセグメントを挿入するには、FROM を使用してください。

SETZERO(data_value)サブセット・ポインターをゼロに設定することを指定します。

使用法DLET コマンドを使用して、データベースから 1 つのセグメントとその従属セグメントを削除します。セグメントを置き換える場合と同様に、まず、削除するセグメントを検索します。最初に DLET コマンドは検出されたセグメントとさらに その従属セグメント (もしあれば) をデータベースから削除します。

DLET コマンド

42 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 63: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

例「Evelyn Parker は、この地域から転出しました。 彼女の患者番号は 10450 です。彼女のレコードをデータベースから削除してください。」

説明: Evelyn Parker に関するすべての情報をデータベースから削除する必要があります。すべての情報を削除するには、PATIENT セグメントを削除する必要があります。このようにすると、DL/I はそのセグメントのすべての従属セグメントを削除します。これこそユーザーが DL/I に実行させたい作業です。Evelyn Parker がこの診療所の患者でなくなったのであれば、彼女の ILLNESS や TREATMNT などのセグメントを保存しておく理由がないからです。

PATIENT セグメントを削除するには、その前に、次のようなコマンドを使用して、そのセグメントを検索しておかなければなりません。

EXEC DLI GUSEGMENT(PATIENT) INTO(PATAREA) WHERE (PATNO=PATNO1);

この患者のデータベース・レコードを削除するには、DLET コマンドを出し、この時に FROM オプションを使用して、削除するセグメントが入っている入出力域の名前を指定します。

EXEC DLI DLET SEGMENT(PATIENT) FROM(PATAREA);

このコマンドを出すと、PATIENT セグメントとその従属セグメント (ILLNESS、TREATMNT、BILLING、PAYMENT、および HOUSHOLD の各セグメント) が削除されます。

制約事項検索コマンドと DLET コマンドとの間で、同じ PCB を使用するコマンドを出すことはできません。また、1 つの読み取り (GET) コマンドにつき 1 つの DLET コマンドしか出すことができません。

GN コマンドGet Next (GN) コマンドは、セグメントを順に検索するために使用されます。

形式

�� EXEC DLI GET NEXTGN USING PCB(expression)

�KEYFEEDBACK(area)

FEEDBACKLEN(expression)

(1)INTO(area) �

�A B

��

DLET コマンド

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド 43

Page 64: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

A それぞれの親セグメントについては、次のようになります (オプション):

VARIABLE FIRSTLASTCURRENT

SEGMENT(name)SEGMENT((area))

SEGLENGTH(expression)�

�OFFSET(expression) (2)

INTO(area)LOCKEDLOCKCLASS(class)

�MOVENEXT(data_value) GETFIRST(data_value) SET(data_value)

�SETCOND(data_value) SETZERO(data_value) SETPARENT

�WHERE(qualification statement)

(3)FIELDLENGTH(expression)

�KEYS(area)

(4)KEYLENGTH(expression)

B オブジェクト・セグメントについては、次のようになります (オプション):

VARIABLE FIRSTLAST

SEGMENT(name)SEGMENT((area))

SEGLENGTH(expression)�

�OFFSET(expression) INTO(area) LOCKED

LOCKCLASS(class)

�MOVENEXT(data_value) GETFIRST(data_value) SET(data_value)

�SETCOND(data_value) SETZERO(data_value)

�WHERE(qualification statement)

(3)FIELDLENGTH(expression)

�KEYS(area)

(4)KEYLENGTH(expression)

注:

1 SEGMENT オプションを省略する場合、示されているように INTO オプションを指定してください。

2 パス・コマンドでは、親セグメントで INTO を指定してください。

GN コマンド

44 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 65: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

3 複数の修飾ステートメントを使用する場合には、FIELDLENGTH を使用してそれぞれの長さを指定してください。たとえば、FIELDLENGTH(24,8) と指定してください。

4 1 つのセグメント・レベルで、KEYS オプションか WHERE オプションのいずれかを使用することができますが、両方は使用できません。

オプション

USING PCB(expression)コマンドのために使用する DB PCB を指定します。 その引数には、整数データ型に変換されるものであれば、どのような式でも指定できます。数値を指定することもできるし、あるいはプログラムの中で数値を含んでいるハーフワードを指す参照を指定することもできます。

KEYFEEDBACK(area)セグメントの連結キーが入る区域を指定します。 区域の長さが足りない場合、キーは切り捨てられます。

FEEDBACKLEN(expression)検索された連結キーを入れたいキー・フィードバック域の長さを指定します。その引数には、整数データ型に変換されるものであれば、どのような式でも指定できます。数値を指定することもできるし、あるいはプログラムの中で数値を含んでいるハーフワードを指す参照を指定することもできます。 (これは、COBOL プログラムでは必須ですが、PL/I およびアセンブラー言語の各プログラムでは任意指定です。)

INTO(area)セグメントが読み込まれる区域を指定します。

VARIABLEセグメントが可変長であることを示します。

FIRSTあるセグメント・タイプの最初に現れるセグメントを検索すること、もしくはセグメントを最初に現れるように挿入することを指定します。

LASTあるセグメント・タイプの最後に現れるセグメントを検索すること、もしくはセグメントを最後に現れるように挿入することを指定します。

CURRENTコマンドを修飾し、現在位置のレベル以上のレベルをこのセグメントの修飾として使用することを示します。

SEGMENT(name), SEGMENT((area))検索するセグメント・タイプの名前、もしくはプログラムの中でその名前を含んでいる区域を指定することにより、コマンドを修飾します。

GN コマンドには、データベースの階層レベル数と同数の修飾レベルを指定できます。WHERE または KEYS オプションが指定された完全修飾コマンドを使用することにより、必要な階層パスとセグメントを明示することができるので、コマンドについて記述するときに便利です。 ただし、GN コマンドは SEGMENT

オプションを使用せずに指定できるため、GN コマンドを修飾する必要はありません。

GN コマンド

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド 45

Page 66: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

データベース・レコード内の位置を設定したあと、SEGMENT オプションを指定せずに GN コマンドを出すと、次のセグメントが現れる位置が順次に検索されます。

KEYS または WHERE オプションを指定せずに SEGMENT オプションだけを指定すると、IMS DB は現在位置から順方向に検索して、検出されるセグメント・タイプが最初に現れる位置を検索します。GN コマンドを修飾せずに使用する場合、予期していたセグメント・タイプが検索されないことがあるため、プログラムがアクセスできる最大セグメントが入るだけの大きさの入出力域を指定してください。(検索コマンドが成功したあとで、DIB から検索したセグメント・タイプを調べることができます。)

WHERE または KEYS オプションを使用してコマンドを完全に修飾すると、オプションの記述に従って、次のセグメントが順次に検索されます。

親セグメントに対して WHERE または KEYS オプションを指定すると、ユーザーが検索したいセグメントへのパスの一部であるセグメント・オカレンスが定義されます。 レベルに対する SEGMENT オプションを省略するか、またはSEGMENT オプションを指定して WHERE オプションを指定しない場合、SEGMENT オプションへのパスをどのように指定しても、このコマンドを実行できることになります。 DL/I は、修飾された親セグメントと最低レベルのSEGMENT オプションだけを使用してコマンドを正しく実行します。 DL/I

は、不在レベルの修飾を使用しません。

SEGLENGTH(expression)検索されたセグメントが入る入出力域の長さを指定します。その引数には、整数データ型に変換されるものであれば、どのような式でも指定できます。数値を指定することもできるし、あるいはプログラムの中で数値を含んでいるハーフワードを指す参照を指定することもできます。 (COBOL プログラムでは、INTO オプションまたは FROM オプションを指定しているすべての SEGMENT レベルに必要です。)

要件: SEGLENGTH に指定する値は、この呼び出しで処理する最長セグメントの長さ以上でなければなりません。

OFFSET(expression)目標親に対するオフセットを指定します。 整数データ型に変換されるものであれば、どのような式でも指定できます。数値を指定するか、あるいはプログラムの中で数値を含んでいるハーフワードへの参照を指定します。 論理関係にある連結セグメントを処理するときには、OFFSET を使用します。目標親が可変長セグメントの場合には、OFFSET の指定は必須です。

LOCKEDチェックポイントまたは同期点に達するまで、ユーザーのプログラムが排他的に使用するセグメントを検索することを指定します。このオプションは Q コマンド・コードと同様に機能し、高速機能と全機能の両方に適用されます。 Q コマンド・コードのクラスとして、1 バイトの英字「A」が自動的に付加されます。

LOCKCLASS(class)DEQ コマンドが出されるまで、あるいはチェックポイントまたは同期点に達するまで、ユーザーのプログラムが排他的に使用するセグメントを検索することを指定します。(DEQ コマンドは高速機能ではサポートされません。)Class は、検索セグメントのロック・クラスを表す 1 バイトの英字 (B-J) です。

GN コマンド

46 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 67: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

全機能コードの場合は、LOCKCLASS オプションの後に文字 (B-J) を続けて、セグメントのロック・クラスを指定します。たとえば、LOCKCLASS(’B’) です。LOCKCLASS の後ろに B から J の範囲の文字が指定されていない場合、EXECDLI は状況コード GL を設定し、ABENDU1041 を開始します。

高速機能では LOCKCLASS はサポートされていませんが、全機能と高速機能との一貫性をとるため、LOCKCLASS(’x’) を指定してください。この x は B から J

の範囲の文字です。たとえば、LOCKCLASS(’B’) となります。 LOCKCLASS の後ろに B から J の範囲の文字が指定されていない場合、EXECDLI は状況コードGL を設定し、ABENDU1041 を開始します。

MOVENEXT(data_value)サブセット・ポインターを、現行セグメントの次のセグメントが現れる位置に移動させることを指定します。

GETFIRST(data_value)サブセット内のセグメントが最初に現れる位置から検索を開始したいことを指定します。

SET(data_value)無条件でサブセット・ポインターを現行セグメントに設定することを指定します。

SETCOND(data_value)条件付きでサブセット・ポインターを現行セグメントに設定することを指定します。

SETZERO(data_value)サブセット・ポインターをゼロに設定することを指定します。

SETPARENT必要なレベルで親子関係を設定します。

FIELDLENGTH(expression)WHERE オプションのフィールド値の長さを指定します。

KEYLENGTH(expression)KEYS オプションを使用する際の、連結キーの長さを指定します。整数データ型に変換することができる、ホスト言語で書かれた式であればどのような式でも可能です。変数を指定する場合、バイナリー・ハーフワード値で宣言しなければなりません。 IBM COBOL for z/OS & VM (または VS COBOL II)、PL/I、アセンブラー言語の各プログラムの場合、KEYLENGTH はオプションです。 IBM

COBOL for z/OS & VM (または VS COBOL II) コンパイラーでコンパイルしていない COBOL プログラムの場合、KEYS オプションに KEYLENGTH を指定してください。

KEYS(area)セグメントの連結キーでコマンドを修飾します。セグメント・レベルに対してKEYS または WHERE のいずれかを使用することができますが、両方を使用することはできません。

「area」は、セグメントの連結キーが入っているプログラム内の区域を指定します。

WHERE(qualification statement)セグメントが現れる位置を指定することで、コマンドを修飾します。その引数

GN コマンド

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド 47

Page 68: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

は、1 つ以上の修飾ステートメントから成り、それぞれがセグメントのフィールド内の値と、ユーザーが指定した値を比較します。各修飾ステートメントは次のものから構成されています。

v セグメント中のフィールドの名前

v どのように 2 つの値を比較するかを示す関係演算子

v フィールドの値と比較される値を含んでいる、プログラム中のデータ域の名前

使用法GN コマンドは、データベースからセグメントを順次検索するために使用します。GN

コマンドを出すたびに、IMS DB はこのコマンドに指定されているオプションに従って次のセグメントを検索します。 GN コマンドを出す前に、 GU コマンドを出してデータベース・レコード内の位置を設定しておかなければなりません。

GN コマンドにはセグメント・オプションを指定する必要はありません。 ただし、SEGMENT オプションのあとにできるだけ KEYS または WHERE オプションを指定して、GN コマンドを修飾してください。

例 1: 「診療所に来たことのある患者全員のリストが必要です。」

説明: この要求に対応するには、DL/I が状況コード GB をプログラムに戻すまで、プログラムがセグメント名 PATIENT で修飾されているコマンドを発行する必要があります (GB は、DL/I がコマンドを正しく実行することができないうちにデータベースの終わりに達したことを意味します) このコマンドは次のようになります。

EXEC DLI GNSEGMENT(PATIENT) INTO(PATAREA);

プログラムがこのコマンドを出すたびに、データベース・レコード内の現在位置が次のデータベース・レコードに順方向に移動します。

例 2: 「今月初めからこれまでに診察した患者の名前を挙げてください。」

説明: 1 つ以上の WHERE オプションまたは KEYS オプションが指定されているGN コマンドは、コマンドの要求を満たすために指定のセグメント・タイプが次に現れる位置を検索します。この要求に対応するために、プログラムは、DL/I が GB

状況コードを戻すまで、次に示す GN コマンドを出します。 次の例では、1988 年4 月末に使用するコマンドを示します (ILLDATE1 に 198804010 が指定されるものと想定しています)。

EXEC DLI GNSEGMENT(PATIENT) INTO(PATAREA)SEGMENT(ILLNESS) INTO(ILLAREA) WHERE(ILLDATE>=ILLDATE1);

例 3:

EXEC DLI GN INTO(PATAREA);

説明: 患者 04124 の PATIENT セグメントを検索した直後にこのコマンドを出した場合、患者 04124 の最初の ILLNESS セグメントが検索されます。

GN コマンド

48 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 69: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

制約事項GN コマンドを修飾せずに使用すると、目的のセグメント・タイプが検索されない可能性があります。そのため、プログラムがアクセスできる最大セグメントが入るだけの大きさをもつ入出力域を指定してください。

セグメント・レベルに対して KEYS オプションまたは WHERE オプションのいずれかを使用できますが、両方は使用できません。

GNP コマンドGet Next in Parent (GNP) コマンドは、従属セグメントを順次に検索するために使用されます。

形式

�� EXEC DLI GET NEXT IN PARENTGNP USING PCB(expression)

�KEYFEEDBACK(area)

FEEDBACKLEN(expression)

(1)INTO(area) �

�A B

��

A それぞれの親セグメントについては、次のようになります (オプション):

VARIABLE FIRSTLASTCURRENT

SEGMENT(name)SEGMENT((area))

SEGLENGTH(expression)�

�OFFSET(expression) (2)

INTO(area)LOCKEDLOCKCLASS(class)

�MOVENEXT(data_value) GETFIRST(data_value) SET(data_value)

�SETCOND(data_value) SETZERO(data_value) SETPARENT

�WHERE(qualification statement)

(3)FIELDLENGTH(expression)

�KEYS(area)

(4)KEYLENGTH(expression)

GN コマンド

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド 49

Page 70: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

B オブジェクト・セグメントについては、次のようになります (オプション):

VARIABLE FIRSTLAST

SEGMENT(name)SEGMENT((area))

SEGLENGTH(expression)�

�OFFSET(expression) INTO(area) LOCKED

LOCKCLASS(class)

�MOVENEXT(data_value) GETFIRST(data_value) SET(data_value)

�SETCOND(data_value) SETZERO(data_value)

�WHERE(qualification statement)

(3)FIELDLENGTH(expression)

�KEYS(area)

(4)KEYLENGTH(expression)

注:

1 SEGMENT オプションを省略する場合、示されているように INTO オプションを指定してください。

2 パス・コマンドでは、親セグメントで INTO を指定してください。

3 複数の修飾ステートメントを使用する場合には、FIELDLENGTH を使用してそれぞれの長さを指定してください。たとえば、FIELDLENGTH(24,8) と指定してください。

4 1 つのセグメント・レベルで、KEYS オプションか WHERE オプションのいずれかを使用することができますが、両方は使用できません。

オプションSEGMENT オプションと WHERE オプションを使用して GNP コマンドを修飾することができます。

コマンドを修飾しないと、IMS DB は設定された親の下で次の順次セグメントを検索します。SEGMENT オプションを指定すると、IMS DB は設定された親の下で順方向に検索をして、指定のセグメント・タイプが最初に現れる位置を検索します。

データベースの階層レベル数と同数の修飾レベルを GNP コマンドに指定できます。ただし、コマンドを修飾するときに、このコマンドの親として設定されたセグメント・タイプから DL/I が出ないような方法で行わなければなりません。

USING PCB(expression)コマンドのために使用する DB PCB を指定します。 その引数には、整数データ型に変換されるものであれば、どのような式でも指定できます。数値を指定することもできるし、あるいはプログラムの中で数値を含んでいるハーフワードを指す参照を指定することもできます。

GNP コマンド

50 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 71: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

KEYFEEDBACK(area)セグメントの連結キーが入る区域を指定します。 区域の長さが足りない場合、キーは切り捨てられます。これを使用して、セグメントの連結キーを検索してください。

FEEDBACKLEN(expression)検索された連結キーを入れたいキー・フィードバック域の長さを指定します。その引数には、整数データ型に変換されるものであれば、どのような式でも指定できます。数値を指定することもできるし、あるいはプログラムの中で数値を含んでいるハーフワードを指す参照を指定することもできます。 (これは、COBOL プログラムでは必須ですが、PL/I およびアセンブラー言語の各プログラムでは任意指定です。)

INTO(area)セグメントが読み込まれる区域を指定します。 このオプションを使用すると、1

つのコマンドで 1 つ以上のセグメントを検索できます。

VARIABLEセグメントが可変長であることを示します。

FIRSTあるセグメント・タイプの最初に現れるセグメントを検索すること、もしくはセグメントを最初に現れるように挿入することを指定します。これを使用して、あるセグメント・タイプのセグメントが最初に現れる位置を検索してください。

LASTあるセグメント・タイプの最後に現れるセグメントを検索すること、もしくはセグメントを最後に現れるように挿入することを指定します。これを使用して、あるセグメント・タイプのセグメントが最後に現れる位置を検索してください。

CURRENTコマンドを修飾し、現在位置のレベル以上のレベルをこのセグメントの修飾として使用することを示します。これを使用して、現在位置に基づいてセグメントを検索してください。

SEGLENGTH(expression)検索されたセグメントが入る入出力域の長さを指定します。その引数には、整数データ型に変換されるものであれば、どのような式でも指定できます。数値を指定することもできるし、あるいはプログラムの中で数値を含んでいるハーフワードを指す参照を指定することもできます。 (COBOL プログラムでは、INTO オプションまたは FROM オプションを指定している SEGMENT レベルにはSEGLENGTH が必須です。)

要件: SEGLENGTH に指定する値は、この呼び出しで処理する最長セグメントの長さ以上でなければなりません。

OFFSET(expression)目標親に対するオフセットを指定します。 引数には、整数データ型に変換されるものであれば、どのような式でも指定できます。数値を指定するか、またはプログラム内の数値を含むハーフワードへの参照を指定することができます。論理関係にある連結セグメントを処理するときには、OFFSET を使用します。目標親が可変長セグメントの場合には、OFFSET の指定は必須です。

GNP コマンド

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド 51

Page 72: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

LOCKEDチェックポイントまたは同期点に達するまで、ユーザーのプログラムが排他的に使用するセグメントを検索することを指定します。これを使用して、プログラムを排他的に使用するためにセグメントを予約してください。このオプションはQ コマンド・コードと同様に機能し、高速機能と全機能の両方に適用されます。 Q コマンド・コードのクラスとして、1 バイトの英字「A」が自動的に付加されます。

LOCKCLASS(class)DEQ コマンドが出されるまで、あるいはチェックポイントまたは同期点に達するまで、ユーザーのプログラムが排他的に使用するセグメントを検索することを指定します。(DEQ コマンドは高速機能ではサポートされません。)Class は、検索セグメントのロック・クラスを表す 1 バイトの英字 (B-J) です。

全機能コードの場合は、LOCKCLASS オプションの後に文字 (B-J) を続けて、セグメントのロック・クラスを指定します。たとえば、LOCKCLASS(’B’) です。LOCKCLASS の後ろに B から J の範囲の文字が指定されていない場合、EXECDLI は状況コード GL を設定し、ABENDU1041 を開始します。

高速機能では LOCKCLASS はサポートされていませんが、全機能と高速機能との一貫性をとるため、LOCKCLASS(’x’) を指定してください。この x は B から J

の範囲の文字です。たとえば、LOCKCLASS(’B’) となります。 LOCKCLASS の後ろに B から J の範囲の文字が指定されていない場合、EXECDLI は状況コードGL を設定し、ABENDU1041 を開始します。

MOVENEXT(data_value)サブセット・ポインターを、現行セグメントの次のセグメントが現れる位置に移動させることを指定します。

GETFIRST(data_value)サブセット内のセグメントが最初に現れる位置から検索を開始したいことを指定します。

SET(data_value)無条件でサブセット・ポインターを現行セグメントに設定することを指定します。

SETCOND(data_value)条件付きでサブセット・ポインターを現行セグメントに設定することを指定します。

SETZERO(data_value)サブセット・ポインターをゼロに設定することを指定します。

SETPARENT必要なレベルで親子関係を設定します。

WHERE(qualification statement)セグメントが現れる位置を指定することで、コマンドを修飾します。その引数は、1 つ以上の修飾ステートメントから成り、それぞれがセグメントのフィールド内の値と、ユーザーが指定した値を比較します。各修飾ステートメントは次のものから構成されています。

v セグメント中のフィールドの名前

v どのように 2 つの値を比較するかを示す関係演算子

GNP コマンド

52 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 73: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

v フィールドの値と比較される値を含んでいる、プログラム中のデータ域の名前

FIELDLENGTH(expression)WHERE オプションのフィールド値の長さを指定します。

KEYS(area)セグメントの連結キーでコマンドを修飾します。セグメント・レベルに対してKEYS または WHERE のいずれかを使用することができますが、両方を使用することはできません。

「area」は、セグメントの連結キーが入っているプログラム内の区域を指定します。

KEYLENGTH(expression)KEYS オプションを使用する際の、連結キーの長さを指定します。整数データ型に変換することができる、ホスト言語で書かれた式であればどのような式でも可能です。変数を指定する場合、バイナリー・ハーフワード値で宣言しなければなりません。 IBM COBOL for z/OS & VM (または VS COBOL II)、PL/I、アセンブラー言語の各プログラムの場合、KEYLENGTH はオプションです。 IBM

COBOL for z/OS & VM (または VS COBOL II) コンパイラーでコンパイルしていない COBOL プログラムの場合、KEYS オプションに KEYLENGTH を指定してください。

SEGMENT(name), SEGMENT((area))検索、挿入、削除、または置き換えを行いたいセグメント・タイプの名前、もしくはその名前が入っているプログラムの区域を指定することにより、コマンドを修飾します。

データベースの階層レベル数と同数の修飾レベルを GNP コマンドに指定できます。WHERE または KEYS オプションが指定された完全修飾コマンドを使用することにより、必要な階層パスとセグメントを明示することができるので、コマンドについて記述するときに便利です。 ただし、GNP コマンドを修飾する必要はまったくありません。これは、SEGMENT オプションがなくても GNP コマンドを指定できるためです。

データベース・レコード内の位置を設定したあと、SEGMENT オプションを指定せずに GNP コマンドを出すと、次のセグメントが現れる位置が順次に検索されます。

KEYS または WHERE オプションを指定せずに SEGMENT オプションだけを指定すると、IMS DB は現在位置から順方向に検索して、検出されるセグメント・タイプが最初に現れる位置を検索します。GNP コマンドを修飾せずに使用する場合、予期していたセグメント・タイプが検索されないことがあるため、プログラムがアクセスできる最大セグメントが入るだけの大きさの入出力域を指定してください。(検索コマンドが成功したあとで、DIB から検索セグメント・タイプを見つけることができます。)

WHERE または KEYS オプションを使用してコマンドを完全に修飾すると、オプションの記述に従って、次のセグメントが順次に検索されます。

親セグメントに対して WHERE または KEYS オプションを指定すると、ユーザーが検索したいセグメントへのパスの一部であるセグメント・オカレンスが定義されます。 レベルに対する SEGMENT オプションを省略するか、または

GNP コマンド

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド 53

Page 74: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

SEGMENT オプションを指定して WHERE オプションを指定しない場合、SEGMENT オプションへのパスをどのように指定しても、このコマンドを実行できることになります。 DL/I は、修飾された親セグメントと最低レベルのSEGMENT オプションだけを使用してコマンドを正しく実行します。 DL/I

は、不在レベルの修飾を使用しません。

使用法従属セグメントの順次検索 (GNP) コマンドを使用すれば、セグメントの検索を限定することができます。つまり、特定の親の従属セグメントだけを検索することができます。 GNP コマンドを出す前には、親子関係を設定しておかなければなりません。

例 1: 「Kate Bailey に関するすべてのレコードが必要です。彼女の患者番号は09080 です。」

説明: この要求に応じるには、患者番号 09080 の患者の従属セグメントだけを調べればよく、すべての患者の従属セグメントを検索する必要はありません。これを行うには、GU コマンドを使用して、Kate Bailey の PATIENT セグメントに現在の位置と親子関係を設定します。そのあと、DL/I がその PATIENT セグメントのすべての従属セグメントを戻すまで、SEGMENT または WHERE オプションの指定されていない GNP を出し続けます。(GE 状況コードは、すべての従属セグメントが検索されたことを表します。) この要求に応じるために、プログラムは次のようなコマンドを出すことができます。

EXEC DLI GUSEGMENT(PATIENT) INTO(PATAREA)WHERE (PATNO=PATNO1);

EXEC DLI GNPINTO(ILLAREA);

GNP コマンドは、SEGMENT または WHERE オプションが指定されていないと、現在の親の下で従属セグメントが最初に現れる位置を検索します。 現在位置がすでに現在の親の従属セグメントにある場合、このコマンドは、この親の下で次のセグメントが現れる位置を検索します。

GNP コマンドを修飾せずに使用する場合、予期していたセグメント・タイプが検索されないことがあるため、プログラムがアクセスできる最大セグメントが入るだけの大きさの入出力域を指定してください。(GNP コマンドが正常に出されると、DIB

から検索セグメント・タイプを調べることができます。)

例 2: 「頭痛にアセトアミノフェンを処方していた医師は誰ですか。」

説明: SEGMENT オプションだけが指定されている GNP コマンドは、設定した親の下で指定したセグメント・タイプの従属セグメントを順次に検索します。 この例において、ILLNESS のキーは ILLNAME であり、TREATMNT のキーはMEDICINE とします。 この治療が処方された各 TREATMNT セグメントを検索する必要があります。この治療を処方した医師の名前は、TREATMNT セグメントの一部です。(データ域 ILLNAME1 には HEADACHE があり、MEDIC1 にはACETAMINOP が入っているものとします。) この要求に対応するには、次のようなコマンドを出します。

GNP コマンド

54 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 75: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

EXEC DLI GNSEGMENT(ILLNESS) WHERE (ILLNAME=ILLNAME1);

EXEC DLI GNPSEGMENT(TREATMNT) WHERE (MEDICINE=MEDIC1);

このコマンドを処理するため、プログラムは DL/I が状況コード GE (該当なし) を戻すまで GNP コマンドを発行し、この状況コードが戻されると、プログラムは次のHEADACHE セグメントを検索し、さらにこれに対する TREATMNT セグメントを検索します。プログラムは、ILLNAME が HEADACHE である ILLNESS セグメントがなくなるまでこれを行います。

制約事項GNP コマンドの制約事項は、次のとおりです。

v このコマンドを出す前には、親子関係を設定しておかなければなりません。

v GNP コマンドを修飾するときは、このコマンドの親として設定されているセグメント・タイプから DL/I が移動するような方法では修飾できません。

v 特定の親の従属セグメントしか検索することができません。

GU コマンドセグメントの Get Unique (GU) コマンドは、特定のセグメントを直接検索するため、および順次処理を行うデータベース内の開始位置を設定するために使用されます。

形式

�� EXEC DLI GET UNIQUEGU USING PCB(expression)

�KEYFEEDBACK(area)

FEEDBACKLEN(expression)

INTO(area)A

�B

��

A:

VARIABLE LAST SEGMENT(name)SEGMENT((area))

SEGLENGTH(expression)�

�OFFSET(expression) (1)

INTO(area)LOCKEDLOCKCLASS(class)

�MOVENEXT(data_value) GETFIRST(data_value) SET(data_value)

�SETCOND(data_value) SETZERO(data_value) SETPARENT

GNP コマンド

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド 55

Page 76: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

�WHERE(qualification statement)

(2)FIELDLENGTH(expression)

�KEYS(area)

(3)KEYLENGTH(expression)

B:

VARIABLE LAST SEGMENT(name)SEGMENT((area))

SEGLENGTH(expression)�

�OFFSET(expression) INTO(area) LOCKED

LOCKCLASS(class)

�MOVENEXT(data_value) GETFIRST(data_value) SET(data_value)

�SETCOND(data_value) SETZERO(data_value)

�WHERE(qualification statement)

(2)FIELDLENGTH(expression)

�KEYS(area)

(3)KEYLENGTH(expression)

注:

1 パス・コマンドでは、親セグメントで INTO を指定してください。

2 複数の修飾ステートメントを使用する場合には、FIELDLENGTH を使用してそれぞれの長さを指定してください。たとえば、FIELDLENGTH(24,8) と指定してください。

3 1 つのセグメント・レベルで、KEYS オプションか WHERE オプションのいずれかを使用することができますが、両方は使用できません。

オプション

USING PCB(expression)コマンドのために使用する DB PCB を指定します。 その引数には、整数データ型に変換されるものであれば、どのような式でも指定できます。数値を指定することもできるし、あるいはプログラムの中で数値を含んでいるハーフワードを指す参照を指定することもできます。

GU コマンド

56 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 77: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

KEYFEEDBACK(area)セグメントの連結キーが入る区域を指定します。 区域の長さが足りない場合、キーは切り捨てられます。

FEEDBACKLEN(expression)検索された連結キーを入れたいキー・フィードバック域の長さを指定します。その引数には、整数データ型に変換されるものであれば、どのような式でも指定できます。数値を指定することもできるし、あるいはプログラムの中で数値を含んでいるハーフワードを指す参照を指定することもできます。 (これは、COBOL プログラムでは必須ですが、PL/I およびアセンブラー言語の各プログラムでは任意指定です。)

INTO(area)セグメントが読み込まれる区域を指定します。

VARIABLEセグメントが可変長であることを示します。

LASTあるセグメント・タイプの最後に現れるセグメントを検索すること、もしくはセグメントを最後に現れるように挿入することを指定します。

SEGMENT(name), SEGMENT((area))検索、挿入、削除、または置き換えを行いたいセグメント・タイプの名前、もしくはその名前が入っているプログラムの区域を指定することにより、コマンドを修飾します。

あるセグメント・タイプが最初に現れる位置を検索するときは、SEGMENT オプションを指定するだけでかまいません。 使用中の PCB によって定義された階層レベルと同数の修飾レベルを指定することができます。

データベースの先頭に位置を設定する場合は、ルート・セグメント・タイプを指定した SEGMENT オプションを使用した GU コマンドを出します。

1 つ以上の階層レベルに対して SEGMENT オプションを指定しないと、DL/I

はそのレベルのセグメント修飾を使用します。DL/I がどの修飾を使用するかは、現在位置によって決まります。

v DL/I の位置が不在レベルに設定されている場合、DL/I はこの位置が設定されているセグメントを使用します。

v DL/I の位置が不在レベルに設定されていない場合、DL/I はそのレベルで最初に現れる位置を使用します。

v DL/I が、もっと高いレベルに設定された位置から前進する場合、DL/I は新しいパスに含まれる不在レベルの最初に現れる位置を使用します。

v ルート・レベルの SEGMENT オプションが省略されており、DL/I の位置がルートに設定されている場合、コマンドを正しく実行しようとするとき DL/I

はそのルートから移動しません。

データベースの階層レベル数と同数の修飾レベルを GU コマンドに指定できます。WHERE または KEYS オプションが指定された完全修飾コマンドを使用することにより、必要な階層パスとセグメントを明示することができるので、コマンドについて記述するときに便利です。 ただし、GU コマンドを修飾する必要はまったくありません。これは、SEGMENT オプションがなくても GU コマンドを指定できるためです。

GU コマンド

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド 57

Page 78: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

KEYS または WHERE オプションを指定せずに SEGMENT オプションだけを指定すると、IMS DB は現在位置から順方向に検索して、検出されるセグメント・タイプが最初に現れる位置を検索します。GU コマンドを修飾せずに使用する場合、予期していたセグメント・タイプが検索されないことがあるため、プログラムがアクセスできる最大セグメントが入るだけの大きさの入出力域を指定してください。(検索コマンドが成功したあとで、DIB から検索セグメント・タイプを見つけることができます。)

WHERE または KEYS オプションを使用してコマンドを完全に修飾すると、オプションの記述に従って、次のセグメントが順次に検索されます。

親セグメントに対して WHERE または KEYS オプションを指定すると、ユーザーが検索したいセグメントへのパスの一部であるセグメント・オカレンスが定義されます。 レベルに対する SEGMENT オプションを省略するか、または SEGMENT オプションを指定して WHERE オプションを指定しない場合、SEGMENT オプションへのパスをどのように指定しても、このコマンドを実行できることになります。 DL/I は、修飾された親セグメントと最低レベルの SEGMENT オプションだけを使用してコマンドを正しく実行します。 DL/I は、不在レベルの修飾を使用しません。

SEGLENGTH(expression)検索されたセグメントが入る入出力域の長さを指定します。その引数には、整数データ型に変換されるものであれば、どのような式でも指定できます。数値を指定することもできるし、あるいはプログラムの中で数値を含んでいるハーフワードを指す参照を指定することもできます。 (COBOL プログラムでは、INTO オプションまたは FROM オプションを指定している SEGMENT レベルにはSEGLENGTH が必須です。)

要件: SEGLENGTH に指定する値は、この呼び出しで処理する最長セグメントの長さ以上でなければなりません。

OFFSET(expression)目標親に対するオフセットを指定します。 引数には、整数データ型に変換されるものであれば、どのような式でも指定できます。数値を指定するか、またはプログラム内の数値を含むハーフワードへの参照を指定することができます。論理関係にある連結セグメントを処理するときには、OFFSET を使用します。目標親が可変長セグメントの場合には、OFFSET の指定は必須です。

LOCKEDチェックポイントまたは同期点に達するまで、ユーザーのプログラムが排他的に使用するセグメントを検索することを指定します。このオプションは、Q コマンド・コードと同様に機能します。このオプションは高速機能と全機能の両方に適用されます。Q コマンド・コードのクラスとして、1 バイトの英字「A」が自動的に付加されます。

LOCKCLASS(class)DEQ コマンドが出されるまで、あるいはチェックポイントまたは同期点に達するまで、ユーザーのプログラムが排他的に使用するセグメントを検索することを指定します。(DEQ コマンドは高速機能ではサポートされません。)Class は、検索セグメントのロック・クラスを表す 1 バイトの英字 (B-J) です。

GU コマンド

58 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 79: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

全機能コードの場合は、LOCKCLASS オプションの後に文字 (B-J) を続けて、セグメントのロック・クラスを指定します。たとえば、LOCKCLASS(’B’) です。LOCKCLASS の後ろに B から J の範囲の文字が指定されていない場合、EXECDLI は状況コード GL を設定し、ABENDU1041 を開始します。

高速機能では LOCKCLASS はサポートされていませんが、全機能と高速機能との一貫性をとるため、LOCKCLASS(’x’) を指定してください。この x は B から J

の範囲の文字です。たとえば、LOCKCLASS(’B’) となります。 LOCKCLASS の後ろに B から J の範囲の文字が指定されていない場合、EXECDLI は状況コードGL を設定し、ABENDU1041 を開始します。

MOVENEXT(data_value)サブセット・ポインターを、現行セグメントの次のセグメントが現れる位置に移動させることを指定します。

GETFIRST(data_value)サブセット内のセグメントが最初に現れる位置から検索を開始したいことを指定します。

SET(data_value)無条件でサブセット・ポインターを現行セグメントに設定することを指定します。

SETCOND(data_value)条件付きでサブセット・ポインターを現行セグメントに設定することを指定します。

SETZERO(data_value)サブセット・ポインターをゼロに設定することを指定します。

SETPARENT必要なレベルで親子関係を設定します。

FIELDLENGTH(expression)WHERE オプションのフィールド値の長さを指定します。

KEYLENGTH(expression)KEYS オプションを使用する際の、連結キーの長さを指定します。引数には、整数データ型に変換されるホスト言語の式であればどのようなものでも指定できます。変数はバイナリー・ハーフワード値として宣言してください。 IBM

COBOL for z/OS & VM (または VS COBOL II)、PL/I、アセンブラー言語の各プログラムの場合、KEYLENGTH はオプションです。 IBM COBOL for z/OS

& VM (または VS COBOL II) コンパイラーでコンパイルしていない COBOL

プログラムの場合、KEYS オプションに KEYLENGTH を指定してください。

WHERE(qualification statement)GU コマンドをさらに修飾する場合は、SEGMENT オプションのあとに WHERE

を使用します。 GU コマンドを完全に修飾すると、データベース・レコード内での現在位置に関係なく、セグメントを検索することができます。

KEYS(area)KEYS を使用して、GU コマンドをさらに修飾し、連結キーを使用してセグメント・オカレンスを指定します。

KEYS または WHERE オプションを指定せずに SEGMENT オプションだけを指定すると、IMS DB は現在位置から順方向に検索して、検出されるセグメン

GU コマンド

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド 59

Page 80: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

ト・タイプが最初に現れる位置を検索します。GU コマンドを修飾せずに使用する場合、予期していたセグメント・タイプが検索されないことがあるため、プログラムがアクセスできる最大セグメントが入るだけの大きさの入出力域を指定してください。(検索コマンドが成功したあとで、DIB から検索セグメント・タイプを見つけることができます。)

WHERE または KEYS オプションを使用してコマンドを完全に修飾すると、オプションの記述に従って、次のセグメントが順次に検索されます。

親セグメントに対して WHERE または KEYS オプションを指定すると、ユーザーが検索したいセグメントへのパスの一部であるセグメント・オカレンスが定義されます。 レベルに対して SEGMENT オプションを省略するか、またはWHERE オプションを指定せずに SEGMENT オプションだけを指定すると、そのオプションへのパスはすべてコマンドを正しく実行することを表します。DL/I は、修飾された親セグメントと最低レベルの SEGMENT オプションのみを使用してコマンドを正しく実行します。 DL/I は、不在レベルの修飾を使用しません。

使用法GU コマンドは、データベースから特定のセグメントを検索するとき、または順次処理のためにデータベース内での位置を設定するときに使用します。

検索するセグメント・タイプを示すには、GU コマンドに少なくとも SEGMENT オプションを指定しなければなりません。(IMS DB は、SEGMENT 引数で指定されたセグメントが最初に現れる位置を検索します。)

あるセグメント・タイプの特定のオカレンスを検索する必要がある場合、SEGMENT オプションのあとに WHERE または KEYS オプションを使用して、コマンドをさらに修飾することができます。

GU コマンドをさらに WHERE オプションまたは KEYS オプションで修飾し、セグメント・タイプの特定のオカレンスを指定することがあります。 GU コマンドを完全に修飾すると、データベース・レコード内での現在位置に関係なく、セグメントを検索することができます。

例 1: 「Robert James は最後にどのような病気で来院しましたか。その日、その病気に対して薬が投与されましたか。彼の患者番号は 05136 です。」

説明: この例では、情報を 2 つ要求しています。 最初の要求に対応して、最新のILLNESS セグメントを検索するには、次のように GU コマンドを出します(PATNO1 に 05163 が入っているものとします)。

EXEC DLI GUSEGMENT(PATIENT) WHERE(PATNO=PATNO1)SEGMENT(ILLNESS) INTO(AREA);

この患者が最後に診療所を訪れた日付の ILLNESS セグメントを検索したあと、さらに別のコマンドを発行してその日にその患者が治療を受けたかどうかを調べることができます。 患者の最後の来院日が 1988 年 1 月 5 日の場合、次に示すコマンドを出して、その患者が治療を受けたかどうかを調べることができます (PATNO1

には 05163 が入っており、 DATE1 には 19880105 が入っているものとします)。

GU コマンド

60 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 81: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

EXEC DLI GUSEGMENT(PATIENT) WHERE(PATNO=PATNO1)SEGMENT(ILLNESS) WHERE(ILLDATE=DATE1)SEGMENT(TREATMNT) INTO(TRTAREA) WHERE(DATE=DATE1);

例 2: 「Joan Carter は現在どんな病気で治療を受けていますか。彼女の患者番号は10320 です。」

EXEC DLI GUSEGMENT(PATIENT) WHERE(PATNO=PATNO1)SEGMENT(ILLNESS) INTO(ILLAREA);

説明: この例では、患者番号が 10320 の患者の ILLNESS セグメントを検索する必要があります。

例 3:

EXEC DLI GUSEGMENT(PATIENT)SEGMENT(ILLNESS)SEGMENT(TREATMNT) INTO(AREA);

説明: この例では、最初の TREATMNT セグメントを検索するために、3 つのレベルの修飾を指定しています。

制約事項検索したいセグメント・タイプを示すには、少なくとも SEGMENT オプションを指定しなければなりません。

ISRT コマンド挿入 (ISRT) コマンドは、データベースに 1 つ以上のセグメントを追加するために使用されます。

形式

�� EXEC DLI INSERTISRT USING PCB(expression)

BA

��

A それぞれの親セグメントについては、次のようになります (オプション):

VARIABLE FIRSTLASTCURRENT

SEGMENT(name)SEGMENT((area))

SEGLENGTH(expression)�

�(1)

FROM(area)MOVENEXT(data_value) GETFIRST(data_value)

�SET(data_value) SETCOND(data_value) SETZERO(data_value)

GU コマンド

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド 61

Page 82: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

�WHERE(qualification statement)

(2)FIELDLENGTH(expression)

�KEYS(area)

(3)KEYLENGTH(expression)

B オブジェクト・セグメントについては、次のようになります (必須):

VARIABLE FIRSTLAST

SEGLENGTH(expression) OFFSET(expression)�

�MOVENEXT(data_value) GETFIRST(data_value) SET(data_value)

�SETCOND(data_value) SETZERO(data_value) SEGMENT(name)

SEGMENT((area))

�FROM(area)

注:

1 パス・コマンドでは、親セグメントで FROM を指定してください。

2 複数の修飾ステートメントを使用する場合には、FIELDLENGTH を使用してそれぞれの長さを指定してください。たとえば、FIELDLENGTH(24,8) と指定してください。

3 1 つのセグメント・レベルで、Keys オプションか Where オプションのいずれかを使用することができますが、両方は使用できません。

オプション

USING PCB(expression)コマンドのために使用する DB PCB を指定します。 その引数には、整数データ型に変換されるものであれば、どのような式でも指定できます。数値を指定することもできるし、あるいはプログラムの中で数値を含んでいるハーフワードを指す参照を指定することもできます。

VARIABLEセグメントが可変長であることを示します。

FIRSTあるセグメント・タイプの最初に現れるセグメントを検索すること、もしくはセグメントを最初に現れるように挿入することを指定します。セグメント・タイプの最初のオカレンスとしてセグメントを挿入する際には、FIRST を使用してください。

LASTあるセグメント・タイプの最後に現れるセグメントを検索すること、もしくはセ

ISRT コマンド

62 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 83: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

グメントを最後に現れるように挿入することを指定します。セグメント・タイプの最後のオカレンスとしてセグメントを挿入する際には、LAST を使用してください。

CURRENTコマンドを修飾し、現在位置のレベル以上のレベルをこのセグメントの修飾として使用することを示します。現在位置にもとづいてセグメントを挿入する際には、CURRENT を使用してください。

SEGMENT(name), SEGMENT((area))検索、挿入、削除、または置き換えを行いたいセグメント・タイプの名前、もしくはプログラムの中でその名前を含んでいる区域を指定することにより、コマンドを修飾します。

データベースに追加したいセグメントごとに、少なくとも 1 つの SEGMENT

オプションがなければなりません。 ISRT がパス・コマンドでない限り、挿入されるセグメントは最も低いレベルの SEGMENT オプションによって指定されます。 このレベルには、WHERE または KEYS オプションを使用できません。

セグメントが固有キーをもっていれば、DL/I はこのセグメントをそのキー・シーケンスに従って挿入します。 (セグメントにキーがないか、キーが非固有キーの場合は、DL/I は DBDGEN の実行時に RULES パラメーターに指定された値に応じてセグメントを挿入します。)

最も低いレベルのセグメントだけに SEGMENT オプションを指定し、親セグメントを SEGMENT、WHERE、または KEYS オプションで修飾しない場合は、データベース内の現在位置が、このセグメントの挿入に適切な位置にあることを確認しなければなりません。 DL/I が使用する SEGMENT オプションは、データベース・レコード内の現在位置によって決まります。

v DL/I の位置が不在レベルに設定されている場合、DL/I はこの位置が設定されているセグメントを使用します。

v DL/I の位置が不在レベルに設定されていない場合、DL/I はそのレベルで最初に現れる位置を使用します。

v DL/I が、もっと高いレベルに設定された位置から前進する場合、DL/I は新しいパスに含まれる不在レベルの最初に現れる位置を使用します。

v ルート・レベルの SEGMENT オプションが省略されており、DL/I の位置がルートに設定されている場合、コマンドを正しく実行しようとするとき DL/I

はそのルートから移動しません。

セグメントの挿入位置を設定するときは、必ずより高いレベルを修飾することが賢明な方法です。

ルート・セグメントを挿入する場合は、SEGMENT オプションを指定するだけでかまいません。 DL/I は、入出力域から獲得したキーを使用して、データベースのどこにルート・セグメントを挿入しなければならないかを決定します。 挿入するセグメントがルート・セグメントではないが、その直接の親をすでに挿入している場合、 ISRT コマンドでこの挿入セグメントに対して SEGMENT オプションを指定することにより、セグメントが入出力領域で作成されたあとですぐにこのセグメントを挿入することができます。 位置を設定するために親レベルのセグメントをコーディングする必要はありません。

ISRT コマンド

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド 63

Page 84: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

複数の親セグメントを指定するとき、WHERE オプションを指定したものと指定しないものを混在することができます。 親セグメントに対して SEGMENT

オプションしか指定しないと、DL/I はこのコマンドの要求を満たすために、各セグメント・タイプが最初に現れる位置を使用します。

SEGLENGTH(expression)獲得するセグメントの入っている入出力域の長さを指定します。その引数には、整数データ型に変換されるものであれば、どのような式でも指定できます。数値を指定することもできるし、あるいはプログラムの中で数値を含んでいるハーフワードを指す参照を指定することもできます。 (COBOL プログラムでは、INTO オプションまたは FROM オプションを指定しているすべての SEGMENT

レベルに必要です。)

要件: SEGLENGTH に指定する値は、この呼び出しで処理する最長セグメントの長さ以上でなければなりません。

FROM(area)追加、置き換え、または削除されるセグメントを含んでいる区域を指定します。1 つのコマンドで 1 つ以上のセグメントを挿入するには、FROM を使用してください。

MOVENEXT(data_value)サブセット・ポインターを、現行セグメントの次のセグメントが現れる位置に移動させることを指定します。

GETFIRST(data_value)サブセット内のセグメントが最初に現れる位置から検索を開始したいことを指定します。

SET(data_value)無条件でサブセット・ポインターを現行セグメントに設定することを指定します。

SETCOND(data_value)条件付きでサブセット・ポインターを現行セグメントに設定することを指定します。

SETZERO(data_value)サブセット・ポインターをゼロに設定することを指定します。

WHERE(qualification statement)セグメントが現れる位置を指定することで、コマンドを修飾します。その引数は、1 つ以上の修飾ステートメントから成り、それぞれがセグメントのフィールド内の値と、ユーザーが指定した値を比較します。各修飾ステートメントは次のものから構成されています。

v セグメント中のフィールドの名前

v どのように 2 つの値を比較するかを示す関係演算子

v フィールドの値と比較される値を含んでいる、プログラム中のデータ域の名前

セグメントを挿入するときは、WHERE はそのセグメントの親の上に位置を設定します。 これを行うには、もっと高いレベルの SEGMENT オプションをWHERE または KEYS で修飾します。

ISRT コマンド

64 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 85: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

複数の親セグメントを指定するとき、WHERE オプションを指定したものと指定しないものを混在することができます。 親セグメントに対して SEGMENT

オプションしか指定しないと、DL/I はこのコマンドの要求を満たすために、各セグメント・タイプが最初に現れる位置を使用します。

FIELDLENGTH(expression)WHERE オプションのフィールド値の長さを指定します。

KEYS(area)セグメントの連結キーでコマンドを修飾します。セグメント・レベルに対してKEYS または WHERE のいずれかを使用することができますが、両方を使用することはできません。

KEY は、親セグメントの修飾に使用することができます。 WHERE を使用する代りに KEYS を指定し、セグメントの連結キーを修飾として使用することができます。 それぞれのコマンドには、最も高いレベルの SEGMENT オプションの直後に、 KEYS オプションを 1 回だけ使用することができます。

「area」は、セグメントの連結キーが入っているプログラム内の区域を指定します。

KEYLENGTH(expression)KEYS オプションを使用する際の、連結キーの長さを指定します。整数データ型に変換することができる、ホスト言語で書かれた式であればどのような式でも可能です。変数を指定する場合、バイナリー・ハーフワード値で宣言しなければなりません。 IBM COBOL for MVS & VM (または VS COBOL II)、PL/I、アセンブラー言語の各プログラムの場合、 KEYLENGTH はオプションです。IBM COBOL for MVS & VM (または VS COBOL II) コンパイラーでコンパイルしていない COBOL プログラムの場合、KEYS オプションに KEYLENGTH

を指定してください。

使用法既存のデータベースに新しいセグメントを追加するときに、ISRT コマンドを使用します。 ISRT コマンドを出すと、DL/I は FROM オプションで指定された入出力域からデータを取り出し、データベースにセグメントを追加します。 (データベースの初期ロードでは、ISRT コマンドではなく LOAD コマンドを使用する必要があります。)

ISRT コマンドを使用して、既存のセグメント・タイプの新しいオカレンスをHIDAM、HISAM、HDAM データベースに追加することができます。 HSAM データベースの場合、このデータベースに新しいセグメントを追加できるのは、データベース全体を再処理するか、あるいは新しいセグメントをデータベースの最後に追加するときだけです。

ISRT コマンドを出してデータベースにセグメントを追加するには、その前に、入出力域に挿入されるセグメントがプログラムによって作成されている必要があります。このセグメントがキーをもっている場合、正しいキーを入出力域の正しい位置に入れなければなりません。 フィールド・センシティビティーを使用する場合、フィールドの順序は、セグメントに対するアプリケーションの視点について PSB が定義した順序でなければなりません。

ISRT コマンド

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド 65

Page 86: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

ルート・セグメント・オカレンスを追加する場合、DL/I はユーザーが入出力域に与えたキーを使用し、データベースにこのオカレンスを正しい順序で入れます。 挿入するセグメントがルートではないが、その親を挿入したばかりだった場合には、子セグメントの名前だけで修飾された挿入要求を出すことにより、この子セグメントを挿入することができます。ISRT 要求を出す前に、入出力域に新しいセグメントを作成しておかなければなりません。 新しいルート・セグメント・オカレンスを追加するときも、挿入要求をセグメント名で修飾します。 既存のデータベースに新しいセグメント・オカレンスを追加する場合は、DBD の中にセグメント・タイプ が定義されていなければなりません。 プログラムの入出力域に新しいセグメント・オカレンスを作成したあとは、それらを直接もしくは順次に追加することができます。

挿入するセグメント・タイプに固有キー・フィールドがある場合は、DL/I が新しいセグメント・オカレンスを追加する位置は、そのキー・フィールドの値によって異なります。 セグメントがキー・フィールドをもっていない場合、またはキーが固有でない場合は、FIRST、LAST、または HERE 挿入規則のいずれかを指定することによって、新しいセグメント・オカレンスをどこに追加するかを制御することができます。 この規則は、データベースに関する SEGM ステートメントの RULES パラメーターで指定します

例 1: 「Chris Edwards に関するレコードに、1993 年 2 月 1 日に彼が診療所を訪れたことについての情報を追加します。 彼の患者番号は 02345 です。 病気は咽頭痛でした。」

説明: まず、プログラムの入出力域に ILLNESS セグメントを作成する必要があります。 ILLNESS セグメントの入った入出力域は、次のようになります。

19930201SORETHROAT

この新しいセグメント・オカレンスをデータベースに追加するには、次のコマンドを使用します。

EXEC DLI ISRTSEGMENT(PATIENT) WHERE (PATNO=PATNO1)SEGMENT(ILLNESS) FROM(ILLAREA);

例 2: 「Chris Edwards に関するレコードに、治療についての情報、および病気についての情報を追加します。」

説明: セグメント入出力域に TREATMNT セグメントを作成します。TREATMNT

セグメントには、日付、投薬する医薬品、投薬量、医師名が入っています。

19930201MYOCIN���0001TRIEB�����&�

次のコマンドは、ILLNESS セグメントと TREATMNT セグメントをデータベースに追加します。

EXEC DLI ISRTSEGMENT(PATIENT) WHERE (PATNO=PATNO1)SEGMENT(ILLNESS) FROM(ILLAREA)SEGMENT(TREATMNT) FROM(TRETAREA);

例 3:

ISRT コマンド

66 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 87: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

EXEC DLI ISRTSEGMENT(ILLNESS) KEYS(CONKEY)SEGMENT(TREATMNT) FROM(TRETAREA);

説明: このコマンドを使用することは、ILLNESS および PATIENT セグメントのキー・フィールド上に修飾された WHERE オプションを指定することと同じです。

制約事項ISRT コマンドの制約事項は、次のとおりです。

v 入出力域に新しいセグメントを作成する前に、ISRT コマンドを発行することはできません。

v データベースに追加したいセグメントごとに、少なくとも 1 つの SEGMENT オプションがなければなりません。

v セグメントを挿入するときは、そのセグメントの親の上に、あらかじめ位置を設定しておかなければなりません。

v 最も低いレベルのセグメントだけに SEGMENT オプションを指定し、親セグメントを SEGMENT、WHERE、または KEYS オプションで修飾しない場合は、データベース内の現在位置が、このセグメントの挿入に適切な位置にあることを確認しなければなりません。

v セグメントに FROM オプションを指定する場合、そのセグメントを WHERE オプションや KEYS オプションで修飾することはできません。DL/I は入出力域に指定されたキー・フィールド値を修飾として使用します。

v 追加するセグメント・タイプごとに個別の入出力域を使用しなければなりません。

v FROM オプションのある SEGMENT オプションと、FROM オプションのないSEGMENT オプションを混在させることはできません。親セグメントに FROM

オプションを使用するときは、従属セグメントごとに FROM オプションを使用しなければなりません。(パスはどのレベルからでも開始できますが、いかなるレベルも省略してはなりません。)

v FIRST オプションの使用は、セグメントがキーをまったくもたないか、キーが非固有で、しかも DBD 内の SEGM ステートメントの RULES オペランドでHERE がそのセグメントに指定されている場合に限られます。

v LAST オプションの使用は、セグメントがまったくキーをもたないか、キーが非固有で、しかもセグメントの INSERT 規則が FIRST か HERE のときだけです。

POS コマンド位置 (POS) コマンドは、従属またはセグメントのいずれかの位置を検索します。

形式

�� EXEC DLI POSITIONPOS

USING PCB(n) INTO(data_area) �

ISRT コマンド

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド 67

Page 88: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

�KEYFEEDBACK(area)

FEEDBACKLEN(expression)SEGMENT(name)SEGMENT((area))

�WHERE(qualification_statement)FIELDLENGTH(expression)

��

オプション

USING PCB(n)コマンドのために使用する DB PCB を指定します。 その引数には、整数データ型に変換されるものであれば、どのような式でも指定できます。数値を指定することもできるし、あるいはプログラムの中で数値を含んでいるハーフワードを指す参照を指定することもできます。

INTO(data_area)セグメントが読み込まれる区域を指定します。

KEYFEEDBACK(area)セグメントの連結キーが入る区域を指定します。 区域の長さが足りない場合、キーは切り捨てられます。

FEEDBACKLEN(expression)検索された連結キーを入れたいキー・フィードバック域の長さを指定します。その引数には、整数データ型に変換されるものであれば、どのような式でも指定できます。数値を指定することもできるし、あるいはプログラムの中で数値を含んでいるハーフワードを指す参照を指定することもできます。(FEEDBACKLEN は COBOL プログラムでは必須ですが、PL/I およびアセンブラー言語の各プログラムでは任意指定です。)

SEGMENT(name)検索、挿入、削除、あるいは置き換えを行いたいセグメント・タイプの名前を指定することにより、コマンドを修飾します。

SEGMENT((area))プログラムの中でセグメント・タイプの名前を含んでいる区域の参照です。 コマンドでセグメントの名前を指定する代りに、区域を指定することができます。

WHERE(qualification statement)セグメントが現れる位置を指定することで、コマンドを修飾します。その引数は、1 つ以上の修飾ステートメントから成り、それぞれがセグメントのフィールド内の値と、ユーザーが指定した値を比較します。

FIELDLENGTH(expression)WHERE オプションのフィールド値の長さを指定します。

使用法次のことを行う際には、POS コマンドを使用してください。

v 特定の順次従属セグメント (最後に挿入されたものも含む) の位置を検索する。

v 各 DEDB エリア内で未使用のスペースの量を調べる。

POS コマンドで指定された区域が使用不能である場合、入出力域は変更されず、FH

状況コードが戻されます。

POS コマンド

68 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 89: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

制約事項POS コマンドは DEDB 専用です。

REPL コマンド置換え (REPL) コマンドは、セグメントの置き換えに使用されますが、通常は、1 つ以上のそのフィールドの値を変更するために使用されます。

形式

�� EXEC DLI REPLACEREPL USING PCB(expression)

BA

��

A それぞれの親セグメントについては、次のようになります (オプション):

VARIABLE SEGMENT(name)SEGMENT((area))

SEGLENGTH(expression)�

�OFFSET(expression)

FROM(area)MOVENEXT(data_value)

�SET(data_value) SETCOND(data_value) SETZERO(data_value)

B オブジェクト・セグメントについては、次のようになります (必須):

VARIABLE SEGMENT(name)SEGMENT((area))

SEGLENGTH(expression)�

�OFFSET(expression)

FROM(area)MOVENEXT(data_value)

�SET(data_value) SETCOND(data_value) SETZERO(data_value)

オプション

USING PCB(expression)コマンドのために使用する DB PCB を指定します。 その引数には、整数データ型に変換されるものであれば、どのような式でも指定できます。数値を指定することもできるし、あるいはプログラムの中で数値を含んでいるハーフワードを指す参照を指定することもできます。

VARIABLEセグメントが可変長であることを示します。

SEGMENT(name)検索、挿入、削除、あるいは置き換えを行いたいセグメント・タイプの名前を指定することにより、コマンドを修飾します。

POS コマンド

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド 69

Page 90: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

SEGMENT((area))プログラムの中でセグメント・タイプの名前を含んでいる区域の参照です。 コマンドでセグメントの名前を指定する代りに、区域を指定することができます。

SEGLENGTH(expression)獲得するセグメントの入っている入出力域の長さを指定します。その引数には、整数データ型に変換されるものであれば、どのような式でも指定できます。数値を指定することもできるし、あるいはプログラムの中で数値を含んでいるハーフワードを指す参照を指定することもできます。 (COBOL プログラムでは、INTO オプションまたは FROM オプションを指定しているすべての SEGMENT

レベルに必要です。)

要件: SEGLENGTH に指定する値は、この呼び出しで処理する最長セグメントの長さ以上でなければなりません。

OFFSET(expression)目標親に対するオフセットを指定します。 整数データ型に変換されるものであれば、どのような式でも指定できます。数値を指定するか、あるいはプログラムの中で数値を含んでいるハーフワードへの参照を指定します。 論理関係にある連結セグメントを処理するときに、OFFSET を使用します。 目標親が可変長セグメントの場合には、このオプションが必須です。

FROM(area)追加、置き換え、または削除されるセグメントを含んでいる入出力域を指定します。 置き換えたいセグメントごとに、FROM オプションを対応するSEGMENT オプションのあとに入れることによって、より多くのセグメントを置き換えることができます。 1 つ以上の親セグメントに FROM オプションを使用することを、パス・コマンドと呼びます。

FROM のあとの引数は、プログラムの中で定義された入出力域を識別します。置き換えたいセグメント・タイプごとに個別の入出力域を使用しなければなりません。

MOVENEXT(data_value)サブセット・ポインターを、現行セグメントの次のセグメントが現れる位置に移動させることを指定します。

SET(data_value)無条件でサブセット・ポインターを現行セグメントに設定することを指定します。

SETCOND(data_value)条件付きでサブセット・ポインターを現行セグメントに設定することを指定します。

SETZERO(data_value)サブセット・ポインターをゼロに設定することを指定します。

使用法REPL コマンドは 1 つ以上の SEGMENT オプションと FROM オプションで修飾してください。この 2 つのオプションを指定することにより、検索されたセグメントのうちどのセグメントを置換するかを示すことができます。

REPL コマンド

70 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 91: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

REPL コマンドの前にあった Get コマンドがパス・コマンドであり、かつ必ずしもすべての検索済みセグメントを置き換えたくない場合、あるいは PSB が必ずしもすべての検索済みセグメントに対して置き換えを識別できない場合、SEGMENT オプションを省略することにより、どの検索セグメントを置き換えないかを指示することができます。

置き換えを識別できないセグメントのパス置き換えをプログラムで実行しようとする場合、 REPL コマンド用の入出力域に入っているセグメントのデータは、先行する読み取りコマンドで戻されたセグメントと同じでなければなりません。 この状況でデータを変更すると、トランザクションが異常終了するので、置き換えコマンドを実行してもデータは変更されません。

REPL パス・コマンドの規則と ISRT パス・コマンドの規則が異なることに注意してください。 ISRT コマンドでは挿入されるセグメント・レベルをスキップすることはできませんが、 REPL コマンドではこのようにスキップすることができます。

セグメント内の情報を更新するには、 REPL コマンドを使用します。 REPL コマンドはセグメント内のデータを、ユーザーがアプリケーション・プログラムに与えた情報と置き換えます。 まず、セグメントを検索して入出力域に入れなければなりません。 次に、入出力域で情報を更新し、REPL コマンドでセグメントを置き換えます。 プログラムが正常にセグメントを置き換えるようにするには、PCB のSENSEG ステートメントに PROCOPT=A または PROCOPT=R を指定することにより、PCB 内でそのセグメントが置換可能であると定義しておかなければなりません

読み取りコマンドと REPL コマンドの間では、同じ PCB を使用するコマンドを出すことはできません。また、読み取りコマンド 1 つにつき REPL コマンドは 1 つしか出すことができません。

例 1:

EXEC DLI GU SEGMENT(PATIENT) INTO(PATAREA);EXEC DLI REPL SEGMENT(PATIENT) FROM(PATAREA);

説明: この例では、読み取りコマンドと REPL コマンドの間には、同じ PCB を使用するコマンドを出すことができないこと、また、読み取りコマンド 1 つにつきREPL コマンドは 1 つしか出せないことを示しています。 このコマンドを出してセグメント内の情報を再度更新する場合は、まず GU コマンドを出してから REPL コマンドを再度出す必要があります。

例 2: 「ID が 08642 の患者から 65.00 ドルの支払いを受けました。この患者の請求レコードと支払いレコードをこの情報で更新し、この患者に対する現時点の請求書を印刷してください。」

説明: この処理要求に対応するための手順は、次の 4 つの部分に分かれています。

1. この患者の BILLING セグメントと PAYMENT セグメントを検索する。

2. BILLING セグメントの値から 65.00 ドルを引き、PAYMENT セグメントに65.00 ドルを加えることによって、これらのセグメントの新しい値を計算する。

3. BILLING および PAYMENT セグメントの値を新しい値で置き換える。

REPL コマンド

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド 71

Page 92: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

4. この患者に対して、患者の名前、番号、住所、現在の請求金額、およびこの日までの支払い金額を示した請求書を印刷する。

BILLING および PAYMENT セグメントを検索するために、 GU コマンドを出します。請求書を印刷するときに、PATIENT セグメントも必要となるため、 PATIENT

セグメントと BILLING セグメントの SEGMENT オプションの後に INTO を指定することができます。

EXEC DLI GUSEGMENT(PATIENT) INTO(PATAREA) WHERE (PATNO=PATNO1)SEGMENT(BILLING) INTO(BILLAREA)SEGMENT(PAYMENT) INTO(PAYAREA);

現在の請求金額と支払い金額を計算したあとで、請求書を印刷してから、データベース内の請求セグメントと支払いセグメントを置き換えます。 REPL コマンドを出す前に、入出力域内のセグメントを変更しておく必要があります。

PATIENT セグメントは変更されていないので、BILLING および PAYMENT セグメントを置き換えるときに PATIENT セグメントを置き換える必要はありません。PATIENT セグメントを置換しないことを DL/I に指示する場合は、 REPL コマンドで PATIENT セグメントに SEGMENT オプションを指定しないでください。

EXEC DLI REPLSEGMENT(BILLING) FROM(BILLAREA)SEGMENT(PAYMENT) FROM(PAYAREA);

このコマンドは、BILLING および PAYMENT セグメントを置き換えるが、PATIENT セグメントを置き換えないことを、DL/I に指示するものです。

これらの 2 つの例は、パス・コマンド と呼ばれます。1 つのコマンドで複数のセグメントを置き換えるときに、REPL パス・コマンドを使用します。

例 3: 「患者番号 10250 の Steve Arons が、この町の新住所に引っ越しました。新住所は、4638 Brooks Drive, Lakeside, California です。 新住所でデータベースを更新してください。」

説明: Steve Arons の PATIENT セグメントを検索して、そのセグメントの住所部分を置き換える必要があります。 PATIENT セグメントを検索するために、この GU

コマンドを使用できます (PATNO1 に 10250 が入っているとします)。

EXEC DLI GUSEGMENT(PATIENT) INTO(PATAREA) WHERE (PATNO=PATNO1);

PATIENT セグメントの最初の 2 つのフィールド (PATNO と NAME) は置き換えないので、入出力域でこれらを変更する必要はありません。 PATNO フィールドとNAME フィールドのあとにある入出力域に新住所を入れます。 その後で、REPL コマンドを出します。

EXEC DLI REPLSEGMENT(PATIENT) FROM(PATAREA);

例 4:

EXEC DLI GU SEGMENT(PATIENT) INTO(PATAREA)WHERE (PATNO=PATNO1)SEGMENT(ILLNESS) INTO(ILLAREA)SEGMENT(TREATMNT) INTO(TRETAREA);

EXEC DLI REPL SEGMENT(PATIENT) FROM(PATAREA)SEGMENT(TREATMNT) FROM(TRETAREA);

REPL コマンド

72 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 93: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

説明: この例では、患者番号 10401 の PATIENT セグメントと TREATMNT セグメントを置き換えたいが、ILLNESS セグメントは変更したくない場合を想定しています。 これを行うには、このコマンドを出します (PATNO1 に 10401 が入っているものとします)。

制約事項REPL コマンドの制約事項は、次のとおりです。

v 読み取りコマンドと REPL コマンドの間では、同じ PCB を使用する他のコマンドを出すことはできません。

v 1 つの読み取りコマンドに対して REPL コマンドは 1 つだけしか出せません。

v セグメント内の情報を更新する場合、まず最初に GU コマンドを再度出してからREPL コマンドを再度出すようにしなければなりません。

v REPL コマンドは、1 つ以上の SEGMENT オプションと FROM オプションで修飾しなければなりません。

v セグメントに FROM オプションを指定する場合、そのセグメントを WHERE オプションや KEYS オプションで修飾することはできません。DL/I は入出力域に指定されたキー・フィールド値を修飾として使用します。

RETRIEVE コマンドRETRIEVE コマンドは、バッチ・プログラムと BMP プログラムにおいてデータベース内の現行位置を判別するために使用します。

形式

�� EXEC DLI RETRIEVE USING PCB(expression) KEYFEEDBACK(area) �

� FEEDBACKLEN(expression) ��

オプション

USING PCB(expression)コマンドのために使用する DB PCB を指定します。 その引数には、整数データ型に変換されるものであれば、どのような式でも指定できます。数値を指定することもできるし、あるいはプログラムの中で数値を含んでいるハーフワードを指す参照を指定することもできます。

expression は、検索したい連結キーの PCB を指定します。 整数データ型に変換することができる、ホスト言語で書かれた式であればどのような式でも可能です。 数値を指定することもできるし、あるいはプログラムの中で数値を含んでいるハーフワードを指す参照を指定することもできます。 この値は、PSB 用に生成された PCB の数より少ない、正の整数値でなければなりません。リスト内の最初の PCB (入出力 PCB) は 1 です。リスト内の最初の DB PCB は 2、2

番目は 3、...となります。

KEYFEEDBACK(area)セグメントの連結キーが入る区域を指定します。 区域の長さが足りない場合、キーは切り捨てられます。

REPL コマンド

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド 73

Page 94: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

FEEDBACKLEN(expression)検索された連結キーを入れたいキー・フィードバック域の長さを指定します。その引数には、整数データ型に変換されるものであれば、どのような式でも指定できます。数値を指定することもできるし、あるいはプログラムの中で数値を含んでいるハーフワードを指す参照を指定することもできます。 (これは、COBOL プログラムでは必須ですが、PL/I およびアセンブラー言語の各プログラムでは任意指定です。)

expression は、キー・フィードバック入出力域の長さです。 整数データ型に変換することができる、ホスト言語で書かれた式であればどのような式でも可能です。数値を指定するか、またはそのプログラムの中で数値を含んでいるハーフワードを指す参照を指定できます。 IBM COBOL for z/OS & VM (または VS

COBOL II)、PL/I、アセンブラー言語の各プログラムの場合、 FEEDBACKLEN

はオプションです。 IBM COBOL for z/OS & VM (または VS COBOL II) コンパイラーでコンパイルしていない COBOL プログラムの場合、KEYFEEDBACK オプションに FEEDBACKLEN を指定してください。

使用法シンボリック・チェックポイント・コマンドを出すプログラムは、拡張 RESTART

(XRST) コマンドまたは RETRIEVE コマンドも出す必要があります。 RETRIEVE コマンドは、プログラムの開始時に 1 回出されます。 RETRIEVE コマンドを使用して、プログラムを正常に開始させたり、異常終了した場合に再始動させることができます。

RETRIEVE コマンドは、特定のチェックポイント ID または時刻/日付スタンプから使用することができます。RETRIEVE コマンドがデータベースの位置変更を行うため、プログラムはこの位置が正しいかどうかを調べる必要があります。

RETRIEVE コマンドを出したあと、位置が設定される基準となるセグメント・タイプとレベルは、DIB の DIBSEGM フィールドと DIBSEGLV フィールドに戻されます。 DIBKFBL の値は、連結キーの実際の長さに設定されます。 DIBSTAT フィールドには、XRST コマンドではなく GU 位置変更の結果戻された値が入っています。

RESTART コマンドは、連結キーにより修飾された内部 GU を出して DL/I データベースの位置変更を行おうとします。 GU による位置変更によって指定されたデータベース内の位置が、 XRST コマンドで使用されるチェックポイント ID に対して正しい位置であるかどうかは、ユーザーが確認する必要があります。RETRIEVE コマンドを使用すれば、GU 位置変更で使用された連結キーを検索したり、プログラムがアクセスする、すべての PCB における現在位置を判別することができます。

例EXEC DLI RETRIEVE USING PCB(2) KEYFEEDBACK(KEYAREA);

EXEC DLI RETRIEVE USING PCB(5) KEYFEEDBACK(KEYAREA);

説明: 上記の RETRIEVE コマンドは、最初の DB PCB と 4 番目の DB PCB の連結キーを検索します。 (リストの 1 番目の PCB は入出力 PCB です。このため、最初の DB PCB はリストでは 2 番目になります) 最初の RETRIEVE コマンドを発行した後で、最初の DB PCB 内での位置を判別するには、KEYAREA の連結キーと、DIB の DIBSEGM フィールドと DIBSEGLV フィールドの戻された値を調べま

RETRIEVE コマンド

74 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 95: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

す。 2 番目の RETRIEVE コマンドを出した後で、4 番目の DB PCB 内での位置を確認するには、上記と同じ 2 つのフィールドを調べます。

制約事項RETRIEVE コマンドの制約事項は、次のとおりです。

v このコマンドは CICS プログラムでは使用できません。

v このコマンドを使用するには、まず最初にプログラムの入出力 PCB 定義してください。

v 非固有キーをもつセグメントまたはキーなしセグメントでは、位置の再設定はできません。

v このコマンドは、システム・ログが直接アクセス・ストレージに記憶され、動的バックアウトが指定されていないかぎりは、使用することはできません。また、プログラムを実行する場合は、JCL のパラメーター・フィールドに BKO=Y と指定しなければなりません。

SCHD コマンドスケジュール (SCHD) コマンドは、CICS オンライン・プログラムで PSB をスケジュールするために使用されます。入出力 PCB の詳細については、 37ページの『PCB および PSB』を参照してください。

形式

�� EXEC DLI SCHEDULESCHD

PSB(name)PSB((area)) SYSSERVE NODHABEND

��

オプション

PSB(name)SCHD コマンドでスケジュールするアプリケーション・プログラムが使用できるPSB の名前を指定します。

PSB((area))SCHD コマンドでスケジュールするプログラムが使用できる PSB の名前が入っている、プログラム内の 8 バイトのデータ域を指定します。

SYSSERVEアプリケーション・プログラムが入出力 PCB を処理でき、さらにこのプログラムが作業論理単位 (LUW) でシステム・サービス要求を出すことを指定します。

NODHABENDDHxx 異常終了によって CICS トランザクションが失敗しないことを指定します。

EXEC DLI でスケジュールが失敗する場合は、状況コードが DIB に戻されたために、CICS トランザクションが DHxx の異常終了によって失敗している可能性があります。このオプションを指定することにより、このような状況が発生しなくなります。 SCHD コマンドが失敗すると、制御と DIB 内の状況コードがアプリケーション・プログラムに戻され、このプログラムにより適切な処置がとられます。

RETRIEVE コマンド

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド 75

Page 96: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

使用法CICS プログラムから DL/I データベースにアクセスするには、その前に、プログラムが PSB をスケジュールすることによりデータベースにアクセスすることを、DL/I

に通知しておかなければなりません。SCHD コマンドを出してこのようなスケジュールを行います。 これ以降 PSB を使うことがない場合、あるいはあとで PSB (1 つ以上) をスケジュールする場合は、 TERM コマンドを使用して既存の PSB を終了します。(入出力 PCB と PSB の詳細については、 37ページの『PCB および PSB』を参照してください。)

SCHD コマンドは、次の 2 つの方法で指定することができます (『例』 を参照してください)。

例EXEC DLI SCHD PSB(psbname)SYSSERVE;

EXEC DLI SCHD PSB((AREA));

説明: 上記の例では、CICS プログラム内で PSB をスケジュールする 2 つの方法を示しています。

TERM コマンド終了 (TERM) コマンドは、CICS オンライン・プログラムで PSB を終了するために使用します。

形式

�� EXEC DLI TERMINATETERM

��

オプションTERM コマンドで指定できるオプションはありません。

使用法すでにスケジュール済みの PSB 以外の PSB を使用する場合は、TERM コマンドを使用して PSB を解放します。

TERM コマンドを出すと、データベースのすべての変更がコミットされるため、バックアウトすることはできません。 CICS に戻ると PSB が終了し、変更内容がコミットされるため、CICS に戻る前に別の PSB のスケジュールを行う場合またはデータベースの変更内容をコミットする場合以外は、TERM コマンドを使用する必要はありません。

TERM コマンドで指定できるオプションはありません。終了した PSB をプログラムがあとで使用する場合、再度 SCHD コマンドを出して PSB をスケジュール変更する必要があります。

ほとんどのアプリケーションでは、TERM コマンドを使用する必要はありません。

SCHD コマンド

76 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 97: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

例EXEC DLI TERM

説明: 上記の例では、TERM コマンドを使用して PSB を終了する方法を示しています。

システム・サービス・コマンド次のシステム・サービス・コマンドを使用するには、最初に、SYSSERVE キーワードを指定した SCHD コマンドを出してください。

v 78ページの『ACCEPT コマンド』

v 80ページの『DEQ コマンド』

v 82ページの『LOG コマンド』

v 82ページの『QUERY コマンド』

v 83ページの『REFRESH コマンド』

v 86ページの『ROLS コマンド』

v 88ページの『SETS コマンド』

v 89ページの『SETU コマンド』

v 90ページの『STAT コマンド』

次のシステム・サービス・コマンドは、SYSSERVE キーワードを指定した SCHD コマンドを事前に出さなくても、バッチ、BMP 領域、またはプログラム内で有効です。

v 78ページの『CHKP コマンド』

v 84ページの『ROLB コマンド』

v 85ページの『ROLL コマンド』

v 91ページの『SYMCHKP コマンド』

v 93ページの『XRST コマンド』

次のシステム・サービス・コマンドは、DBCTL を使用するオンライン CICS プログラムで使用できます。

v ACCEPT

v DEQ

v LOG

v QUERY

v REFRESH

v ROLS

v SETS

v STAT

システム・サービス・コマンドを出すには、入出力 PCB (I/O PCB) が必要です。PSB、PCB、I/O PCB の詳細については、 37ページの『PCB および PSB』を参照してください。

TERM コマンド

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド 77

|

|

|

|

|

|

|

|

Page 98: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

ACCEPT コマンド受入れ (ACCEPT) コマンドは、トランザクションを異常終了させるのではなく、状況コードをプログラムに戻すように IMS に指示するために使用します。

形式

�� EXEC DLI ACCEPT STATUSGROUP('A')ACCEPT STATUSGROUP('B')

��

オプション

STATUSGROUP('A')使用できない理由についての状況コードをアプリケーションが受け入れる準備ができていることを IMS に知らせます。IMS はこれを知らされると、以降に出された呼び出しが使用不能データへのアクセスを必要とする場合に、疑似異常終了させる代わりに、状況コードを戻します。

これは、必須指定のオプションです。

STATUSGROUP('B')使用できない理由およびデッドロックの発生についての状況コードをアプリケーションが受け入れる準備ができていることを IMS に知らせます。IMS はこれを知らされると、以降に出された呼び出しが使用不能データまたはデッドロックの発生へのアクセスを必要とする場合に、疑似異常終了させる代わりに、状況コードを戻します。

使用法ACCEPT コマンドを使用して、プログラムを異常終了させるのではなく状況コードを戻すように IMS に指示します。そのような状況コードは、PSB のスケジュールが完了したが、参照されたデータベースのすべてを使用することができなかった場合に戻されます。

例EXEC DLI ACCEPT STATUSGROUP('A');

上記の例では、ACCEPT コマンドを指定する方法を示しています。

CHKP コマンドチェックポイント (CHKP) コマンドは、基本チェックポイントを出して論理作業単位を終了するために使用されます。このコマンドは CICS プログラムでは使用できません。

形式

�� EXEC DLI CHECKPOINTCHKP

ID(area)ID('literal')

��

ACCEPT コマンド

78 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 99: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

オプション

ID(area)チェックポイント ID が入ります。 チェックポイント ID が入っている、プログラムの区域の名前です。 示された区域は 8 バイトです。 PL/I を使用している場合、このオプションを、大構造、配列、または文字ストリングを指すポインターとして指定してください。

ID('literal')'literal' は、引用符で囲まれた 8 バイトのチェックポイント ID です。 CHKP コマンドでは、示された区域の長さは 8 バイトです。

使用法チェックポイントを指定する場合に使用できるコマンドは、基本チェックポイント・コマンドの CHKP、およびシンボリック・チェックポイント・コマンドのSYMCHKP です。

バッチ・プログラムでは、記号コマンドか基本コマンドのいずれかを使用することができます。

これらのチェックポイント・コマンドを使用すると、ユーザーが、プログラムの変更内容をデータベースにコミットし、プログラムが異常終了した場合はこのプログラムが再始動できる位置を設定できるようになります。

IMS チェックポイントを取るため、どの DD ステートメントにも CHKPT=EOV パラメーターは指定しないでください。

どちらのコマンドの場合も、コマンドが出された時点でデータベースの位置がなくなります。 GU コマンドまたはその他の位置設定方法により、位置を再設定しなければなりません。

非固有キーまたはキーなしのセグメントの中間に位置を再設定することはできません。

基本 CHKP コマンドを出して、データベースに対してプログラムが行った変更をコミットし、プログラムが再始動できる位置を設定できます。 基本 CHKP コマンドを出すときには、プログラムを再始動するためのコードをユーザーが指定する必要があります。

CHKP コマンドを出すときには、チェックポイントの ID を指定する必要があります。この場合、ID が入っているプログラム内のデータ域の名前を指定するか、または実際の ID を単一引用符で囲んで指定することができます。『例』を参照してください。

例EXEC DLI CHKP ID(chkpid);

EXEC DLI CHKP ID('CHKP0007');

説明: 上記の例では、CHKP コマンドを指定する方法を示しています。

CHKP コマンド

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド 79

Page 100: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

制約事項CHKP コマンドの制約事項は、次のとおりです。

v このコマンドは CICS プログラムでは使用できません。

v CHKP コマンドを使用するには、その前にプログラムの I/O PCB を定義する必要があります。

v 非固有キーをもつセグメントまたはキーなしセグメントでは、位置の再設定はできません。

DEQ コマンドデキュー (DEQ) コマンドは、LOCKCLASS オプションを使用して検索されたセグメントを解放するために使用されます。

形式

�� EXEC DLI DEQ LOCKCLASS(data_value) ��

オプション

LOCKCLASS(data_value)同じ data_value の LOCKCLASS を持つ前述の GU、GN、 または GNP コマンドの結果として保留されているロックを解放することを指定します。Data_value は B から J の範囲内の 1 バイトの英字でなければなりません。

全機能の場合は、LOCKCLASS オプションを指定し、その後にセグメントのロック・クラスを指定します (たとえば LOCKCLASS(’B’))。 このオプションに文字 (B-J) が指定されていない場合、EXECDLI は状況コード GL を設定し、ABENDU1041 を開始します。

DEQ コマンドは高速機能ではサポートされません。

使用法LOCKCLASS オプションを使用して検索されたセグメントのロックを解放するときに、DEQ コマンドを使用します。 読み取りコマンドに LOCKCLASS を指定すると、ユーザーのトランザクションで排他的に使用するためにセグメントを予約することができます。ユーザーのトランザクションが同期点に達するか、あるいは DEQ

コマンドが出されて予約セグメントのロックが解放されるまで、他のトランザクションがこれらの予約セグメントを更新することはできません。 LOCKCLASS オプションを指定すると、アプリケーション・プログラムはこれらの予約セグメントを処理せず、変更をまったく加えていない状態でこれらのセグメントを検索します。

例プログラムにおいて LOCKCLASS オプションは次のように使用できます。

EXEC DLI DEQ LOCKCLASS(data_value)EXEC DLI GU SEGMENT(PARTX)

SEGMENT(ITEM1) LOCKCLASS('B') INTO(PTAREA1);EXEC DLI GU SEGMENT(PARTX)

SEGMENT(ITEM2) LOCKCLASS('C') INTO(PTAREA2);EXEC DLI DEQ LOCKCLASS('B');

CHKP コマンド

80 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 101: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

説明: この例では、DEQ コマンドの形式を示しています。 ここで、data_value は、B から J の 1 バイトの英字です。 DEQ コマンドは、最初の GU の結果 PARTX

セグメントの LOCKCLASS ’B’ で保持されているロックを解放します。 2 番目のGU の間に PARTX セグメントの LOCKCLASS ’C’ のロックはそのまま保持されます。

制約事項DEQ コマンドの制約事項は、次のとおりです。

v このコマンドを使用するには、最初にプログラムの入出力 PCB を定義しなければなりません。

LOAD コマンド

ロード (LOAD) コマンドは、データベースのロード時にセグメントを順次追加するために使用します。

形式

�� EXEC DLI LOADUSING PCB(expression) VARIABLE

� SEGMENT(name)SEGMENT((area)) SEGLENGTH(expression)

FROM(area) ��

オプション

USING PCB(expression)使用したい DB PCB を指定します。 その引数には、整数データ型に変換されるものであれば、どのような式でも指定できます。数値を指定することもできるし、あるいはプログラムの中で数値を含んでいるハーフワードを指す参照を指定することもできます。

VARIABLEセグメントが可変長であることを示します。

SEGMENT(name)検索、挿入、削除、あるいは置き換えを行いたいセグメント・タイプの名前を指定します。

SEGMENT((area))プログラムの中でセグメント・タイプの名前を含んでいる区域の参照です。 コマンドでセグメントの名前を指定する代りに、区域を指定することができます。

SEGLENGTH(expression)獲得するセグメントの入っている入出力域の長さを指定します。その引数には、整数データ型に変換されるものであれば、どのような式でも指定できます。数値を指定することもできるし、あるいはプログラムの中で数値を含んでいるハーフワードを指す参照を指定することもできます。 (COBOL プログラムでは、INTO オプションまたは FROM オプションを指定している SEGMENT レベルには SEGLENGTH が必須です。)

DEQ コマンド

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド 81

Page 102: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

要件: SEGLENGTH に指定する値は、この呼び出しで処理する最長セグメントの長さ以上でなければなりません。

FROM(area)追加、置き換え、または削除されるセグメントを含んでいる区域を指定します。

使用法LOAD コマンドは、データベース・ロード・プログラムで使用するコマンドです。詳細は、「IMS 第 9 版: 管理の手引き : データベース・マネージャー」に記載されています。

例EXEC DLI LOAD

SEGMENT(ILLNESS) FROM(ILLAREA);

LOG コマンド

ログ (LOG) コマンドは、情報をシステム・ログに書き込むために使用します。

形式

�� EXEC DLI LOG FROM(area) LENGTH(expression) ��

オプション

FROM(area)追加、置き換え、または削除されるセグメントを含んでいる区域を指定します。

LENGTH(expression)区域の長さを指定します。

使用法LOG コマンドを使用して、システム・ログに情報を書き込みます。このコマンドの詳細については、「IMS 第 9 版: アプリケーション・プログラミング: 設計の手引き」を参照してください。

例EXEC DLI LOG

FROM(ILLAREA) LENGTH(18);

制約事項

LOG コマンドの制約事項は、次のとおりです。

v このコマンドを使用するには、最初にプログラムの入出力 PCB を定義しなければなりません。

QUERY コマンド

照会 (QUERY) コマンドは、状況コードと DL/I インターフェース・ブロック (DIB)

内のその他の情報を取得します。 DIB は IMS PCB のサブセットです。

LOAD コマンド

82 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 103: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

形式

�� EXEC DLI QUERY USING PCB(expression) ��

オプションUSING PCB (expression ) は必須です。 それ以外のオプションは、QUERY コマンドでは指定できません。

使用法全機能データベースの場合、DIB には NA、NU、TH、またはブランクが入らなければなりません。これらのコードについての説明は、「IMS 第 9 版: メッセージおよびコード 第 1 巻」を参照してください。

QUERY コマンドが使用されるのは、PSB のスケジュールと最初のデータベース呼び出しの間です。プログラムがすでに DB PCB を使用して呼び出しを出している場合は、REFRESH コマンドを使用して DIB 内の情報を更新してください。

例 1:

EXEC DLI QUERY USING PCB(expression);

説明: 上記の例では、QUERY コマンドを指定する方法を示しています。 この例では、(n) は PCB を指定します。

例 2:

EXEC DLI REFRESH DBQUERY;

説明: プログラムがすでに DB PCB 名を使用して呼び出しを出している場合は、REFRESH コマンドを使用して DIB 内の情報を更新してください。 REFRESH コマンドは DB PCB をすべて更新します。 このコマンドは 1 回だけしか出すことができません。

制約事項

QUERY コマンドの制約事項は、次のとおりです。

v このコマンドを使用するには、最初にプログラムの入出力 PCB を定義しなければなりません。

v 非固有キーをもつセグメントまたはキーなしセグメントでは、位置の再設定はできません。

REFRESH コマンド

最新表示 (REFRESH) コマンドは、最後に出されたコマンドについて、DIB から最新の情報を獲得するために使用します。

QUERY コマンド

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド 83

Page 104: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

形式

�� EXEC DLI REFRESH DBQUERY ��

オプションDBQUERY は必須です。 それ以外のオプションは、REFRESH コマンドでは指定できません。

使用法REFRESH コマンドは QUERY コマンドとともに使用します。

QUERY コマンドが発行されるのは PSB のスケジュールと最初のデータベース呼び出しの間です。プログラムがすでに DB PCB を使用して呼び出しを出している場合は、 REFRESH コマンドを使用して DIB 内の情報を更新してください。

REFRESH コマンドは DB PCB をすべて更新します。 このコマンドを出せるのは 1

回だけです。

例EXEC DLI REFRESH DBQUERY;

説明: 上記の例では、REFRESH コマンドを指定する方法を示しています。

制約事項

REFRESH コマンドの制約事項は、次のとおりです。

v このコマンドを使用するには、まず最初にプログラムの入出力 PCB 定義してください。

v 非固有キーをもつセグメントまたはキーなしセグメントでは、位置の再設定はできません。

v このコマンドを出せるのは 1 回だけです。

ROLB コマンドロールバック (ROLB) コマンドは、変更内容を動的にバックアウトして制御をプログラムに戻すために使用します。このコマンドは CICS プログラムでは使用できません。

形式

�� EXEC DLI ROLB ��

オプションROLB コマンドで指定できるオプションはありません。

使用法バッチ・プログラムまたは BMP プログラムにより、一部の処理が無効であると判別された場合、これらのプログラムがその不正な処理の影響を取り除くことができ

REFRESH コマンド

84 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 105: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

るようにするコマンドが 2 つあります。それはロールバック・コマンド ROLL

(『ROLL コマンド』 を参照) と ROLB です。

ROLB コマンドがバッチ・プログラムで使用できるのは、システム・ログが直接アクセス・ストレージに保管され、 BKO 実行パラメーターによって動的バックアウトが指定されている場合です。

ROLB を出すと、IMS DB は、最後のチェックポイント以降、またはチェックポイントを出していないプログラムの場合はプログラムの開始以降に、データベースに対して行われた変更内容をすべてバックアウトします。ROLB コマンドを出すと、IMS

DB は変更をバックアウトした後に制御をプログラムに戻し、ROLB コマンドの次のステートメントの処理に移ることができるようにします。

例EXEC DLI ROLB;

説明: 上記の例では、ROLB コマンドを使用して変更内容を動的にバックアウトし、制御をプログラムに戻す方法を示します。

制約事項ROLB コマンドの制約事項は、次のとおりです。

v このコマンドは CICS プログラムでは使用できません。

v このコマンドを使用するには、その前にプログラムの I/O PCB を定義する必要があります。

v 非固有キーをもつセグメントまたはキーなしセグメントでは、位置の再設定はできません。

v このコマンドは、システム・ログが直接アクセス・ストレージに記憶されており、動的バックアウトが指定されていない場合には使用できません。

ROLL コマンドロール (ROLL) コマンドは、変更内容を動的にバックアウトするために使用します。このコマンドは CICS プログラムでは使用できません。

形式

�� EXEC DLI ROLL ��

オプションROLL コマンドで指定できるオプションはありません。

使用法バッチ・プログラムにより一部の処理が無効であると判別された場合、これらのプログラムがその不正な処理の影響を取り除くことができるようにするコマンドが 2

つあります。それはロールバック・コマンド ROLL と ROLB ( 84ページの『ROLB

コマンド』を参照) です。

バッチ・プログラムでは ROLL を使用することができます。

ROLB コマンド

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド 85

Page 106: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

ROLL を出すと、CICS と DL/I は、最後のチェックポイント以降、またはチェックポイントを出していないプログラムの場合はプログラムの開始以降に、データベースに対して行われた変更内容をすべてバックアウトします。ROLL コマンドを出すと、DL/I は更新内容をバックアウトしてからプログラムを終了します。

例EXEC DLI ROLL;

説明: 上記の例では、ROLL コマンドを使用して変更内容を動的にバックアウトする方法を示しています。

ROLL コマンドを使用すると、IMS はユーザー異常終了コード U0778 でプログラムを終了します。このタイプの異常終了は、記憶ダンプなしでプログラムを終了させます。

制約事項

ROLL コマンドの制約事項は、次のとおりです。

v このコマンドは CICS プログラムでは使用できません。

v このコマンドを使用するには、その前にプログラムの I/O PCB を定義する必要があります。

v 非固有キーをもつセグメントまたはキーなしセグメントでは、位置の再設定はできません。

v このコマンドは、システム・ログが直接アクセス・ストレージに記憶され、動的バックアウトが指定されている場合には使用することはできません。 また、プログラムを実行する場合は、JCL のパラメーター・フィールドに BKO=Y と指定しなければなりません。

ROLS コマンド

SETS または SETU へのロールバック (ROLS) コマンドは、これより前に SETS コマンドで設定された処理点までバックアウトするために使用します。

形式

�� EXEC DLI ROLS USING PCB(expression)TOKEN(token) AREA(data_area)

��

オプション

USING PCB(expression)使用したい DB PCB を指定します。 その引数には、整数データ型に変換されるものであれば、どのような式でも指定できます。数値を指定することもできるし、あるいはプログラムの中で数値を含んでいるハーフワードを指す参照を指定することもできます。

TOKEN(token)現在処理中のポイントと関連付けられている 4 バイトのトークンです。TOKEN

ROLL コマンド

86 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 107: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

と AREA の両方を指定すると、 ROLS コマンドは、ユーザーが指定した SETS

または SETU までバックアウトします。

AREA(data_area)ROLS コマンドを出したときにプログラムに復元される区域の名前です。data-area フィールドの最初の 2 バイトには、その 2 バイトの長さも含めたdata-area の長さが入ります。次の 2 バイトは、X'0000' に設定しなければなりません。 TOKEN と AREA の両方を指定すると、 ROLS コマンドは、ユーザーが指定した SETS までバックアウトします。

ROLS 呼び出しには、 TOKEN と AREA を指定する形式 (IOPCB のみ) と、TOKEN と AREA を指定しない形式 (IOPCB または DBPCB) の 2 つの形式があります。

使用法SETS コマンドと ROLS コマンドを使用すると、DL/I 全機能データベースの状態を保存するポイントを複数定義し、これらのポイントへあとで戻ることができます。(たとえば、これらのコマンドを使用すれば、参照された DL/I データベースのすべてが使用可能とならないのに PSB スケジューリングが終了したときに起こる状況をプログラムで処理することができます。)

SETS および ROLS コマンドの使用は、DL/I 全機能データベースだけに適用されます。つまり、作業論理単位 (LUW) が全機能データベース以外のタイプのリカバリー可能リソース (VSAM ファイルなど) を更新する場合、SETS 要求と ROLS 要求の影響は非 DL/I リソースには現れません。バックアウト・ポイントは CICS コミット点 ではありません。それらは、DBCTL リソースだけに適用される中間バックアウト・ポイントです。関連リソースのすべてに整合性をもたせるかどうかは、ユーザーが判断します。

ROLS コマンドは、特定の SETS または SETU 要求を出す前、あるいは最後のコミット・ポイントよりも前のすべての全機能データベースの状態にバックアウトするときに、使用できます。

例 1:

EXEC DLI ROLS TOKEN(token1) AREA(data_area)

説明: 上記の例 (IOPCB のみ) では、前の SETS 呼び出しで指定されている対応する TOKEN までのバックアウトが実行され、制御がアプリケーションに戻ります。

例 2:

EXEC DLI ROLS USING PCB(PCB5)

説明: この例では、IOPCB または DBPCB に対して前の同期点までのバックアウトが実行され、アプリケーションが状況コード U3033 で疑似的に異常終了します。制御はアプリケーションには戻りません。

ROLS コマンド

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド 87

|

|

|

Page 108: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

上記の例では PCB5 はデータ使用不能状況コードを受け取った DB PCB の番号です。 このコマンドを出すと、プログラムが ACCEPT STATUSGROUPA コマンドを出さなかった場合と同じ動作になります。 ( 121ページの『第 8 章 データ可用性の強化』を参照してください。)

例 3:

EXEC DLI ROLS

説明: この例では、IOPCB または DBPCB で、PCB への前の参照によって使用不能な状況コードが戻される場合、前の同期点までのバックアウトが実行され、アプリケーションが U3033 で疑似的に異常終了します。 制御はアプリケーションには戻りません。

制約事項ROLS コマンドの制約事項は、次のとおりです。

v このコマンドを使用するには、最初にプログラムの入出力 PCB を定義しなければなりません。

v 非固有キーをもつセグメントまたはキーなしセグメントでは、位置の再設定はできません。

v このコマンドは、システム・ログが直接アクセス・ストレージに記憶され、動的バックアウトが指定されている場合には使用することはできません。 また、プログラムを実行する場合は、JCL のパラメーター・フィールドに BKO=Y と指定しなければなりません。

SETS コマンドバックアウト・ポイント設定 (SETS) コマンドは、アプリケーション内で、ある機能を実行する一連の DL/I 要求を開始する前に DL/I データベースの状態を保存しておくポイントを定義するために使用します。アプリケーションは、この機能を完了できない場合にあとから ROLS コマンドを出すことができます。

形式

�� EXEC DLI SETSTOKEN(mytoken) AREA(data_area)

��

オプション

TOKEN(mytoken)現在処理中のポイントと関連付けられている 4 バイトのトークンです。

AREA(data_area)SETS コマンドが出されたときにプログラムに復元される区域の名前です。data-area フィールドの最初の 2 バイトには、その 2 バイトの長さも含めたdata-area の長さが入ります。次の 2 バイトは、X'0000' に設定しなければなりません。

使用法SETS コマンドを使用すると、DL/I データベースの状態を保存するポイントを複数定義することができます。これらのポイントへあとで戻ることができます。 たとえ

ROLS コマンド

88 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 109: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

ば、SETS コマンドを使用すれば、PSB のスケジュールの完了時、参照する DL/I データベースが使用できない状態で PSB のスケジュールが完了した場合に発生する可能性のある状況を、プログラムが処理できるようになります。

SETS コマンドは、DL/I 全機能データベースだけに適用されます。 作業論理単位(LUW) が全機能データベース以外のタイプのリカバリー可能リソース (VSAM ファイルなど) を更新する場合、 SETS コマンドの影響は非 DL/I リソースには現れません。 バックアウト・ポイントは CICS コミット点 ではありません。それらは、DBCTL リソースだけに適用される中間バックアウト・ポイントです。関連リソースのすべてに整合性をもたせるかどうかは、ユーザーが判断します。

例EXEC DLI SETS TOKEN(mytoken) AREA(data_area)

説明: 上記の例は、SETS コマンドを指定する方法を示しています。

制約事項SETS コマンドの制約事項は、次のとおりです。

v このコマンドを使用するには、最初にプログラムの入出力 PCB を定義しなければなりません。

v 非固有キーをもつセグメントまたはキーなしセグメントでは、位置の再設定はできません。

v バッチでは、このコマンドを使用できるのは、システム・ログが直接アクセス・ストレージに保管されており、動的バックアウトが指定されている場合だけです。 また、プログラムを実行する場合は、JCL のパラメーター・フィールドにBKO=Y と指定しなければなりません。

v このコマンドがリジェクトされるのは、PSB に DEDB または MSDB PCB が入っている場合、あるいは DB2 データベースに対して呼び出しが行われた場合です。

v サポートされていない PCB が PSB に入っている場合、あるいはプログラムが外部サブシステムを使用する場合に、このコマンドを使用することはできますが、機能しません。

SETU コマンドバックアウト・ポイント無条件設定 (SETU) コマンドは、サポートされていないPCB が PSB に入っている場合、あるいはプログラムが外部サブシステムを使用する場合に拒否されることがない点を除くと、SETS コマンドと同様に機能します。

形式

�� EXEC DLI SETUTOKEN(mytoken) AREA(data_area)

��

オプション

TOKEN(mytoken)現在処理中のポイントと関連付けられている 4 バイトのトークンです。

SETS コマンド

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド 89

Page 110: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

AREA(data_area)SETU コマンドが出されたときにプログラムに復元される区域の名前です。data-area フィールドの最初の 2 バイトには、その 2 バイトの長さも含めたdata-area の長さが入ります。次の 2 バイトは、X'0000' に設定しなければなりません。

使用法SETU コマンドを使用すると、DL/I データベースの状態を保存するポイントを複数定義することができます。これらのポイントへあとで戻ることができます。 たとえば、SETU コマンドを使用すれば、参照される DL/I データベースが使用できない状態で PSB のスケジュールが完了した場合に発生する可能性のある状況を、プログラムが処理できるようになります。

SETU コマンドは、DL/I 全機能データベースだけに適用されます。作業論理単位(LUW) が全機能データベース以外のタイプのリカバリー可能リソース (VSAM ファイルなど) を更新している場合、SETU コマンドは、非 DL/I リソースに影響を与えません。バックアウト・ポイントは CICS コミット点 ではありません。それらは、DBCTL リソースだけに適用される中間バックアウト・ポイントです。関連リソースのすべてに整合性をもたせるかどうかは、ユーザーが判断します。

例EXEC DLI SETU TOKEN(mytoken) AREA(data_area)

説明: 上記の例は、SETU コマンドを指定する方法を示しています。

制約事項SETU コマンドの制約事項は、次のとおりです。

v このコマンドは CICS プログラムでは使用できません。

v このコマンドを使用するには、最初にプログラムの入出力 PCB を定義しなければなりません。

v 非固有キーをもつセグメントまたはキーなしセグメントでは、位置の再設定はできません。

v このコマンドは、システム・ログが直接アクセス・ストレージに記憶され、動的バックアウトが指定されている場合には使用することはできません。 また、プログラムを実行する場合は、JCL のパラメーター・フィールドに BKO=Y と指定しなければなりません。

STAT コマンドここでは、プログラミング・インターフェース情報について説明します。

統計 (STAT) コマンドは、プログラムのデバッグに使用できる IMS データベース統計を得るために使用されます。

形式

�� EXEC DLI STATISTICSSTAT USING PCB(expression)

INTO(area) �

SETU コマンド

90 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 111: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

�LENGTH(expression)

VSAM

NONVSAM

FORMATTED

UNFORMATTEDSUMMARY

��

オプション

USING PCB(expression)使用したい DB PCB を指定します。 その引数には、整数データ型に変換されるものであれば、どのような式でも指定できます。数値を指定することもできるし、あるいはプログラムの中で数値を含んでいるハーフワードを指す参照を指定することもできます。

INTO(area)データが読み込まれる区域を指定します。

LENGTH(expression)区域の長さを指定します。

VSAM/NONVSAMデータベース・タイプを指定します。

FORMATTED/UNFORMATTED/SUMMARY出力のタイプを指定します。

使用法STAT コマンドの詳細については、「IMS 第 9 版: アプリケーション・プログラミング: 設計の手引き」で説明します。

例STAT コマンドの例については、「IMS 第 9 版: アプリケーション・プログラミング : データベース・マネージャー」を参照してください。

SYMCHKP コマンドシンボリック・チェックポイント (SYMCHKP) コマンドは、シンボリック・チェックポイントを出して論理作業単位を終了するために使用されます。

形式

�� EXEC DLI SYMCHKP ID(chkpid)ID('literal')

� �

AREA#(area#)LENGTH#(expression#)��

オプション

ID(chkpid)チェックポイント ID が入っている、プログラム内の 8 バイトの区域の名前で

STAT コマンド

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド 91

Page 112: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

す。 PL/I を使用している場合、このパラメーターを、大構造、配列、または文字ストリングを指すポインターとして指定してください。

ID('literal')引用符で囲まれた 8 バイトのチェックポイント ID です。

AREA#(area#)IMS にチェックポイントを実行させたいプログラム内の区域を指定します。チェックポイントを実行する区域の指定は必須ではありませんが、7 つより多い区域を指定することはできません。複数の区域を指定する場合は、介在する区域をすべて含まなければなりません。 たとえば、AREA3 を指定する場合、AREA1

と AREA2 も指定しなければなりません。 SYMCHKP コマンドを使用して指定する区域は、XRST コマンドで指定された区域と同じでなければなりません。

LENGTH#(expression#)整数データ型に変換することができる、ホスト言語で書かれた式であればどのような式でも可能です。数値を指定するか、または数値を含んでいるハーフワードへの参照を指定できます。IBM COBOL for z/OS & VM (または VS COBOL

II)、PL/I、アセンブラー言語の各プログラムの場合、LENGTH1 から LENGTH7

まではオプションです。 IBM COBOL for z/OS & VM (または VS COBOL II)

コンパイラーでコンパイルされない COBOL プログラムでは、指定するそれぞれの AREAx (x は 1 から 7 まで) ごとに LENGTHx (x は 1 から 7 まで)

を指定する必要があります。

使用法チェックポイントを指定する場合に使用できるコマンドは、基本チェックポイント・コマンドの CHKP、およびシンボリック・チェックポイント・コマンドのSYMCHKP です。

バッチ・プログラムでは、記号コマンドか基本コマンドのいずれかを使用することができます。

これらのチェックポイント・コマンドを使用すると、ユーザーが、プログラムの変更内容をデータベースにコミットし、プログラムが異常終了した場合はこのプログラムが再始動できる位置を設定できるようになります。 IMS チェックポイントを取るため、どの DD ステートメントにも CHKPT=EOV パラメーターは指定しないでください。

プログラムでチェックポイントを出す時期およびその理由については、「IMS 第 9

版: アプリケーション・プログラミング: 設計の手引き」を参照してください。どちらのコマンドの場合も、コマンドが出された時点でデータベースの位置がなくなります。 GU コマンドまたはその他の位置設定方法により、位置を再設定しなければなりません。

データベースに対してプログラムが行った変更をコミットし、プログラムが再始動できる位置を設定する以外に、シンボリック・チェックポイント・コマンドは次のことを行います。

v プログラムが異常終了した場合、拡張再始動 (XRST) コマンドを使用してプログラムを再始動します。

v プログラムの再始動時に復元される、プログラム内のデータ域を 7 つまで保管できます。 これには、変数、カウンター、状況情報を保管することができます。

SYMCHKP コマンド

92 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 113: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

例EXEC DLI SYMCHKP

ID(chkpid)AREA1(area1) LENGTH1(expression1)...AREA7(area7) LENGTH7(expression7)

説明: 上記の例では、SYMPCHKP コマンドを使用して、シンボリック・チェックポイントを出す方法と論理作業単位を終了する方法を示しています。

制約事項SYMCHKP コマンドの制約事項は、次のとおりです。

v このコマンドを出す場合は、XRST コマンドも出さなければなりません。

v このコマンドは CICS プログラムでは使用できません。

v SYMCHKP コマンドを使用するには、まず最初にプログラムの入出力 PCB を定義しなければなりません。

v 非固有キーをもつセグメントまたはキーなしセグメントでは、位置の再設定はできません。

v SYMCHKP コマンドを使用して指定する区域とその指定順序は、 XRST コマンドで指定される区域と同じでなければなりません。

v 複数の区域を指定する場合は、介在する区域をすべて指定しなければなりません。たとえば、AREA3 を指定する場合、AREA1 と AREA2 も指定しなければなりません。

v IBM COBOL for z/OS & VM (または VS COBOL II) コンパイラーでコンパイルされていない COBOL プログラムに expression1 を指定する場合は、指定する各 AREAx (x は 1 から 7 まで) に対して LENGTHx (x は 1 から 7 まで) を指定する必要があります。

XRST コマンド拡張再始動 (XRST) コマンドは、拡張再始動を出し、プログラムを正常に始動させるため、もしくはチェックポイント ID または時刻/日付スタンプから拡張再始動させるために使用されます。プログラムでシンボリック・チェックポイント・コマンドを使用する場合は、 XRST コマンドを使用してください。

形式

�� EXEC DLI XRSTMAXLENGTH(expression) ID(chkpid)

ID('literal')

� �

AREA#(area#)LENGTH#(expression#)��

SYMCHKP コマンド

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド 93

Page 114: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

オプション

MAXLENGTH(expression)プログラムが再始動される区域の長さを指定します。このパラメーターは、PSB

の中で、あるいはプログラムでパス・コマンドを使用する場合は、パスのすべてのセグメントの中で、最長のセグメントです。 整数データ型に変換することができる、ホスト言語で書かれた式であればどのような式でも可能です。 数値を指定することもできるし、あるいはプログラムの中で数値を含んでいるハーフワードを指す参照を指定することもできます。 MAXLENGTH は必須ではなく、デフォルトの値は 512 バイトです。

ID(chkpid) ID('literal')このパラメーターは、プログラム内の 30 バイト域の名前か、引用符で囲まれた30 バイトのチェックポイント ID のどちらかです。このパラメーターはオプションです。このパラメーターを使用する代りに、JCL のパラメーター・フィールドに、チェックポイント ID か時刻/日付スタンプを指定できます。両方とも指定すると、IMS は、EXEC ステートメントのパラメーター・フィールドの値を使用します。プログラムを正常に始動させる場合は、チェックポイント ID

をまったく指定しないか、chkpid で指し示されたフィールドにブランクが入っていることを確認してください。

プログラムが再始動され、EXEC ステートメントの PARM フィールドのCKPTID= 値が使用されなかった場合、入出力域に使われる、チェックポイントID を超える右端のバイトは、すべてブランクに設定する必要があります。

XRST コマンドは、IIIIDDDHHMMSST 形式の時刻/日付スタンプを指定した後に出すか、あるいはチェックポイント ID を指定することによりプログラム内の特定のチェックポイントから出すことができます。 IIIIDDD は領域 ID と日付です。HHMMSST は時、分、秒、および 1/10 秒で表される実際の時間です。チェックポイント ID および時刻/日付スタンプは、システム・メッセージDFS0540I で与えられます。

PL/I を使用している場合、chkpid を、大構造、配列、または文字ストリングを指すポインターとして指定してください。

AREA#(area#)area# は、復元させたいプログラムの最初の区域を指定します。区域は 7 つまで指定できます。 区域はまったく指定しなくてもかまいませんが、複数の区域を指定する場合は、介在する区域をすべて指定しなければなりません。たとえば、AREA3 を指定する場合、AREA1 と AREA2 も指定しなければなりません。 XRST コマンドに指定する区域とその指定順序は、SYMCHKP コマンドで指定する区域と同じでなければなりません。 プログラムを再始動させると、SYMCHKP

コマンドで指定した区域だけが復元されます。

LENGTH#(expression#)プログラムが再始動される区域の長さを指定します。その引数には、整数データ型に変換することができる、ホスト言語で書かれた式であれば、どのような式でも指定できます。数値を指定することもできるし、あるいは数値を含んでいるハーフワードを指す参照を指定することもできます。IBM COBOL for z/OS &

VM (または VS COBOL II)、PL/I、アセンブラー言語の各プログラムの場合、LENGTH1 から LENGTH7 まではオプションです。 IBM COBOL for z/OS &

VM (または VS COBOL II) コンパイラーでコンパイルされない COBOL プロ

XRST コマンド

94 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 115: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

グラムでは、指定するそれぞれの AREAx (x は 1 から 7 まで) ごとにLENGTHx (x は 1 から 7 まで) を指定する必要があります。各修飾ステートメントは次のものから構成されています。

v セグメント中のフィールドの名前

v どのように 2 つの値を比較するかを示す関係演算子

v フィールドの値と比較される値を含んでいる、プログラム中のデータ域の名前

使用法プログラムがシンボリック・チェックポイント・コマンドを出す場合には、拡張再始動 (XRST) コマンドも出さなければなりません。 XRST は、プログラムの開始時に 1 回出されます。 XRST コマンドを使用して、プログラムを正常に開始させたり、プログラムが異常終了した場合にこのプログラムを拡張再始動することができます。

特定のチェックポイント ID、または時刻/日付スタンプからプログラムを拡張再始動することができます。 XRST がデータベースの位置変更を行おうとするため、位置が正しいかどうかもプログラムで検査する必要があります。

XRST コマンドを出したあとで、DIB の中の DIBSEGM フィールドをテストしてください。 正常始動のあとは、DIBSEGM フィールドにブランクが入っていなければなりません。 拡張再始動が完了した時、 DIBSEGM フィールドにはチェックポイント ID が入っていなければなりません。 通常 XRST は、8 バイトのシンボリック・チェックポイント ID と、それに続けて 4 個のブランクを返します。 8 バイトの ID がすべてブランクの場合には、XRST は 14 バイトのタイム・スタンプ ID

を戻します。 XRST コマンドが成功したことを示す状況コードは、ブランクの状況コードだけです。 XRST コマンドの処理時に DL/I がエラーを検出した場合、プログラムは異常終了します。

例EXEC DLI XRST MAXLENGTH(expression)

ID(chkpid)AREA1(area1) LENGTH1(expression1)...AREA7(area7) LENGTH7(expression7)

説明: 上記の例は、XRST コマンドを指定する方法を示しています。

制約事項XRST コマンドの制約事項は、次のとおりです。

v このコマンドは CICS プログラムでは使用できません。

v このコマンドを使用するには、最初にプログラムの入出力 PCB を定義しなければなりません。

v 非固有キーをもつセグメントまたはキーなしセグメントでは、位置の再設定はできません。

v このコマンドは、システム・ログが直接アクセス・ストレージに記憶され、動的バックアウトが指定されていないかぎりは、使用することはできません。また、プログラムを実行する場合は、JCL のパラメーター・フィールドに BKO=Y と指定しなければなりません。

XRST コマンド

第 4 章 アプリケーション・プログラム用の EXEC DLI コマンド 95

Page 116: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

XRST コマンド

96 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 117: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

第 5 章 データベースのリカバリーとデータベース保全性の維持

この章では、プログラムによりアクセスされたデータのリカバリーとデータ保全性の維持を支援するために使用できるコマンドについて説明します。

v 基本チェックポイント・コマンド CHKP。このコマンドは、バッチ・プログラムまたは BMP プログラムからチェックポイントを出すときに使用します。

v シンボリック・チェックポイント・コマンド SYMCHKP。このコマンドは、バッチ・プログラムまたは BMP プログラムからチェックポイントを出す場合、およびプログラムの再始動時に復元できるデータ域を指定する場合に使用します。

v 拡張再始動コマンド XRST。このコマンドをシンボリック・チェックポイントとともに使用することにより、バッチ・プログラムまたは BMP プログラムを開始または再始動することができます。

v ロールバック・コマンド ROLL と ROLB。この 2 つのコマンドは、バッチ・プログラムまたは BMP プログラムからデータベースの変更内容を動的にバックアウトするときに使用します。

v バックアウト・ポイント管理コマンド SETS と ROLS。この 2 つのコマンドは複数のバックアウト・ポイントを設定して、あとでこれらのポイントまで戻るために使用します。

v デキュー・コマンド DEQ。これは、前に予約されたセグメントを解放します。

上記のコマンドを使用する場合は、前もってプログラムの入出力 PCB を定義しておく必要があります。ただし、 DEDB PCB に対して出される DEDB DEQ 呼び出しは除きます。

以下のトピックには追加情報が記載されています。

v 『バッチ・プログラムまたは BMP プログラムでのチェックポイントの出し方』

v 98ページの『プログラムの再始動および位置の検査』

v 98ページの『データベース更新の動的バックアウト: ROLL および ROLB コマンド』

v 99ページの『中間バックアウト・ポイントの使用: SETS および ROLS コマンド』

バッチ・プログラムまたは BMP プログラムでのチェックポイントの出し方チェックポイントを指定する場合に使用できるコマンドは、基本チェックポイント・コマンドの CHKP と、シンボリック・チェックポイント・コマンドの SYMCHKP

です。

バッチ・プログラムでは、シンボリック・チェックポイント・コマンドまたは基本チェックポイント・コマンドのどちらかを使用することができます。

どちらのチェックポイント・コマンドを使用しても、プログラムの変更内容をデータベースにコミットし、異常終了した場合にバッチ・プログラムまたは BMP プログラムが再始動する位置を設定できるようになります。

© Copyright IBM Corp. 1974, 2006 97

Page 118: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

要件: IMS チェックポイントを取るために DD ステートメントに CHKPT=EOV パラメーターを指定しないでください。

どちらのチェックポイント・コマンドでも、コマンドが出された時点でデータベースの位置が失われてしまうため、GU コマンドまたはその他の方法を使用して、位置を再設定してください。

非固有キーをもつセグメントまたはキーなしセグメントでは、位置の再設定はできません。

CHKP コマンドの出し方CHKP コマンドを出す場合には、プログラム再始動のためのコードとチェックポイントの ID を指定してください。 この場合、ID が入っているプログラム内のデータ域の名前を指定するか、または実際の ID を単一引用符で囲んで指定することができます。たとえば、次のコマンドはいずれも有効です。

EXEC DLI CHKP ID(chkpid);

EXEC DLI CHKP ID('CHKP0007');

SYMCHKP コマンドの出し方バッチ・プログラムおよび BMP プログラムでは、SYMCHKP コマンドは次の操作を行います。

v プログラムが異常終了した場合、拡張再始動 (XRST) コマンドを使用してプログラムを再始動します。

v プログラムの再始動時に復元される、プログラムのデータ域を 7 つまで保管できます。 これには、変数、カウンター、状況情報を保管することができます。

SYMCHKP コマンドの指定方法の例については、 91ページの『SYMCHKP コマンド』を参照してください。

プログラムの再始動および位置の検査シンボリック・チェックポイント・コマンドを出すプログラムは、拡張再始動(XRST) コマンドも出さなければなりません。 プログラムの最初のコマンドとして、XRST を 1 回出してください。 XRST コマンドを使用して、プログラムを正常に開始させたり、あるいは異常終了した場合に再始動させることができます。 次のいずれかから、プログラムを再始動することができます。

v 特定のチェックポイント ID

v 時刻/日付スタンプ

XRST コマンドがデータベースの位置変更を行おうとするため、プログラムはその位置が正しいかどうかも調べる必要があります。

データベース更新の動的バックアウト: ROLL および ROLB コマンドバッチ・プログラムで、一部の処理が無効であることが検出された場合、 ROLL コマンドと ROLB コマンドを使用すると不正な処理の影響が除去されます。

チェックポイントの発行

98 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

|

|

Page 119: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

バッチ・プログラムでは ROLL と ROLB の両方を使用することができます。 システム・ログが直接アクセス・ストレージに保管されており、JCL のパラメーター・フィールドに BKO=Y を指定している場合は、バッチ・プログラムでは ROLB コマンドだけしか使用できません。

このコマンドのどちらかを出すと、最後のチェックポイントから、あるいはプログラムがチェックポイントを出さなかった場合はプログラムの最初から、プログラムがデータベースに行った変更をすべて DL/I がバックアウトします。

中間バックアウト・ポイントの使用: SETS および ROLS コマンドSETS コマンドと ROLS コマンドを使用すると、DL/I 全機能データベースの状態を保存するポイントを複数定義し、これらのポイントへあとで戻ることができます。(たとえば、これらのコマンドを使用すると、PSB のスケジュールの完了時に参照される DL/I データベースが使用できない場合に発生する可能性のある状況を、プログラムが処理できるようになります。)

SETS および ROLS コマンドは、DL/I 全機能データベースのみに適用されます。 つまり、作業論理単位 (LUW) が全機能データベース以外のリカバリー可能リソース(VSAM ファイルなど) を更新する場合、SETS 要求と ROLS 要求は非 DL/I リソースには影響を及ぼしません。 バックアウト・ポイントは CICS コミット点ではありません。それらは、DBCTL リソースだけに適用される中間バックアウト・ポイントです。ユーザー・プログラムによって、関連リソースのすべてに整合性をもたせるようにしてください。

ある機能を実行する一連の DL/I 要求を開始する前に、SETS コマンドを使用して、アプリケーション内で DL/I データベースの状態を保存するポイントを定義することができます。 アプリケーションは、この機能を完了できない場合にあとからROLS コマンドを出すことができます。特定の SETS 要求を出す前、あるいは最後のコミット・ポイントよりも前のすべての全機能データベースの状態にバックアウトするときに、ROLS コマンドを使用できます。

データベース更新の動的バックアウト

第 5 章 データベースのリカバリーとデータベース保全性の維持 99

Page 120: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

中間バックアウト・ポイント

100 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 121: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

第 6 章 高速機能データベースの処理

DBCTL のもとで EXEC DLI コマンドを使用すると、CICS プログラムまたはバッチ指向 BMP プログラムは、DEDB にアクセスすることができます。パラメーターを指定すると、サブセット・ポインターなどの DEDB の機能をユーザー・プログラムで使用することができます。

DEDB には、1 つのルート・セグメントと 127 タイプの従属セグメントが入っています。 127 タイプのうちの 1 つは順次従属にすることができますが、他の 126 個は直接従属です。 順次従属セグメントは日時順に保管され、 直接従属セグメントは階層によって保管されます。

DEDB は、高データ可用性を提供します。各 DEDB は、複数の「エリア」に区分化または分割することができます。 各エリアには、異なるデータベース・レコードのセットが入っています。 さらに、各エリアのデータ・セットのコピーを 7 つまで作成することができます。 エリアのコピーの 1 つにエラーがあっても、そのエリアのアプリケーション・プログラムは他のコピーを使用してデータにアクセスすることができます。 このことは、アプリケーション・プログラムには影響を与えません。 DEDB 内のデータにエラーが発生しても、IMS は、データベースを停止しません。エラーのあるデータは使用不能になりますが、アプリケーション・プログラムのスケジューリングと処理は続行されます。エラーのあるデータを必要としないプログラムには、影響がありません。

別々の IMS システム内のアプリケーション・プログラム間で、DEDB を共用することができます。DEDB を共用するということは、実質的に全機能データベースを共用することと同じなので、同じ規則のほとんどが適用されます。 複数の IMS システムが、エリア・レベル (全機能データベースにおけるデータベース・レベルではない) で DEDB を共用するか、あるいはブロック・レベルで DEDB を共用することができます

以下のトピックには追加情報が記載されています。

v 『サブセット・ポインターを使用した DEDB の処理』

v 114ページの『POS コマンド』

サブセット・ポインターを使用した DEDB の処理サブセット・ポインター、およびそれとともに使用するオプションは、長いセグメント・チェーンを処理しなければならないときに、プログラムの効率を大きく向上させる最適化ツールです。 サブセット・ポインターは、同じ親のもとにあるセグメント・オカレンスのチェーンを、複数のグループ (すなわち、サブセット) に分割します。 どのセグメント・タイプに対しても最高 8 つまでサブセット・ポインターを定義することができます。 その場合、アプリケーション・プログラム内からサブセット・ポインターを定義します ( 105ページの『サブセット・ポインターのオプション』を参照してください)。各サブセット・ポインターは、新しいサブセットの開始位置を指します。 たとえば、 102ページの図 3 の中で、最後の 3 つのセグメント・オカレンスを最初の 4 つから分けるために、1 つのサブセット・ポインター

© Copyright IBM Corp. 1974, 2006 101

|

|

|

|

Page 122: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

を定義したとします。こうすることで、プログラムは、オプションを使用してそのサブセット・ポインターを参照し、最後の 3 つのセグメント・オカレンスを直接検索することができます。

サブセット・ポインターは、ルート・レベルを除いて、データベース階層のどのレベルでも使用することができます。 ルート・レベルで使用されるサブセット・ポインターは無視されます。

103ページの図 4 と 103ページの図 5 は、サブセット・ポインターの設定方法を示してます。 サブセット・ポインターは、互いに独立しているので、チェーンの中のどのセグメントに対しても 1 つ以上のポインターを設定することができます。たとえば、図 4 に示すように、複数のサブセット・ポインターをセグメントに設定することができます。

図 3. サブセット・ポインターを使用した、セグメント・オカレンスの長いチェーンの処理

サブセット・ポインターを使用した DEDB の処理

102 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 123: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

あるいは、図 5 に示すように、ポインターとセグメントとの間に 1 対 1 の関係を定義することもできます。この図ではセグメント・オカレンスごとに 1 つのサブセット・ポインターがあります。

104 ページの図 6 は、同じ親のもとにあるセグメント・オカレンスのチェーンが、サブセット・ポインターの使用により、どのようにサブセットに分けられるかを示しています。 各サブセットはチェーン全体の最後のセグメントで終わります。 たとえば、サブセット・ポインター 1 によって定義されるサブセットの中の最後のセグメントは B7 です。

図 4. 複数のサブセット・ポインターを設定する例

図 5. サブセット・ポインターを設定する別の例

サブセット・ポインターを使用した DEDB の処理

第 6 章 高速機能データベースの処理 103

Page 124: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

サブセット・ポインターを使用する準備プログラムにサブセット・ポインターを使用するためには、これらのポインターをDEDB の DBD、およびプログラムの PSB の中で定義しておかなければなりません。

v DBD には、1 つのセグメント・チェーンに使用されるポインター数を指定します。 どのセグメント・チェーンに対しても最高 8 つまでポインターを指定することができます。

v PSB には、プログラムが使用するポインターを指定します。この定義は、SENSEG ステートメントの中で行います。 (各ポインターは 1 から 8 までの整数で定義します。) また、プログラムが、使用するポインターを設定できるかどうかについても、 SENSEG ステートメントで指定します。 プログラムが読み取り専用センシティビティーである場合は、ポインターを設定できませんが、すでに設定されたサブセット・ポインターを使用して、セグメントを検索することだけはできます。 プログラムが更新センシティビティーである場合、SET、SETCOND、MOVENEXT、および SETZERO の各オプションを使用して、サブセット・ポインターを更新することもできます。

DBD と PSB の中でポインターを定義したあと、アプリケーション・プログラムは、ポインターをチェーンの中のセグメントに設定することができます。 アプリケーション・プログラムが実行を終了すると、そのプログラムによって使用されたサブセット・ポインターは、設定されたままになり、再設定されません。

サブセット・ポインターの指定プログラムの中でサブセット・ポインターを使用するためには、 PSB の中で定義されたポインターの番号が分かっていなければなりません。サブセット・ポインターのオプションを使用する場合は、使用する各サブセット・ポインターの番号をオプションの直後に指定します。たとえば、サブセット・ポインター 3 によって定義されたサブセット中の最初のセグメント・オカレンスを検索することを示すときは、

図 6. サブセット・ポインターがどのようにチェーンをサブセットに分けるか

サブセット・ポインターを使用した DEDB の処理

104 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 125: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

P3 を使用します。デフォルトがないため、ユーザーが 1 から 8 までの番号を指定しないと、IMS は修飾ステートメントが無効であると見なし、AJ 状況コードをプログラムに戻します。

サブセット・ポインターのオプション

サブセットを利用するために、アプリケーション・プログラムは 5 つの異なるオプションを使用します。

GETFIRST サブセットにある最初のセグメントを検索することができます。

SETZERO サブセット・ポインターをゼロに設定します。

MOVENEXT サブセット・ポインターを、現行セグメントの次のセグメントに設定します。 現在位置は現行セグメントです。

SET 無条件で、サブセット・ポインターを現行セグメントに設定します。現在位置は現行セグメントです。

SETCOND 条件付きで、サブセット・ポインターを現行セグメントに設定します。現在位置は現行セグメントです。

銀行用トランザクション・アプリケーションの例この章での例は、通帳預金の銀行用トランザクションの記録に関するサンプル・アプリケーションに基づいています。トランザクションは、カスタマーの通帳に記帳されたかどうかに基づいて、記帳済みまたは未記帳としてデータベースに書き込まれます。たとえば、Bob Emery 氏は、銀行と取引をしていますが、通帳を持参するのを忘れたとします。アプリケーション・プログラムは、トランザクションを未記帳としてデータベースに書き込みます。 アプリケーション・プログラムは、サブセット・ポインターを、最初の未記帳トランザクションに設定するので、後で簡単にアクセスすることができます。次に Bob 氏が通帳を持参したときに、プログラムはトランザクションを記帳します。 プログラムは、前に設定されたサブセット・ポインターを使用して、最初の未記帳トランザクションを直接検索できます。プログラムは、トランザクションを記帳した後で、サブセット・ポインターを 0 に設定します。これによって、それ以降にデータベースを更新するアプリケーション・プログラムは、未記帳のトランザクションがないと判別できるようになります。 106ページの図 7 は、通帳が使用不可である場合に行われる処理の要約を示しています。

サブセット・ポインターを使用した DEDB の処理

第 6 章 高速機能データベースの処理 105

Page 126: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

通帳が使用可能である場合、アプリケーション・プログラムは未記帳トランザクションをデータベースに追加し、サブセット・ポインター 1 を最初の未記帳トランザクションに設定します。 図 8 は、通帳が使用可能である場合に行われる処理の要約を示しています。

通帳が使用可能な場合、アプリケーション・プログラムは、このプログラムを使用した最初の未記帳トランザクションを検索します。その後、すべての未記帳トランザクションを記帳し、サブセット・ポインター 1 をゼロに設定します。

GETFIRST オプション : サブセットの最初のセグメントの検索

サブセットの中の最初のセグメント・オカレンスを検索するために、プログラムは、GETFIRST オプションが指定された読み取りコマンドを出します。 GETFIRST

オプションはポインターを設定したり動かしたりしませんが、IMS に対して、サブ

図 7. 通帳に対して実行される処理の例 (通帳が使用不可の場合)

図 8. 通帳に対して実行される処理の例 (通帳が使用可能な場合)

サブセット・ポインターを使用した DEDB の処理

106 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

|

Page 127: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

セット中の最初のセグメント・オカレンスに位置を設定するように指示します。GETFIRST オプションは、FIRST オプションに似ていますが、GETFIRST オプションは、セグメント・チェーン全体に適用されるのではなく、サブセットに適用されます。

105ページの『銀行用トランザクション・アプリケーションの例』を使用して、Bob

Emery 氏が通帳を持参して銀行に行き、すべての未記帳トランザクションを記帳する場合を想定します。サブセット・ポインター 1 はすでに、最初の未記帳トランザクションに設定されているので、プログラムで、以下のコマンドを使用して、そのトランザクションを検索することができます。

EXEC DLI GU SEGMENT(A) WHERE(AKEY = ’A1’)SEGMENT(B) INTO(BAREA) GETFIRST(’1’);

図 9 に示されているように、このコマンドはセグメント B5 を検索します。チェーンの中のセグメントを処理し続けるには、サブセット・ポインターを使用していない場合と同じように、GET NEXT コマンドを出すことができます。

サブセットが存在していない (サブセット・ポインター 1 がゼロに設定されている)

場合、IMS は GE 状況コードを戻し、データベース内の位置は、チェーンの最後のセグメントの直後になります。通帳の例では、GE 状況コードは未記帳トランザクションがないことを示しています。

1 つの修飾ステートメントに指定できる GETFIRST オプションは 1 つのみです。修飾ステートメントに複数の GETFIRST を使用すると、IMS は、ユーザーのプログラムに AJ 状況コードを戻します。GETFIRST オプションの使用に関する規則は、以下のとおりです。

1. GETFIRST は次のオプションを除くすべてのオプションとともに使用できます。

v FIRST

v LOCKCLASS

v LOCKED

図 9. セグメント・チェーンの最初のセグメントの検索

サブセット・ポインターを使用した DEDB の処理

第 6 章 高速機能データベースの処理 107

Page 128: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

2. 他のオプションは、GETFIRST オプションが有効になり、サブセット中の最初のセグメントに位置が設定されてから有効になります。

3. GETFIRST を LAST とともに使用した場合、セグメント・チェーンの最後のセグメントが検索されます。

4. GETFIRST に対して指定したサブセット・ポインターが設定されていない場合、IMS は GE 状況コードを戻し、セグメント・チェーンの最後のセグメントを戻しません。 『SETZERO、MOVENEXT、SET、および SETCOND オプション :

サブセット・ポインターの設定』を参照してください。

5. GETFIRST は FIRST とともに使用しないでください。 これによって、AJ 状況コードが検索されます。

6. GETFIRST は、LAST を含めすべての挿入規則を指定変更します。

SETZERO、MOVENEXT、SET、および SETCOND オプション : サブセット・ポインターの設定SETZERO、MOVENEXT、SET、および SETCOND の各オプションを使用すると、サブセット・ポインターを変更して、サブセットを再定義することができます。 プログラムがサブセット・ポインターを設定するためには、その前にデータベース内の位置を設定しておかなければなりません。 コマンドが完全に正しく実行されないと、サブセット・ポインターは設定されません。 ポインターがどのセグメントに設定されるかは、コマンドが完了したときの現在位置によって決まります。 セグメントを検索するためのコマンドが完全に正しく実行されておらず、しかも位置が設定されていないと、サブセット・ポインターは、コマンドが出される前の状態に保たれます。

v サブセット・ポインターのゼロへの設定: SETZERO

SETZERO オプションは、サブセット・ポインターの値をゼロに設定します。プログラムが SETZERO オプションを指定したコマンドを出すと、ポインターはセグメントに設定されなくなります。つまり、そのポインターによって定義されたサブセットは存在しなくなります。(ゼロの値をもつサブセット・ポインターを使用しようとすると、GE 状況コードが IMS からプログラムに戻されます。)

105ページの『銀行用トランザクション・アプリケーションの例』を使用して、最初の未記帳トランザクションを検索するために、GETFIRST オプションを使用したとします。それからセグメント・チェーンを処理して、トランザクションを記帳します。トランザクションを記帳し、新しいトランザクションをチェーンに挿入したあと、次のコマンドで示すように、SETZERO オプションを使用してサブセット・ポインターをゼロに設定します。

EXEC DLI ISRT SEGMENT(A) WHERE(AKEY = ’A1’)SEGMENT(B) FROM(BAREA) SETZERO(’1’);

このコマンドの実行後、サブセット・ポインター 1 は 0 に設定されます。これは、データベースをあとで更新するプログラムに、未記帳のトランザクションがないことを示します。

v 現在位置の次のセグメントへのサブセット・ポインターの移動: MOVENEXT

サブセット・ポインターを現在位置の次のセグメントに移動するには、プログラムは MOVENEXT オプションを指定したコマンドを出します。 105ページの『銀行用トランザクション・アプリケーションの例』を使用して、いくつかのトラン

サブセット・ポインターを使用した DEDB の処理

108 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

|

|

Page 129: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

ザクションを記帳し (全部ではない)、サブセット・ポインターを最初の未記帳トランザクションに設定したいとします。次のコマンドは、サブセット・ポインター 1 をセグメント B6 に設定します。

EXEC DLI GU SEGMENT(A) WHERE(AKEY = ’A1’)SEGMENT(B) INTO(BAREA) GETFIRST(’1’) MOVENEXT(’1’);

このコマンドを使用してサブセット・ポインターを移動する処理を図 10 に示します。現行セグメントがチェーンの最後のセグメントであって、MOVENEXT オプションを使用した場合、IMS はポインターをゼロに設定します。

v 無条件でのサブセット・ポインターの設定: SET

図 10. 現在位置の次のセグメントへのサブセット・ポインターの移動

サブセット・ポインターを使用した DEDB の処理

第 6 章 高速機能データベースの処理 109

Page 130: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

SET オプションは、サブセット・ポインターを設定するときに使用します。 SET

オプションは、サブセット・ポインターがすでに設定されているかどうかにかかわらず、これを無条件で設定します。 プログラムが SET オプションを含むコマンドを出すと、IMS はポインターを現在位置に設定します。

たとえば、サブセット・ポインター 1 によって定義されたサブセットの中の最初の B セグメント・オカレンスを検索し、ポインター 1 を次の B セグメント・オカレンスに再設定したい場合、次のコマンドを出します。

EXEC DLI GU SEGMENT(A) WHERE(AKEY = ’A1’)SEGMENT(B) INTO(BAREA) GETFIRST(’1’);

EXEC DLI GN SEGMENT(B) INTO(BAREA) SET(’1’);

これらのコマンドを出したあと、サブセット・ポインター 1 はセグメント B5 を指すのではなく、 111ページの図 11 で示すように、セグメント B6 を指します。

サブセット・ポインターを使用した DEDB の処理

110 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 131: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

v 条件付きでのサブセット・ポインターの設定: SETCOND

サブセット・ポインターを条件付きで設定するとき、プログラムは SETCOND オプションを使用します。SETCOND オプションは、SET オプションに似ています。唯一の違いは、SETCOND オプションを使用すると、IMS は、サブセット・ポインターがセグメントにまだ設定されていない 場合にのみ、そのポインターを更新することです。

預金通帳の例において、Bob Emery 氏が銀行に行ったときに、通帳を持参するのを忘れたとします。この場合、データベースに未記帳トランザクションを追加します。 あとでトランザクションを記帳するときに、すぐに最初のものにアクセスできるように、ポインターを最初の未記帳トランザクションに設定します。次の

図 11. 無条件でのサブセット・ポインターの現行位置への設定

サブセット・ポインターを使用した DEDB の処理

第 6 章 高速機能データベースの処理 111

|

|

|

|

Page 132: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

コマンドは、挿入するトランザクションが最初の未記帳トランザクションである場合に、サブセット・ポインターをこのトランザクションに設定します。

EXEC DLI ISRT SEGMENT(A) WHERE(AKEY = ’A1’)SEGMENT(B) FROM(BAREA) SETCOND(’1’);

図 12 に示すように、このコマンドは、サブセット・ポインター 1 をセグメントB5 に設定します。 未記帳トランザクションがすでに存在している場合、サブセット・ポインターは変更されません。

サブセットへのセグメントの挿入キーをもたないセグメントをサブセットに挿入するために GETFIRST オプションを使用すると、この新しいセグメントは、サブセット中の最初のセグメント・オカレンスの前に挿入されます。 しかし、サブセット・ポインターが、新しいセグメント・オカレンスに自動的に設定されるわけではありません。 たとえば、次のコマンドは、新しい B セグメント・オカレンスをセグメント B5 の前に挿入しますが、サブセット・ポインター 1 をこの新しい B セグメント・オカレンスを指し示すようには設定しません。

EXEC DLI ISRT SEGMENT(A) WHERE(AKEY = ’A1’)SEGMENT(B) FROM(BAREA) GETFIRST(’1’);

図 12. 条件付きでのサブセット・ポインターの現行位置への設定

サブセット・ポインターを使用した DEDB の処理

112 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

|

|

||

Page 133: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

サブセット・ポインター 1 を新しいセグメントに設定するには、次の例に示すように、GETFIRST オプションとともに SET オプションを使用します。

EXEC DLI ISRT SEGMENT(A) WHERE(AKEY = ’A1’)SEGMENT(B) FROM(BAREA) GETFIRST(’1’) SET (’1’);

サブセットが存在しない (サブセット・ポインター 1 がゼロに設定された) 場合、セグメントはセグメント・チェーンの最後に追加されます。

サブセット・ポインターに指示されているセグメントの削除サブセット・ポインターにより指示されているセグメントを削除すると、サブセット・ポインターは、チェーンの中の次のセグメント・オカレンスを指示します。 削除したセグメントがチェーンの最後のセグメントであれば、サブセット・ポインターはゼロに設定されます。

オプションの組み合わせオプション間で矛盾しないかぎり、SET、MOVENEXT、SETCOND オプションを他のオプションと組み合わせて使用したり、サブセット・ポインターの複数のオプションを組み合わせて使用することができます。 たとえば、GETFIRST と SET は一緒に使用することができますが、 SET と SETZERO は機能が競合するので、一緒に使用することはできません。 競合するオプションを組み合わせると、AJ 状況コードが IMS からプログラムに戻されます。

1 つの修飾ステートメントにつき、1 つの GETFIRST オプションを使用することができ、また各サブセット・ポインターにつき 1 つの更新オプション (SETZERO、MOVENEXT、SET、または SETCOND) を使用することができます。

サブセット・ポインターの状況コードサブセット・ポインター・オプションを含む修飾ステートメントにエラーがあると、IMS は、次のいずれかの状況コードをプログラムに戻します。

AJ DBD でサブセット・ポインターが定義されていないセグメントに対して、GETFIRST、SET、SETZERO、SETCOND、または MOVENEXT オプションを修飾ステートメントが使用しました。

修飾ステートメントに含まれているサブセット・オプションが競合しています。たとえば、同じサブセット・ポインターに対する SET オプションとSETZERO オプションが、1 つの修飾ステートメントに指定されている場合、IMS は AJ 状況コードを戻します。 S はポインターを現在位置に設定することを意味し、 Z はポインターをゼロに設定することを意味するので、 これらのオプションを 1 つの修飾ステートメント内で一緒に使用することはできません。

修飾ステートメントに複数の GETFIRST オプションが入っていました。

サブセット・ポインター・オプションのあとのポインター番号が無効です。ユーザーが番号を入れなかったか、無効文字が含まれていたかのどちらかです。オプションの次の番号は、1 から 8 までの番号でなければなりませんが、重複してもかまいません。

AM 修飾ステートメントの中で参照されたサブセット・ポインターが、プログラムの PSB で指定されていませんでした。 たとえば、プログラムの PSB

に、プログラムでサブセット・ポインター 1 と 4 を使用できることが指定

サブセット・ポインターを使用した DEDB の処理

第 6 章 高速機能データベースの処理 113

Page 134: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

されているときに、修飾ステートメントがサブセット・ポインター 5 を参照した場合、IMS は AM 状況コードをプログラムに戻します。

プログラムが、ポインターを更新するオプション (SET、SETCOND、または MOVENEXT) を使用しようとしましたが、プログラムの PSB はポインターが更新センシティビティーであるとは指定していませんでした。

ご使用のプログラムは、IOAREA を指定せずに GSAM データベースを開こうとしました。

POS コマンド位置 (POS) コマンドを使用すると、次のような操作を行うことができます (DEDB

のみ)。

v 特定の順次従属セグメントの位置、または最後に挿入された順次従属セグメントの位置の検索。

v 各 DEDB エリア内の未使用スペースの容量の通知。 たとえば、POS コマンドの実行後に IMS が戻す位置情報を使用して、特定の期間にある順次従属セグメントをスキャンまたは削除することができます。

POS コマンドの構文については、 67ページの『POS コマンド』を参照してください。

POS コマンドによって指定されたエリアを使用できない場合は、入出力域は変更されず、状況コード FH が戻されます。

特定の順次従属セグメントの位置指定特定のルート・セグメント上に位置を設定した場合は、位置情報と、そのルートの特定の順次従属セグメントの区域名を検索できます。順次従属セグメント上に位置を設定した場合には、検索はその位置から始まります。 IMS は、コマンドを正しく実行させる最初の順次従属セグメントの位置情報を戻します。

この情報を検索する場合は、順次従属セグメントの名前が入っている修飾ステートメントをもつ POS コマンドを出します。 このように POS コマンドを実行したあとの現在位置は、GNP コマンド実行後の現在位置と同じ位置になります。

POS コマンドが正常に実行されると、入出力域の内容は次のようになります。

LL 入出力域内のデータ全体の長さを示す 2 バイトのフィールド (2 進数)

区域名 AREA ステートメントで指定された DD 名を示す 8 バイトのフィールド

位置 要求されたセグメントに対する位置情報が入っている 8 バイトのフィールド

POS コマンドの目標セグメントである順次従属セグメントが同じ同期間隔で挿入されている場合は、位置情報は戻されません。 バイト11 から 18 には X'FF' が入っており、他のフィールドには通常のデータが入っています。

サブセット・ポインターを使用した DEDB の処理

114 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

|

|

|

Page 135: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

未使用の CI 順次従属部分にある未使用の CI 数が入っている 4 バイトのフィールド

未使用の CI 独立したオーバーフロー部分にある未使用の CI 数が入っている 4

バイトのフィールド

最後に挿入された順次従属セグメントの位置指定特定のルート・セグメントの順次従属セグメントの中で、最後に挿入されたセグメントの位置情報を検索することもできます。この検索を行うには、セグメント名としてルート・セグメントが指定されている修飾ステートメントを使用して POS コマンドを出します。 このようにコマンドを実行したあとの現在位置は、GU の実行後の位置の場合と同じ規則に従って設定されます。

コマンドが成功したあとの入出力域の内容は、次のとおりです。

LL 入出力域内のデータ全体の長さを示す 2 バイトのフィールド (2 進数)

区域名 AREA ステートメントで指定された DD 名を示す 8 バイトのフィールド

位置 最後に挿入された順次従属セグメントに関する位置情報が入っている 8 バイトのフィールド。 このルートに順次従属セグメントがない場合、このフィールドにはゼロが入ります。

未使用の CI 順次従属部分にある未使用の CI 数が入っている 4 バイトのフィールド

未使用の CI 独立したオーバーフロー部分にある未使用の CI 数が入っている 4

バイトのフィールド

POS コマンドの使用によるフリー・スペースの識別すべてのオンライン区域から区域名と順次従属セグメント内で使用可能な次の位置を検索する場合は、POS コマンドを修飾せずに出します。このタイプのコマンドは、独立したオーバーフロー部分および順次従属部分にあるフリー・スペースも検索します。

修飾せずに出された POS コマンドが成功すると、入出力域には、データ全体の長さ(LL) と、データベース内の区域と同数の項目が入ります。どの項目にも、次に示すフィールド 2 から 5 までが含まれます。

LL 入出力域内のデータ全体の長さを示す 2 バイトのフィールド (2 進数)。この長さには、 LL フィールドの 2 バイトと、項目ごとに 24

バイトを加えた長さも含まれています。

区域名 AREA ステートメントで指定された DD 名を示す 8 バイトのフィールド

位置 順次従属部分内で次に使用可能な位置を示す 8 バイトのフィールド

未使用の CI 順次従属部分にある未使用の CI 数が入っている 4 バイトのフィールド

未使用の CI 独立したオーバーフロー部分にある未使用の CI 数が入っている 4

バイトのフィールド

POS コマンド

第 6 章 高速機能データベースの処理 115

|

|

|

|

||

|

|

||

|

||

||

|

||

|

Page 136: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

P 処理オプションプログラムの PCB に P 処理オプションが (PROCOPT パラメーターで) 指定されている場合、セグメントを検索または挿入するコマンドによって作業単位 (UOW)

の境界を越えると、必ず GC 状況コードがプログラムに戻されます。UOW 境界を越えることは、プログラムにとっては特に重要ではありませんが、GC 状況コードは CHKP コマンドを出すよいタイミングであることを示します。この操作の利点は次のとおりです。

v データベース内の位置が保持されます。 CHKP を出すと、通常、データベース内の位置が失われるため、アプリケーション・プログラムは処理を再開する前に位置を再設定しなければなりません。

v コミット点が一定の間隔で発生します。

GC 状況コードが戻されると、データは検索も挿入もされません。プログラムでは、次のいずれかを行うことができます。

v CHKP コマンドを出し、GC 状況コードが戻される原因となったコマンドを再度出すことにより、データベースの処理を再開する。

v GC 状況コードを無視し、状況コードが戻される原因となったコマンドを再度出すことにより、データベースの処理を再開する。

POS コマンド

116 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 137: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

第 7 章 コマンド・レベル・プログラムと呼び出しレベル・プログラムの比較

この章では、コマンド・レベル・プログラムと呼び出しレベル・プログラムとのいくつかの相違点を要約しています。 DL/I 呼び出しについて熟知していても、EXEC

DLI コマンドについては精通していない方は、以下の説明を読んで、呼び出しを使用して行っていた作業の実行に使用できるコマンドとオプションについて理解してください。

以下のトピックには追加情報が記載されています。

v 『IMS および CICS に対する DL/I 呼び出し』

v 118ページの『EXEC DLI コマンドと DL/I 呼び出しの比較』

v 119ページの『コマンド・コードとオプションの比較』

IMS および CICS に対する DL/I 呼び出し表 10 には、バッチ、バッチ向け BMP、または DBCTL 使用の CICS 環境で DL/I

呼び出しを使用するための早見表を掲載します。

表 10. IMS および CICS コマンド・レベル・アプリケーション・プログラムで使用可能な DL/I 呼び出し

要求タイプ

プログラム特性

バッチ バッチ型 BMP

DBCTL 使用CICS1

CHKP 呼び出し (記号) 可 可 不可

CHKP 呼び出し (基本) 可 可 不可

GSCD 呼び出し2 可 不可 不可

INIT 呼び出し 可 可 可

ISRT 呼び出し (初期ロード) 可 不可 不可

ISRT 呼び出し 可 可 可

LOG 呼び出し 可 可 可

SCHD 呼び出し 不可 不可 可

ROLB 呼び出し 可 可 不可

ROLL 呼び出し 可 可 不可

ROLS 呼び出し (SETS へのロールバック)3 可 可 可

ROLS 呼び出し (コミットへのロールバック) 可 可 可

SETS 呼び出し3 可 可 可

STAT 呼び出し4 可 可 可

TERM 呼び出し 不可 不可 可

XRST 呼び出し 可 可 不可

© Copyright IBM Corp. 1974, 2006 117

Page 138: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

表 10. IMS および CICS コマンド・レベル・アプリケーション・プログラムで使用可能な DL/I 呼び出し (続き)

要求タイプ

プログラム特性

バッチ バッチ型 BMP

DBCTL 使用CICS1

注:

1. CICS リモート DL/I 環境では、CICS-DBCTL 欄の呼び出しは、DBCTL を使用するリモート CICS への機能シップを行っている場合にサポートされます。

2. GSCD は、プロダクト・センシティブ・プログラミング・インターフェースです。

3. SETS および ROLS 呼び出しは、PSB に DEDB が入っているときには有効でありません。

4. STAT は、プロダクト・センシティブ・プログラミング・インターフェースです。

EXEC DLI コマンドと DL/I 呼び出しの比較表 11 では、EXEC DLI コマンドと DL/I 呼び出しを比較し、コマンドの用途を説明します。たとえば、コマンド・レベル・プログラムでは、データベースを初期ロードするときには ISRT 呼び出しではなく LOAD コマンドを使用します。

表 11. 呼び出しレベル・プログラムとコマンド・レベル・プログラムの比較: コマンドと呼び出し

呼び出しレベル コマンド・レベル 用途 . . .

INIT 呼び出し ACCEPT コマンド データ可用性状況コードを初期設定する。

CHKP 呼び出し (基本) CHKP コマンド 基本チェックポイントを出す。

DEQ 呼び出し DEQ コマンド LOCKCLASS オプションまたは Q コマンド・コードを使用して検索されたセグメントを解放する。

DLET 呼び出し DLET コマンド データベースからセグメントを削除する。

GU, GN、および GNP

呼び出しGU, GN、および GNP

コマンド1

データベースからセグメントを検索する。

GHU, GHN、およびGHNP 呼び出し1

GU, GN、および GNP

コマンド1

更新のためにデータベースからセグメントを検索する。

GSCD 呼び出し GSCD 呼び出し2 システム・アドレスを検索する。

ISRT 呼び出し ISRT コマンド データベースにセグメントを追加する。

ISRT 呼び出し LOAD コマンド データベースを初期ロードする。

LOG 呼び出し LOG コマンド システム・ログにメッセージを書き出す。

POS 呼び出し POS コマンド DEDB エリアでの位置またはスペース使用状況、あるいはその両方を検索する。

INIT 呼び出し ACCEPT コマンド データ可用性状況を初期設定する。

INIT 呼び出し QUERY コマンド 初期データ可用性情報を入手する。

INIT 呼び出し REFRESH コマンド PCB を使用した後の可用性情報

REPL 呼び出し REPL コマンド データベースのセグメントを置換する。

XRST 呼び出し RETRIEVE コマンド 拡張再始動を出す。

ROLL または ROLB

呼び出しROLL または ROLB

コマンド変更を動的にバックアウトする。

ROLS 呼び出し ROLS コマンド 前に設定されたバックアウト・ポイントまでバックアウトする。

PCB 呼び出し SCHD コマンド PSB をスケジュールする。

SETS 呼び出し SETS コマンド バックアウト・ポイントを設定する。

コマンド・レベル・プログラムと呼び出しレベル・プログラムの比較

118 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 139: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

表 11. 呼び出しレベル・プログラムとコマンド・レベル・プログラムの比較: コマンドと呼び出し (続き)

呼び出しレベル コマンド・レベル 用途 . . .

SETU 呼び出し SETU コマンド サポートされていない PCB (DEDB または MSDB など) がある場合にも、バックアウト・ポイントを設定する。

STAT 呼び出し3 STAT コマンド システムおよびバッファー・プール統計を入手する。

CHKP 呼び出し (拡張) SYMCHKP コマンド シンボリック・チェックポイントを出す。

TERM 呼び出し TERM コマンド PSB を終了する。

XRST 呼び出し XRST コマンド 拡張再始動を出す。

注:

1. 読み取りコマンドは読み取り保持呼び出しに相当し、読み取りコマンドと読み取り呼び出しのパフォーマンスは同じです。

2. バッチ・コマンド・レベル・プログラムでは、GSCD 呼び出しを使用することができます。 GSCD は、プロダクト・センシティブ・プログラミング・インターフェースです。

3. STAT は、プロダクト・センシティブ・プログラミング・インターフェースです。

コマンド・コードとオプションの比較表 12 では、EXEC DLI コマンドで使用するオプションと、DL/I 呼び出しで使用するコマンド・コードを比較します。 たとえば、LOCKED オプションは、Q コマンド・コードと同じ機能を果たします。

表 12. 呼び出しレベル・プログラムとコマンド・レベル・プログラムの比較: コマンド・コードとオプション

呼び出しレベル コマンド・レベル 用途 . . .

C KEYS オプション セグメントの連結キーを使用して、セグメントを識別する。

D INTO または FROM。検索または挿入されるセグメント・レベルに指定。

要求を 1 つだけ使用して、一連のセグメントを階層パスにおいて検索または挿入する。セグメントごとに個別要求を使用する必要なし。(パスCALL またはコマンド。)

F FIRST オプション 特定セグメント・オカレンスを検索するとき、親のもとにあるセグメントの最初のオカレンスまでバックアップする。ルート・セグメントに対しては無視される。

L LAST オプション 親のもとにあるセグメントの最後のオカレンスを検索する。

M MOVENEXT オプション 現行セグメントの次のセグメントにサブセット・ポインターを設定する。

N 置き換え不要なセグメントに対しては、SEGMENT オプションは省略。

読み取り保持要求のあとでセグメントを置換するときに、置き換え不要なセグメントを指定する。 通常、セグメント・パスを置換するときに使用される。

P SETPARENT 通常 (要求の最低階層レベル) よりも高いレベルで親子関係を設定する。

Q LOCKCLASS, LOCKED 処理終了まで、他のプログラムが更新できないようにセグメントを予約する。

R GETFIRST オプション サブセット内の最初のセグメントを検索する。

S SET オプション 無条件で、サブセット・ポインターを現行セグメントに設定する。

コマンド・レベル・プログラムと呼び出しレベル・プログラムの比較

第 7 章 コマンド・レベル・プログラムと呼び出しレベル・プログラムの比較 119

Page 140: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

表 12. 呼び出しレベル・プログラムとコマンド・レベル・プログラムの比較: コマンド・コードとオプション (続き)

呼び出しレベル コマンド・レベル 用途 . . .

U コマンド・レベル・プログラムには、相当するものなし。

セグメントの検索対象を、位置が設定されているセグメント・オカレンスの従属セグメントだけに限定する。

V CURRENT オプション 現在位置のレベル以上の階層レベルをこのセグメントの修飾として使用する。

W SETCOND オプション 条件付きで、サブセット・ポインターを現行セグメントに設定する。

Z SETZERO オプション サブセット・ポインターをゼロに設定する。

- コマンド・レベルにはない。

ヌル。 コマンド・コードを指定せずにコマンド・コード形式で SSA を使用する。 実行中に、必要なコマンド・コードに置換できる。

コマンド・レベル・プログラムと呼び出しレベル・プログラムの比較

120 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

||

Page 141: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

第 8 章 データ可用性の強化

プログラムは、DL/I 全機能データベースが使用不能であることを示す状況コードを受け取ると、失敗します。 このような状況を発生させないようにするには、データ可用性強化機能を使用します。DBCTL で PSB をスケジュールした後で、アプリケーション・プログラムは IMS に対して、プログラムでデータ可用性状況コードを処理できることを示し、各データベースの可用性に関する情報を取得する要求を出すことができます。

以下のトピックには追加情報が記載されています。

v 『データベース可用性状況コードの受け取り』

v 『データベース可用性に関する情報入手』

データベース可用性状況コードの受け取りこれらの状況コードが出されるのは、PSB のスケジューリングが完了したが、参照されたデータベースのすべてを使用することはできなかったためです。 ACCEPT コマンドを使用して、プログラムを異常終了させるのではなく状況コードを戻すように DBCTL に指示します。

EXEC DLI ACCEPT STATUSGROUP('A');

データベース可用性に関する情報入手

データ可用性状況コードをそれぞれの DB PCB に入れる条件は次のとおりです。

v CICS DBCTL 環境では、PSB のスケジューリング要求コマンド SCHD を使用します。

v バッチ環境および BMP 環境では、初期設定時に行います。

データ可用性状況コードは、DL/I インターフェース・ブロック (DIB) から取り出せます。それには次の QUERY コマンドを使用します。

EXEC DLI QUERY USING PCB(n);

n は PCB を指定します。

QUERY コマンドが発行されるのは PSB のスケジュールと最初のデータベース呼び出しの間です。プログラムが DB PCB を使用してすでに呼び出しを出している場合は、QUERY コマンドを REFRESH コマンドの次に出します。

EXEC DLI REFRESH DBQUERY

REFRESH コマンドは DIB の情報を更新します。このコマンドは 1 回だけしか出すことができません。

全機能データベースの場合、DIBSTAT には、NA、NU、TH、またはブランクが入らなければなりません。 MSDB および DEDB の場合は、DIBSTAT には必ずブランクが入らなければなりません。

© Copyright IBM Corp. 1974, 2006 121

Page 142: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

CICS コマンド言語変換プログラムが EXEC DLI コマンドの変換に使用された場合は、データ可用性状況に加えて、DBDNAME が DIB フィールド DIBDBDNM に戻されます。また、データベース編成名が DIB フィールド DIBDBORG に戻されます。

データ可用性コードの説明については、「IMS 第 9 版: メッセージおよびコード第 1 巻」を参照してください。

データベース可用性に関する情報入手

122 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 143: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

特記事項

本書は米国 IBM が提供する製品およびサービスについて作成したものであり、本書に記載の製品、サービス、または機能が日本においては提供されていない場合があります。日本で利用可能な製品、サービス、および機能については、日本 IBM

の営業担当員にお尋ねください。本書で IBM 製品、プログラム、またはサービスに言及していても、その IBM 製品、プログラム、またはサービスのみが使用可能であることを意味するものではありません。これらに代えて、IBM の知的所有権を侵害することのない、機能的に同等の製品、プログラム、またはサービスを使用することができます。ただし、IBM 以外の製品とプログラムの操作またはサービスの評価および検証は、お客様の責任で行っていただきます。

IBM は、本書に記載されている内容に関して特許権 (特許出願中のものを含む) を保有している場合があります。本書の提供は、お客様にこれらの特許権について実施権を許諾することを意味するものではありません。実施権についてのお問い合わせは、書面にて下記宛先にお送りください。

〒106-8711東京都港区六本木 3-2-12IBM World Trade Asia CorporationIntellectual Property Law & Licensing

以下の保証は、国または地域の法律に沿わない場合は、適用されません。 IBM およびその直接または間接の子会社は、本書を特定物として現存するままの状態で提供し、商品性の保証、特定目的適合性の保証および法律上の瑕疵担保責任を含むすべての明示もしくは黙示の保証責任を負わないものとします。 国または地域によっては、法律の強行規定により、保証責任の制限が禁じられる場合、強行規定の制限を受けるものとします。

この情報には、技術的に不適切な記述や誤植を含む場合があります。本書は定期的に見直され、必要な変更は本書の次版に組み込まれます。 IBM は予告なしに、随時、この文書に記載されている製品またはプログラムに対して、改良または変更を行うことがあります。

本書において IBM 以外の Web サイトに言及している場合がありますが、便宜のため記載しただけであり、決してそれらの Web サイトを推奨するものではありません。それらの Web サイトにある資料は、この IBM 製品の資料の一部ではありません。それらの Web サイトは、お客様の責任でご使用ください。

IBM は、お客様が提供するいかなる情報も、お客様に対してなんら義務も負うことのない、自ら適切と信ずる方法で、使用もしくは配布することができるものとします。

本プログラムのライセンス保持者で、(i) 独自に作成したプログラムとその他のプログラム(本プログラムを含む)との間での情報交換、および (ii) 交換された情報の相互利用を可能にすることを目的として、本プログラムに関する情報を必要とする方は、下記に連絡してください。

© Copyright IBM Corp. 1974, 2006 123

Page 144: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

IBM CorporationJ46A/G4555 Bailey AvenueSan Jose, CA 95141-1003U.S.A.

本プログラムに関する上記の情報は、適切な使用条件の下で使用することができますが、有償の場合もあります。

本書で説明されているライセンス・プログラムまたはその他のライセンス資料は、IBM 所定のプログラム契約の契約条項、IBM プログラムのご使用条件、またはそれと同等の条項に基づいて、 IBM より提供されます。

この文書に含まれるいかなるパフォーマンス・データも、管理環境下で決定されたものです。そのため、他の操作環境で得られた結果は、異なる可能性があります。一部の測定が、開発レベルのシステムで行われた可能性がありますが、その測定値が、一般に利用可能なシステムのものと同じである保証はありません。さらに、一部の測定値が、推定値である可能性があります。実際の結果は、異なる可能性があります。お客様は、お客様の特定の環境に適したデータを確かめる必要があります。

IBM 以外の製品に関する情報は、その製品の供給者、出版物、もしくはその他の公に利用可能なソースから入手したものです。IBM は、それらの製品のテストは行っておりません。したがって、他社製品に関する実行性、互換性、またはその他の要求については確証できません。 IBM 以外の製品の性能に関する質問は、それらの製品の供給者にお願いします。

IBM の将来の方向または意向に関する記述については、予告なしに変更または撤回される場合があり、単に目標を示しているものです。

本書はプランニング目的としてのみ記述されています。記述内容は製品が使用可能になる前に変更になる場合があります。

本書には、日常の業務処理で用いられるデータや報告書の例が含まれています。より具体性を与えるために、それらの例には、個人、会社、ブランド、あるいは製品などの名前が含まれている場合があります。これらの名称はすべて架空のものであり、名称や住所が類似する会社が実在しているとしても、それは偶然にすぎません。

著作権使用許諾:

本書には、様々なオペレーティング・プラットフォームでのプログラミング手法を例示するサンプル・アプリケーション・プログラムがソース言語で掲載されています。お客様は、サンプル・プログラムが書かれているオペレーティング・プラットフォームのアプリケーション・プログラミング・インターフェースに準拠したアプリケーション・プログラムの開発、使用、販売、配布を目的として、いかなる形式においても、IBM に対価を支払うことなくこれを複製し、改変し、配布することができます。このサンプル・プログラムは、あらゆる条件下における完全なテストを経ていません。従って IBM は、これらのサンプル・プログラムについて信頼性、利便性もしくは機能性があることをほのめかしたり、保証することはできません。お客様は、IBM の アプリケーション・プログラミング・インターフェースに準拠

124 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 145: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

したアプリケーション・プログラムの開発、使用、販売、配布を目的として、いかなる形式においても、IBM に対価を支払うことなくこれを複製し、改変し、配布することができます。

それぞれの複製物、サンプル・プログラムのいかなる部分、またはすべての派生的創作物にも、次のように、著作権表示を入れていただく必要があります。

© (お客様の会社名) (西暦年). このコードの一部は、IBM Corp. のサンプル・プログラムから取られています。 © Copyright IBM Corp. _年を入れる_. All rights

reserved.

この情報をソフトコピーでご覧になっている場合は、写真やカラーの図表は表示されない場合があります。

プログラミング・インターフェース情報この節の目的は、アプリケーション・プログラマーが IMS アプリケーション・プログラムを作成するのを支援することです。本書は主として、IMS が提供する汎用プログラミング・インターフェースとそれに関連する情報を記述しています。

汎用プログラミング・インターフェースにより、お客様が IMS のサービスを使用するプログラムを作成することができます。

しかしながら、本書は、IMS が提供するプロダクト・センシティブ・プログラミング・インターフェースとそれに関連する情報も記述しています。

プロダクト・センシティブ・プログラミング・インターフェースによって、IMS の診断、変更、モニター、修復、調整、またはチューニングなどのタスクを実行するためにカスタマー・インストールができるようになります。これらのインターフェースを使用すると、IBM のソフトウェア製品の詳細設計やそのインプリメンテーションに対する依存関係が発生します。このためプロダクト・センシティブ・プログラミング・インターフェースは上記の特別な目的にのみ使用してください。詳細設計やその実現方法に依存しているので、このようなインターフェースを使用したプログラムは、新しい製品のリリース、バージョンを実行するとき、または保守サービスの結果として、変更が必要になることがあります。

プロダクト・センシティブ・プログラミング・インターフェースとそれに関連するガイダンス情報は、章またはセクションの始まりの文によって、あるいは下記のマーク付けによって、その出現箇所を識別できます。

プロダクト・センシティブ・プログラミング・インターフェースおよび関連するガイダンス情報

特記事項 125

Page 146: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

商標以下は、米国およびその他の国における IBM Corporation の商標です。

BookManager

CICS

DataPropagator

DB2

DB2 Universal Database

IBM

IMS

IMS/ESA

MVS

NetView

OS/390

QMF

Tivoli

WebSphere

z/OS

Java およびすべての Java 関連の商標およびロゴは、Sun Microsystems, Inc. の米国およびその他の国における商標または登録商標です。

他の会社名、製品名およびサービス名等はそれぞれ各社の商標です。

126 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 147: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

参考文献この参考文献リストには、IMS 第 9 版 ライブラリーのすべての資料が含まれます。

CICS Transaction Server for z/OS V2.3 CICS アプリケーション・プログラミング・ガイド、SC88-9630

CICS Transaction Server for z/OS V2.3 CICS アプリケーション・プログラミング・リファレンス、SC88-9631

CICS ファミリー: System/390 CICS からの通信、SC88-9085

IMS 第 9 版のライブラリー

表題 頭字語 資料番号IMS 第 9 版: 管理の手引き :

データベース・マネージャーADB SD88-6544

IMS 第 9 版: 管理の手引き :

システムAS SD88-6545

IMS 第 9 版: 管理の手引き :

トランザクション・マネージャー

ATM SD88-6546

IMS 第 9 版: アプリケーション・プログラミング : データベース・マネージャー

APDB SD88-6547

IMS 第 9 版: アプリケーション・プログラミング: 設計の手引き

APDG SD88-6548

IMS 第 9 版: アプリケーション・プログラミング: EXEC

DLI コマンド (CICS およびIMS)

APCICS SD88-6549

IMS 第 9 版: アプリケーション・プログラミング: トランザクション・マネージャー

APTM SD88-6550

IMS 第 9 版: Base Primitive

Environment の手引きおよび解説書

BPE SD88-6551

IMS 第 9 版: コマンド解説書

CR SD88-6552

IMS 第 9 版: Common Queue

Server の手引きおよび解説書CQS SD88-6553

IMS 第 9 版: Common

Service Layer の手引きおよび解説書

CSL SD88-6554

表題 頭字語 資料番号IMS 第 9 版: カスタマイズの手引き

CG SD88-6555

IMS 第 9 版: データベース・リカバリー管理 (DBRC)

の手引きおよび解説書

DBRC SD88-6556

IMS Version 9: Diagnosis

Guide and Reference

DGR LY37-3203

IMS Version 9: Failure

Analysis Structure Tables

(FAST) for Dump Analysis

FAST LY37-3204

IMS 第 9 版: IMS Connect

手引きおよび解説書CT SD88-6568

IMS 第 9 版: IMS Java 手引きおよび解説書

JGR SD88-6557

IMS 第 9 版: インストール第 1 巻: インストール検証

IIV GD88-6558

IMS 第 9 版: インストール第 2 巻: システム定義および調整

ISDT GD88-6559

IMS Version 9: Master Index

and Glossary

MIG SC18-7826

IMS 第 9 版: メッセージおよびコード 第 1 巻

MC1 GD88-6560

IMS 第 9 版: メッセージおよびコード 第 2 巻

MC2 GD88-6561

IMS 第 9 版: Open

Transaction Manager Access

手引きおよび解説書

OTMA SD88-6562

IMS 第 9 版: オペレーション・ガイド

OG SD88-6563

IMS 第 9 版: リリース計画の手引き

RPG GD88-6564

IMS 第 9 版: コマンド要覧 SOC SD88-6565IMS 第 9 版: ユーティリティー解説書: データベース・マネージャーおよびトランザクション・マネージャー

URDBTM SD88-6566

IMS 第 9 版: ユーティリティー解説書: システム

URS SD88-6567

© Copyright IBM Corp. 1974, 2006 127

Page 148: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

補足資料

表題 資料番号IMS Connector for Java 2.2.2 and

9.1.0.1 Online Documentation for

WebSphere Studio Application Developer

Integration Edition 5.1.1

SC09-7869

IMS Version 9 Fact Sheet GC18-7697IMS Version 9: Licensed Program

Specifications

GC18-7825

資料コレクション

表題 フォーマット

資料番号

IMS Version 9 Softcopy Library CD LK3T-7213IMS Favorites CD LK3T-7144Licensed Bill of Forms (LBOF):

IMS Version 9 Hardcopy and

Softcopy Library

ハードコピーおよび CD

LBOF-7789

Unlicensed Bill of Forms

(SBOF): IMS Version 9

Unlicensed Hardcopy Library

ハードコピー

SBOF-7790

OS/390 Collection CD SK2T-6700z/OS Software Products

Collection

CD SK3T-4270

z/OS and Software Products

DVD Collection

DVD SK3T-4271

このライブラリーに載っているアクセシビリティー関連の資料

表題 資料番号z/OS V1R1.0 TSO/E 入門 SA88-8632z/OS V1R5.0 TSO/E ユーザーズ・ガイド

SA88-8638

z/OS V1R5.0 対話式システム生産性向上機能 (ISPF) ユーザーズ・ガイド 第1 巻

SC88-8965

128 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 149: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

索引日本語, 数字, 英字, 特殊文字の順に配列されています。なお, 濁音と半濁音は清音と同等に扱われています。

[ア行]アクセシビリティー xvi

キーボード xvii

ショートカット・キー xvii

アセンブラー言語入出力域 13

DL/I コマンド・レベルのサンプル 16

アセンブラー言語プログラム変数名、必須 8

DIB フィールド 8

アプリケーション・インターフェース・ブロック (AIB)

サポートされるコマンド 7

制約事項 7

AIB マスク 7

アプリケーション・サンプル、サブセット・ポインター 105

アプリケーション・プログラム、IFP 38

維持、データベース保全性の 97

異常終了 10

異常終了の回避 78

位置 (POS) コマンドオプション 68

形式 67

使用法 68

制約事項 69

説明 67

探索、最後に挿入された順次従属セグメントの 115

探索、特定の順次従属セグメントの 114

フリー・スペースの識別 115

DEDB を用いて 114

EXEC DLI コマンド形式 67

一覧、EXEC DLI コマンドの 40

一般的なプログラミングの指針 15

移動、サブセット・ポインターの前方への 108

医療データベースの例セグメント 3

説明 3

インターフェース・ブロック、DL/I 2

オーバーライド、PROCESS ステートメント 34

オーバーラップ、ストレージ 12

置き換え (REPL) コマンドオプション 69

形式 69

使用法 70

制約事項 73

説明 69

置き換え (REPL) コマンド (続き)

例 71, 72

置き換え、セグメントの 69

オプションACCEPT コマンド 78

CHKP (チェックポイント) コマンド 79

CMPAT 38

DEQ (デキュー) コマンド 80

DLET (削除) コマンド 42

GN (Get Next) コマンド 45

GNP (Get Next in Parent) コマンド 50

GU (Get Unique) コマンド 56

ISRT (挿入) コマンド 62

LOAD コマンド 81

LOCKCLASS 80

LOG コマンド 82

MOVENEXT 108

P 処理 116

POS (位置) コマンド 68

QUERY コマンド 83

REFRESH コマンド 84

REPL (置き換え) コマンド 69

RETRIEVE コマンド 73

ROLB (ロールバック) コマンド 84

ROLL コマンド 85

ROLS (SETS または SETU へのロールバック) コマンド86

SCHD (スケジュール) コマンド 75

SETS (バックアウト・ポイント設定) コマンド 88

SETU (バックアウト・ポイントの無条件設定) コマンド89

STAT (統計) コマンド 91

SYMCHKP (シンボリック・チェックポイント) コマンド91

TERM (終了) コマンド 76

XRST (拡張再始動) コマンド 94

オプション、サブセット・ポインターのGETFIRST 106

MOVENEXT 108

SET 109

SETCOND 111

SETZERO 108

オンライン・プログラム、コマンド・レベルのサンプルアセンブラー 16

C 28

COBOL 20

PL/I 24

© Copyright IBM Corp. 1974, 2006 129

Page 150: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

[カ行]階層データベースの例、医療 3

回避、異常終了の 78

拡張再始動 (XRST) コマンドオプション 94

形式 93

使用法 95

制約事項 95

説明 93

例 95

確立、データベース内の開始位置の 55

可用性の強化、データ 121

キーワード、SYSSERVE 77

キー・フィードバック域コマンド・レベル・プログラム 11

DIB 内の長さフィールド 11

基本チェックポイント説明 78

発行 98

許可コマンド、EXEC DLI 39

形式ACCEPT コマンド 78

CHKP (チェックポイント) コマンド 78

DEQ (デキュー) コマンド 80

DLET (削除) コマンド 42

GN (Get Next) コマンド 43

GNP (Get Next in Parent) コマンド 49

GU (Get Unique) コマンド 55

ISRT (挿入) コマンド 61

LOAD コマンド 81

LOG コマンド 82

POS (位置) コマンド 67

PSB 39

QUERY コマンド 83

REFRESH コマンド 84

REPL (置き換え) コマンド 69

RETRIEVE コマンド 73

ROLB (ロールバック) コマンド 84

ROLL コマンド 85

ROLS (SETS または SETU へのロールバック) コマンド86

SCHD (スケジュール) コマンド 75

SETS (バックアウト・ポイント設定) コマンド 88

SETU (バックアウト・ポイントの無条件設定) コマンド89

STAT (統計) コマンド 90

SYMCHKP (シンボリック・チェックポイント) コマンド91

TERM (終了) コマンド 76

XRST (拡張再始動) コマンド 93

検索最後に挿入した順次従属セグメントの位置 67

従属セグメント、順次 49

従属セグメントの位置 67

セグメント、順次 43

検索 (続き)

特定のセグメント 55

構造小 13

大 13

高速機能データベース、処理 101

DEDB を使用したサブセット・ポインター 101

P (位置) 処理オプション 116

高速処理データベース参照: DEDB (高速処理データベース)

構文図読み方 xi

効率的なプログラム設計 15

超える、DEDB の処理時に作業単位 (UOW) 境界を 116

固定長文字ストリング 13

コマンドシステム・サービス 77

シンボリック・チェックポイント 91

EXEC DLI

一覧 40

ACCEPT 78

CHKP (チェックポイント) 78

DEQ (デキュー) 80

DLET (削除) 41

GN (Get Next) 43

GNP (Get Next in Parent) 49

GU (Get Unique) 55

ISRT (挿入) 61

LOAD 81

LOG 82

POS (位置) 67

QUERY 82

REFRESH 83

REPL (置き換え) 69

RETRIEVE 73

ROLB (ロールバック) 84

ROLL 85

ROLS (SETS または SETU へのロールバック) 86

SCHD (スケジュール) 75

SETS (バックアウト・ポイント設定) 88

SETU (バックアウト・ポイントの無条件設定) 89

STAT (統計) 90

SYMCHKP (シンボリック・チェックポイント) 91

TERM (終了) 76

XRST (拡張再始動) 93

SCHD PSB 27

コマンド、パス 72

コマンド言語変換プログラム、CICS 34

コマンド・レベル・プログラムキー・フィードバック域の定義 11

サンプルアセンブラー言語 16

C 28

COBOL 20

PL/I 24

130 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 151: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

コマンド・レベル・プログラム (続き)

状況コードの検査 9

入出力域、定義 12

呼び出しレベル・プログラムとの比較コマンドおよび呼び出し 118

コマンド・コードおよびオプション 119

DIB (DL/I インターフェース・ブロック) 8

EXEC DLI コマンドの構文 39

EXEC DL/I プログラムの実行準備 34

IMS および CICS で使用可能な DL/I 呼び出し 117

コミット、データベース変更の 2

コミット、ユーザー・プログラムによるデータベースへの変更97

コンパイラー、COBOL 20

コンパイル、オプションの、EXEC DLI に指定された 35

[サ行]差異、CICS とコマンド・レベル・バッチまたは BMP プログラムの間の 1

最後に挿入された順次従属セグメント、位置の検索 67

再始動、プログラムの、EXEC DLI XRST コマンドによる 98

再入 19

作業単位 (UOW)

終了、論理 78

DEDB の処理時に境界を超える 116

作業論理単位の終了 78, 91

削除 (DLET) コマンドオプション 42

形式 42

使用法 42

制約事項 43

説明 41

例 43

作成、プログラムのEXEC DLI 実行の 34

EXEC DLI の 15

サブセット・ポインターサンプル・アプリケーション 105

状況コード 113

使用のための準備 104

説明 101

前方への移動 108

リセット 109

DBD、定義 104

GETFIRST オプション 106

MOVENEXT オプション 108

PSB、定義 104

SET オプション 109

SETCOND オプション 111

SETZERO オプション 108

サンプル・アプリケーション、サブセット・ポインター 105

サンプル・プログラム、コマンド・レベルアセンブラー言語 16

C 28

COBOL 20

サンプル・プログラム、コマンド・レベル (続き)

PL/I 24

指針、一般的なプログラミングの 15

システム・サービスコマンドの要約 77

ACCEPT 78

CHKP (チェックポイント) 78

DEQ (デキュー) 80

LOAD 81

LOG 82

QUERY 82

REFRESH 83

ROLB (ロールバック) 84

ROLL 85

ROLS (SETS または SETU へのロールバック) 86

SETS (バックアウト・ポイント設定) 88

SETU (バックアウト・ポイントの無条件設定) 89

STAT (統計) 90

SYMCHKP (シンボリック・チェックポイント) 91

XRST (拡張再始動) 93

システム・ログへの情報の書き込み 82

実行診断機能 7

指定、DB PCB の 86

自動ストレージ 27

従属セグメント検索順次 49

の位置 67

順次検索、最後に挿入したセグメントの位置 67

最後に挿入された従属セグメントの探索 115

特定の従属セグメントの探索 114

フリー・スペースの識別 115

DEDB には 101

従属セグメントの位置、検索 67

終了 (TERM) コマンドオプション 76

形式 76

使用法 76

説明 76

例 77

終了、異常 10

終了、作業論理単位の 78, 91

順次検索従属セグメント 49

セグメント 43

順次従属セグメント検索、最後に挿入したセグメントの位置 67

最後に挿入された従属セグメントの探索 115

特定の従属セグメントの探索 114

フリー・スペースの識別 115

DEDB には 101

POS (位置) コマンド 114

ショートカット・キーキーボード xvii

索引 131

Page 152: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

状況コードコマンド・レベル・プログラムでの検査 9

サブセット・ポインター 113

入手 82

フィールド、DIB の 9

戻り 78

AJ 113

AM 113

BA 9

BC 9

FH 9

FW 9

GA 9

GB 9

GD 9

GE 9, 27, 33

GG 9

GK 9

II 10

LB 10

NI 10

P 処理オプション 116

TG 10

小構造 13

使用法ACCEPT コマンド 78

CHKP (チェックポイント) コマンド 79

DEQ (デキュー) コマンド 80

DLET (削除) コマンド 42

GN (Get Next) コマンド 48

GNP (Get Next in Parent) コマンド 54

GU (Get Unique) コマンド 60

ISRT (挿入) コマンド 65

LOAD コマンド 82

LOG コマンド 82

POS (位置) コマンド 68

QUERY コマンド 83

REFRESH コマンド 84

REPL (置き換え) コマンド 70

RETRIEVE コマンド 74

ROLB (ロールバック) コマンド 84

ROLL コマンド 85

ROLS (SETS または SETU へのロールバック) コマンド87

SCHD (スケジュール) コマンド 76

SETS (バックアウト・ポイント設定) コマンド 88

SETU (バックアウト・ポイントの無条件設定) コマンド90

STAT (統計) コマンド 91

SYMCHKP (シンボリック・チェックポイント) コマンド92

TERM (終了) コマンド 76

XRST (拡張再始動) コマンド 95

情報の書き込み、システム・ログへの 82

除去、セグメントおよびその従属 41

処理高速機能、P(位置) オプション 116

DEDB 101

身体障害 xvi

シンボリック・チェックポイント (SYMCHKP) コマンドオプション 91

形式 91

再始動 98

使用法 92

制約事項 93

説明 91

例 93

XRST 98

スケジュール (SCHD) コマンドオプション 75

形式 75

使用法 76

説明 75

例 76

ストレージ・オーバーラップ 12

制約事項入出力域 12

入出力域、PL/I 13

AIB 7

CHKP (チェックポイント) コマンド 80

DEQ (デキュー) コマンド 81

DIB ラベル 8

DLET (削除) コマンド 43

GN (Get Next) コマンド 49

GNP (Get Next in Parent) コマンド 55

GU (Get Unique) コマンド 61

ISRT (挿入) コマンド 67

LOG コマンド 82

POS (位置) コマンド 69

QUERY コマンド 83

REFRESH コマンド 84

REPL (置き換え) コマンド 73

RETRIEVE コマンド 75

ROLB (ロールバック) コマンド 85

ROLL コマンド 86

ROLS (SETS または SETU へのロールバック) コマンド87, 88

SETS (バックアウト・ポイント設定) コマンド 89

SETU (バックアウト・ポイントの無条件設定) コマンド90

SYMCHKP (シンボリック・チェックポイント) コマンド93

XRST (拡張再始動) コマンド 95

セグメント医療データベースの例 3

置き換え 69

およびその従属、除去 41

検索、特定の 55

順次検索 43

順次従属検索、最後に挿入したセグメントの位置 67

132 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 153: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

セグメント (続き)

順次従属 (続き)

最後に挿入された従属セグメントの探索 115

特定の従属セグメントの探索 114

フリー・スペースの識別 115

DEDB には 101

追加、データベースへの 61

追加、1 つ順次に 81

名前フィールド、DIB (DL/I インターフェース・ブロック) 10

リリース 80

レベル番号フィールド 11

連結キー 11

セグメントの従属、除去 41

設計効率、プログラム 15

接続配列 13

設定、バックアウト・ポイントの無条件 89

DL/I 88

セット、サブセット・ポインターの条件付きでの 111

ゼロへの 108

挿入 (ISRT) コマンドオプション 62

形式 61

使用法 65

制約事項 67

説明 61

挿入規則 66

例 66

[タ行]大構造 13

代替 PCB 37

探索最後に挿入された順次依存従属セグメント 115

特定の順次従属セグメント 114

チェックポイント (CHKP)

コマンドオプション 79

形式 78

使用法 79

制約事項 80

説明 78

説明、バッチ・プログラムまたは BMP プログラム 98

発行 2, 78

バッチ・プログラムまたは BMP プログラムでの出し方98

例 79

シンボリック、説明 98

EXEC DLI コマンド 98

基本 98

現在位置 98

中間バックアウト・ポイント 99

調整可能な文字ストリング 13

直接従属セグメント、 DEDB には 101

追加セグメント、順次 81

セグメント、データベースへの 61

データ可用性の強化 121

データベース確立、開始位置の 55

可用性状況コード、受け取り 121

情報の入手 121

管理者 4

記述名フィールド、DIB (DL/I インターフェース・ブロック) 11

処理、高速機能の 101

タイプGSAM 11

HDAM 11

HIDAM 11

HISAM 11

HSAM 11

INDEX 11

SHSAM 11

判別、現行位置 73

変更内容、コミット 2

編成フィールド、DIB (DL/I インターフェース・ブロック) 11

保全性、維持 97

リカバリー 97

リカバリー、計画チェックポイント、取り方 98

チェックポイント、CHKP コマンドの 98

バックアウト、データベース変更の 98

プログラムの再始動、XRST コマンド 98

例、医療階層 3

データベース内の位置、現行の判別 73

データベース内の開始位置の確立 55

データベース内の現行位置の判別 73

データベースのリカバリー 97

定義、IMS に対するアプリケーション・プログラム・エレメントのキー・フィードバック域 11

入出力域 12

AIB 7

DIB 8

デキュー (DEQ) コマンドオプション 80

形式 80

使用法 80

制約事項 81

説明 80

例 80

統計 (STAT) コマンドオプション 91

形式 90

使用法 91

説明 90

索引 133

Page 154: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

統計 (STAT) コマンド (続き)

例 91

統計、IMS データベースの入手 90

動的なバックアウト、変更の 84, 85

動的バックアウト 98

特定のセグメントの検索 55

トランザクション・マネージャー 39

[ナ行]入手最新情報、DIB からの 83

状況コード 82

IMS データベース統計 90

入手、IMS データベース統計の 90

入出力 PCB 37

入出力域アセンブラー言語 13

記号 CHKP 98

コーディング 12

コマンド・レベル・プログラム 12

制約事項 12

COBOL 12

DL/I 2

PL/I 13

XRST 98

[ハ行]配列、接続 13

パス・コマンド 72

バックアウトデータベース変更 98, 99

動的変更 84

バックアウト・ポイント設定 88

中間 99

無条件設定 89

バックアウト・ポイント設定 (SETS) コマンドオプション 88

形式 88

使用法 88

制約事項 89

説明 88

例 89

バックアウト・ポイントの無条件設定 (SETU) コマンドオプション 89

形式 89

使用法 90

制約事項 90

説明 89

例 90

発行拡張再始動 93

基本チェックポイント 78

発行 (続き)

チェックポイント、バッチまたは BMP プログラムの 97

バッチ・プログラムコマンド・レベルのサンプルアセンブラー 16

C 28

COBOL 20

PL/I 24

発行、チェックポイントの 97

バッチ・メッセージ処理 (BMP) プログラム発行、チェックポイントの 97

PCB 38

パラメーターBKO の実行 85

CHKPT=EOV 79

EIBREG 20

RCREG 20

RULES 63, 66

判別、データベース内の現行位置 73

比較、EXEC DLI のオプション、コマンド・コードでの 119

コマンド、DL/I 呼び出しと 118

標準ヘッダー・ファイル、C コード 33

フィールド変更、セグメントの値 69

DIB の 8

フリー・スペースの識別 115

プログラミングの指針、一般的な 15

プログラム入り口 2

設計効率 15

プログラム、BMP 38

変換、EXEC DLI プログラムの 34

変換プログラムオプション、EXEC DLI に必要な 34

バージョン、DIB (DL/I インターフェース・ブロック) 9

COBOL II 34

z/OS & VM 34

変更、セグメントのフィールドの値 69

変数名、必須 8

ポインター、サブセットサンプル・アプリケーション 105

状況コード 113

使用のための準備 104

説明 101

DBD、定義 104

GETFIRST オプション 106

MOVENEXT オプション 108

PSB、定義 104

SET オプション 109

SETCOND オプション 111

SETZERO オプション 108

[マ行]無条件設定、バックアウト・ポイントの 89

134 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 155: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

文字ストリング固定長 13

調整可能な 13

戻り、状況コードの 78

[ヤ行]呼び出しレベル・プログラムコマンド・レベル・プログラムとの比較コマンドおよび呼び出し 118

コマンド・コードおよびオプション 119

IMS および CICS コマンド・レベルで使用可能な DL/I 呼び出し 117

[ラ行]リカバリー EXEC DLI コマンド基本 CHKP 98

SYMCHKP 98

XRST 98

リセット、サブセット・ポインターの 109

リソース、解放 2

リリースセグメント 80

リソース 2

リンク・エディット、EXEC DLI の 35

リンケージ・エディター・オプション、EXEC DLI に指定された 35

例ACCEPT コマンド 78

CHKP (チェックポイント) コマンド 79

DEQ (デキュー) コマンド 80

DLET (削除) コマンド 43

GN (Get Next) コマンド 48

GNP (Get Next in Parent) コマンド 54

GU (Get Unique) コマンド 60

ISRT (挿入) コマンド 66

LOAD コマンド 82

LOG コマンド 82

QUERY コマンド 83

REFRESH コマンド 84

REPL (置き換え) 72

REPL (置き換え) コマンド 71

RETRIEVE コマンド 74

ROLB (ロールバック) コマンド 85

ROLL コマンド 86

ROLS (SETS または SETU へのロールバック) コマンド87

SCHD (スケジュール) コマンド 76

SETS (バックアウト・ポイント設定) コマンド 89

SETU (バックアウト・ポイントの無条件設定) コマンド90

STAT (統計) コマンド 91

SYMCHKP (シンボリック・チェックポイント) コマンド93

例 (続き)

TERM (終了) コマンド 77

XRST (拡張再始動) コマンド 95

レベル番号フィールド、DIB 内の 11

連結キー、セグメント 11

ロールバック (ROLB) コマンドオプション 84

形式 84

使用法 84

制約事項 85

説明 84

例 85

AACCEPT コマンドオプション 78

形式 78

システム・サービス・コマンド 77

使用法 78

説明 78

例 78

AIB (アプリケーション・インターフェース・ブロック)

サポートされるコマンド 7

制約事項 7

AIB マスク 7

AJ 状況コード 113

AM 状況コード 113

AMODE(31) 35

BBA 状況コード 9

BC 状況コード 9

BILLING セグメント 5

BKO 実行パラメーター 85

BMP (バッチ・メッセージ処理) プログラム発行、チェックポイントの 97

PCB 38

CC コード標準ヘッダー・ファイル 33

C プログラム変数名、必須 8

DIB フィールド 8

DL/I コマンド・レベルのサンプル 28

CHKP (チェックポイント)

コマンドオプション 79

形式 78

使用法 79

制約事項 80

説明 78

説明、バッチ・プログラムまたは BMP プログラム 98

索引 135

Page 156: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

CHKP (チェックポイント) (続き)

コマンド (続き)

発行 2, 78

バッチ・プログラムまたは BMP プログラムでの出し方98

例 79

シンボリック、説明 98

EXEC DLI コマンド 98

基本 98

現在位置 98

CHKPT=EOV パラメーター 79

CICS

コマンド言語変換プログラム 34

トランザクション・サーバー 3

HANDLE ABEND コマンド 10

CMPAT オプション 38

COBOL

コンパイラー 20

入出力域 12

プログラム変数名、必須 8

DIB フィールド 8

DL/I コマンド・レベルのサンプル 20

II 変換プログラム 34

OS/VS 23

V4 23

DDB PCB

指定 86

定義 37

DBA 4

DBCTL 機能データ可用性 121

ACCEPT コマンド 121

QUERY コマンド 121

REFRESH コマンド 121

ROLS (SETS または SETU へのロールバック) コマンド99

SETS (バックアウト・ポイント設定) コマンド 99

DBD、サブセット・ポインターの定義 104

DEDB (高速処理データベース)

超える、処理時に作業単位 (UOW) 境界を 116

処理概説 101

サブセット・ポインター 101

POS (位置) コマンド 114

DEQ (デキュー) コマンドオプション 80

形式 80

使用法 80

制約事項 81

説明 80

例 80

DFHEIENT 20

DFHEIRET 20

DFHEISTG 19

DIB (DL/I インターフェース・ブロック)

アクセス情報 8

キー・フィードバック長フィールド 11

構造 8

状況コード・フィールド 9

情報、最新の入手 83

セグメント名フィールド 10

セグメント・レベル・フィールド 11

データベース記述名フィールド 11

データベース編成フィールド 11

フィールド 8

変換プログラムのバージョン 9

ラベル 8

ラベル制約事項 8

DLET (削除) コマンドオプション 42

形式 42

使用法 42

制約事項 43

説明 41

例 43

DLI オプション 34

DL/I

設定、バックアウト・ポイントの 88

データベース、読み取りおよび更新 1

DL/I インターフェース・ブロック参照: DIB (DL/I インターフェース・ブロック)

EEIBREG パラメーター 20

EXEC DLI

オプション、サブセット・ポインターで使用する 105

コマンドACCEPT 78

CHKP (チェックポイント) 78

DEQ (デキュー) 80

DLET (削除) 41

GN (Get Next) 43

GNP (Get Next in Parent) 49

GU (Get Unique) 55

ISRT (挿入) 61

LOAD 81

LOG 82

POS (位置) 67

QUERY 82

REFRESH 83

REPL (置き換え) 69

RETRIEVE 73

ROLB (ロールバック) 84

ROLL 85

ROLS (SETS または SETU へのロールバック) 86

SCHD (スケジュール) 75

SETS (バックアウト・ポイント設定) 88

136 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 157: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

EXEC DLI (続き)

SETU (バックアウト・ポイントの無条件設定) 89

STAT (統計) 90

SYMCHKP (シンボリック・チェックポイント) 91

TERM (終了) 76

XRST (拡張再始動) 93

コマンドの構文 39

コンパイラー・オプション、必須 35

使用可能なコマンド 39

プログラム一覧 40

プログラムの 実行準備 34

変換プログラム・オプション、必須 34

リカバリー・コマンドCHKP (チェックポイント) 98

SYMCHKP (シンボリック・チェックポイント) 98

XRST (拡張再始動) 98

リンケージ・エディター、必須 35

EXEC DLI コマンドの構文 39

FFH 状況コード 9

FIRST 挿入規則 66

FW 状況コード 9

GGA 状況コード 9

GB 状況コード 9

GC 状況コード 116

GD 状況コード 9

GE 状況コード 9, 27, 33

Get Next (GN) コマンドオプション 45

形式 43

使用法 48

制約事項 49

説明 43

例 48

Get Next in Parent (GNP) コマンドオプション 50

形式 49

使用法 54

制約事項 55

説明 49

例 54

Get Unique (GU) コマンドオプション 56

形式 55

使用法 60

制約事項 61

説明 55

例 60

GETFIRST オプションサブセットの中の最初のセグメントの検索 106

GETFIRST オプション (続き)

例 106

GG 状況コード 9

GK 状況コード 9

GN (Get Next) コマンドオプション 45

形式 43

使用法 48

制約事項 49

説明 43

例 48

GNP (Get Next in Parent) コマンドオプション 50

形式 49

使用法 54

制約事項 55

説明 49

例 54

GSAM PCB 38

GSAM データベース 11

GU (Get Unique) コマンドオプション 56

形式 55

使用法 60

制約事項 61

説明 55

例 60

HHANDLE ABEND コマンド、CICS 10

HDAM データベース 11

HERE 挿入規則 66

HIDAM データベース 11

HISAM データベース 11

HOUSHOLD セグメント 5

HSAM データベース 11

IIBM COBOL for z/OS & VM 23

IFP アプリケーション・プログラム 38

II 状況コード 10

ILLNESS セグメント 3

IMS データベース統計の入手 90

INDEX データベース 11

ISRT (挿入) コマンドオプション 62

形式 61

使用法 65

制約事項 67

説明 61

挿入規則 66

例 66

索引 137

Page 158: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

LLAST 挿入規則 66

LB 状況コード 10

LOAD コマンドオプション 81

形式 81

使用法 82

説明 81

例 82

LOCKCLASS オプション 80

LOG コマンドオプション 82

形式 82

使用法 82

制約事項 82

説明 82

例 82

MMOVENEXT オプションサブセット・ポインターの前方への移動時の使用 108

例 108

MPP 38

NNI 状況コード 10

OOS/VS COBOL 23

PP 処理オプション 116

PATIENT セグメント 3

PAYMENT セグメント 5

PCB (プログラム連絡ブロック)

アプリケーション・プログラムで、要約 38

代替 37

タイプ 37

PL/I

入出力域 13

プログラム変数名、必須 8

DL/I コマンド・レベルのサンプル 24

POS (位置) コマンドオプション 68

形式 67

使用法 68

制約事項 69

説明 67

探索、最後に挿入された順次従属セグメントの 115

探索、特定の順次従属セグメントの 114

POS (位置) コマンド (続き)

フリー・スペースの識別 115

DEDB を用いて 114

EXEC DLI コマンド形式 67

PROCESS ステートメント・オーバーライド 34

PSB の終了、CICS オンライン・プログラムで 76

PSB のスケジューリング、CICS オンライン・プログラムの75

PSB (プログラム仕様ブロック)

形式 39

サブセット・ポインターの定義 104

CICS オンライン・プログラムでの終了 76

スケジューリング 75

PCB のタイプ 37

QQUERY コマンドオプション 83

形式 83

使用法 83

制約事項 83

説明 82

例 83

RRCREG パラメーター 20

REFRESH コマンド 121

オプション 84

形式 84

使用法 84

制約事項 84

説明 83

例 84

REPL (置き換え) コマンドオプション 69

形式 69

使用法 70

制約事項 73

説明 69

例 71, 72

RETRIEVE コマンドオプション 73

形式 73

使用法 74

制約事項 75

説明 73

例 74

ROLB (ロールバック) コマンドオプション 84

形式 84

使用法 84

制約事項 85

138 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 159: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

ROLB (ロールバック) コマンド (続き)

説明 84

例 85

ROLL コマンドオプション 85

形式 85

使用法 85

制約事項 86

説明 85

例 86

ROLS (SETS または SETU へのロールバック) コマンドオプション 86

形式 86

使用法 87

制約事項 88

説明 86

バックアウト・ポイント、中間 99

例 87

RULES パラメーター 63, 66

RULES= 66

SSCHD PSB コマンド 20, 27

SCHD (スケジュール) コマンドオプション 75

形式 75

使用法 76

説明 75

例 76

SET オプションリセット、サブセット・ポインターの 109

例 109

SETCOND オプション条件付きでのサブセット・ポインターの設定 111

例 111

SETS (バックアウト・ポイント設定) コマンドオプション 88

形式 88

使用法 88

制約事項 89

説明 88

例 89

SETS または SETU へのロールバック (ROLS) コマンドオプション 86

形式 86

使用法 87

制約事項 88

説明 86

例 87

SETU (バックアウト・ポイントの無条件設定) コマンドオプション 89

形式 89

使用法 90

制約事項 90

説明 89

SETU (バックアウト・ポイントの無条件設定) コマンド (続き)

例 90

SETZERO オプションサブセット・ポインターのゼロへの設定 108

例 108

SHSAM データベース 11

STAT (統計) コマンドオプション 91

形式 90

使用法 91

説明 90

例 91

SYMCHKP (シンボリック・チェックポイント) コマンドオプション 91

形式 91

現在位置 92

再始動 98

使用法 92

制約事項 93

説明 91, 98

例 93

XRST 98

SYSSERVE キーワード 77

TTERM (終了) コマンドオプション 76

形式 76

使用法 76

説明 76

例 77

TG 状況コード 10

Transaction Server、CICS 7

TREATMNT セグメント 4

UUOW (作業単位)

終了、論理 78

DEDB の処理時に境界を超える 116

VVS COBOL II 23

XXRST (拡張再始動) コマンドオプション 94

形式 93

使用法 95

制約事項 95

説明 93

例 95

索引 139

Page 160: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

Zz/OS & VM 34

z/OS & VM 変換プログラム 34

140 アプリケーション・プログラミング: EXEC DLI コマンド (CICS および IMS)

Page 161: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer
Page 162: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

���

プログラム番号: 5655-J38

Printed in Japan

SD88-6549-01

Page 163: アプリケーション・プログラミング EXEC DLI コマ …IBM IMS Batch Terminal Simulator IMS Batch Terminal Simulator IBM IMS Buffer Pool Analyzer IMS Buffer Pool Analyzer

Spineinformation:

��

�IM

Sアプリケーション・プログラミング

:E

XE

CD

LIコマンド

(CIC

Sおよび

IMS)

第9版