254
z/OS TSO/E CLIST SA88-8627-04 (英文原典:SA22-7781-04)

TSO/E CLIST

  • Upload
    others

  • View
    10

  • Download
    2

Embed Size (px)

Citation preview

Page 1: TSO/E CLIST

z/OS

TSO/E CLIST

SA88-8627-04

(英文原典:SA22-7781-04)

���

Page 2: TSO/E CLIST
Page 3: TSO/E CLIST

z/OS

TSO/E CLIST

SA88-8627-04

(英文原典:SA22-7781-04)

���

Page 4: TSO/E CLIST

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

本書は、z/OS バージョン 1 リリース 8 (5694-A01)、および z/OS.e バージョン 1 リリース 8 (5655-G52) に適用されます。また、改訂バージョンで特に断りがない限り、後続のすべてのリリースおよびモディフィケーションにも適用されます。

本書は、SA88-8627-03 (英文原典: SA22-7781-03) の改訂版です。

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

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

マニュアルに関するご意見やご感想を、上記ページよりお送りください。今後の参考にさせていただきます。

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

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

 原 典: SA22–7781–04

z/OS

TSO/E CLISTs

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

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

第1刷 2007.1

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

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

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

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

© Copyright IBM Japan 2007

Page 5: TSO/E CLIST

目次

図 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix

表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi

本書について . . . . . . . . . . . . . . . . . . . . . . . . . xiii本書の対象読者 . . . . . . . . . . . . . . . . . . . . . . . . xiii本書の構成 . . . . . . . . . . . . . . . . . . . . . . . . . . xiii詳細情報について . . . . . . . . . . . . . . . . . . . . . . . . xiv

LookAt を利用したメッセージの説明の検索 . . . . . . . . . . . . . xivIBM health checker for z/OS の使用 . . . . . . . . . . . . . . . . xv

変更の要約 . . . . . . . . . . . . . . . . . . . . . . . . . . xvii

第 1 章 はじめに . . . . . . . . . . . . . . . . . . . . . . . . 1CLIST 言語の機能 . . . . . . . . . . . . . . . . . . . . . . . . 1CLIST のカテゴリー . . . . . . . . . . . . . . . . . . . . . . . 1構造化アプリケーションとしての CLIST . . . . . . . . . . . . . . . 2構造化アプリケーションとしての CLIST . . . . . . . . . . . . . . . 2他の言語で作成されたアプリケーションを管理する CLIST . . . . . . . . 3

第 2 章 CLIST の作成、編集、および実行 . . . . . . . . . . . . . . . 5CLIST データ・セットおよびライブラリー . . . . . . . . . . . . . . . 5CLIST データ・セットの作成および編集 . . . . . . . . . . . . . . . . 6

CLIST データ・セットの属性 . . . . . . . . . . . . . . . . . . . 6CLIST データ・セットのコピーに関する考慮事項 . . . . . . . . . . . 7

CLIST の実行 . . . . . . . . . . . . . . . . . . . . . . . . . . 7CLIST へのパラメーターの引き渡し . . . . . . . . . . . . . . . . 9

暗黙的実行のための CLIST ライブラリーの割り振り . . . . . . . . . . . 9ALTLIB コマンドを用いた代替 CLIST ライブラリーの指定 . . . . . . . 10ALTLIB コマンドの例 . . . . . . . . . . . . . . . . . . . . . 11

第 3 章 CLIST の作成 - 構文および規則 . . . . . . . . . . . . . . . 13CLIST ステートメントの概要 . . . . . . . . . . . . . . . . . . . 13構文規則 . . . . . . . . . . . . . . . . . . . . . . . . . . . 14区切り文字 . . . . . . . . . . . . . . . . . . . . . . . . . 14継続記号 . . . . . . . . . . . . . . . . . . . . . . . . . . 14大文字の使用. . . . . . . . . . . . . . . . . . . . . . . . . 15フォーマット設定 . . . . . . . . . . . . . . . . . . . . . . . 15長さ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15ラベル . . . . . . . . . . . . . . . . . . . . . . . . . . . 15コメント . . . . . . . . . . . . . . . . . . . . . . . . . . 15CLIST でサポートされる文字 . . . . . . . . . . . . . . . . . . 16

TSO/E コマンドおよび JCL ステートメント . . . . . . . . . . . . . . 17TSO/E コマンド . . . . . . . . . . . . . . . . . . . . . . . 17JCL ステートメント . . . . . . . . . . . . . . . . . . . . . . 17

演算子および式 . . . . . . . . . . . . . . . . . . . . . . . . . 18計算の順序 . . . . . . . . . . . . . . . . . . . . . . . . . 19有効な数値の範囲 . . . . . . . . . . . . . . . . . . . . . . . 19

2 バイト文字セット (DBCS) . . . . . . . . . . . . . . . . . . . . 20DBCS 区切り文字 . . . . . . . . . . . . . . . . . . . . . . . 20

© Copyright IBM Corp. 1988, 2006 iii

Page 6: TSO/E CLIST

DBCS の制約事項 . . . . . . . . . . . . . . . . . . . . . . . 20

第 4 章 記号変数の使用 . . . . . . . . . . . . . . . . . . . . . 21記号変数とは. . . . . . . . . . . . . . . . . . . . . . . . . . 21有効な変数名. . . . . . . . . . . . . . . . . . . . . . . . . 22有効な変数の値 . . . . . . . . . . . . . . . . . . . . . . . . 23

記号変数の定義および値の割り当て . . . . . . . . . . . . . . . . . 23SET ステートメントを使用する場合 . . . . . . . . . . . . . . . . 23READ ステートメントを使用する場合 . . . . . . . . . . . . . . . 24PROC ステートメントを使用する場合 . . . . . . . . . . . . . . . 24例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

変数の拡大使用 . . . . . . . . . . . . . . . . . . . . . . . . . 27記号変数の結合 . . . . . . . . . . . . . . . . . . . . . . . . 28CLIST 内において先行スペースを保持するための変数の使用 . . . . . . . 28変数で使用可能なストレージの量の拡大. . . . . . . . . . . . . . . 29記号変数のネスト . . . . . . . . . . . . . . . . . . . . . . . 29

第 5 章 制御変数の使用 . . . . . . . . . . . . . . . . . . . . . 33制御変数の使用の概要 . . . . . . . . . . . . . . . . . . . . . . 34現在の日付および時刻の入手 . . . . . . . . . . . . . . . . . . . . 38

&SYSDATE、&SYSSDATE、および &SYSJDATE . . . . . . . . . . . 39&SYS4DATE、&SYS4SDATE、および &SYS4JDATE . . . . . . . . . . 39&SYSTIME および &SYSSTIME . . . . . . . . . . . . . . . . . 40

端末特性の入手 . . . . . . . . . . . . . . . . . . . . . . . . . 40&SYSTERMID . . . . . . . . . . . . . . . . . . . . . . . . 40&SYSLTERM および &SYSWTERM . . . . . . . . . . . . . . . . 40

ユーザーに関する情報の入手 . . . . . . . . . . . . . . . . . . . . 41&SYSUID . . . . . . . . . . . . . . . . . . . . . . . . . . 41&SYSPREF . . . . . . . . . . . . . . . . . . . . . . . . . 41&SYSPROC . . . . . . . . . . . . . . . . . . . . . . . . . 41

システムに関する情報の入手 . . . . . . . . . . . . . . . . . . . . 42&SYSCLONE. . . . . . . . . . . . . . . . . . . . . . . . . 42&SYSCPU および &SYSSRV . . . . . . . . . . . . . . . . . . . 42&SYSDFP . . . . . . . . . . . . . . . . . . . . . . . . . . 43&SYSHSM. . . . . . . . . . . . . . . . . . . . . . . . . . 43&SYSISPF . . . . . . . . . . . . . . . . . . . . . . . . . . 44&SYSJES . . . . . . . . . . . . . . . . . . . . . . . . . . 44&SYSLRACF . . . . . . . . . . . . . . . . . . . . . . . . . 44&SYSAPPCLU . . . . . . . . . . . . . . . . . . . . . . . . 44&SYSMVS. . . . . . . . . . . . . . . . . . . . . . . . . . 45&SYSNAME . . . . . . . . . . . . . . . . . . . . . . . . . 45&SYSNODE . . . . . . . . . . . . . . . . . . . . . . . . . 46&SYSOPSYS . . . . . . . . . . . . . . . . . . . . . . . . . 46&SYSRACF . . . . . . . . . . . . . . . . . . . . . . . . . 47&SYSPLEX . . . . . . . . . . . . . . . . . . . . . . . . . 47&SYSSECLAB . . . . . . . . . . . . . . . . . . . . . . . . 47&SYSSMS . . . . . . . . . . . . . . . . . . . . . . . . . . 47&SYSSMFID . . . . . . . . . . . . . . . . . . . . . . . . . 48&SYSSYMDEF . . . . . . . . . . . . . . . . . . . . . . . . 48&SYSTSOE . . . . . . . . . . . . . . . . . . . . . . . . . 49

CLIST に関する情報の入手 . . . . . . . . . . . . . . . . . . . . 49&SYSENV . . . . . . . . . . . . . . . . . . . . . . . . . . 49

iv z/OS V1R8.0 TSO/E CLIST

||

Page 7: TSO/E CLIST

&SYSSCAN . . . . . . . . . . . . . . . . . . . . . . . . . 49&SYSICMD . . . . . . . . . . . . . . . . . . . . . . . . . 50&SYSPCMD . . . . . . . . . . . . . . . . . . . . . . . . . 50&SYSSCMD . . . . . . . . . . . . . . . . . . . . . . . . . 50&SYSPCMD と &SYSSCMD の関係 . . . . . . . . . . . . . . . . 50&SYSNEST . . . . . . . . . . . . . . . . . . . . . . . . . 50

CLIST CONTROL ステートメントのオプションの設定 . . . . . . . . . . 50&SYSPROMPT . . . . . . . . . . . . . . . . . . . . . . . . 51&SYSSYMLIST . . . . . . . . . . . . . . . . . . . . . . . . 51&SYSCONLIST . . . . . . . . . . . . . . . . . . . . . . . . 51&SYSLIST . . . . . . . . . . . . . . . . . . . . . . . . . . 52&SYSASIS. . . . . . . . . . . . . . . . . . . . . . . . . . 52&SYSMSG. . . . . . . . . . . . . . . . . . . . . . . . . . 52&SYSFLUSH . . . . . . . . . . . . . . . . . . . . . . . . . 52

ユーザー入力に関する情報の入手 . . . . . . . . . . . . . . . . . . 53&SYSDLM. . . . . . . . . . . . . . . . . . . . . . . . . . 53&SYSDVAL . . . . . . . . . . . . . . . . . . . . . . . . . 53

TSO/E コマンド出力のトラップ . . . . . . . . . . . . . . . . . . . 54&SYSOUTTRAP. . . . . . . . . . . . . . . . . . . . . . . . 54&SYSOUTLINE . . . . . . . . . . . . . . . . . . . . . . . . 54&SYSOUTTRAP および &SYSOUTLINE の使用上の考慮事項 . . . . . . 55

戻りコードおよび理由コードの入手 . . . . . . . . . . . . . . . . . 56&LASTCC . . . . . . . . . . . . . . . . . . . . . . . . . . 56&MAXCC . . . . . . . . . . . . . . . . . . . . . . . . . . 57

TSOEXEC コマンドの結果の入手 . . . . . . . . . . . . . . . . . . 58データ・セット属性の入手. . . . . . . . . . . . . . . . . . . . . 58

LISTDSI ステートメント . . . . . . . . . . . . . . . . . . . . 58

第 6 章 組み込み関数の使用. . . . . . . . . . . . . . . . . . . . 61式のデータ・タイプの判別 - &DATATYPE . . . . . . . . . . . . . . 62算術評価の強制実行 - &EVAL . . . . . . . . . . . . . . . . . . . 63式の長さをバイトで判別 - &LENGTH . . . . . . . . . . . . . . . . 63算術評価の抑止 . . . . . . . . . . . . . . . . . . . . . . . . 64先行ブランクと末尾ブランクおよび先行ゼロの組み込み . . . . . . . . . 64

式の長さをバイトで判別 - &LENGTH . . . . . . . . . . . . . . . . 64二重アンパーサンドの保存 - &NRSTR . . . . . . . . . . . . . . . . 64二重アンパーサンド . . . . . . . . . . . . . . . . . . . . . . 651 つのレベルの記号置換 . . . . . . . . . . . . . . . . . . . . 65JCL ステートメントを含むレコード . . . . . . . . . . . . . . . . 65

文字データの定義 - &STR. . . . . . . . . . . . . . . . . . . . . 66&SYSDATE または &SYSSDATE と &STR の同時使用. . . . . . . . . 66&STR と先行および末尾ブランクの使用 . . . . . . . . . . . . . . 66CLIST ステートメント名と一致するストリングと &STR の同時使用 . . . . 67SYSIN JCL ステートメントを使用して入力を指定するときの &STR の使用 67

サブストリングの定義 - &SUBSTR . . . . . . . . . . . . . . . . . 68サブストリングの定義 - &SYSCSUBSTR . . . . . . . . . . . . . . . 70文字ストリングの大文字への変換 - &SYSCAPS . . . . . . . . . . . . . 70文字ストリングの小文字への変換 - &SYSLC . . . . . . . . . . . . . . 70データ・セットの可用性の判別 - &SYSDSN . . . . . . . . . . . . . . 70文字ストリングの、他の文字ストリング内における位置の確認 - &SYSINDEX 72

DBCS ストリングがある場合の &SYSINDEX の使用 . . . . . . . . . . 73記号置換のレベルの制限 - &SYSNSUB . . . . . . . . . . . . . . . . 73

目次 v

Page 8: TSO/E CLIST

DBCS データの EBCDIC への変換 - &SYSONEBYTE . . . . . . . . . . 74EBCDIC データの DBCS への変換 - &SYSTWOBYTE . . . . . . . . . . 75

第 7 章 CLIST の構造化 . . . . . . . . . . . . . . . . . . . . . 77セレクションの実施 . . . . . . . . . . . . . . . . . . . . . . . 78

IF-THEN-ELSE シーケンス . . . . . . . . . . . . . . . . . . . 78IF-THEN-ELSE シーケンスのネスト . . . . . . . . . . . . . . . . 80SELECT ステートメント . . . . . . . . . . . . . . . . . . . . 80

ループ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82DO-WHILE-END シーケンス . . . . . . . . . . . . . . . . . . . 82DO-UNTIL-END シーケンス . . . . . . . . . . . . . . . . . . . 83反復 DO シーケンス . . . . . . . . . . . . . . . . . . . . . . 84複合 DO シーケンス . . . . . . . . . . . . . . . . . . . . . . 85ループのネスト . . . . . . . . . . . . . . . . . . . . . . . . 86END ステートメントと END コマンドまたはサブコマンドとの区別 . . . . 87

サブプロシージャー . . . . . . . . . . . . . . . . . . . . . . . 88サブプロシージャーの呼び出し . . . . . . . . . . . . . . . . . . 88サブプロシージャーからの情報の戻し . . . . . . . . . . . . . . . 90サブプロシージャー間での変数の共用 . . . . . . . . . . . . . . . 91変数のサブプロシージャーへの限定 . . . . . . . . . . . . . . . . 91サブプロシージャー内で他のステートメントを使用する場合の考慮事項 . . . 92

CLIST のネスト . . . . . . . . . . . . . . . . . . . . . . . . 92エラーまたはアテンション割り込みからの入力スタックの保護 . . . . . . 94グローバル変数 . . . . . . . . . . . . . . . . . . . . . . . . 94ネストされた CLIST の終了 . . . . . . . . . . . . . . . . . . . 95

GOTO ステートメント . . . . . . . . . . . . . . . . . . . . . . 96

第 8 章 端末ユーザーとの通信 . . . . . . . . . . . . . . . . . . . 97ユーザーに入力を促すプロンプト . . . . . . . . . . . . . . . . . . 97

PROC ステートメントによるプロンプト . . . . . . . . . . . . . . 97WRITE および WRITENR ステートメントによるプロンプト . . . . . . . 98TSO/E コマンドによるプロンプト . . . . . . . . . . . . . . . . . 98

端末へのメッセージの書き出し . . . . . . . . . . . . . . . . . . 101WRITE および WRITENR ステートメントの使用 . . . . . . . . . . . 101通知メッセージの表示の制御 . . . . . . . . . . . . . . . . . . 102

端末からの応答の受信 . . . . . . . . . . . . . . . . . . . . . . 102READ ステートメントを使用する場合 . . . . . . . . . . . . . . . 102READDVAL ステートメントの使用 . . . . . . . . . . . . . . . . 106

端末への制御の引き渡し . . . . . . . . . . . . . . . . . . . . . 107TERMIN または TERMING ステートメント後の制御の戻り . . . . . . . 108TERMIN または TERMING ステートメント後の入力 . . . . . . . . . 109

ISPF パネルの使用 . . . . . . . . . . . . . . . . . . . . . . . 110ISPF の制約事項 . . . . . . . . . . . . . . . . . . . . . . . 110ISPF パネルを用いる CLIST の例 . . . . . . . . . . . . . . . . 110

第 9 章 ファイル入出力の実行 . . . . . . . . . . . . . . . . . . 111入出力でサポートされる文字 . . . . . . . . . . . . . . . . . . . 111ファイルのオープン . . . . . . . . . . . . . . . . . . . . . . . 111ファイルのクローズ . . . . . . . . . . . . . . . . . . . . . . . 112ファイルからのレコードの読み取り . . . . . . . . . . . . . . . . . 113ファイルへのレコードの書き込み . . . . . . . . . . . . . . . . . . 113ファイルの更新 . . . . . . . . . . . . . . . . . . . . . . . . 114

vi z/OS V1R8.0 TSO/E CLIST

Page 9: TSO/E CLIST

ファイル終わり処理 . . . . . . . . . . . . . . . . . . . . . . . 115入出力の実行に関する特別な考慮事項 . . . . . . . . . . . . . . . . 115

第 10 章 ATTN および ERROR ルーチンの作成 . . . . . . . . . . . 117アテンション・ルーチンの作成 . . . . . . . . . . . . . . . . . . 117アテンション・ルーチンの取り消し . . . . . . . . . . . . . . . . 118アテンション割り込みからの入力スタックの保護 . . . . . . . . . . . 118アテンション・ルーチンを含む CLIST の例 . . . . . . . . . . . . . 119サブプロシージャーおよびアテンション・ルーチン . . . . . . . . . . 121CLIST アテンション機能 . . . . . . . . . . . . . . . . . . . . 121

エラー・ルーチンの作成 . . . . . . . . . . . . . . . . . . . . . 122エラー・ルーチンの取り消し . . . . . . . . . . . . . . . . . . 122エラーからの入力スタックの保護 . . . . . . . . . . . . . . . . . 123エラー・ルーチンを含む CLIST の例 . . . . . . . . . . . . . . . 123サブプロシージャーおよびエラー・ルーチン . . . . . . . . . . . . 123

第 11 章 CLIST のテストおよびデバッグ . . . . . . . . . . . . . . 127CONTROL ステートメントの診断オプションの使用 . . . . . . . . . . . 127診断出力内のメッセージ . . . . . . . . . . . . . . . . . . . . 128CLIST 内で診断出力をオプションにする方法 . . . . . . . . . . . . 129

CLIST メッセージに関するヘルプの入手 . . . . . . . . . . . . . . . 129CLIST エラー・コードの取得 . . . . . . . . . . . . . . . . . . . 130

第 12 章 CLIST の例 . . . . . . . . . . . . . . . . . . . . . . 135TSO/E コマンドの組み込み - LISTER CLIST . . . . . . . . . . . . . 136ルーチン・タスクの単純化 - DELETEDS CLIST . . . . . . . . . . . . 136ユーザー提供の入力からの算術式の作成 - CALC CLIST . . . . . . . . . 137フロントエンド・プロンプトの使用 - CALCFTND CLIST. . . . . . . . . 137システム・サービスの初期設定および呼び出し - SCRIPTDS CLIST . . . . . 140サブタスクを実行するための CLIST の呼び出し - SCRIPTN CLIST . . . . . 142JCL ステートメントの組み込み - SUBMITDS CLIST . . . . . . . . . . 145&SUBSTR を用いた入力ストリングの分析 - SUBMITFQ CLIST . . . . . . 145プログラムのフォアグラウンド実行およびバックグラウンド実行 - RUNPRICE

CLIST . . . . . . . . . . . . . . . . . . . . . . . . . . . 147オプションの組み込み - TESTDYN CLIST . . . . . . . . . . . . . . 148システム関連タスクの単純化 - COMPRESS CLIST . . . . . . . . . . . 150アプリケーションへのインターフェースの単純化 - CASH CLIST . . . . . . 152入出力を実行するときの &SYSDVAL の使用 - PHONE CLIST. . . . . . . 153SYSPROC へのデータ・セットの割り振り - SPROC CLIST . . . . . . . . 155ISPF ダイアログを使用したフルスクリーン・アプリケーションの作成 -

PROFILE CLIST . . . . . . . . . . . . . . . . . . . . . . . 159LISTDSI 情報を含むデータ・セットの割り振り - EXPAND CLIST . . . . . 170

第 13 章 参照 . . . . . . . . . . . . . . . . . . . . . . . . 173CLIST ステートメントの構文の読み方 . . . . . . . . . . . . . . . . 173ATTN ステートメント . . . . . . . . . . . . . . . . . . . . . . 176CLOSFILE ステートメント . . . . . . . . . . . . . . . . . . . . 177CONTROL ステートメント . . . . . . . . . . . . . . . . . . . . 177DATA-ENDDATA シーケンス . . . . . . . . . . . . . . . . . . . 180DATA PROMPT-ENDDATA シーケンス . . . . . . . . . . . . . . . 180ステートメント . . . . . . . . . . . . . . . . . . . . . . . . 180END ステートメント . . . . . . . . . . . . . . . . . . . . . . 182ERROR ステートメント . . . . . . . . . . . . . . . . . . . . . 182

目次 vii

Page 10: TSO/E CLIST

EXIT ステートメント . . . . . . . . . . . . . . . . . . . . . . 183GETFILE ステートメント . . . . . . . . . . . . . . . . . . . . 184GLOBAL ステートメント . . . . . . . . . . . . . . . . . . . . 185GOTO ステートメント. . . . . . . . . . . . . . . . . . . . . . 186IF-THEN-ELSE シーケンス . . . . . . . . . . . . . . . . . . . . 186LISTDSI ステートメント . . . . . . . . . . . . . . . . . . . . . 187

LISTDSI によって設定される CLIST 変数 . . . . . . . . . . . . . 190戻りコード . . . . . . . . . . . . . . . . . . . . . . . . . 194理由コード . . . . . . . . . . . . . . . . . . . . . . . . . 194

NGLOBAL ステートメント . . . . . . . . . . . . . . . . . . . . 195OPENFILE ステートメント . . . . . . . . . . . . . . . . . . . . 196PROC ステートメント . . . . . . . . . . . . . . . . . . . . . . 197PUTFILE ステートメント. . . . . . . . . . . . . . . . . . . . . 198READ ステートメント . . . . . . . . . . . . . . . . . . . . . . 199READDVAL ステートメント . . . . . . . . . . . . . . . . . . . 199RETURN ステートメント. . . . . . . . . . . . . . . . . . . . . 199SELECT ステートメント . . . . . . . . . . . . . . . . . . . . . 200単純 SELECT . . . . . . . . . . . . . . . . . . . . . . . . 200複合 SELECT . . . . . . . . . . . . . . . . . . . . . . . . 201

SET ステートメント . . . . . . . . . . . . . . . . . . . . . . 202SYSCALL ステートメント . . . . . . . . . . . . . . . . . . . . 203SYSREF ステートメント . . . . . . . . . . . . . . . . . . . . . 204TERMIN および TERMING ステートメント. . . . . . . . . . . . . . 204WRITE および WRITENR ステートメント . . . . . . . . . . . . . . 206END コマンド . . . . . . . . . . . . . . . . . . . . . . . . . 207EXEC コマンド . . . . . . . . . . . . . . . . . . . . . . . . 207

付録. アクセシビリティ . . . . . . . . . . . . . . . . . . . . . 209支援機能の使用 . . . . . . . . . . . . . . . . . . . . . . . . 209ユーザー・インターフェースのキーボード・ナビゲーション . . . . . . . . 209z/OS 情報 . . . . . . . . . . . . . . . . . . . . . . . . . . 209

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

参考文献 . . . . . . . . . . . . . . . . . . . . . . . . . . . 215TSO/E 出版物 . . . . . . . . . . . . . . . . . . . . . . . . . 215関連資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . 215

索引 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

viii z/OS V1R8.0 TSO/E CLIST

Page 11: TSO/E CLIST

1. TSO/E コマンドから成る CLIST の例 . . . . . . . . . . . . . . . . . . . . . . . 22. CLIST が複合 DO シーケンスを実行する方法 . . . . . . . . . . . . . . . . . . . . 863. ネストされた CLIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 934. アテンション・ルーチンを含む CLIST - ALLOCATE CLIST . . . . . . . . . . . . . . 1205. アテンション処理 - HOUSKPNG CLIST . . . . . . . . . . . . . . . . . . . . . . 1216. COPYDATA CLIST. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1257. 診断 CONTROL オプションを含む CLIST の例 . . . . . . . . . . . . . . . . . . . 1288. CLIST からの診断出力の例. . . . . . . . . . . . . . . . . . . . . . . . . . . 1289. CLIST からの診断出力内のエラー・メッセージの例 . . . . . . . . . . . . . . . . . 129

10. LISTER CLIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13611. DELETEDS CLIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13712. CALC CLIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13713. CALCFTND CLIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13914. SCRIPTDS CLIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14115. SCRIPTN CLIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14316. SCRIPTD CLIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14317. OUTPUT CLIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14418. SUBMITDS CLIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14519. SUBMITFQ CLIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14620. RUNPRICE CLIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14821. TESTDYN CLIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14922. COMPRESS CLIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15123. CASH CLIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15324. PHONE CLIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15525. SPROC CLIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15726. PROFILE CLIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16127. 端末特性パネル定義 (XYZABC10) . . . . . . . . . . . . . . . . . . . . . . . . 16328. LOG/LIST 特性パネル定義 (XYZABC20) . . . . . . . . . . . . . . . . . . . . . . 16429. PF キー 1 から 12 パネル定義 (XYZABC30) . . . . . . . . . . . . . . . . . . . . 16630. PF キー 13 から 24 パネル定義 (XYZABC40) . . . . . . . . . . . . . . . . . . . 16831. EXPAND CLIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

© Copyright IBM Corp. 1988, 2006 ix

Page 12: TSO/E CLIST

x z/OS V1R8.0 TSO/E CLIST

Page 13: TSO/E CLIST

1. CLIST ステートメントのカテゴリー . . . . . . . . . . . . . . . . . . . . . . . . 142. 算術演算子、比較演算子、および論理演算子. . . . . . . . . . . . . . . . . . . . . 183. カテゴリー別の制御変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354. 変更可能制御変数 (アルファベット順) . . . . . . . . . . . . . . . . . . . . . . . 365. 変更不可能制御変数 (アルファベット順) . . . . . . . . . . . . . . . . . . . . . . 376. 組み込み関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617. TERMIN ステートメントと TERMING ステートメントの比較. . . . . . . . . . . . . . 1078. CLIST ステートメント・エラー・コード (10 進数) . . . . . . . . . . . . . . . . . . 1309. CLIST の例とその機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

10. PROFILE CLIST およびそれがサポートしているパネルの目的およびダイアグラム . . . . . . 16011. LISTDSI によって設定される変数 . . . . . . . . . . . . . . . . . . . . . . . . 19012. LISTDSI 戻りコード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19413. LISTDSI 理由コード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

© Copyright IBM Corp. 1988, 2006 xi

Page 14: TSO/E CLIST

xii z/OS V1R8.0 TSO/E CLIST

Page 15: TSO/E CLIST

本書について

本書は、z/OS® (5694-A01) および z/OS.e (5655-G52) をサポートします。

本書では、CLIST と呼ばれるプログラムを作成するための、TSO/E CLIST 言語の使用法について記述しています。 CLIST を使用することによって、TSO/E のもとで幅広いプログラミング作業を行うことができます。

本書の対象読者本書は、CLIST プログラマーの方々を対象にしています。CLIST の使用に関する経験の有無は問いません。

CLIST 言語の使用経験をお持ちでない方は、各章をお読みになり、実際に例を使用してコーディングを行ってみてください。

CLIST 経験者の方は、各章の題名を見直して本書の構成を把握するようにしてください。 なにか疑問の生じたとき、または記憶を新たにしたいときに、該当する章を参照してください。

CLIST 言語を効果的に用いるためには、TSO/E コマンドを知っている必要があります。対話式システム生産性向上機能 (ISPF) についてよく知っておくことも役に立ちます。 TSO/E コマンドについては、「z/OS TSO/E コマンド解説書」をご覧ください。

本書の構成v 1ページの『第 1 章 はじめに』では、CLIST が行う機能のタイプを説明します。

v 5ページの『第 2 章 CLIST の作成、編集、および実行』では、CLIST データ・セットの作成と編集、および CLIST の実行方法を説明します。

v 13ページの『第 3 章 CLIST の作成 - 構文および規則』では、CLIST における、CLIST ステートメントや、TSO/E コマンド、JCL ステートメントの使用規則について説明します。

v 21ページの『第 4 章 記号変数の使用』では、記号変数の定義方法、および記号変数への値の割り当てを説明します。

v 33ページの『第 5 章 制御変数の使用』では、処理環境についての現在の情報を得るための CLIST 制御変数の使用法を説明します。

v 61ページの『第 6 章 組み込み関数の使用』では、数字データおよび文字ストリングを処理するための、CLIST ストリング処理機能の使用法を説明します。

v 77ページの『第 7 章 CLIST の構造化』では、判断したり、ループを作成するCLIST ステートメントや、CLIST サブプロシージャー、ネストされた CLIST の使用法について説明します。

v 97ページの『第 8 章 端末ユーザーとの通信』では、対話式 CLIST の書き方を説明します。

© Copyright IBM Corp. 1988, 2006 xiii

Page 16: TSO/E CLIST

v 111ページの『第 9 章 ファイル入出力の実行』では、ファイルからのレコードの読み取り方法、およびファイルへのレコードの書き込み方法を説明します。

v 117ページの『第 10 章 ATTN および ERROR ルーチンの作成』では、CLIST

の実行中に、エラーが発生したり、ユーザーがアテンション・キーを押したとき、制御を受け取るルーチンの書き方を説明します。

v 127ページの『第 11 章 CLIST のテストおよびデバッグ』では、CLIST エラーを見つけて、訂正する方法を説明します。この章には、エラー・コードとその意味の一覧表も記載してあります。

v 135ページの『第 12 章 CLIST の例』では、広い範囲のアプリケーション・タスクを行う CLIST の例を説明します。各 CLIST には、概念の説明が例を以って示されています。一般に、高度な CLIST は、より単純な例で紹介されている概念をもとにして詳述されています。

v 173ページの『第 13 章 参照』には、全 CLIST ステートメントの完全な構文が記述されています。

詳細情報についてz/OS TSO/E 用に用意されている文書を含めて、z/OS に関係する資料の概要については、z/OS 情報ロードマップ を参照してください。

LookAt を利用したメッセージの説明の検索LookAt は、表示される大部分の IBM メッセージや、いくつかのシステム異常終了およびコードに関する説明を検索するためのオンライン機能です。 LookAt では、通常、該当メッセージの説明がただちに表示されるため、従来の方法よりも短時間で、必要な情報を検索することができます。

下記のロケーションから LookAt を使用して、z/OS のエレメントおよびフィーチャー、z/VM®、VSE/ESA™、および AIX® と Linux® のクラスターに関する IBM メッセージの解説を検索することができます。

v インターネットの場合。 次の LookAt Web サイトで、IBM メッセージの解説に直接アクセスできます。 http://www.ibm.com/servers/eserver/zseries/zos/bkserv/lookat/

v z/OS TSO/E ホスト・システムの場合。 ご使用の z/OS または z/OS.e システムにコードをインストールし、(たとえば、TSO/E プロンプト、ISPF、または z/OS

UNIX® システム・サービスの) TSO/E コマンド行から LookAt を使用して IBM

メッセージの解説にアクセスできます。

v Microsoft® Windows® ワークステーションの場合。z/OS Collection (SK3T-4269)

または z/OS and Software Products DVD Collection (SK3T-4271) から LookAt を直接インストールし、その結果できた Windows グラフィカル・ユーザー・インターフェース (GUI) から LookAt を使用することができます。また、LookAt のWindows 版をインストールしたディレクトリーから、コマンド・プロンプト(DOS > コマンド行ともいう) 版も使用することができます。

v 無線ハンドヘルド・デバイスの場合。 無線アクセスとインターネット・ブラウザーがあるハンドヘルド・デバイスで (たとえば、Pocket PC 版 Internet

Explorer、Palm OS 版 Blazer または Eudora、または Linux 版 Opera のハンドヘルド・デバイス)、http://www.ibm.com/servers/eserver/zseries/zos/bkserv/lookat/

lookatm.html から LookAt のモバイル版を使用できます。

xiv z/OS V1R8.0 TSO/E CLIST

Page 17: TSO/E CLIST

ご使用のホスト・システムまたは Microsoft Windows ワークステーションにLookAt をインストールするためのコードを、次の場所から入手することができます。

v z/OS Collection (SK3T-4269) のなかの CD-ROM。

v z/OS and Software Products DVD Collection (SK3T-4271)。

v LookAt Web サイト (Download をクリックして、お客様の要件に適したプラットフォーム、リリース、コレクション、およびロケーションを選択する)。詳細は、ダウンロード処理中に使用可能な LOOKAT.ME ファイルにあります。

IBM health checker for z/OS の使用IBM® Health Checker for z/OS は、 z/OS コンポーネントの一つであり、インストール・システムでこれを使用すると、お客様のシステム環境およびシステム・パラメーターに関する情報を収集して、可用性に影響を与えたり障害を引き起こす恐れのある潜在的な構成上の問題を識別するのに役立ちます。個々のプロダクト、z/OS

コンポーネント、または ISV ソフトウェアは、 IBM Health Checker for z/OS フレームワークを利用するチェックを提供することができます。本書では、このコンポーネントに関連したチェックまたはメッセージを参照します。

チェックおよび IBM Health Checker for z/OS に関する追加情報については、「IBM Health Checker for z/OS: ユーザーズ・ガイド」を参照してください。z/OS

V1R4、V1R5、および V1R6 のユーザーは、z/OS Downloads ページ(http://www.ibm.com/servers/eserver/zseries/zos/downloads/) から IBM Health Checker

for z/OS を入手することができます。

SDSF も、チェックの管理を単純化する機能を提供します。追加情報については、「z/OS SDSF オペレーションおよびカスタマイズ」を参照してください。

本書について xv

Page 18: TSO/E CLIST

xvi z/OS V1R8.0 TSO/E CLIST

Page 19: TSO/E CLIST

変更の要約

変更の要約SA88-8627-04 (英文原典: SA22-7781-04)z/OS バージョン 1 リリース 8

本書には、z/OS TSO/E バージョン 1 リリース 7 およびそれに続くリリースをサポートする「z/OS TSO/E CLIST, SA88-8627-03」に記載されていた情報が含まれています。

新規情報

v 新しい TSO/E PROFILE オプションの VARSTORAGE(HIGH) についての説明が56 のページに追加されました。

v 新規セクション 29ページの『変数で使用可能なストレージの量の拡大』 が 21

ページの『第 4 章 記号変数の使用』 に追加されました。

v 新規の変数 SYSSEQDSNTYPE が追加され、LISTDSI ステートメントは 190ページの表 11 で説明されています。

変更情報

130ページの表 8 のエラー・コード 16 のメッセージが更新されました。

本書には、用語、細かな修正、および編集上の変更が含まれています。本文や図表に対する技術上の変更または追加については、変更箇所の左側に縦線を付けて示してあります。

変更の要約SA88-8627-03 (英文原典: SA22-7781-03)z/OS バージョン 1 リリース 7

本書には、z/OS TSO/E バージョン 1 リリース 4 およびそれに続くリリースをサポートする「z/OS TSO/E CLIST, SA88-8627-02」に記載されていた情報が含まれています。

変更情報

200ページの『単純 SELECT』 のダイアグラムが訂正されました。

194ページの表 12 の LISTDSI 戻りコード 4 の説明が更新されました。

本書には、整合性や検索の容易性を高めるための、用語、細かな修正、および編集上の変更が含まれています。

変更の要約SA88-8627-02 (英文原典: SA22-7781-02)z/OS バージョン 1 リリース 4

本書には、z/OS TSO/E バージョン 1 リリース 3 およびそれに続くリリースをサポートする「z/OS TSO/E CLIST, SA88-8627-01」に記載されていた情報が含まれています。

© Copyright IBM Corp. 1988, 2006 xvii

Page 20: TSO/E CLIST

以下に、変更内容を要約します。

新規情報

本書が z/OS.e をサポートすることを示す情報が追加されています。

新規 LISTDSI 理由コードが追加されました。

本書には、整合性や検索の容易性を高めるための、用語、細かな修正、および編集上の変更が含まれています。

変更の要約SA88-8627-01 (英文原典: SA22-7781-01)z/OS バージョン 1 リリース 3

本書には、z/OS TSO/E バージョン 1 リリース 1 およびそれに続くリリースをサポートする「z/OS TSO/E CLIST, SA88-8627-00」に記載されていた情報が含まれています。

以下に、変更内容を要約します。

新規情報

55ページの『&SYSOUTTRAP および &SYSOUTLINE の使用上の考慮事項』(APAR OW48606)。

z/OS 製品のアクセシビリティ情報に関する付録を追加しました。

変更情報

43ページの『&SYSHSM』 (APAR OW47697)。

46ページの『&SYSOPSYS』。

本書には、用語、細かな修正、および編集上の変更が含まれ、整合性および検索可能性を改善するための変更を組み込んでいます。

xviii z/OS V1R8.0 TSO/E CLIST

Page 21: TSO/E CLIST

第 1 章 はじめに

CLIST 言語の機能 . . . . . . . . . . . . . . . . . . . . . . . . 1CLIST のカテゴリー . . . . . . . . . . . . . . . . . . . . . . . 1構造化アプリケーションとしての CLIST . . . . . . . . . . . . . . . 2構造化アプリケーションとしての CLIST . . . . . . . . . . . . . . . 2他の言語で作成されたアプリケーションを管理する CLIST . . . . . . . . 3

CLIST 言語を使用することによって、TSO/E における作業効率を高めることができます。 ユーザーは、所定のタスクまたはタスク・グループを実行する、CLIST と呼ばれるプログラムを作成することができます。この CLIST 作成後は、それを呼び出すだけでそれらの作業を行うことができます。

CLIST (「シーリスト」と発音します) は、コマンド LIST の略語です。コマンドLIST の由来は、最も基本的な CLIST が TSO/E コマンドのリストであるところからきています。この CLIST を呼び出すと、CLIST は TSO/E コマンドを順番に出していきます。

CLIST は、TSO/E コマンドを出すだけでなく、より複雑なプログラミング・タスクを実行します。CLIST 言語には、多岐にわたる構造化アプリケーションを書くのに必要な、プログラミング・ツールが組み込まれています。CLIST は、一連のフルスクリーン・パネルの表示から、他の言語で作成したプログラムの管理にいたるまで、複雑なタスクをいくつでも実行することができます。

CLIST 言語は解釈言語です。他の高水準言語のプログラムと同様に、CLIST は書きやすく、またテストも容易です。コンパイルおよびリンク・エディットをする必要はありません。CLIST をテストするには、まずそれを実行し、エラーを修正して、再実行します。

CLIST 言語は、TSO/E で利用できる 2 つのコマンド言語のうちの 1 つです。もう1 つのコマンド言語の REXX については、「z/OS TSO/E REXX ユーザーズ・ガイド」、および「z/OS TSO/E REXX 解説書」を参照してください。

CLIST 言語の機能CLIST 言語には、次のような、多岐にわたるプログラミング機能があります。以下のような機能です。

v 数値データを処理するための、広範囲にわたる算術および論理演算子のセット

v 文字データを処理するための、ストリング処理機能

v プログラムの作成、入出力の実行、変数の定義および修正、エラーおよびアテンション割り込みの処理を可能にする CLIST ステートメント

CLIST のカテゴリーCLIST は、広範囲にわたるタスクを実行することができます。一般に、CLIST は次の 3 つの種類に分類されます。v ルーチン・タスクを実行する CLIST

v 構造化されたアプリケーションとしての CLIST

© Copyright IBM Corp. 1988, 2006 1

Page 22: TSO/E CLIST

v 他の言語で作成されたアプリケーションを管理する CLIST

構造化アプリケーションとしての CLISTTSO/E のユーザーは、通常、特定のタスクを定常的に実行しています。これらのタスクとしては、データ・セットの状況についての検査、特定のプログラムに対するデータ・セットの割り振り、およびファイルの印刷を行うための TSO/E コマンドの入力があります。

これらのルーチン・タスクに費やさねばならない時間を、大幅に短縮できる CLIST

を作成することが可能です。あるタスクを完了させるために必要な命令を CLIST 内でグループごとにまとめることによって、タスク実行の際の時間や、キーストロークの回数、およびエラーを減らすことができ、さらに、生産性を向上することができます。このような CLIST は、TSO/E コマンドだけから構成することも、あるいは TSO/E コマンド、JCL ステートメント、または CLIST ステートメントを組み合わせて構成することもできます。

図 1 は、TSO/E コマンドのみから成る CLIST の例です。

図 1 の CLIST は、プログラム用のファイル割り振り、プログラムの呼び出し、およびプログラム終了時のファイルの解放を行うための TSO/E コマンドを出します。これら関連のタスクを実行したい場合は、コマンドをいくつも再入力するのではなく、この CLIST を実行することができます。

ユーザーから何か入力が必要なタスクの場合、CLIST ステートメントまたは TSO/E

コマンドを使用してユーザーに入力を促すプロンプトを表示することによって、CLIST 内でその入力を受け取ることができます。

構造化アプリケーションとしての CLISTCLIST 言語には、完全な構造化アプリケーションを作成するために必要な基本ツールが組み込まれています。どの CLIST でも、他の CLIST を呼び出すことができます。これをネストされた CLIST と呼びます。また、CLIST には、サブプロシージャーと呼ばれる別のルーチンを含めることもできます。ネストされた CLIST およびサブプロシージャーによって、CLIST を論理単位に分離して、共通の機能を 1 つの場所に入れることができます。個々の CLIST ステートメントによって、以下の操作を行うことができます。v サブプロシージャーおよびネストされた CLIST に対する共通データの定義v 特定のサブプロシージャーおよび CLIST へのデータの限定v サブプロシージャーまたはネスト CLIST への特定のデータの引き渡し

対話式アプリケーションの場合、CLIST は、対話式システム生産性向上機能 (ISPF)

のコマンドを出してフルスクリーン・パネルを表示することができます。逆に、

allocate file(ABC) dataset(name1)allocate file(DEF) dataset(name2)call (prog1)free file(ABC DEF)

図 1. TSO/E コマンドから成る CLIST の例

CLIST のカテゴリー

2 z/OS V1R8.0 TSO/E CLIST

Page 23: TSO/E CLIST

ISPF パネルで、ユーザーがそのパネル上にタイプする入力を使用して、CLIST を呼び出すことができます。ユーザーがパネル上の値を変更すると、その変更は、そのパネルを表示した CLIST 内の値に適用されます。ISPF を使用して、CLIST は、多岐にわたるパネル駆動ダイアログを管理することができます。

他の言語で作成されたアプリケーションを管理する CLIST他のプログラム言語で書かれたアプリケーションへアクセスする場合があります。ただし、これらアプリケーションへのインターフェースは、使用することも、覚えておくことも容易ではない場合があります。新たにアプリケーションを作成するのではなく、ユーザーとそのようなアプリケーションとの間に使いやすいインターフェースを提供する CLIST を作成する方法があります。

CLIST は端末にメッセージを送信したり、また、端末からメッセージを受信して、ユーザーが何を実行したいかを判別することができます。その上で、CLIST はこの情報を使用して、環境を設定するとともに、要求されたタスクを実行するプログラムを呼び出すために必要なコマンドを呼び出すことができます。

CLIST のカテゴリー

第 1 章 はじめに 3

Page 24: TSO/E CLIST

CLIST のカテゴリー

4 z/OS V1R8.0 TSO/E CLIST

Page 25: TSO/E CLIST

第 2 章 CLIST の作成、編集、および実行

CLIST データ・セットおよびライブラリー . . . . . . . . . . . . . . . 5CLIST データ・セットの作成および編集 . . . . . . . . . . . . . . . . 6

CLIST データ・セットの属性 . . . . . . . . . . . . . . . . . . . 6CLIST データ・セットのコピーに関する考慮事項 . . . . . . . . . . . 7

CLIST の実行 . . . . . . . . . . . . . . . . . . . . . . . . . . 7CLIST へのパラメーターの引き渡し . . . . . . . . . . . . . . . . 9

暗黙的実行のための CLIST ライブラリーの割り振り . . . . . . . . . . . 9ALTLIB コマンドを用いた代替 CLIST ライブラリーの指定 . . . . . . . 10

ALTLIB コマンドの使用 . . . . . . . . . . . . . . . . . . . 10ISPF での ALTLIB の使用 . . . . . . . . . . . . . . . . . . 10ALTLIB 要求のスタック . . . . . . . . . . . . . . . . . . . 11

ALTLIB コマンドの例 . . . . . . . . . . . . . . . . . . . . . 11

CLIST データ・セットおよびライブラリーCLIST は、順次または区分データ・セット (PDS) のいずれかに入っています。順次CLIST データ・セットは 1 つの CLIST だけで構成されますが、PDS には 1 つ以上の CLIST を入れることができます。各 CLIST は、PDS ではメンバーで、固有のメンバー名を持っています。PDS が CLIST だけで構成されている場合、そのPDS は CLIST ライブラリーと呼ばれます。

CLIST ライブラリーにより、CLIST の保守や実行が容易に行えるようになります。インストール先では、共通に使用されている CLIST をシステム CLIST ライブラリー内に保持し、自分自身の CLIST をプライベート CLIST ライブラリーに保持することができます。 CLIST ライブラリーをファイル SYSPROC に割り振った場合、またはそのライブラリーを ALTLIB コマンドに指定した場合、CLIST のメンバー名を入力するだけで、それらの CLIST を暗黙的に実行することができます。

暗黙的実行によって、EXEC コマンドに CLIST ライブラリーの名前をコーディングする必要がなくなります。暗黙的実行によって、キーストロークの回数を減らせるだけでなく、異なるライブラリー内に異なるバージョンの CLIST を保持し、その時々に、どのバージョンを実行するかを制御することができます。詳しくは、 9ページの『暗黙的実行のための CLIST ライブラリーの割り振り』を参照してください。

暗黙的に呼び出される CLIST、および CLIST から呼び出されるコマンド・プロセッサーには、予約済みの CLIST のワードと同じ名前を付けないでください。名前の競合が避けられない場合、その問題の解決のために、&STR 組み込み関数の使用を考慮してください。 66ページの『文字データの定義 - &STR』を参照してください。たとえば、RACFRW コマンドの SELECT サブコマンドの場合、次のようにそのサブコマンド名を指定すれば、CLIST SELECT ステートメントとの混同を避けることができます。

&STR(SELECT) VIOLATIONS

© Copyright IBM Corp. 1988, 2006 5

Page 26: TSO/E CLIST

CLIST データ・セットの作成および編集最初の CLIST をコーディングする前に、CLIST データ・セットを作成する必要があります。CLIST データ・セットの作成および編集には、2 つの方法があります。

1. ISPF/PDF のオプション 3 (UTILITIES) およびオプション 2 (EDIT) を使用する

a. ISPF の割り振りパネルを使用してデータ・セットを作成します (通常、1 次メニューのオプション 3.2)。

v 実行を単純化するために、データ・セット・タイプとして CLIST を指定します。

v 他のもの (たとえば、システム CLIST ライブラリーなど) と同一の属性を持つデータ・セットを作成するには、オプション 3.2 を使用して既存のデータ・セットの属性を表示し、その後で新しいデータ・セットを割り振ってください。

b. ISPF/PDF エディターを使用して、フルスクリーン環境で CLIST をコーディングします (通常、オプション 2)。

c. 画面上でデータに対し直接訂正を行うことにより、CLIST を変更します。

ISPF/PDF のもとでのデータ・セットの作成および編集の詳細については、「z/OS TSO/E 入門」を参照してください。

2. TSO/E EDIT コマンドおよびそのサブコマンドを使用する (この手法には、ISPF/PDF のオプション 6 が含まれます):

a. EDIT コマンドに CLIST キーワードを組み込みます。

b. CLIST ステートメント、TSO/E コマンド、および TSO/E サブコマンドを入力し、保管します。

c. EDIT のサブコマンドを使用して、CLIST を修正します。

EDIT コマンドによって作成された CLIST には、2 バイト文字セット (DBCS)

の文字を入れることはできません。

TSO/E のもとでのデータ・セットの作成および編集の詳細については、「z/OS

TSO/E コマンド解説書」を参照してください。

CLIST データ・セットの属性CLIST データ・セットが、これまでに説明された手法のいずれかを用いて作成され、CLIST キーワードが EDIT コマンドに指定されている場合、そのデータ・セットには、次のデフォルトの属性が割り当てられます (インストール先のシステムでデフォルトを変更していない場合)。

v 可変長レコード・フォーマット

EDIT コマンドに LINE 値を指定すると、そのデータ・セットは、指定された長さの固定長レコード・フォーマットになります。

v 255 文字の論理レコード・サイズ

v 3120 バイトのブロック・サイズ

v 行番号は、すべての固定長レコードの最後の 8 バイトの中、およびすべての可変長レコードの最初の 8 バイトの中に含まれています。

v すべての入力データおよび修正データは、上段シフト文字に変換されます。

CLIST データ・セットの作成および編集

6 z/OS V1R8.0 TSO/E CLIST

Page 27: TSO/E CLIST

インストール先のシステムで、これらのデフォルト属性が変更されている場合や、データ・セット・タスクを容易にするために CLIST データ・セットに関する規則が確立されている場合があります。

CLIST データ・セットを連結する場合には、それらのデータ・セットに同じRECFM および LRECL 値を指定してください。

編集済みのデータ・セットの詳しい説明については、「z/OS TSO/E コマンド解説書」の EDIT コマンドを参照してください。DCB パラメーターの RECFM サブパラメーターのフォーマットおよび特性については、「z/OS MVS JCL 解説書」を参照してください。CLIST 変数内で使用するためにデータ・セットについての情報が必要な場合は、 187ページの『LISTDSI ステートメント』を参照してください。

CLIST データ・セットのコピーに関する考慮事項CLIST を作成および編集するときに、既存の CLIST データ・セットを新しいデータ・セットにコピーする場合があります。そのコピーを ISPF/PDF のもとで行う場合は、そのデータ・セットのレコード・フォーマットに注意してください。可変長ブロック化データ・セットでは、1 から 8 桁目に行番号を含めることができますが、データ・セット編集時には通常これらの行番号は表示されません。 可変長ブロック化データ・セットを固定長ブロック化データ・セットにコピーすると、行番号はデータの一部としてコピーされます。コピー後、このデータは削除してください。データ・セットが行番号を含んでいるかどうかを確認するには、ISPF EDIT コマンドの PROFILE を使用します。

固定長ブロック化データ・セットを行番号付きで可変長ブロック化データ・セットにコピーする場合、システムは 73 から 80 桁目のシーケンス番号を可変長ブロック化データ・セットにコピーします。このデータも削除してください。可変長ブロック化データ・セットからシーケンス番号を削除する方法については、「z/OS ISPF

編集と編集マクロ」を参照してください。

CLIST の実行CLIST を実行する場合、EXEC コマンドを使用してください。ISPF コマンド行から、EXEC コマンドの前に TSO を入力してください。 TSO/E EDIT または TEST

モードの場合は、EXEC コマンドを使用する方法で EXEC サブコマンドを使用してください。 (EDIT または TEST のもとで実行された CLIST は、EDIT またはTEST サブコマンドおよび CLIST ステートメントだけを出すことができますが、CLIST 内で END サブコマンドを使用すれば、EDIT または TEST モードを終了し、CLIST で TSO/E コマンドを出せるようにすることもできます。)

EXEC コマンド (またはサブコマンド) には、2 つの形式があります。

1. 明示形式: 『exec』 または 『ex』 に続けてデータ・セット名およびオプションの CLIST オペランドを入力してください。名前が引用符中にない限り、デフォルトによって、EXEC コマンドは、データ・セット・タイプが CLIST であるとみなして、指定したすべての名前に自動的に .CLIST のサフィックスを付けます。たとえば、次のとおりです。

v CLIST、LISTPGM が PREFIX.CLISTLIB.CLIST という名前の PDS のメンバーである場合、次のように入力します。

CLIST データ・セットの作成および編集

第 2 章 CLIST の作成、編集、および実行 7

Page 28: TSO/E CLIST

{exec} clistlib(listpgm) [CLIST]{ex }

v CLIST、LISTPGM が PREFIX.CLIST という名前の PDS のメンバーである場合、次のように入力します。

{exec} (listpgm) [CLIST]{ex }

v CLIST が、PREFIX.LISTPGM.CLIST という名前の順次データ・セットである場合、次のように入力します。

{exec} (listpgm) [CLIST]{ex }

v CLIST が、PREFIX.LISTPGM という名前の順次データ・セットである場合、次のように入力します。

{exec} ’prefix.listpgm’ [CLIST]{ex }

順次データ・セット内で CLIST を実行するために EXEC コマンドを使用しようとするときに、そのデータ・セットが区分データ・セットであると判明した場合、その EXEC コマンドはメンバー TEMPNAME と見なします。システムは、このメンバーが見つからない場合にはそれを通知し、それ以外の場合は、そのCLIST を実行します。

2. 暗黙形式 : CLIST の名前だけ入力し、オプションでその前にパーセント記号(%) を付けます。 CLIST は、ファイル SYSPROC に割り振られている PDS のメンバーであるか、ALTLIB コマンドによって指定された代替ライブラリーのメンバーでなければなりません。暗黙形式には、次の 2 種類があります。

a. メンバー名だけを入力します。たとえば、以下のようにします。

listpgm

この形式を使用すると、TSO/E は最初にコマンド・ライブラリーを検索し、入力された名前が TSO/E コマンドでないことを確認し、その後で以下のような CLIST ライブラリーを検索します。v ALTLIB コマンドによって指定されたライブラリー、またはv SYSPROC ファイルに割り振られたライブラリー

b. メンバー名の前にパーセント記号 (%) を付けて入力します。たとえば、以下のように入力します。

%listpgm

拡張暗黙形式と呼ばれるこの形式を使用すると、TSO/E は ALTLIB、またはSYSPROC ライブラリー内でのみ名前を検索するため、検索時間が短縮されます。

暗黙的実行のための CLIST の準備については、 9ページの『暗黙的実行のための CLIST ライブラリーの割り振り』を参照してください。

CLIST は、フォアグラウンド (端末から) でもバックグラウンド (バッチ・ジョブとして実行依頼) でも実行できます。また、他の CLIST から (EXEC コマンドを使用して)、あるいはプログラムから、CLIST を実行することもできます。プログラムから CLIST を呼び出すには、「z/OS TSO/E Programming Services」に説明されているTSO/E サービス機能を使用してください。

CLIST の実行

8 z/OS V1R8.0 TSO/E CLIST

Page 29: TSO/E CLIST

CLIST へのパラメーターの引き渡しCLIST の実行時に、パラメーターをその CLIST に渡すことができます。パラメーターは変数入力であるため、実行するときに変更することができます。パラメーターを受け取る場合、CLIST は、パラメーターを変数に割り当てる PROC ステートメントで始める必要があります。 24ページの『PROC ステートメントを使用する場合』で、PROC ステートメントがパラメーターを受け取るようにコーディングする方法が説明されています。

パラメーターを CLIST に渡すには、そのパラメーターを、次のようにして EXEC

コマンドまたはサブコマンドに組み込みます。

v 明示形式の場合、パラメーターを単一引用符で囲んで渡します。

EX clistname ’parm1 parm2’

v 暗黙形式または拡張暗黙形式の場合は、引用符を除いてください。

%clistname parm1 parm2

引き渡しが可能なパラメーターの種類、およびそれらを CLIST 内で使用する方法については、 24ページの『PROC ステートメントを使用する場合』を参照してください。

単一引用符を含んだパラメーターの引き渡しに関する特殊な考慮事項を含め、EXEC

コマンドの詳細な構文定義については、 173ページの『第 13 章 参照』を参照してください。

暗黙的実行のための CLIST ライブラリーの割り振りCLIST を作成し、正しく実行することを確かめた後、さらに実行しやすくさせるために、CLIST を特殊なファイルへ割り振ることができます。

CLIST が、特殊ファイルに割り振られた区分データ・セット (PDS) のメンバーであれば、ユーザーおよびアプリケーションは、メンバー名を呼び出すだけで、暗黙のうちに CLIST を実行できます。 暗黙的実行のために CLIST ライブラリーをどのように割り振るかは、そのシステムにインストールされた TSO/E の機能によって決まります。

ALTLIB コマンドを使用すると、暗黙的実行の場合の CLIST ライブラリーの指定がより柔軟に行えます。ALTLIB コマンドによって、ユーザーもしくは ISPF アプリケーションは、必要に応じて、暗黙的実行のために CLIST ライブラリーを簡単に活動化したり、非活動化することができます。この柔軟性の実現によって、暗黙的実行のために一度に活動化する CLIST の数が少なければ、検索時間を短縮することができます。

CLIST だけでなく、ALTLIB コマンドによって、暗黙的実行のために REXX EXEC

のライブラリーも指定することができます。 REXX EXEC に関する ALTLIB の使用については、「z/OS TSO/E REXX ユーザーズ・ガイド」を参照してください。

CLIST の実行

第 2 章 CLIST の作成、編集、および実行 9

Page 30: TSO/E CLIST

ALTLIB コマンドを用いた代替 CLIST ライブラリーの指定ALTLIB コマンドを使用すると、暗黙的に実行可能な CLIST を入れるための代替ライブラリー を指定することができます。代替ライブラリーは、ユーザー・レベル、アプリケーション・レベル、およびシステム・レベルで指定することができます。

v ユーザー・レベル は、ファイル SYSUPROC に割り振られた CLIST ライブラリーを含みます。 暗黙的実行中、これらのライブラリーが最初に検索されます。

v アプリケーション・レベル は、データ・セットまたはファイル名によってALTLIB に指定された CLIST ライブラリーを含みます。暗黙的実行中、これらのライブラリーはユーザー・ライブラリーの後で検索されます。

v システム・レベル は、ファイル SYSPROC に割り振られた CLIST ライブラリーを含みます。暗黙的実行中、これらのライブラリーはユーザー・ライブラリーあるいはアプリケーション・ライブラリーの後に検索されます。

ALTLIB コマンドの使用ALTLIB コマンドにはいくつかの機能があります。これらの機能は、次のオペランドを使用して指定します。

ACTIVATE指定されたレベルのライブラリー (複数の場合もあり) の CLIST の暗黙的実行を指定された順序で行います。

DEACTIVATE検索順序から指定されたレベルを除外します。

DISPLAY暗黙的実行のために検索される CLIST ライブラリーの現行の順序を表示します。

RESETCLIST および REXX EXEC の場合、システム・レベルのみの検索にリセットします。

ALTLIB コマンドの詳細な構文については、「z/OS TSO/E コマンド解説書」を参照してください。

注:

1. ALTLIB を使用する場合、それぞれのレベルに連結されたデータ・セットは、異なる特性を持つことができます (論理レコード長およびレコード・フォーマット)

が、同一レベル内のデータ・セットの特性は同一でなければなりません。

2. アプリケーション・レベルおよびシステム・レベルの場合、ALTLIB が、仮想索引機能 (VLF) を使用すると、ライブラリー検索速度が高まることがあります。

ISPF での ALTLIB の使用ALTLIB は、行モード TSO/E でも ISPF でも同一に作用します。ただし、行モード TSO/E のもとで ALTLIB を使用して ISPF を開始する場合は、行モード TSO/E

のもとで指定した代替ライブラリーは ISPF が終了するまで有効ではありません。

暗黙的実行のための CLIST ライブラリーの割り振り

10 z/OS V1R8.0 TSO/E CLIST

Page 31: TSO/E CLIST

ISPF アプリケーションの実行中に定義されたアプリケーション・レベル・ライブラリーは、そのアプリケーションが制御している間は有効です。 そのアプリケーションが完了すると、元のアプリケーション・レベル・ライブラリーが自動的に再活動化します。

ISPF のもとでは、PASSLIB オペランドを指定して ISPEXEC SELECT を使用することによって、代替ライブラリー定義をアプリケーションからアプリケーションに渡すことができます。たとえば、ALTLIB 定義を新しい ISPF アプリケーション(ABC) に渡す場合、次のようにコーディングしてください。

ISPEXEC SELECT NEWAPPL(ABC) PASSLIB

PASSLIB オペランドは、呼び出されたアプリケーションに ALTLIB 定義を渡します。呼び出されたアプリケーションが完了し、呼び出したアプリケーションが再び制御を取り戻したときに、渡された ALTLIB 定義が再び効力を持ちます。これは、呼び出されたアプリケーションがそれらを変更したか否かには関係なく実行されます。PASSLIB オペランドを指定しないと、ALTLIB 定義は呼び出されたアプリケーションに渡されません。

ISPF アプリケーションの作成の詳細については、「z/OS ISPF サービス・ガイド」を参照してください。

ALTLIB 要求のスタックアプリケーション・レベルの場合、最上部または現行の要求を活動化して、8 つまでの活動化要求をスタックすることができます。

ALTLIB コマンドの例次の例では、アプリケーションが ALTLIB コマンドを出して、データ・セットNEW.CLIB 内の CLIST の暗黙的実行が、SYSPROC に先立って検索されるようにします。

ALTLIB ACTIVATE APPLICATION(CLIST) DATASET(new.clib)

また、次のコマンドによって、このアプリケーションは、ユーザーがファイルSYSUPROC に割り振った私用 CLIST の検索もできるようにします。

ALTLIB ACTIVATE USER(CLIST)

現行の検索順序のアクティブ・ライブラリーを表示するには、次のように DISPLAY

オペランドを使用してください。

ALTLIB DISPLAY

ある特定のレベルに対する検索を非活動化するには、DEACTIVATE オペランドを使用します。たとえば、システム・レベルの CLIST (SYSPROC に割り振られている) の検索を非活動化するには、次のようにします。

ALTLIB DEACTIVATE SYSTEM(CLIST)

また、CLIST および REXX EXEC の検索をシステム・レベルに戻すようにリセットするには、次のように実行します。

ALTLIB RESET

暗黙的実行のための CLIST ライブラリーの割り振り

第 2 章 CLIST の作成、編集、および実行 11

Page 32: TSO/E CLIST

CLIST および REXX EXEC に EXEC が使用する検索順序の詳細については、「z/OS TSO/E コマンド解説書」を参照してください。

暗黙的実行のための CLIST ライブラリーの割り振り

12 z/OS V1R8.0 TSO/E CLIST

Page 33: TSO/E CLIST

第 3 章 CLIST の作成 - 構文および規則

CLIST ステートメントの概要 . . . . . . . . . . . . . . . . . . . 13構文規則 . . . . . . . . . . . . . . . . . . . . . . . . . . . 14区切り文字 . . . . . . . . . . . . . . . . . . . . . . . . . 14継続記号 . . . . . . . . . . . . . . . . . . . . . . . . . . 14大文字の使用. . . . . . . . . . . . . . . . . . . . . . . . . 15フォーマット設定 . . . . . . . . . . . . . . . . . . . . . . . 15長さ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15ラベル . . . . . . . . . . . . . . . . . . . . . . . . . . . 15コメント . . . . . . . . . . . . . . . . . . . . . . . . . . 15CLIST でサポートされる文字 . . . . . . . . . . . . . . . . . . 16

TSO/E コマンドおよび JCL ステートメント . . . . . . . . . . . . . . 17TSO/E コマンド . . . . . . . . . . . . . . . . . . . . . . . 17JCL ステートメント . . . . . . . . . . . . . . . . . . . . . . 17

演算子および式 . . . . . . . . . . . . . . . . . . . . . . . . . 18計算の順序 . . . . . . . . . . . . . . . . . . . . . . . . . 19有効な数値の範囲 . . . . . . . . . . . . . . . . . . . . . . . 19

2 バイト文字セット (DBCS) . . . . . . . . . . . . . . . . . . . . 20DBCS 区切り文字 . . . . . . . . . . . . . . . . . . . . . . . 20DBCS の制約事項 . . . . . . . . . . . . . . . . . . . . . . . 20

本章では、CLIST ステートメントの概要を紹介するとともに、次の項目の使用法を説明します。v CLIST 言語の構文規則v CLIST における TSO/E コマンドと JCL ステートメントv CLIST の演算子および式v CLIST における 2 バイト文字セット (DBCS)

本章の内容に精通されている方は、次の章にお進みください。次章では、CLIST における変数と端末入力の使用法について説明しています。

CLIST ステートメントの概要CLIST ステートメントは、制御情報を設定し、値を変数に割り当て、CLIST が実行される状態をモニターし、さらに I/O を実行します。 CLIST ステートメントは、コマンドおよびサブコマンドの両方の環境で実行されます (TSO/E EXEC コマンド、および TSO/E EDIT の EXEC サブコマンドのもとで)。 CLIST ステートメントは、 14ページの表 1 に示すカテゴリーに分類されます。

© Copyright IBM Corp. 1988, 2006 13

Page 34: TSO/E CLIST

表 1. CLIST ステートメントのカテゴリー

制御 割り当て 条件付き 入出力

ATTN

CONTROL

DATA-ENDDATA

DATA-PROMPT

ERROR

EXIT

GLOBAL

GOTO

NGLOBAL

PROC

RETURN

SYSCALL

SYSREF

TERMIN

WRITE

WRITENR

READ

READDVAL

SET

LISTDSI

DO

IF-THEN-ELSE

SELECT

CLOSFILE

GETFILE

OPENFILE

PUTFILE

上記の全ステートメントについて、これ以降本書で詳しく説明します。

注: これらの CLIST ステートメントの他に、IBM は、それぞれのインストール先で独自の CLIST ステートメントを追加できるように、インストール・システム出口を提供しています。この出口の詳細については、「z/OS TSO/E カスタマイズ」を参照してください。

構文規則この項では、CLIST ステートメントの構文規則を TSO/E コマンドの構文規則と関連させて説明します。

区切り文字ほとんどの CLIST ステートメントにはオペランドがあります。オペランドは、そのステートメントの処理に使用される情報を提供する変数またはデータです。まず、CLIST ステートメントとその最初のオペランドとの間には 1 つ以上のブランクを入れてください。また、個々のオペランドは 1 つ以上のブランク、コンマ、またはタブによって区切ります。

継続記号行継続記号は、TSO/E コマンドの場合と同じです。継続記号を使用する場合、その記号はその行の最後の非ブランク文字でなければなりません。ハイフン (-) は、次の行の先行ブランクが無視されないことを示します。正符号 (+) は、次の行の先行ブランクが無視されることを示します。たとえば、次のコマンドの場合は正常に実行されます。

alloc da(jcl.cntl) shr-reuse file(input)

CLIST ステートメントの概要

14 z/OS V1R8.0 TSO/E CLIST

Page 35: TSO/E CLIST

しかし、この例でハイフンの代わりに正符号を使用すると、この 2 行が論理的に結合されるとき、shr キーワードの最後と、reuse キーワードの最初にブランクがなくなるため、コマンドは失敗します。正しく実行するためには、正符号の前にブランクを挿入する必要があります。

大文字の使用すべての CLIST ステートメント名は大文字にする必要があります。 CLIST ステートメント名に小文字を使用すると、CLIST は正しく機能しません。 CLIST 変数名と組み込み関数名に大文字を使用するかどうかはオプショナルです。 CLIST 内のTSO/E コマンドおよびサブコマンドを大文字にすることもオプショナルです。

フォーマット設定フォーマット設定の援助機能として、CLIST 内でブランク行を使用し、その CLIST

を部分ごとに分けて、読みやすくすることができます。ブランク行は CLIST 処理には影響を及ぼしません。ただし、ブランク行も継続しないと、継続記号の後のブランクは継続を終了させます。

長さCLIST ステートメントの最大長は 32756 バイトです。

ラベルCLIST ステートメントと TSO/E コマンドの前に、ラベルを付けることができます。他のステートメントは、そのラベルを使用してこのステートメントまたはコマンドに制御を渡します。ラベルは、英字 (A から Z) で始まる 1 から 31 文字の英数字 (A から Z、0 から 9、#、$、@、_) によって構成することができます。このラベルは、そのステートメントまたはコマンドと同じ行に付けることも、あるいは前の行に付けることもできます。ラベル名の直後にはコロンが必要です。たとえば、次のとおりです。

label: IF A= ...

または

label: +

v IF A= ...

コメントコメントは、次のように組み込むことができます。v コメントだけで 1 行に組み込むv CLIST ステートメントまたは TSO/E コマンドの前、中間、あるいは後ろに組み込む

コメントは、スラッシュとアスタリスク (コメント区切り文字) をコーディングし、その後に説明テキストを付けて定義します。 コメントを CLIST ステートメントまたは TSO/E コマンドの前または中間に組み込む場合、そのコメントの終わりに、コ

構文規則

第 3 章 CLIST の作成 - 構文および規則 15

Page 36: TSO/E CLIST

メントのクローズ用の区切り文字 (アスタリスクとスラッシュ) を付ける必要があります。次の例は、CLIST ステートメントの前にコメントを組み込んだ例を示しています。

/*get return code */ SET RC = &LASTCC

コメントを CLIST ステートメントまたは TSO/E コマンドの後に組み込んだ場合、またはコメントだけを 1 行に組み込んだ場合、コメントを閉じるための区切り文字は不要です。以下を参照してください。

alloc file(in) da(accounts.data) shr /* Input data set

コメントが、次の行に継続される CLIST ステートメントまたは TSO/E コマンドの後に付く場合、そのコメントの終わりで、コメントを終わらせるための区切り文字を付け、さらに継続文字をそのコメント区切り文字の後ろ に付ける必要があります。以下を参照してください。

IF &LASTCC ¬= 0 THEN /* error occurred */ +DO ...

CLIST はコメントで始まることができますが、CLIST の最初の行が頭字語 REXX

を含むコメントであってはなりません。もし最初の行のどこかに 『REXX』 が含まれていると、EXEC コマンドはその CLIST を REXX EXEC として処理しようとします。 コメントは大文字でも小文字でもかまいません。また、コメントは CLIST

処理による影響を受けません。

CLIST でサポートされる文字CLIST ステートメントは、16 進コード 40 から FF によって表されるすべてのデータ文字を処理することができます。 NOCAPS または ASIS で制御されていない限り、CLIST は小文字を上段シフト文字に変換し、また、小文字の数 (B0 から B9)

を標準の数 (F0 から F9) に変換することを覚えておいてください。 また、CLIST

は、次の制御文字もサポートします。

16 進コード 制御文字

05 HT (水平タブ)

0E シフトアウト (DBCS データの開始区切り文字)

0F シフトイン (DBCS データの終了区切り文字)

14 RES (リストア)

16 BS (バックスペース)

17 IL (アイドル)

24 BYP (バイパス)

25 LF (改行)

00 から 3F までの他のすべての 16 進コードは、内部処理用に予約されており、それらが CLIST データ内にあるとエラーの原因になります。 I/O ステートメントを使用してこれらのコードを含むデータ・セットを処理することは、サポートされていません。 たとえば、OBJ および LOAD タイプ・データ・セットにはサポートされていない文字が含まれているので、CLIST I/O に使用することはできません。

構文規則

16 z/OS V1R8.0 TSO/E CLIST

Page 37: TSO/E CLIST

注: CLIST 内でサポートされている一部の文字 (たとえば、{ (X'C0') および }

(X'D0') など) は、TSO/E 出力処理のために端末に書き出すことはできません。これらの文字を端末に書き出すためには、TSO/VTAM 変換テーブルを作成して、TSO/E TERMINAL コマンドによってそのテーブルを呼び出します。変換テーブルの作成の詳細については、「z/OS TSO/E カスタマイズ」を参照してください。 TSO/E セッション・マネージャーの下で実行される CLIST については、これらの制限は適用されません。

TSO/E コマンドおよび JCL ステートメント必要に応じて、CLIST 内に TSO/E コマンドとサブコマンド、および JCL ステートメントを組み込むことができます。

TSO/E コマンドTSO/E コマンドおよびサブコマンド (およびユーザー作成のコマンドおよびサブコマンド) は、CLIST 内で、特定の機能 (割り振り、解放、など) が要求されるどのポイントにも組み込むことができます。ある種のアプリケーションの場合、CLIST がコマンドとサブコマンドのみで構成される場合があります。 また、コマンドおよびサブコマンド内のオペランドとして、あるいはコマンドそのものとして、CLIST 変数を置き換えることもできます。 CLIST 変数の詳細については、 21ページの『第4 章 記号変数の使用』を参照してください。

JCL ステートメントCLIST から、ジョブ・ストリームを実行依頼する必要がある場合があります。CLIST には、必要な JCL ステートメント (EXEC、DD、など) を組み込むことができます。ただし、次の JCL ステートメントを CLIST に組み込むときは、必ず特定の CLIST 機能を使用して、CLIST がその JCL ステートメントを修正してしまい、その後で JCL エラーを発生させることがないようにしなければなりません。

1. SYSIN ステートメントに続くステートメント - &STR 組み込み関数を使用して、先行ブランク および CLIST ステートメントと同じ名前を持つステートメントを保持します。

2. 単一アンパーサンド (&) または二重アンパーサンド (&&) を含むステートメント - &SYSNSUB または &NRSTR 組み込み関数を使用してください。

3. JCL コメント - &STR 組み込み関数を使用してください。 CLIST 処理ではJCL コメントが CLIST のコメントとして検出されるので、&STR(/*) と等しい変数を設定して、この変数を JCL コメントの代わりに使用する必要があります。

4. CLIST 内に組み込まれている JCL は、SUBMIT * 形式の SUBMIT コマンドを使用することができます。ただし、すべての JCL は大文字に変換されます。JCL の大文字への変換が不適切または望ましくない場合、SUBMIT

(dataset_name) 形式の SUBMIT コマンドを使用してください。 SUBMIT コマンドについては、「z/OS TSO/E コマンド解説書」を参照してください。

JCL と一緒にこれらの組み込み関数を使用した場合の例は、 61ページの『第 6 章組み込み関数の使用』および 145ページの図 18 にあります。

構文規則

第 3 章 CLIST の作成 - 構文および規則 17

Page 38: TSO/E CLIST

演算子および式演算子が指定されると CLIST はデータの評価をします。データは数字または文字、あるいは変数または組み込み関数の場合があります。 演算子は、表 2 に示すように、算術、比較、および論理の 3 つのカテゴリーに分類されます。

v 算術演算子は、数字オペランドに対し整数算術演算を実行します。この演算子は、整数、変数または組み込み関数を接続して、4-2 などといった式を形成します。

v 比較演算子は、2 つの式の比較を実行して、4-2=3 などといった比較式を形成します。 『=』 は比較演算子です。

比較によって、真または偽の条件が作り出されます。比較式は、多くの場合、CLIST 内の条件付きブランチを決定するために使用されます。

v 論理演算子は、2 つの比較式の結果の論理比較を実行して、&A=4 AND &B=&C

といった論理式を形成します。‘AND’ は、論理演算子です。

論理式は真または偽の条件を作り出します。論理式は、多くの場合、CLIST 内の条件付きブランチを決定するために使用されます。

表 2 では、1 つの演算子として使用できる値が 2 つ以上ある場合、それらの値はコンマで分離されています。

表 2. 算術演算子、比較演算子、および論理演算子

機能 入力する演算子

算術 加算減算乗算除算指数剰余計算順序の評価

+

-

*

/

** (注 1 参照)

//

( ) (注 2 参照)

比較 等しい等しくないより小さいより大きいより小さいか等しいより大きいか等しいより大きくないより小さくない

=,EQ

¬=、NE

<、LT

>、GT

<=、LE

>=、GE

¬>、NG

¬<、NL

論理 論理積論理和

AND、&&

OR、|

注:

1. 指数が負の場合は、ゼロとして扱われるため、結果は常に 1 に設定されます。

2. 計算順序で優先したい演算は、括弧で囲んでください。

演算子および式

18 z/OS V1R8.0 TSO/E CLIST

Page 39: TSO/E CLIST

CLIST は、割り当てステートメント内の等号 (=) を含め、演算子があれば計算を行おうとします。 CLIST が演算子を文字データとして扱うようにさせたい場合は、&STR 組み込み関数を使用してください。詳しくは、 66ページの『文字データの定義 - &STR』を参照してください。

計算の順序CLIST は、次のデフォルトの順序で演算の評価を行います。 (次のリストで 2 つ以上の演算がある場合、CLIST は必ず、それらの演算が CLIST ステートメントに現れる順序で、左から右に順次に実行していきます。)

1. 指数剰余2. 乗算、除算3. 加算、減算4. 比較演算子5. 論理 AND

6. 論理 OR

最初に実行したい演算を括弧で囲むことによって、デフォルトの順序をオーバーライドすることができます。たとえば、括弧がない場合、次の例では乗算、除算についで加算が実行されます。次のステートメントは、X を値 24 に設定します。

SET X = 4+5*8/2

4+5 を括弧で囲むことによって、CLIST に対し加算を最初に行い、次にデフォルトの順序 (乗算、次に除算) に従って演算を行う指示となります。次のステートメントは、X を値 36 に設定します。

SET X = (4+5)*8/2

すでに括弧で囲まれている式そのものを括弧で囲むことができます。このプロセスは、括弧で囲まれた式のネスティングと呼ばれます。 CLIST は、最も内側のネストを最初に計算し、すべてのネストが計算されるまで外側に向かって計算を続けます。 次の例で、X は値 7 に設定されます。

SET X=((1+4)*2+4)/2

1+4 を囲んでいる括弧は、CLIST が、乗算を実行する前にこれらの数の加算を行う必要があることを示します。 除算演算子の左側の複合式を囲んでいる括弧は、CLIST が、除算を実行する前に複合式の計算を行う必要があることを示します。

上記の例で、外側の括弧を外した場合、CLIST は、3 番目の演算 (4/2) として除算を実行し、X を 12 に設定します。

SET X=(1+4)*2+4/2

有効な数値の範囲数値変数の値は、-2,147,483,647 (-231 +1) から +2,147,483,647 (+231-1) までの範囲の整数で なければなりません。

以下の状況が発生すると、CLIST は終了し、エラー・メッセージを出します。

v 有効範囲外の値を明示的にコーディングした。

v 式の計算によって得られた中間結果の値または最終的な値が有効範囲外だった。

演算子および式

第 3 章 CLIST の作成 - 構文および規則 19

Page 40: TSO/E CLIST

2 バイト文字セット (DBCS)CLIST 言語では、データに 2 バイト文字セットの文字を入れることができます。2

バイト文字セット (DBCS) は、日本語および韓国語などのような 256 文字 (1 バイトのデータで表すことのできる最大数) 以上ある各国語に使用されます。 その名前が意味するように、2 バイト文字はそれぞれ 2 バイトで構成されており、文字数の著しい増加に対応することができます。

DBCS 区切り文字CLIST 言語では、2 バイト文字を EBCDIC 文字と区別するために、16 進コードのX'0E' および X'0F' を使用します。 16 進コード X'0E' は、DBCS 文字の文字ストリングの先頭を示し、コード X'0F' は DBCS ストリングの終わりを示します。適切に区切られた DBCS 文字ストリングは、CLIST 変数の中、コメントの中、およびCLIST ステートメントのオペランドの中で文字データとして渡すことができます。

本書では、DBCS の開始区切り文字と終了区切り文字を 通常、シフトアウトおよびシフトイン文字 として表しています。また、本書の例では、シフトアウトおよびシフトイン文字で囲まれている DBCS ストリングを表す場合に <d1d2> 規則を使用しています。ここで、d1 および d2 は それぞれ DBCS 文字を表し、< は X'0E'

を、> は X'0F' を表します。

DBCS ストリングが連結記号によって結合された場合、隣接したシフトイン文字およびシフトアウト文字は除去されて、1 つの DBCS ストリングが作成されます。たとえば、次のとおりです。

SET A = ABC<d1d2> +<d3d4>DEF /* result: &A = ABC<d1d2d3d4>DEF

DBCS の制約事項CLIST 内の DBCS データには、次の制約事項が適用されます。

v DBCS データは、変数、関数、ステートメント、データ・セット、またはラベルの名前を含む、どの名前にも使用できません。

v DBCS データは、数値データが予測される変数またはオペランド内、またはすべての算術演算に使用できません。

DBCS の考慮事項および制約事項については、本書中、それぞれの該当個所で さらに詳しく説明します。

2 つの CLIST 組み込み関数、&SYSONEBYTE および &SYSTWOBYTE は、DBCS

文字セットと EBCDIC 文字セットの間の変換を行います。これらの関数については、 61ページの『第 6 章 組み込み関数の使用』で述べます。

2 バイト文字セット (DBCS)

20 z/OS V1R8.0 TSO/E CLIST

Page 41: TSO/E CLIST

第 4 章 記号変数の使用

記号変数とは. . . . . . . . . . . . . . . . . . . . . . . . . . 21有効な変数名. . . . . . . . . . . . . . . . . . . . . . . . . 22有効な変数の値 . . . . . . . . . . . . . . . . . . . . . . . . 23

記号変数の定義および値の割り当て . . . . . . . . . . . . . . . . . 23SET ステートメントを使用する場合 . . . . . . . . . . . . . . . . 23READ ステートメントを使用する場合 . . . . . . . . . . . . . . . 24PROC ステートメントを使用する場合 . . . . . . . . . . . . . . . 24

PROC ステートメントへのパラメーターの引き渡し . . . . . . . . . 24定位置パラメーターを受け入れる PROC の使用. . . . . . . . . . . 24キーワード・パラメーターを受け入れる PROC の使用 . . . . . . . . 25値のあるキーワード . . . . . . . . . . . . . . . . . . . . . 25値のないキーワード . . . . . . . . . . . . . . . . . . . . . 26定位置パラメーターおよびキーワード・パラメーターの両方を受け入れる

PROC の使用 . . . . . . . . . . . . . . . . . . . . . . . 26例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

変数の拡大使用 . . . . . . . . . . . . . . . . . . . . . . . . . 27記号変数の結合 . . . . . . . . . . . . . . . . . . . . . . . . 28CLIST 内において先行スペースを保持するための変数の使用 . . . . . . . 28変数で使用可能なストレージの量の拡大. . . . . . . . . . . . . . . 29記号変数のネスト . . . . . . . . . . . . . . . . . . . . . . . 29ネストされた変数と文字ストリングとの結合 . . . . . . . . . . . . 30ネストされた変数の置換 . . . . . . . . . . . . . . . . . . . 30DBCS データを含む変数の結合 . . . . . . . . . . . . . . . . . 31

CLIST 言語にはいくつかのタイプの変数が含まれています。本章では、記号 CLIST

変数の使用法について説明します。制御変数、および CLIST 組み込み関数によって設定される変数を含め、その他のタイプの変数については、後の章で説明します。

記号変数とは記号変数とは、記号として定義するストリングのことです。この変数は記号であるため、それぞれの時点で異なる値を割り当てることができます。異なる値を割り当てることによって、異なるデータでも同じ処理を行うことができます。

たとえば、次のように、PAY_RAISE という名前の記号変数に異なる値を割り当てるために SET ステートメントを使用することができます。

SET PAY_RAISE = 20 /* Set the value of PAY_RAISE equal to 20

または

SET PAY_RAISE = 30 /* Set the value of PAY_RAISE equal to 30

次の式の中で異なる値の PAY_RAISE を使用すれば、週ごとのさまざまな昇給に基づく年間の昇給総額を計算することができます。

SET ANNUAL_RAISE = &PAY_RAISE * 52

CLIST では、アンパーサンド (&) は「の値」を意味します。上記の例で、CLIST

は、PAY_RAISE (20 または 30) の値に 52 を掛けて、その結果の値を別の変数

© Copyright IBM Corp. 1988, 2006 21

||

Page 42: TSO/E CLIST

ANNUAL_RAISE に割り当てます。 (SET ステートメントにおいて、アンパーサンドは、等号の右側の変数では必須で、等号の左側の変数ではオプショナルです。)

CLIST を実行すると、CLIST は各行をスキャンし、記号変数をその実際の値と置き換えます。この処理は、記号置換と呼ばれています。

CLIST では、記号変数を使用して、TSO/E コマンドならびにサブコマンド、JCL ステートメント、および多くの CLIST ステートメント上に変数データを組み込むことができます。

有効な変数名記号変数は、意味を含んだ名前を付けて定義することができます。意味を含んだ変数名 (PAY_RAISE など) は、変数の内容を記述し、それによって CLIST の読み取りや保守を容易にします。アンパーサンド (&) は変数名の一部ではありません。これは、CLIST に対して、その変数の値を使用するように知らせるためのものです。記号変数に名前を付ける場合は、次の規則に従ってください。

1. 先頭文字は、A から Z、(a から z)、_、#、$、@ のいずれかでなければなりません。

注: システムは、次の各文字をそれぞれ次に示す 16 進コードとして認識します。すなわち、_ は X'6D'、# は X'7B'、$ は X'5B'、@ は X'7C' となります。米国以外の国では、キーボード上でこれらの文字が別の 16 進コードを生成して、エラーとなる場合があります。たとえば、国によって $ という文字が X'4A' を生成する場合があります。

2. その他の文字は、上記のいずれか、および 0 から 9 にすることができます。

3. 変数名の最大長は 252 文字です (アンパーサンドはカウントしません)。

4. 変数名は、『EQ』 および 『NE』 ( 18ページの表 2 のリストを参照) などのような CLIST 演算子と同じ文字であってはなりません。

5. PROC ステートメントには特殊な規則が適用します。 PROC ステートメントでは、v すべての変数は A から Z で始まり、大文字のみでなければなりません。v キーワード変数の名前には、下線 (_) を入れることはできず、また、31 文字より長くなってはなりません。詳しくは、 24ページの『PROC ステートメントを使用する場合』を参照してください。

6. ISPF パネルで変数が使用される場合、それらの変数の長さが 8 文字を超えてはなりません。

7. 変数名として、ステートメントまたはそのキーワード の名前を使用しないでください。そのような名前を条件ステートメントの中で次のシーケンスのように使用した場合、予期しない結果が生じます。

SET WHILE = &STR(ABC)DO UNTIL &WHILE = &STR(ABC) WHILE (&COUNT<5)

SET &COUNT = &COUNT + 1END

また、以下のようにストリングの中でキーワードを使用した場合、予測不可能な結果が生じます。

記号変数とは

22 z/OS V1R8.0 TSO/E CLIST

Page 43: TSO/E CLIST

SET COUNT = 0SET VAR = ABCDO UNTIL &VAR = &SUBSTR(3:3,WHILE) WHILE &COUNT < 5SET COUNT = &COUNT + 1END

有効な変数の値一般に、CLIST 変数の値には、キーワードで入力可能な文字であればいかなる文字でも含めることができます。特殊文字については、 16ページの『CLIST でサポートされる文字』を参照してください。

記号変数の値の最大長は、32756 バイトから、その値を割り当てる CLIST ステートメントの長さを引いた値です。たとえば、割り当てステートメントの長さが 6 バイト (SET A=) の場合、その値には 32750 バイトを入れることができます。

記号変数の定義および値の割り当て記号変数を定義し、CLIST 内でその記号変数に値を割り当てる場合の方法には、いくつかあります。 以下に、基本的な手法をいくつか示します。v SET ステートメントを使用して変数を定義し、その変数にそれぞれ値を指定する。

v READ ステートメントを使用して変数を定義し、ユーザーからその変数の値を入手する。

v PROC ステートメントを使用して変数を定義し、CLIST に渡されたパラメーターから、その変数の値を入手する。

上記のステートメントは、変数を明示的に定義します。 また、明示的に変数を定義する前に、CLIST ステートメントの中でその変数を参照することによって、変数を暗黙的に定義することもできます。 CLIST は、そのような変数にはヌル値を割り当てます。

SET ステートメントを使用する場合SET ステートメントを使用すると、記号変数を定義し、それに値を割り当てることができます。たとえば、文字ストリング JOHN を変数 NAME に割り当てる場合、次のようにコーディングします。

SET NAME=JOHN

変数 NAME には、値 JOHN が含まれます。

また、SET ステートメントを使用して、初期値を変数に割り当て、その上で、必要に応じてその値を大きくしたり、小さくしたりすることもできます。たとえば、ループを制御するために、カウンターを次のように初期設定することができます。

SET COUNTER = 1

ループを実行するたびに、カウンターを増分することができます。

SET COUNTER = &COUNTER + 1

SET ステートメントでは、変数が等号の右側の式にあるときはアンパーサンドが必要ですが、等号の左側に変数があるときはオプショナルです。

記号変数とは

第 4 章 記号変数の使用 23

Page 44: TSO/E CLIST

記号変数の他にも、CLIST 制御変数と組み込み関数を SET ステートメントの中で使用することができます。制御変数および組み込み関数については、 33ページの『第 5 章 制御変数の使用』および 61ページの『第 6 章 組み込み関数の使用』を参照してください。

READ ステートメントを使用する場合READ ステートメントを使用すると、記号変数を定義し、その変数に CLIST ユーザーから与えられた値を指定することができます。ユーザーに入力を促すには、READ ステートメントの前に WRITE ステートメントを出します。以下に例を示します。

WRITE What is your name?READ &NAME;

端末には 『What is your name?』 という質問が表示されます。ユーザーが応答を入力 (たとえば、JOHN) すると、それが変数 NAME の値となります。 CLIST は、それ以降のステートメントで次のようにこの値を使用することができます。

WRITE HELLO &NAME! /* (result: HELLO JOHN!)

READ および WRITE ステートメントの詳細については、 97ページの『第 8 章端末ユーザーとの通信』を参照してください。

PROC ステートメントを使用する場合PROC ステートメントを使用すると、CLIST の呼び出し時にパラメーターを CLIST

に渡すことができます。 PROC ステートメントは記号変数を定義し、そのパラメーターをその変数に割り当てます。これを行うには、PROC ステートメントはそのCLIST の最初の機能行でなければなりません (PROC ステートメントの前に置けるのは、コメント行またはブランク行のみです)。

PROC ステートメントへのパラメーターの引き渡しCLIST を明示的に呼び出すときは、パラメーターを単一引用符で囲んで渡します。たとえば、次のようにコーディングします。

EX clistname ’parm1 parm2(value)’

CLIST を暗黙的に呼び出すときは、引用符は不要です。

%clistname parm1 parm2(value)

単一引用符を含むパラメーターを渡す場合は、「z/OS TSO/E コマンド解説書」に述べられている特別な規則に従う必要があります。

PROC ステートメントは、定位置パラメーターおよびキーワード・パラメーターの2 種類のパラメーターを受け入れます。小文字のパラメーター値は、大文字に変更されます。

定位置パラメーターを受け入れる PROC の使用PROC ステートメントを使用して、位置によって変数にパラメーターを割り当てることができます。まず最初に、いくつの定位置パラメーターを予想しているかを通知する数を PROC ステートメントに入力します (まったくない場合は 0)。次に、使

記号変数の定義

24 z/OS V1R8.0 TSO/E CLIST

Page 45: TSO/E CLIST

用したい変数を指定します。たとえば、次の PROC ステートメントの場合、1 という数字は、CLIST に対し、それが受け取る最初のパラメーターを変数 NAME に割り当てるように通知します。

PROC 1 NAME

したがって、パラメーター JOE によって CLIST を呼び出すと、

EX clistname ’JOE’

のように、変数 NAME に値 JOE が含まれます。

たとえば、PROC ステートメントによって、2 つ目のパラメーターを変数ADDRESS に割り当てたいとします。この場合、次のようにステートメントを書き込みます。

PROC 2 NAME ADDRESS

呼び出し元は、定位置パラメーターを渡すための正しい順序を知る必要があり、さらに、PROC ステートメント上の数字で指定しただけの数のパラメーターを渡さなければなりません。呼び出し元が予期されたとおりに定位置パラメーターを渡さない場合、CLIST がそれをプロンプトで指示します。定位置パラメーターには、最高252 文字 (A から Z、0 から 9、#、$、@、_) までを入れることができます。

キーワード・パラメーターを受け入れる PROC の使用入力パラメーターが、オプショナルである場合、またはデフォルトを持つことができる場合、PROC ステートメントを使用し、位置ではなく、名前によって、そのパラメーターを変数に割り当てます。このパラメーター (キーワード・パラメーター )

は、PROC ステートメントに指定した変数名と一致する必要があります。 PROC ステートメントに指定された変数の命名に関する特別な規則については、5 (22ページ)

の項を参照してください。 PROC ステートメントは、値を持つキーワード・パラメーターでも値を持たないキーワード・パラメーターでも受け入れることができます。

キーワード・パラメーターおよびそれと一致している変数には、31 文字までの英数字 (A から Z、0 から 9、#、$、@) を入れることができます。キーワード・パラメーターの値 には、記号変数の値と同じ長さの制限 (32768 バイト) があります。

値のあるキーワードある CLIST に、その CLIST を使用するすべての場合ではないが、ほとんどの場合に適用できる値があれば、デフォルトを指定して、呼び出し元がキーワード・パラメーターによってその値をオーバーライドすることができます。

次の例では、0 は、CLIST に定位置パラメーターがないことを示しています。 (定位置パラメーターがない場合、ゼロが必要です。) STATE(NY) という表記によって、変数 STATE にデフォルトの NY が付与されます。

PROC 0 STATE(NY)

呼び出し元は、別の値を持つキーワード・パラメーターを渡すことによって、デフォルトをオーバーライドすることができます。たとえば、次のようになります。

EX clistname ’STATE(NJ)’

または

記号変数の定義

第 4 章 記号変数の使用 25

Page 46: TSO/E CLIST

%clistname STATE(NJ)

こうして、変数 STATE の値は、NJ になります。

変数にデフォルトを使用したくないが、呼び出し元が値を指定できるようにしたい場合は、空の括弧を使用します。次の PROC ステートメントによって、呼び出し元がキーワード・パラメーター (たとえば、STATE(NY) または STATE(NJ) など) を渡すことができます。

PROC 0 STATE()

上記の例で、呼び出し元が値のないキーワード・パラメーター STATE を渡すと、CLIST は値を入れるようにプロンプトを出します。呼び出し元がキーワードSTATE を渡さない場合、変数 STATE はヌル値をとることになります。

値のないキーワード値のないキーワード・パラメーターを使用して、呼び出し元に CLIST オプションを指定させることができます。たとえば、呼び出し元に、CLIST に対してその結果を印刷するように通知させるには、次のようにコーディングすることができます。

PROC 0 PRINT

さらに、次のようにして呼び出し元がキーワード・パラメーター PRINT を渡すと、

EX clistname ’PRINT’

変数 PRINT は、値 PRINT をとります。呼び出し元がパラメーター PRINT を渡さないと、変数 PRINT はヌル値をとることになります。CLIST はその値をテストして、呼び出し元が印刷オプションを希望するかどうかを確認することができます。このテストは、IF-THEN-ELSE シーケンスを使用してコーディングすることができます。

PROC 0 PRINTIF &PRINT = PRINT THEN (print results) /* If the value of PRINT = print ...*/ELSE ...

(IF-THEN-ELSE シーケンスの詳細については、 78ページの『IF-THEN-ELSE シーケンス』を参照してください。)

定位置パラメーターおよびキーワード・パラメーターの両方を受け入れる PROC の使用次の PROC ステートメントは、定位置パラメーターとキーワード・パラメーターの両方を受け取ります。

PROC 2 NAME ADDRESS STATE(NY) ZIP() PRINT

2 という数字は、呼び出し元が、最初の 2 つの変数 NAME および ADDRESS には定位置パラメーターを渡す必要があることを示します。また、呼び出し元は、変数 STATE (デフォルトは NY) および ZIP (デフォルトはなし) に、値のあるキーワード・パラメーターを渡すこともできます。さらに、呼び出し元は、値のないキーワード・パラメーター PRINT を渡して、印刷オプションを指定することもできます。

記号変数の定義

26 z/OS V1R8.0 TSO/E CLIST

Page 47: TSO/E CLIST

例次の CLIST は、PROC 変数に基づいてメモにアドレッシングし、そのアドレスを端末に表示します。また、I/O ステートメント ( 111ページの『第 9 章 ファイル入出力の実行』を参照) を使用して、そのアドレスをデータ・セットに書き込むこともできます。

/********************************/* Memo-addressing CLIST/********************************PROC 2 NAME ADDRESS STATE(NY) ZIP()WRITE TO: &NAMEWRITE AT: &ADDRESSWRITE &STATE &ZIP

CLIST が、PROC.CLIST という区分データ・セットのメンバー MEMO の中にあるとします。次のようにしてそれを呼び出した場合は、

ex proc(memo) ’Perry_Gordon 22_Oak_St._Pokville ZIP(10101)’

端末に次の出力が表示されます。

TO: PERRY_GORDONAT: 22_OAK_ST._POKVILLE

NY 10101

たとえば、次のようにしてパラメーターを付けずにそれを呼び出すと、

ex proc(memo)

CLIST は、名前およびアドレスの入力を促すプロンプトが表示されます。州は NY

とデフォルトされ、郵便番号はありません。

次の CLIST は、PROC、READ、および SET ステートメントを使用して LISTDS

コマンドを出し、変数を定義してそれに値を割り当てます。

/*********************************************************************//* This CLIST issues the LISTDS command, using a data set name and *//* any options requested by the user. If the user enters OPTIONS *//* as a parameter, READ and WRITE statements prompt for the options. *//* The CLIST gets a LISTDS return code from the &LASTCC control *//* variable, and writes the return code to the screen. *//*********************************************************************/PROC 1 DATASET OPTIONS /* Get a data set name */IF &OPTIONS = OPTIONS THEN /* If the user wants options, */ +

DO /* prompt for input */WRITE Type LISTDS options (MEMBER, HISTORY, or STATUS)READ OPT

ENDLISTDS &DATASET &OPT /* List data set with any options */SET RETURN_CODE = &LASTCC /* Get return code from LISTDS */WRITE RETURN CODE WAS &RETURN_CODE

変数の拡大使用本章ではここまで、SET、READ、および PROC ステートメントを使用して記号変数を定義し、それに値を割り当てるための基本的な方法をいくつか説明してきました。他の章では、以下のような他の CLIST ステートメントによって、さらに高度なアプリケーションにおいて記号変数を使用する方法を説明します。

記号変数の定義

第 4 章 記号変数の使用 27

Page 48: TSO/E CLIST

v GLOBAL、NGLOBAL、SYSCALL、および SYSREF ステートメントによって、ネストされた CLIST 内、および CLIST サブプロシージャー内で使用するための変数を定義することができます。これらのステートメントを用いた変数の使用については、 77ページの『第 7 章 CLIST の構造化』を参照してください。

v I/O ステートメントの OPENFILE、CLOSEFILE、GETFILE、および PUTFILE

は、記号変数を使用して、ファイル間で入力を送受信します。 これらのステートメントを用いた変数の使用については、 111ページの『第 9 章 ファイル入出力の実行』を参照してください。

v LISTDSI ステートメントは、データ・セット属性に関する情報を検索するために、特殊な CLIST 変数セットを使用します。 このステートメントおよびその変数については、 33ページの『第 5 章 制御変数の使用』を参照してください。

記号変数の結合1 つの記号変数を他の記号変数と結合して、複合変数を形成することができます。

CLIST が、PROGRAM1 から PROGRAM9 までの 9 つのデータ・セット内に存在するプログラムを呼び出すとします。 &PROGRAM と &I を結合することによって、反復 DO ループ構造を使用して、PROGRAM1 から PROGRAM9 を呼び出すことができます。以下のようにします。

SET PROGRAM = PROGRAMDO &I = 1 to 9call mylib(&PROGRAM&I)END

(反復 DO ループの使用の詳細については、 84ページの『反復 DO シーケンス』を参照してください。) ループ内の I の値を 1 から 9 へと大きくすることによって、CLIST は CALL コマンドを修正しなくても、次のプログラム・セットを呼び出すことができます。

PROGRAM1PROGRAM2...PROGRAM9

さらに、記号変数と文字ストリングを結合することもできます。 変数を文字ストリングの前に置く場合は、その記号変数の後にピリオドを入れて、文字ストリングと区別できるようにします。

&PROGRAM.A

文字ストリングを記号変数の前に置く場合はピリオドは不要です。アンパーサンドによって記号変数がストリングと区別されます。

A&PROGRAM

CLIST 内において先行スペースを保持するための変数の使用TSO/E が CLIST 内のジョブを処理する場合、DD * ステートメントの後に続くステートメントは 1 桁目に左寄せされるので、それによって先行スペースが削除されます。 (これは、CLIST 処理に固有のことで、バッチの場合には該当しません。)

ブランクをそのまま残しておく必要がある場合は、変数 (すなわち、&STR( )) を 1

つのブランクまたはブランク・ストリングに設定して、必要な数のブランクを確保

変数の拡大使用

28 z/OS V1R8.0 TSO/E CLIST

Page 49: TSO/E CLIST

し、DD * の後のすべてのステートメントの前にこの変数を付けます。 次の例は、CLIST 内にこの変数を組み込む方法を示しています。

PROC01CONTROLSET &A = STR( )SUBMIT * END(XX)//JOBCARD//OTHER//JCL//CARDS// DD *&A COPY ...&A ...&A ...&A ...

変数で使用可能なストレージの量の拡大CLIST が変数に使用するストレージの量は、CLIST 変数プールを 16MB 境界より上のストレージに入れることによって拡大することができます。新規の PROFILE

オプションの VARSTORAGE(HIGH/LOW) を使用して、変数が 16MB 境界 (HIGH)

より上のストレージか、または 16MB 境界 (LOW) より下のストレージを使用できるかどうかを示します。VARSTORAGE(HIGH) の使用は、システムがより多くの変数をトラップできることを意味します。

詳しくは、「z/OS TSO/E コマンド解説書」の PROFILE コマンドを参照してください。

記号変数のネスト状況によっては、別の変数の中に変数の名前をストアする必要がある場合があります。たとえば、2 つの変数を同じ方法で処理する必要があるとすると、その 2 つの変数の名前を別の (3 つ目) の変数に割り当てることができます。

変数の名前を別の変数の中にストアする場合、それは変数を「ネスト」することになります。

1 つの変数を別の変数にネストするには、二重アンパーサンドを付けた割り当てステートメントを使用します。 たとえば、変数 &CAT を変数 &MAMMAL の中にネストする場合は、次のようにコーディングします。

SET MAMMAL = &&CAT /* result: &MAMMAL contains &CAT */

二重アンパーサンド (&&) を使用すると、CLIST が、変数ストリング &CAT での記号置換を実行しなくなります。 CLIST は、割り当てステートメントで、最初のアンパーサンドだけを削除して、&MAMMAL を値 &CAT に設定します。

同じような名前を持つたくさんの変数を処理する必要がある場合には、変数のネストは非常に便利です。 たとえば、処理中に、&VARIABLE を別の変数&LINE1、&LINE2 などに設定する必要がある場合、多数の SET ステートメントをコーディングすることも、あるいは次のシーケンスをコーディングすることもできます。

SET NUMBER=0SET VARIABLE=&&LINE&NUMBER /* Initialize &VARIABLE to &LINE0 */DO WHILE &NUMBER<8 /* Process from &LINE1-&LINE8 */SET NUMBER = &NUMBER+1 /* Increase &NUMBER to create next

変数の拡大使用

第 4 章 記号変数の使用 29

|

|

|

|

|

|

|

|

|

Page 50: TSO/E CLIST

/* variable name */SET VARIABLE=&&LINE&NUMBER /* Set &VARIABLE to next variable

/* name */(processing)END

この他にも、ネストされた変数の使用例が 54ページの『&SYSOUTLINE』および155ページの『SYSPROC へのデータ・セットの割り振り - SPROC CLIST』に出ています。

二重アンパーサンドを含む値を持った変数をネストする場合、一番外側の変数には一番内側の変数の名前が入ります。 たとえば、次のステートメントの実行後、VARIABLE には &LINE1 が入り、DATA には値 430 が入ります。

SET LINE1=430SET NUMBER=1SET VARIABLE=&&LINE&NUMBERSET DATA=&VARIABLE

ネストされた変数と文字ストリングとの結合前述のように、間にピリオドを挿入することによって、変数を前にした場合の、変数と文字ストリングとの結合が可能になります (&PROGRAM.A)。この先行変数がネストされている場合は、ネストのレベルごとに、変数の後にピリオドを 1 つずつ追加してください。 たとえば、次のとおりです。

SET &BUDGET = JuneSET &PROGRAM = &budgetcall mylib(&PROGRAM.A) /* result: call mylib(JuneA)

以下のように、文字ストリングを変数の前に置く場合、ピリオドは不要です。

SET &BUDGET = JuneSET &PROGRAM = &budgetcall mylib(A&PROGRAM) /* result: call mylib(AJune)

ネストされた変数の置換CLIST がある行でネストされた記号変数を見つけると、その CLIST は通常、すべての記号変数が解決されるまで、その行を複数回にわたってスキャン (記号置換を実行) します。 たとえば、次のとおりです。

SET A = 50SET B = &&C /* result: &B contains &CSET C = &A+50 /* result: &C contains 100SET D = &&A /* result: &D contains &ASET X = (&D+&B)/&D /* result: &X contains 3

5 番目の式を解決するために、CLIST は記号変数 A から D に割り当てられた値を使用し、値 3 を X に割り当てます。

&SYSNSUB 組み込み関数を使用すれば、CLIST が、ネストされた変数の行のスキャンを行う回数を制限することができます。 たとえば、上記の例にある 5 番目の式を CLIST がスキャンする回数を 1 回だけに指定して、変数が 1 つのレベルの記号置換にのみ解決されるようにすることができます。この結果、CLIST は、&X を(&D+&B)/&D から (&A+&C)/&A に解決する必要があり、それ以上は進みません。&SYSNSUB の説明と例については、 61ページの『第 6 章 組み込み関数の使用』を参照してください。

変数の拡大使用

30 z/OS V1R8.0 TSO/E CLIST

Page 51: TSO/E CLIST

DBCS データを含む変数の結合2 バイト文字セット (DBCS) のデータを含む変数が他の DBCS データと結合されると、隣接した DBCS 区切り文字は削除されて 1 つの DBCS ストリングが作成されます。 たとえば、次のとおりです。

SET A = <d1d2>SET B = <d3d4>&A<d5d6> /* result: &B = <d3d4d1d2d5d6>

変数の拡大使用

第 4 章 記号変数の使用 31

Page 52: TSO/E CLIST

変数の拡大使用

32 z/OS V1R8.0 TSO/E CLIST

Page 53: TSO/E CLIST

第 5 章 制御変数の使用

制御変数の使用の概要 . . . . . . . . . . . . . . . . . . . . . . 34現在の日付および時刻の入手 . . . . . . . . . . . . . . . . . . . . 38

&SYSDATE、&SYSSDATE、および &SYSJDATE . . . . . . . . . . . 39&SYS4DATE、&SYS4SDATE、および &SYS4JDATE . . . . . . . . . . 39&SYSTIME および &SYSSTIME . . . . . . . . . . . . . . . . . 40

端末特性の入手 . . . . . . . . . . . . . . . . . . . . . . . . . 40&SYSTERMID . . . . . . . . . . . . . . . . . . . . . . . . 40&SYSLTERM および &SYSWTERM . . . . . . . . . . . . . . . . 40

ユーザーに関する情報の入手 . . . . . . . . . . . . . . . . . . . . 41&SYSUID . . . . . . . . . . . . . . . . . . . . . . . . . . 41&SYSPREF . . . . . . . . . . . . . . . . . . . . . . . . . 41&SYSPROC . . . . . . . . . . . . . . . . . . . . . . . . . 41

システムに関する情報の入手 . . . . . . . . . . . . . . . . . . . . 42&SYSCLONE. . . . . . . . . . . . . . . . . . . . . . . . . 42&SYSCPU および &SYSSRV . . . . . . . . . . . . . . . . . . . 42&SYSDFP . . . . . . . . . . . . . . . . . . . . . . . . . . 43&SYSHSM. . . . . . . . . . . . . . . . . . . . . . . . . . 43&SYSISPF . . . . . . . . . . . . . . . . . . . . . . . . . . 44&SYSJES . . . . . . . . . . . . . . . . . . . . . . . . . . 44&SYSLRACF . . . . . . . . . . . . . . . . . . . . . . . . . 44&SYSAPPCLU . . . . . . . . . . . . . . . . . . . . . . . . 44&SYSMVS. . . . . . . . . . . . . . . . . . . . . . . . . . 45&SYSNAME . . . . . . . . . . . . . . . . . . . . . . . . . 45&SYSNODE . . . . . . . . . . . . . . . . . . . . . . . . . 46&SYSOPSYS . . . . . . . . . . . . . . . . . . . . . . . . . 46&SYSRACF . . . . . . . . . . . . . . . . . . . . . . . . . 47&SYSPLEX . . . . . . . . . . . . . . . . . . . . . . . . . 47&SYSSECLAB . . . . . . . . . . . . . . . . . . . . . . . . 47&SYSSMS . . . . . . . . . . . . . . . . . . . . . . . . . . 47&SYSSMFID . . . . . . . . . . . . . . . . . . . . . . . . . 48&SYSSYMDEF . . . . . . . . . . . . . . . . . . . . . . . . 48&SYSTSOE . . . . . . . . . . . . . . . . . . . . . . . . . 49

CLIST に関する情報の入手 . . . . . . . . . . . . . . . . . . . . 49&SYSENV . . . . . . . . . . . . . . . . . . . . . . . . . . 49&SYSSCAN . . . . . . . . . . . . . . . . . . . . . . . . . 49&SYSICMD . . . . . . . . . . . . . . . . . . . . . . . . . 50&SYSPCMD . . . . . . . . . . . . . . . . . . . . . . . . . 50&SYSSCMD . . . . . . . . . . . . . . . . . . . . . . . . . 50&SYSPCMD と &SYSSCMD の関係 . . . . . . . . . . . . . . . . 50&SYSNEST . . . . . . . . . . . . . . . . . . . . . . . . . 50

CLIST CONTROL ステートメントのオプションの設定 . . . . . . . . . . 50&SYSPROMPT . . . . . . . . . . . . . . . . . . . . . . . . 51&SYSSYMLIST . . . . . . . . . . . . . . . . . . . . . . . . 51&SYSCONLIST . . . . . . . . . . . . . . . . . . . . . . . . 51&SYSLIST . . . . . . . . . . . . . . . . . . . . . . . . . . 52&SYSASIS. . . . . . . . . . . . . . . . . . . . . . . . . . 52&SYSMSG. . . . . . . . . . . . . . . . . . . . . . . . . . 52&SYSFLUSH . . . . . . . . . . . . . . . . . . . . . . . . . 52

© Copyright IBM Corp. 1988, 2006 33

Page 54: TSO/E CLIST

ユーザー入力に関する情報の入手 . . . . . . . . . . . . . . . . . . 53&SYSDLM. . . . . . . . . . . . . . . . . . . . . . . . . . 53&SYSDVAL . . . . . . . . . . . . . . . . . . . . . . . . . 53

TSO/E コマンド出力のトラップ . . . . . . . . . . . . . . . . . . . 54&SYSOUTTRAP. . . . . . . . . . . . . . . . . . . . . . . . 54&SYSOUTLINE . . . . . . . . . . . . . . . . . . . . . . . . 54&SYSOUTTRAP および &SYSOUTLINE の使用上の考慮事項 . . . . . . 55

戻りコードおよび理由コードの入手 . . . . . . . . . . . . . . . . . 56&LASTCC . . . . . . . . . . . . . . . . . . . . . . . . . . 56&MAXCC . . . . . . . . . . . . . . . . . . . . . . . . . . 57

TSOEXEC コマンドの結果の入手 . . . . . . . . . . . . . . . . . . 58データ・セット属性の入手. . . . . . . . . . . . . . . . . . . . . 58

LISTDSI ステートメント . . . . . . . . . . . . . . . . . . . . 58

CLIST 言語には、制御変数のセットが含まれています。 制御変数は、MVS™、TSO/E、および現行セッション (たとえば、有効なソフトウェアのレベル、時刻、および日付など) に関する情報を提供します。CLIST は制御変数を使用することにより、このような現在の情報を得ることができます。

制御変数のコーディングは、記号変数の場合と同じような方法で行います。たとえば、時刻を知るには、CLIST は制御変数 &SYSTIME を次のように使用します。

WRITE It’s &SYSTIME

その CLIST が 2:32:58 PM に実行している場合、この結果は次のようになる必要があります。

It’s 14:32:58

制御変数は定義する必要がありません。また、制御変数は定数名を持っていて、その変数名を示すと、情報を取得することができます。

値を割り当てることのできる制御変数は、変更可能 制御変数と呼ばれます。変数&SYSOUTTRAP は変更可能制御変数の 1 例です。この &SYSOUTTRAP は、CLIST 内で保管する TSO/E コマンド出力の行数を指示する変数です。 CLIST 内の各 TSO/E コマンドから 100 行の出力を保管したい場合、次のようにして、&SYSOUTTRAP を 100 に設定することができます。

SET &SYSOUTTRAP = 100

これによって、CLIST は、その CLIST 内の各コマンドから 100 行ずつの出力を検索し、処理することができます。一部のコマンドからの出力を保管したくない場合には、該当のコマンドを出す前に、&SYSOUTTRAP をゼロにリセットします。

制御変数の使用の概要35ページの表 3 は、関連のカテゴリー内の制御変数をリストし、どのページにそれが掲載されているか、それらは変更可能か、それらは変数アクセス・ルーチンのIKJCT441 によって検索可能かどうかを示します。 IKJCT441 の詳細については、「z/OS TSO/E Programming Services」を参照してください。

36ページの表 4 では変更可能制御変数について簡単に説明し、 37ページの表 5 では変更可能でない制御変数について簡単に説明します。

制御変数の使用の概要

34 z/OS V1R8.0 TSO/E CLIST

Page 55: TSO/E CLIST

表 3. カテゴリー別の制御変数

カテゴリー 変数 変更の可否IKJCT441 による検索の可否 ページ

現在の日付と時刻 &SYSDATE

&SYSJDATE

&SYSSDATE

&SYS4DATE

&SYS4JDATE

&SYS4SDATE

&SYSTIME

&SYSSTIME

不可不可不可不可不可不可不可不可

不可不可不可不可不可不可不可不可

39

39

39

39

39

39

40

40

端末関連 &SYSLTERM

&SYSWTERM

不可不可

不可不可

40

40

ユーザー関連 &SYSUID

&SYSPREF

&SYSPROC

不可不可不可

不可不可不可

41

41

41

システム関連 &SYSAPPCLU

&SYSCLONE

&SYSCPU

&SYSDFP

&SYSHSM

&SYSISPF

&SYSJES

&SYSLRACF

&SYSMVS

&SYSNAME

&SYSNODE

&SYSOPSYS

&SYSRACF

&SYSPLEX

&SYSSECLAB

&SYSSMFID

&SYSSMS

&SYSSRV

&SYSSYMDEF

&SYSTERMID

&SYSTSOE

不可不可不可不可不可不可不可不可不可不可不可不可不可不可不可不可不可不可不可不可不可

不可不可不可不可不可不可不可不可不可不可不可不可不可不可不可不可不可不可不可不可不可

44

42

42

43

43

44

44

44

45

45

46

46

47

47

47

48

47

42

48

40

49

CLIST 関連 &SYSSCAN

&SYSENV

&SYSICMD

&SYSPCMD

&SYSSCMD

&SYSNEST

可不可不可不可不可不可

可不可不可不可不可不可

49

49

50

50

50

50

1. CLIST CONTROL ステートメント値をテストまたは変更できるようにします。

制御変数の使用の概要

第 5 章 制御変数の使用 35

Page 56: TSO/E CLIST

表 3. カテゴリー別の制御変数 (続き)

カテゴリー 変数 変更の可否IKJCT441 による検索の可否 ページ

CLIST 関連1 &SYSPROMPT

&SYSSYMLIST

&SYSCONLIST

&SYSLIST

&SYSASIS

&SYSMSG

&SYSFLUSH

可可可可可可可

可可可可可可可

51

51

51

52

52

52

52

入力関連 &SYSDLM

&SYSDVAL

不可可

可可

53

53

出力関連 &SYSOUTTRAP

&SYSOUTLINE

可可

可可

54

54

戻りコード &LASTCC

&MAXCC

&SYSABNCD

&SYSABNRC

&SYSCMDRC

可可可可可

可可可可可

56

57

58

58

58

表 4. 変更可能制御変数 (アルファベット順)

変更可能変数 内容

&LASTCC 最後のオペレーションからの戻りコードが入ります (TSO/E コマンド、サブコマンド、または CLIST ステートメント)

&MAXCC CLIST 内でこの時点までに出された最大の戻りコード、あるいはネストされた CLIST から戻された最大の戻りコードが入ります。

&SYSABNCD TSOEXEC コマンドによって最後に呼び出されたコマンドによって戻された ABEND コードが入ります。

&SYSABNRC TSOEXEC コマンドによって最後に呼び出されたコマンドによって戻された ABEND 理由コードが入ります。

&SYSASIS ON は CONTROL NOCAPS/ASIS を指定します。OFF は CONTROL

CAPS を指定します。

&SYSCMDRC TSOEXEC コマンドによって最後に呼び出されたコマンドから戻されたコマンド戻りコードが入ります。

&SYSCONLIST ON は CONTROL CONLIST を指定します。OFF は CONTROL

NOCONLIST を指定します。

&SYSDVAL (1) ユーザーが、TERMIN または TERMING ステートメントの後にCLIST に制御を戻したときに、そのユーザーによって指定された入力行が入ります。(2) オペランドを指定しない READ ステートメントの後にユーザーによって指定された入力行が入ります。(3) SET SYSDVAL= の実行後の値を含みます。

&SYSFLUSH ON は CONTROL FLUSH を指定します。OFF は CONTROL

NOFLUSH を指定します。

&SYSLIST ON は CONTROL LIST を指定します。OFF は CONTROL NOLIST を指定します。

&SYSMSG ON は CONTROL MSG を指定します。OFF は CONTROL NOMSG を指定します。

制御変数の使用の概要

36 z/OS V1R8.0 TSO/E CLIST

Page 57: TSO/E CLIST

表 4. 変更可能制御変数 (アルファベット順) (続き)

変更可能変数 内容

&SYSOUTLINE TSO/E コマンドによって作成されたコマンド出力の行数が入ります。その出力を含む CLIST 変数を指し示します。

&SYSOUTTRAP 保管される TSO/E コマンド出力の最大行数が入ります。

&SYSPROMPT ON は CONTROL PROMPT を指定します。OFF は CONTROL

NOPROMPT を指定します。

&SYSSCAN 変数を評価するために、CLIST が再スキャンできる最大回数が入ります。デフォルトの値は 16 回です。最大値は +2,147,483,647 です。最小値は 0 です。

&SYSSYMLIST ON は CONTROL SYMLIST を指定します。OFF は CONTROL

NOSYMLIST を指定します。

表 5. 変更不可能制御変数 (アルファベット順)

変更不可能変数 内容

&SYSAPPCLU APPC/MVS 論理装置 (LU) 名が入ります。

&SYS4DATE 次の形式の現在日付が入ります。すなわち、月/日/年 で、年 は 4 桁の数で表されます。

&SYS4JDATE 次の形式の年間通算日が入ります。すなわち、年.日 で、年 は 4 桁の数字で表されます。

&SYS4SDATE 次の形式の日付が入ります。すなわち、年/月/日 で、年 は 4 桁の番号で表されます。

&SYSCLONE システム名を表す、MVS システム・シンボルが入ります。

&SYSCPU セッション中に使用された CPU 時間の秒数を次の形式で表します。すなわち、秒.100 分の 1 秒。

&SYSDATE 次の形式の現在日付が入ります。すなわち、月/日/年。

&SYSDFP インストールされている MVS/ データ機能プロダクト (MVS/DFP™) のレベルが入ります。

&SYSDLM TERMIN または TERMING ステートメントの後に、CLIST に制御を戻すためにユーザーによって指定された入力行数が入ります。

&SYSENV CLIST がフォアグラウンド環境またはバックグラウンド環境のどちらで実行されているかを示します。

&SYSHSM データ機能記憶管理サブシステムの階層記憶管理マネージャー(DFSMShsm™) のレベルを示します。

&SYSICMD 呼び出し元がこの CLIST を暗黙的に呼び出したときに使用した名前が入ります。 (この値は、呼び出し元が明示的にその CLIST を呼び出した場合はヌル値となります。)

&SYSISPF ISPF ダイアログ管理サービスがその CLIST で有効かどうかを示します。

&SYSJDATE 次の形式の年間通算日が入ります。すなわち、年.日。

&SYSJES インストールされている JES の名前およびレベルが入ります。

&SYSLRACF その CLIST で有効な RACF のレベルを示します。(下記の &SYSRACF

を参照)

&SYSLTERM その端末画面でアプリケーション用に有効な行数が入ります。

制御変数の使用の概要

第 5 章 制御変数の使用 37

Page 58: TSO/E CLIST

表 5. 変更不可能制御変数 (アルファベット順) (続き)

変更不可能変数 内容

&SYSMVS z/OS の基本制御プログラム (BCP) コンポーネントのレベルが入ります。

&SYSNAME SYS1.PARMLIB メンバー IEASYSxx 内の SYSNAME ステートメントに指定されている、CLIST が実行中のシステム名が入ります。

&SYSNEST 現在実行中の CLIST が、別の CLIST によって呼び出されたものであるかどうかを示します。

&SYSNODE そのインストール先システムの JES のネットワーク・ノード名が入ります。

&SYSOPSYS z/OS の名前、バージョン、リリース、修正レベル、および FMID が入ります。

&SYSPCMD この CLIST で、最後に実行された TSO/E コマンドの名前 (または、その名前の省略形) が入ります。

&SYSPLEX SYS1.PARMLIB の COUPLExx または LOADxx メンバー内にあるMVS シスプレックス名が入ります。

&SYSPREF TSO/E が完全修飾データ・セット名に使用するプレフィックスが入ります。

&SYSPROC TSO/E ユーザーがログオンしたときに使用したログオン・プロシージャーの名前が入ります。

&SYSRACF RACF® がインストールされていて、その CLIST で有効であるかどうかを示します。

&SYSSCMD 最後に実行されたサブコマンドの名前が入ります。

&SYSSDATE 次の形式の日付が入ります。すなわち、年/月/日。

&SYSSECLAB TSO/E セッションのセキュリティー・ラベル (SECLABEL) 名が入ります。

&SYSSMFID システム管理機能 (SMF) がアクティブになっているシステムを識別します。

&SYSSMS その CLIST で DFSMS/MVS® が有効かどうかを示します。

&SYSSRV そのセッション中に使用されたシステム・リソース・マネージャー(SRM) のサービス単位の数が入ります。

&SYSSYMDEF MVS システムの記号名が入ります。

&SYSTERMID CLIST が開始された端末の端末 ID が入ります。

&SYSSTIME 次の形式の時刻が入ります。すなわち、時:分。

&SYSTIME 次の形式の時刻が入ります。すなわち、時:分:秒。

&SYSTSOE インストールされている TSO/E のレベルを次の形式で示します。すなわち、バージョン リリース 修正番号。

&SYSUID 現行セッションがログに記録されたユーザー ID が入ります。

&SYSWTERM 画面の幅が入ります。

現在の日付および時刻の入手次の制御変数は、現在の日付および時刻に関連した情報を提供します。これらのどの変数も、割り当てステートメントによって修正することはできません。

制御変数の使用の概要

38 z/OS V1R8.0 TSO/E CLIST

Page 59: TSO/E CLIST

&SYSDATE、&SYSSDATE、および &SYSJDATE3 つの変数が現在の日付を知らせます。 これらの変数は、現在の年を 2 桁の数字で戻すので注意してください。 2000 またはそれ以降の日付をサポートするために、4 桁の数字で現在の年を戻す変数セットが、別に用意されています。

&SYSDATE は、米国標準形式、すなわち、月/日/年 で日付を示します。 実行日が2001 年 6 月 9 日の場合、次のステートメントによって、『Today is 06/09/01』 というメッセージが表示されます。

WRITE Today is &SYSDATE

&SYSSDATE は、ソート可能な形式、すなわち、年/月/日 で日付を示します。 実行日が 2001 年 6 月 9 日の場合、次のステートメントによって、『Today is

01/06/09』 というメッセージが表示されます。

WRITE Today is &SYSSDATE

&SYSJDATE は、年間通算日の形式、すなわち、年.日 で日付を示します。 実行日が 2001 年 6 月 9 日の場合、次のステートメントによって、『Today is 01.160』というメッセージが表示されます。

WRITE Today is &SYSJDATE

&SYSDATE および &SYSSDATE は、スラッシュを含むデータを出力します。したがって、比較ステートメントおよび割り当てステートメントの式にそれらを含める場合は、&STR 組み込み関数の中に入れてください。たとえば、次の例では、&SYSDATE は比較式を含むステートメントの中にあります。したがって、それを&STR 組み込み関数の中に入れてください。ただし、WRITE ステートメントでは&STR を使用する必要はありません。

IF &STR(&SYSDATE) = &STR(06/09/01) THEN +WRITE On &SYSDATE, the system was down for &TMIN minutes.

&SYS4DATE、&SYS4SDATE、および &SYS4JDATE3 つの変数が、年を 4 桁の数字で表す形式で現在日付を示します。現在日付を 2

桁の数字で表す変数の場合とは逆に、これらの変数は 1999 年以降の年にも対応することができます。

&SYS4DATE は、米国標準形式、すなわち、月/日/年 で日付を示します。 実行日が 2001 年 11 月 22 日の場合、次のステートメントによって、『Today is

11/22/2001』 というメッセージが表示されます。

WRITE Today is &SYS4DATE

&SYS4SDATE は、ソート可能な形式、すなわち、年/月/日 で日付を示します。 実行日が 2001 年 11 月 22 日の場合、次のステートメントによって、『Today is

2001/11/22』 というメッセージが表示されます。

WRITE Today is &SYS4SDATE

&SYS4JDATE は、年間通算日の形式、すなわち、年.日 で日付を示します。 実行日が 2001 年 11 月 22 日の場合、次のステートメントによって、『Today is

2001.326』 というメッセージが表示されます。

WRITE Today is &SYS4JDATE

現在の日付および時刻の入手

第 5 章 制御変数の使用 39

Page 60: TSO/E CLIST

&SYS4DATE および &SYS4SDATE は、スラッシュを含むデータを出力します。したがって、比較ステートメントおよび割り当てステートメントの式にそれらを含める場合は、&STR 組み込み関数の中に入れてください。たとえば、次の例では、&SYS4DATE は比較式を含むステートメントの中にあります。したがって、それを&STR 組み込み関数の中に入れてください。ただし、WRITE ステートメントでは&STR を使用する必要はありません。

IF &STR(&SYS4DATE) = &STR(11/22/2001) THEN +WRITE On &SYS4DATE, the system was down for &TMIN minutes.

&SYSTIME および &SYSSTIME2 つの変数が現在時刻を示します。

&SYSTIME は、次の形式で時刻を示します。すなわち、時:分:秒。実行時刻が 2 時32 分 58 秒 p.m. である場合、次のステートメントによって『It’s 14:32:58』というメッセージが表示されます。

WRITE It’s &SYSTIME

&SYSSTIME は、&SYSTIME の短縮バージョンを次の形式で示します。すなわち、時:分 という形式です。実行時刻が 2 時 32 分 58 秒 p.m. である場合、次のステートメントによって、『It’s 14:32』というメッセージが表示されます。

WRITE It’s &SYSSTIME

端末特性の入手3 つの制御変数が、ユーザーがログオンしている端末に関する情報を提供します。

&SYSTERMID&SYSTERMID には、CLIST が開始された端末の端末 ID が含まれます。たとえば、次のとおりです。

PROC 0WRITE &SYSTERMIDEXIT

は、M02XA06R という端末 ID を戻します。最大長は 8 文字です。末尾ブランクは削除されます。

その CLIST がバックグラウンドで実行している場合、&SYSTERMID 制御変数はヌル・ストリングを戻します。

&SYSLTERM および &SYSWTERM&SYSLTERM は、その端末画面で、アプリケーション用に有効な行数を示します。&SYSWTERM は、画面の幅を示します。

&SYSLTERM および &SYSWTERM は、CLIST がセッション・マネージャー・コマンドを使用して画面をフォーマットし直す場合に使用することができます。たとえば、HORZNTL という CLIST は、端末画面の行数と、その幅に従って、その画面を水平方向に分割します。 HORZNTL のそれ以降のセクションは、再フォーマットされた画面のウィンドウを定義する、セッション・マネージャー・コマンド内の

現在の日付および時刻の入手

40 z/OS V1R8.0 TSO/E CLIST

Page 61: TSO/E CLIST

制御変数を置き換えます。明示的な画面位置の代わりに &SYSLTERM および&SYSWTERM を使用することによって、HORZNTL は、それぞれの画面で有効なスペースを最大限に活用します。

SET LINE = (&SYSLTERM-5)/2SET TOPS = &LINE-1;SET BOT = &LINE+1;SET BOTS = (&SYSLTERM-1)-&BOTSET BOTSX = (&SYSLTERM-3)-&BOTsmput /save screen;save.pfk;+

save.win main;save.win line;save.win current;+del.win main;del.win line;del.win current;+define.window main 1 1 &TOPS &SYSWTERM;+define.window line &LINE 1 1 &SYSWTERM;+define.window current &BOT 1 &BOTS &EVAL(&SYSWTERM-18)/

ユーザーに関する情報の入手3 つの制御変数が、現在のユーザー ID、ログオン・プロシージャー、およびデータ・セットのプレフィックスを含む、ユーザー関連の情報を提供します。

&SYSUID&SYSUID は、現在の TSO/E セッションがログオンしているユーザー ID を示します。この変数を、メッセージの中、あるいはロジックがユーザー ID に依存する場合、あるいはユーザー ID を参照する場合に使用してください。たとえば、次のメッセージは、CLIST がどのように呼び出されるかについての情報を表示します。

WRITE CLIST invoked by user &SYSUID at &SYSTIME on &SYSSDATE

&SYSPREF&SYSPREF は、非完全修飾データ・セット名にプレフィックスを付ける、現行データ・セット名プレフィックスを示します。 PROFILE コマンドがこのプレフィックスを制御します。 CLIST を呼び出したユーザーに固有なデータ・セットを割り振りたい場合には、&SYSPREF を使用します。 たとえば、次の ALLOCATE コマンドは、そのコマンドを含んでいる CLIST の呼び出し元の固有データ・セットを割り振ります。

alloc da(’&SYSPREF..records.data’) shr reuse

&SYSPREF と RECORDS の間には、2 つのピリオドが必要です。1 つ目のピリオドは、変数名の終わりを示し、2 つ目は連結されるテキストの部分を示します。置換後は、このコマンドは次の形式になります。

alloc da(’prefix.records.data’) shr reuse

&SYSPROC&SYSPROC は、ユーザーが現行 TSO/E セッションにログオンしたときに使用した、ログオン・プロシージャーの名前を示します。 &SYSPROC を使用して、セッション・マネージャーなどのプログラムが、ユーザーに使用可能であるかどうかを判別することができます。たとえば、セッション・マネージャー・コマンドを使用して画面を再フォーマットする CLIST (HORZNTL) を呼び出す場合は、その前にそのセッション・マネージャーがアクティブであるかどうかを検査します。この検査を実行する 1 つの方法としては、次のようにログオン・プロシージャーをチェックする方法があります。

端末特性の入手

第 5 章 制御変数の使用 41

Page 62: TSO/E CLIST

IF &STR(&SYSPROC) = SMPROC THEN +%horzntlELSE +DOWRITE Your screen cannot be reformatted.WRITE Log on using SMPROC as logon proc.END

&SYSPROC は、以下の値を与えます。

v CLIST がフォアグラウンドで起動されると (&SYSENV が ’FORE’ を与える)、&SYSPROC は、現行ログオン・プロシージャーの名前を与えます。

v CLIST が (SUBMIT コマンドによりサブミットされたジョブから) バッチで起動されると、&SYSPROC は、イニシエーターの ID である、値 ’INIT’ を与えます。

v CLIST が開始済みタスク (Start オペレーター・コマンドにより開始された、アドレス・スペース) から起動されると、&SYSPROC は、開始済みタスクの ID を与えます。’S procname’ をオペレーター・コンソールから出すと、&SYSPROC

は、値 ’procname’ を与えます。

システムに関する情報の入手次の制御変数は、CLIST が実行しているシステム環境に関する情報を示します。

これらの制御変数は、CLIST 内でいろいろな目的に使用することができます。たとえば、変数 &SYSNAME、&SYSPLEX、&SYSCLONE、および &SYSSYMDEF を使用して、シスプレックス環境内で実行することになる共通 CLIST を作成することができます。また、これらの制御変数によって戻される値を使用すると、システム固有のデータ・セット名を構築あるいは識別することができます。

&SYSCLONE&SYSCLONE は、そのシステム名を表す MVS システム・シンボルを戻します。このシンボルは、そのシステム名の 1 バイトまたは 2 バイトの省略表現です。この値は、SYS1.PARMLIB メンバー IEASYMxx 2 から取得されます。たとえば、SYSCLONE(A1) が IEASYMxx 内で指定された場合、

PROC 0WRITE &SYSCLONEEXIT

によって、A1 という値が戻されます。 MVS SYSCLONE ID が IEASYMxx に指定されていない場合は、ヌル・ストリングが戻されます。

&SYSCPU および &SYSSRV&SYSCPU は、セッションで使用された中央処理装置 (CPU) 時間の秒数を次の形式で示します。すなわち、秒. 100 分の 1 秒。

&SYSSRV は、セッションで使用されたシステム・リソース・マネージャー (SRM)

のサービス単位の数を示します。

2. MVS/ESA™ SP™ 5.2 で取り入れられたもの。システム置換記号名および値を割り当てるためのメカニズムを提供します。

ユーザーに関する情報の入手

42 z/OS V1R8.0 TSO/E CLIST

Page 63: TSO/E CLIST

これらの変数は、アプリケーションのパフォーマンスの測定、およびセッション所要時間のユーザーへの報告に使用することができます。

たとえば、CLIST から呼び出されたアプリケーションのパフォーマンスを測定するには、以下のようにコーディングします。

SET CPU = &SYSCPUSET SRV = &SYSSRVcall mylib(payroll) ’50,84’SET CPU = &STR(&SYSCPU-&CPU)SET SRV = &STR(&SYSSRV-&SRV)call mylib(calc) ’&STR(&CPU),&STR(&SRV)’ /* Measure performance */...

/* Do calculations and pass back results */...WRITE &CPU &SRV

これによって、ユーザーは、プログラム PAYROLL によって使用された CPU 時間の秒数と、SRM サービス単位の数を確認することができます。

&SYSDFP&SYSDFP には、インストールされている MVS/データ機能プロダクト (MVS/DFP)

のレベルが入ります。たとえば、次のとおりです。

PROC 0WRITE &SYSDFPEXIT

によって、02.02.10.00 などといった値が戻されます。戻される値のフォーマットは、cc.vv.rr.mm になります。ここで、cc はコンポーネント、vv はバージョン、rr

はリリース番号、mm は修正レベルをそれぞれ示します。これらの値はすべて、2

桁の 10 進数です。

cc の値が 00 の場合、DFSMS/MVS 以前のコンポーネントを示し、この値が 00 以外の場合は、DFSMS/MVS コンポーネントまたはそれ以降のコンポーネントを示します。

&SYSHSM&SYSHSM は、データ機能記憶管理サブシステムの階層記憶管理プログラム(DFSMShsm) のレベルを示します。

OS/390® V2R10 以降のリリースで DFSMShsm がアクティブになっていて PTF

UW77424 が適用されている場合、 &SYSHSM はピリオドで区切られた 4 連の 2

桁の 10 進数字 からなる文字ストリングを示します。これは ARCQCT のMQCT_VRM フィールドが、 4 バイトレベルであることを表します。たとえば、OS/390 V2R10 の DFSMShsm がアクティブで PTF UW77424 が適用されている場合の &SYSHSM の値は 02.02.10.00 となります。

注: ARCQCT 制御ブロックにおける MQCT_VRM フィールドの説明については、OS/390 V2R10 または「z/OS マイグレーション」を参照してください。

OS/390 V2R10 より前のリリースの DFSMShsm がインストールされていてアクティブになっている場合、&SYSHSM には 4 桁の 10 進数字の文字ストリングが入り

システムに関する情報の入手

第 5 章 制御変数の使用 43

Page 64: TSO/E CLIST

ます。これは、DFSMShsm のレベルを表します。たとえば、DFSMShsm 1.5.0 がインストールされていてアクティブになっている場合は、&SYSHSM の値は 1050 となります。

階層記憶管理プログラムがアクティブになっていない場合は、&SYSHSM にはヌル・ストリングが入ります。

&SYSISPF&SYSISPF は、ISPF ダイアログ管理機能サービスが使用できるかどうかを示します。 この変数は 2 つの値を持つことができます。

ACTIVE ISPF サービスが使用できる。

NOT ACTIVE ISPF が初期設定されていない。

&SYSJES&SYSJES には、インストールされている JES の名前およびレベルが入ります。たとえば、次のとおりです。

PROC 0WRITE &SYSJESEXIT

によって、JES2 OS 2.10 などといった値が戻されます。この例で、JES2 は JES 名を表し、OS 2.10 は JES レベル、すなわち、JES2 のバージョンとリリース番号を表します。JES レベルには、修正レベルも入ります。

戻される値は、サブシステム・インターフェース要求ルーチン (IEFSSREQ) によって提供されます。

いずれのストリングもブランク文字によって分離されます。末尾ブランク文字がある場合はすべて削除されます。 JES 名または JES レベルが空の文字ストリングを戻した場合には、分離ブランク文字は挿入されません。

サブシステムがアクティブでない場合、-INACTIVE- というストリングが戻されます(ストリング区切り文字に注意)。

そのサブシステムが JES2 4.3 またはそれ以降のものでも、また、JES3 5.1.1 またはそれ以降のものでもないことをシステムが確認すると、&SYSJES 制御変数には、-DOWNLEVEL- というストリングが入ります (ストリング区切り文字に注意)。

&SYSLRACF&SYSLRACF は、システムにインストールされている RACF のレベルを示します。 RACF がインストールされていない場合、&SYSLRACF にはヌル値が入ります。

&SYSAPPCLU&SYSAPPCLU には、MVS/APPC 論理装置 (LU) 名が入ります。 LU 名は、そのCLIST が実行する TSO/E アドレス・スペースを、拡張プログラム間通信 (APPC)

システムに関する情報の入手

44 z/OS V1R8.0 TSO/E CLIST

Page 65: TSO/E CLIST

の SNA アドレス可能単位として識別します。 LU 名は、APPC/MVS 拡張 TP 呼び出し可能サービス (ATBEXAI - 情報抽出サービス) を通じて取得します。 たとえば、次のとおりです。

PROC 0WRITE &SYSAPPCLUEXIT

によって、LU0001 などという LU 名が戻されます。末尾ブランクは削除されます。次の場合はヌル・ストリングが戻されます。

v CLIST が実行しているアドレス・スペースの中に APPC 活動がない場合。

v APPC/MVS 拡張 TP 呼び出し可能サービスによって LU 名が提供されない場合。

注: CLIST は、CPI 通信 (あるプログラムが、SNA ネットワーク内の同じまたは異なる MVS システム上にある別のプログラムと通信できるようにする手法) をサポートしません。したがって、&SYSAPPCLU 制御変数を使用することは、APPC が確立されているプログラム (たとえば、REXX EXEC など) によって呼び出された CLIST の中でのみ有効です。この制御変数がこの環境以外で使用されると、ヌル・ストリングが戻されます。

&SYSMVS&SYSMVS には、z/OS の基本制御プログラム (BCP) のレベルが入ります。たとえば、次のとおりです。

PROC 0WRITE &SYSMVSEXIT

によって、BCP コンポーネントのレベルを示す SP7.0.1 などの値が戻されます。

戻される値は、連続ベクトル・テーブル (CVT) 内の CVTPRODN フィールドの値です。

注: &SYSMVS によって戻される値の形式は今後変更される可能性がありますが、CVTPRODN フィールドの内容はそのままです。

OS/390 ユーザーの方へ: お客様が MVS/ESA SP 5.x から OS/390 に変更する際に、その変更を最もリスクの少ない形で行えるように、CVTPRODN フィールドのフォーマットはそのまま残し、そのフィールドには OS/390 リリース 1 用に SP5.3.0

を入れてあります。 一部のプロダクトでは、バイト 3 をテストしてそれが 『5』 かどうかをテストするからです。これは、ある特定の機能が使用できることを示す値です。

&SYSNAME&SYSNAME は、その CLIST が実行しているシステム名を、SYSNAME ステートメント上の SYS1.PARMLIB メンバー IEASYSxx 内の指定に従って戻します。 たとえば、次のとおりです。

システムに関する情報の入手

第 5 章 制御変数の使用 45

Page 66: TSO/E CLIST

PROC 0WRITE &SYSNAMEEXIT

によって、MVS システム名として ATQS などが戻されます。

&SYSNAME 制御変数は、その CLIST が、マルチシステム・グローバル・リソースの逐次化システム内のどのシステムで実行しているかを識別するために使用できます。 SYSNAME の値がマルチシステム・コンプレックス内でどのように使用されるかについては、「z/OS MVS 初期設定およびチューニング 解説書」を参照してください。

&SYSNODE&SYSNODE には、インストール先システムの JES のネットワーク・ノード名が入ります。この名前は、ネットワーク・ジョブ入力 (NJE) のタスクに使用されているシステム、またはシステム・コンプレックスの、ネットワーク内のローカル JES を識別します。たとえば、次のとおりです。

PROC 0WRITE &SYSNODEEXIT

によって、BOE9 といった値が戻されます。この値はそのローカル JES のネットワーク・ノード名です。

&SYSNODE 制御変数によって戻されるノード名は、JES の NODE 初期設定ステートメントを基にしています。

サブシステムがアクティブでないことをシステムが確認すると、&SYSNODE 制御変数に -INACTIVE- というストリングが入ります (ストリング区切り文字に注意)。

そのサブシステムが、JES2 4.3 またはそれ以降のものでも、また、JES3 5.1.1 またはそれ以降のものでもないことをシステムが確認すると、&SYSNODE 制御変数には -DOWNLEVEL- というストリングが入ります (ストリング区切り文字に注意)。

&SYSOPSYS&SYSOPSYS には、z/OS の名前、バージョン、リリース、修正レベルおよびそのインストール先の z/OS の FMID が入ります。たとえば、次のとおりです。

PROC 0WRITE &SYSOPSYSEXIT

によって、Z/OS 01.01.00 JBB7713 といったストリングが戻されます。ここで Z/OS

はプロダクト名を示し、その後にはブランク文字、バージョン、リリース、および修正番号を表す 8 文字の文字ストリングと続き、その後にブランク文字、最後にFMID となります。

&SYSOPSYS 制御変数は、APAR OW17844 を含む TSO/E バージョン 2 リリース5 よりも後で紹介されました。 TSO/E 2.5 以前の環境で使用したり、APAR

OW17844 に関連した PTF のない環境で使用すると、システムはヌル・ストリングを戻します。

システムに関する情報の入手

46 z/OS V1R8.0 TSO/E CLIST

Page 67: TSO/E CLIST

注: オペレーティング・システムの製品名を「Z/OS」ではなく「z/OS」と表示したい場合は、 CONTROL ASIS または CONTROL NOCAPS ステートメントを&SYSOPSYS ステートメントの前に指定しなくてはなりません。また、「/」文字は、プロダクト名 (例えば、『z/OS』) の中に出てきます。CLIST では、その文字が除算演算子であると解釈される場合があります。たとえば、SET

LEVEL=&SYSOPSYS によってエラー・メッセージが出される場合があります。CLIST が結果のストリングを評価しないようにするには、&STR 関数を使用します。たとえば、SET LEVEL=&STR(&SYSOPSYS) というようにします。

&SYSRACF&SYSRACF は RACF の状況を示します。この変数は、次の 3 つの値のいずれかを持つことができます。

AVAILABLE RACF サービスが使用できる。

NOT AVAILABLE RACF が初期設定されていない。

NOT INSTALLED RACF がインストールされていない。

&SYSPLEX&SYSPLEX は、SYS1.PARMLIB の COUPLExx または LOADxx メンバーの中にある MVS シスプレックス名を戻します。 たとえば、次のとおりです。

PROC 0WRITE &SYSPLEXEXIT

によって、PLEXNY02 という値が戻されます。 この値の長さは最大で 8 文字です。末尾ブランクは削除されます。 SYS1.PARMLIB 内でシスプレックス名が指定されていない場合、&SYSPLEX はヌル・ストリングを戻します。

&SYSSECLAB&SYSSECLAB は、CLIST が開始された TSO/E セッションで有効な SECLABEL

の名前を戻します。 たとえば、次のとおりです。

PROC 0WRITE &SYSSECLABEXIT

によって、現在のセキュリティー・ラベル名として SYSHIGH などの値が戻されます。末尾ブランクは削除されます。

注: &SYSSECLAB 制御変数を使用する場合は、RACF がインストールされ、セキュリティー・ラベル検査が活動化されている必要があります。セキュリティー情報がない場合、&SYSSECLAB 制御変数にはヌル・ストリングが入ります。

&SYSSMS&SYSSMS は、DFSMS/MVS が CLIST で使えるかどうかを示します。たとえば、次のとおりです。

PROC 0WRITE &SYSSMSEXIT

システムに関する情報の入手

第 5 章 制御変数の使用 47

Page 68: TSO/E CLIST

によって、次のいずれかの文字ストリングが戻されます。

UNAVAILABLE DFSMS/MVS はそのシステムで使用できない。

INACTIVE DFSMS/MVS はそのシステムで使用できるが、アクティブでない。

ACTIVE DFSMS/MVS は使用でき、アクティブになっているので、CLIST がそれに依存することができる。

注: この制御変数には、MVS/ データ機能プロダクト (MVS/DFP) バージョン 3.3

またはそれ以降のものが必要です。それ以前のリリースで使用された場合、エラー・メッセージが出されます。

&SYSSMFID&SYSSMFID は、システム管理機能 (SMF) がアクティブになっているシステムを識別します。戻される値は、SID ステートメントの SYS1.PARMLIB メンバーSMFPRMxx に指定されたものです。末尾ブランクは削除されます。たとえば、次のとおりです。

PROC 0WRITE &SYSSMFIDEXIT

によって、SMF ID として ATQS が戻されます。インストール先のシステムでは、&SYSSMFID および &SYSNAME によって戻される値が同一である可能性があります。メンバー SMFPRMxx 内の SYSNAME および SID ステートメントについての詳細は、「z/OS MVS 初期設定およびチューニング 解説書」を参照してください。

&SYSSYMDEF&SYSSYMDEF(symbol_name) は、SYSDEF ... SYMDEF ステートメントのSYS1.PARMLIB メンバー IEASYMxx に指定された変数 ″symbol_name″ で表される値を戻します。 あるいは、「ストリング」 は「z/OS MVS 初期設定およびチューニング 解説書」で定義されているシステムの静的シンボルまたは動的シンボルの 1

つでもかまいません。

たとえば、SYMDEF(&SYSTEMA = '’sA') が IEASYMxx 内で指定された場合、

PROC 0WRITE &SYSSYMDEF(SYSTEMA)EXIT

によって SA という値が戻されます。IEASYMxx に記号名が指定されていない場合、および記号名が MVS 定義の静的シンボルまたは動的シンボルのいずれでもない場合は、ヌル・ストリングが戻されます。

ここで、記号名 SYSTEMA には、IEASYMxx 内の SYMDEF ステートメント上の SA

の名前が割り当てられます。 &SYSSYMDEF(symbol_name) 制御変数は解決されてSA というストリングになります。

MVS 定義の静的または動的システム・シンボルの 1 つの値を検索することもできます。たとえば、次のとおりです。

WRITE &SYSSYMDEF(JOBNAME) /*Returns JOBNAMEBOB perhaps */

システムに関する情報の入手

48 z/OS V1R8.0 TSO/E CLIST

Page 69: TSO/E CLIST

現在定義されている MVS 静的または動的システム・シンボルの説明およびリストについては、「z/OS MVS 初期設定およびチューニング 解説書」を参照してください。

たとえば、次のように入力すると、システムの IPL ボリューム・シリアル名を検索することができます。

WRITE &SYSSYMDEF(SYSR1) /* may return 640S06as IPL Vol. Ser. Name */

SYSSYMDEF 機能は、最初に CLIST 置換を行います。その結果は、SYMDEF ステートメント内で定義されているシンボルを指定する、1 から 8 文字の名前にならなければなりません。CLIST 区切り文字を含むそれ以外の値の場合には、予測不可能な結果を招くおそれがあります。

&SYSTSOE&SYSTSOE は、システムにインストールされている RACF のレベルを示します。OS/390 バージョン 2 リリース 4 以降では、&SYSTSOE は 2060 を戻します。

CLIST に関する情報の入手次の制御変数は、CLIST に関する情報を提供します。

&SYSENV&SYSENV は、CLIST がフォアグラウンド (FORE) またはバックグラウンド(BACK) のいずれで実行されているかを示します。この変数は、CLIST がその環境に基づいて論理的な決定を下す必要がある場合に使用することができます。 たとえば、CLIST がその入力を受け取る方法は、バックグラウンドの実行か、フォアグラウンドの実行かによります。 &SYSENV を以下のように使用し、CLIST がバックグラウンドで READ ステートメントを実行しないようにするために使用することができます。

GLOBAL LNAME /* Define global variable to be set by FETCHNAM */...IF &SYSENV=FORE THEN +DOWRITE Enter your last name.READ LNAMEENDELSE +%fetchnam

&SYSSCAN&SYSSCAN には、CLIST 内の各行で、記号置換が実行される最大回数を定義する数が入ります。デフォルトの値は 16 です。 &SYSSCAN には、0 から+2,147,483,647 (2³¹-1) までの値を割り当てることができます。 ゼロを割り当てるとすべてのスキャンが禁止され、記号変数の値の置換はまったくできなくなります。

たとえば、アンパーサンド (&) を含むレコードを書き込んで、CLIST が誤った記号置換を実行することを防止するには、次のようにコーディングします。

システムに関する情報の入手

第 5 章 制御変数の使用 49

Page 70: TSO/E CLIST

...SET &SYSSCAN=0 /* Prevent symbolic substitutionWRITE Jack & Jill went up the hillSET &SYSSCAN=16 /*Reset &SYSSCAN

&SYSICMD&SYSICMD には、ユーザーが、現在実行中の CLIST を暗黙的に 呼び出したときに使用した名前が入ります。 ユーザーが CLIST を明示的に呼び出した場合、この変数にはヌル値が含まれます。

&SYSPCMD&SYSPCMD には、CLIST が最後に実行した TSO/E コマンドの名前が入ります。&SYSPCMD の 初期 値は、その CLIST を呼び出した環境によって異なります。呼び出し元が EXEC コマンドを使用した場合、初期 値は EXEC です。呼び出し元がEDIT の EXEC コマンドを使用した場合、初期 値は EDIT です。

&SYSSCMD&SYSSCMD には、CLIST が最後に実行した TSO/E サブコマンドの名前が入ります。呼び出し元が EXEC コマンドを使用した場合、&SYSSCMD の 初期 値はヌル値です。 呼び出し元が EDIT の EXEC サブコマンドを使用した場合、初期 値はEXEC です。

&SYSPCMD と &SYSSCMD の関係&SYSPCMD および &SYSSCMD 制御変数は相互依存しています。最初に呼び出された後の &SYSPCMD および &SYSSCMD の値は、最後に実行された TSO/E コマンドまたはサブコマンドにより異なります。たとえば、&SYSSCMD の値がEQUATE (TEST コマンドに固有のサブコマンド) である場合、&SYSPCMD の値はTEST になります。

&SYSPCMD および &SYSSCMD はエラーおよびアテンション出口で使用すると、エラーまたはアテンション割り込みが発生した場所を特定することができます。

&SYSNEST&SYSNEST は、現在実行中の CLIST がネストされているかどうかを示します。(ネストされた CLIST とは、ユーザーによって明示的に呼び出されるのではなく、別の CLIST によって呼び出されるものです。) CLIST がネストされていると、&SYSNEST には値 YES が入ります。また、CLIST がネストされていなければ、&SYSNEST には値 NO が入ります。

CLIST CONTROL ステートメントのオプションの設定次の制御変数によって、CLIST CONTROL ステートメントのオプションをテストまたは修正することができます。CONTROL ステートメントおよびそのオプションの詳細については、 177ページの『CONTROL ステートメント』を参照してください。

CLIST に関する情報の入手

50 z/OS V1R8.0 TSO/E CLIST

Page 71: TSO/E CLIST

&SYSPROMPT&SYSPROMPT は、CONTROL ステートメントの PROMPT または NOPROMPT オプションがアクティブかどうかを示します。値 ON は、CONTROL PROMPT がアクティブで、CLIST 内の TSO/E コマンドが端末に入力をプロンプトできることを示します。 OFF は CONTROL NOPROMPT がアクティブで、TSO/E コマンドは端末にプロンプトできないことを示します。

CLIST は &SYSPROMPT を使用して、どのオプションがアクティブかテストしたり、あるいはそのオプションを変更することができます。 たとえば、CLIST で、LISTDS コマンドのみからプロンプトできるようにしたい場合、次のようにコーディングします。

SET &SYSPROMPT = ONLISTDSSET &SYSPROMPT = OFF

&SYSSYMLIST&SYSSYMLIST は、CONTROL ステートメントの SYMLIST または NOSYMLIST

オプションがアクティブかどうかを示します。値 ON は、CONTROL SYMLIST がアクティブで、CLIST ステートメントが、記号置換のためのスキャンを行う前に端末に表示されることを示します。値 OFF は、CONTROL NOSYMLIST がアクティブであり、CLIST ステートメントが、記号置換の前に端末に表示されないことを示します。

CLIST は &SYSSYMLIST を使用して、どのオプションが有効かテストしたり、あるいはそのオプションを変更することができます。たとえば、CLIST の一部にエラーが起こっている疑いがあり、置換前にある特定のステートメントを表示したい場合には、次のようにコーディングします。

SET &SYSSYMLIST = ON...(suspected statements in error)...

SET &SYSSYMLIST = OFF

&SYSCONLIST&SYSCONLIST は、CONTROL ステートメントの CONLIST または NOCONLIST

オプションがアクティブかどうかを示します。値 ON は、CONTROL CONLIST がアクティブで、CLIST ステートメントが、記号置換の後 で端末に表示されることを示します。値 OFF は、CONTROL NOCONLIST がアクティブで、CLIST ステートメントが、記号置換の後で端末に表示されないことを示します。

CLIST は &SYSCONLIST を使用して、どのオプションが有効かテストしたり、あるいはそのオプションを変更することができます。たとえば、CLIST の一部にエラーが起こっている疑いがあり、置換後にある特定のステートメントを表示したい場合には、次のようにコーディングします。

SET &SYSCONLIST = ON...(suspected statements in error)...

SET &SYSCONLIST = OFF

CLIST CONTROL ステートメントのオプションの設定

第 5 章 制御変数の使用 51

Page 72: TSO/E CLIST

&SYSLIST&SYSLIST は、CONTROL ステートメントの LIST または NOLIST オプションがアクティブかどうかを示します。 値 ON は、CONTROL LIST がアクティブで、TSO/E コマンドおよびサブコマンドが、記号置換の後 で端末に表示されることを示します。値 OFF は、CONTROL NOLIST がアクティブで、コマンドおよびサブコマンドが、記号置換の後で端末に表示されないことを示します。

CLIST は &SYSLIST を使用して、どのオプションが有効かテストしたり、あるいはそのオプションを変更することができます。たとえば、CLIST の一部にエラーが起こっている疑いがあり、ある特定のコマンドまたはサブコマンドを表示したい場合には、次のようにコーディングします。

SET &SYSLIST = ON...(suspected commands in error)...

SET &SYSLIST = OFF

&SYSASIS&SYSASIS は、CONTROL ステートメントの ASIS オプションがアクティブかどうかを示します。 値 ON は、CONTROL ASIS がアクティブで、処理前に小文字が大文字に変換されないことを示します。値 OFF は、CONTROL CAPS がアクティブで、小文字が大文字に変換されることを示します。

CLIST は &SYSASIS を使用して、どのオプションが有効かテストしたり、あるいはそのオプションを変更することができます。たとえば、小文字をそのままの形でREAD および WRITE ステートメントに使いたい場合には、次のようにコーディングします。

SET &SYSASIS = ONWRITE Enter data exactly as you want it to appear.WRITE Lowercase letters won’t be changed to uppercase.READ &Ulc_data

&SYSMSG&SYSMSG は、CONTROL ステートメントの MSG または NOMSG オプションがアクティブかどうかを示します。 値 ON は、CONTROL MSG がアクティブで、CLIST が、端末に通知メッセージを表示できることを示します。値 OFF は、CONTROL NOMSG がアクティブで、CLIST が、端末に通知メッセージを表示できないことを示します。

CLIST は &SYSMSG を使用して、どのオプションが有効かテストしたり、あるいはそのオプションを変更することができます。 たとえば、端末に、必ず通知メッセージが表示されるようにしたい場合には、次のようにコーディングします。

SET &SYSMSG = ON...

&SYSFLUSH&SYSFLUSH は、CONTROL ステートメントの FLUSH または NOFLUSH オプションがアクティブかどうかを示します。 値 ON は、CONTROL FLUSH がアクティブで、エラー発生時に、システムがネストされた CLIST を消去 (フラッシュ) でき

CLIST CONTROL ステートメントのオプションの設定

52 z/OS V1R8.0 TSO/E CLIST

Page 73: TSO/E CLIST

ることを示します。値 OFF は、CONTROL NOFLUSH がアクティブで、システムがネストされた CLIST をフラッシュできないことを示します。 CONTROL MAIN

がアクティブの場合、&SYSFLUSH を ON に設定することはできません。

CLIST は &SYSFLUSH を使用して、どのオプションが有効かテストしたり、あるいはそのオプションを変更することができます。 たとえば、CLIST が他の CLIST

を呼び出す場合、&SYSFLUSH を OFF に設定すれば、それらの CLIST を、エラー発生時にフラッシュされないように保護することができます。 その上で、エラー・ルーチンを使用して、エラーから回復し、処理を続行することができます。

SET &SYSFLUSH = OFFERROR +DO...(error routine)...END

エラー・ルーチンについて、およびネストされた CLIST の保護についての詳細は、117ページの『第 10 章 ATTN および ERROR ルーチンの作成』を参照してください。

ユーザー入力に関する情報の入手CLIST への入力に関連する制御変数には 2 つあります。

&SYSDLM&SYSDLM (″DLM″ は区切り文字 を示します) には、CLIST に制御を戻すために、ユーザーによって入力される TERMIN または TERMING ステートメント文字ストリングの位置 (最初、2 番目、3 番目など) を識別する数字が入ります。

この変数を使用して、ユーザーが CLIST に制御を戻すときにどのような処置を行うかを、選択されたストリングに基づいて判別することができます。たとえば、次のステートメントは、何が要求されているかをユーザーに通知し (WRITE)、端末に制御を渡して、有効な制御文字ストリング (TERMIN または TERMING) を確立し、入力されたストリングに基づいてそれ以降の処置を判別します。

WRITE The first phase of BUDGET has completed withWRITE a return code of &RCODEWRITE Enter YES if you want the results printed.WRITE Enter NO if you do not want them printed.TERMIN YES NOIF &SYSDLM = 1 THEN +...

(Print results)...

&SYSDVAL&SYSDVAL (″DVAL″ は、デフォルトの値 を示します) には、必ず、次のいずれかが入ります。

v ヌル値

v TERMIN または TERMING ステートメントの後に CLIST に制御を戻した時点でユーザーが入力した内容

CLIST CONTROL ステートメントのオプションの設定

第 5 章 制御変数の使用 53

Page 74: TSO/E CLIST

v オペランドが指定されていない READ ステートメントの後のユーザーの応答

v 割り当てステートメントによって &SYSDVAL に割り当てられた値

最初は、&SYSDVAL にはヌル値が入ります。また、次の場合にもヌル値が入る場合があります。

v ユーザーが、TERMIN または TERMING ステートメントの後で事前定義の文字ストリングまたはヌル・ストリング以外何も入力しない場合。

v ユーザーが、オペランドを指定しない READ ステートメントの後に何も入力しない場合。

v &SYSDVAL にヌル値を割り当てた場合。

&SYSDVAL は、データ・セットへの I/O を実行するときにも使用することができます。データを変数に割り当てるには、SYSDVAL をそのデータ・セットのファイル名として定義し、その変数を READVAL ステートメント上でネーミングします。I/O における &SYSDVAL と READVAL の使用例は、 153ページの『入出力を実行するときの &SYSDVAL の使用 - PHONE CLIST』にあります。

TSO/E コマンド出力のトラップCLIST 内での TSO/E コマンド出力のトラップを可能にする制御変数は、&SYSOUTTRAP および &SYSOUTLINE の 2 つです。これらの変数は、TSO/E コマンドからの出力を保管し、CLIST またはアプリケーションがそれを処理できるようにします。 &SYSOUTTRAP および &SYSOUTLINE の修正は、割り当てステートメントによって行うことができます。たとえば、次の割り当てステートメントによって、

SET &SYSOUTTRAP = 100

TSO/E コマンドからの出力を 100 行トラップし、保管することができます。

&SYSOUTTRAP最大行数の TSO/E コマンド出力を保管するように指定する場合は、&SYSOUTTRAP を使用します。 TSO/E コマンドからのすべての出力を保管したい場合には、&SYSOUTTRAP を、そのコマンドが生成する出力行数と同じ値か、それ以上の値に設定します。 &SYSOUTTRAP の値以上の出力行が生成された場合、余分な行は保管されません。

1 つのコマンドの出力を保管するには、そのコマンドを出した後に、&SYSOUTTRAP をゼロに設定します。 こうしておかないと、後続のコマンドからの出力が、最初に保管された出力を置き換える場合があります。

&SYSOUTLINE&SYSOUTTRAP を使用すると、CLIST は、&SYSOUTLINE から始まる変数の中にTSO/E コマンドを保管します。

CLIST は、変数 &SYSOUTLINE を使用して、コマンドにより生成される出力行数を記録します。 CLIST は、実際のコマンド出力を変数 &SYSOUTLINEnn に保管します。ここで、nn は保管される行の位置番号を表します。 nn は、最大 21 桁まで

ユーザー入力に関する情報の入手

54 z/OS V1R8.0 TSO/E CLIST

Page 75: TSO/E CLIST

の長さの、任意の 10 進数にすることができます。ただし、&SYSOUTTRAP の値および有効なストレージの量によって、実際に保管される行数を決定します。

次の CLIST は、TSO/E LISTD コマンドからの出力をトラップし、ネストされた変数を使用してそれを取り出し、さらに出力の各行を書き出します。

PROC 0 DATASET(DEFAULT)IF &DATASET = DEFAULT THEN +

DOWRITE What data set do you want to process?READ DATASET

ENDSET &SYSOUTTRAP = 1000 /* Expect command produces no */

/* more than 1000 lines */LISTD ’&SYSPREF..&DATASET’ MEMBERS /* List data set members */SET B = &SYSOUTLINE /* Get number of lines produced */SET &SYSOUTTRAP = 0 /* Reset &SYSOUTTRAP */SET A = 1 /* Initialize counter */DO WHILE /* Loop for the lesser of */

(&A <= 1000) AND /* num of lines expected and */(&A <= &B) /* num of lines produced */SET MEMBER = &STR(&&SYSOUTLINE&A) /* Get a &SYSOUTLINEnn variable */WRITE &STR(&MEMBER) /* Write the output line */SET A = &A +1 /* Increase the line counter */

END /* End of loop on counter */

&SYSOUTTRAP および &SYSOUTLINE を使用してコマンド出力を処理する場合の別の例が、 155ページの『SYSPROC へのデータ・セットの割り振り - SPROC

CLIST』にあります。

&SYSOUTTRAP および &SYSOUTLINE の使用上の考慮事項v CONTROL LIST および SYMLIST オプションを、&SYSOUTTRAP を使用する

CLIST へ追加すると、出力行がさらに生成されて、希望の出力行を検索するために &SYSOUTTRAP および &SYSOUTLINEnn 値を調整する必要が生じる場合があります。

v ISPF/PDF のもとで TSO/E コマンドの出力をトラップするには、ISPF またはそのサービスの 1 つが呼び出された後 で、コマンド出力をトラップする CLIST

を呼び出す必要があります。

v アクティブな IKJTSOxx parmlib メンバーの AUTHCMDS パラメーターにリストされた許可コマンドの出力は独自の ECT をビルドするアプリケーション下で呼び出された CLIST ではトラップされません。たとえば、ISPF のもとで IPCS が呼び出された場合、許可コマンドの出力をトラップするためには IPCS の TSO

サブコマンドが CLIST より前に置かれなくてはなりません。

v &SYSOUTLINEnn の中の出力の行を表示しようとして、その nn が&SYSOUTTRAP の値より大きい場合、&SYSOUTLINEnn 変数に不正確なデータが含まれることになります。

v コマンド出力を含まない &SYSOUTLINEnn 変数を表示しようとすると、CLIST

はヌル・ストリングを戻します。

v CLIST は、ネストされた CLIST を呼び出すために TSO/E EXEC コマンドを使用するので、&SYSOUTTRAP は、ネストされた CLIST のすべての出力を、TSO/E コマンド出力をとして保管します。したがって、複数のサブコマンドを処理するコマンド・プロセッサーの出力をすべてトラップする必要がある場合には、ネストされた CLIST を使用するようにしてください。

TSO/E コマンド出力のトラップ

第 5 章 制御変数の使用 55

Page 76: TSO/E CLIST

v &SYSOUTTRAP は、TPUT マクロによって端末に送られたコマンド出力を保管しませんが、DATA キーワードまたは INFOR キーワードを指定した PUTLINE

マクロからの出力は保管します。

v ストレージが足りなくなった場合は、TSO/E PROFILE オプションのVARSTORAGE(HIGH) を使用して、CLIST 変数を 16 MB 境界より上に置くことができます。 29ページの『変数で使用可能なストレージの量の拡大』 の 21ページの『第 4 章 記号変数の使用』 を参照してください。

v CLIST は、TSO/E コマンドまたはサブコマンドの実行を開始すると、必ず、&SYSOUTLINE をゼロにリセットします。 ただし、TSO/E コマンドを含むCLIST または非 CLIST プログラムを呼び出した場合、呼び出されたプログラムが、各 TSO/E コマンドごとに &SYSOUTLINE をゼロにリセットすることはありません。 呼び出されたプログラム内のコマンド出力行数を記録するには、各TSO/E コマンドの前に、割り当てステートメントを使用して &SYSOUTLINE をゼロにリセットしておきます。 非 CLIST 環境内での CLIST 変数への値の割り当てについては、「z/OS TSO/E Programming Services」を参照してください。

戻りコードおよび理由コードの入手2 つの変数により、戻りコードと理由コードを取得することができます。&LASTCC および &MAXCC の両方とも、割り当てステートメントで修正することができます。

&LASTCCエラー・ルーチン外で &LASTCC を使用すると、&LASTCC には、最後に実行された、TSO/E コマンドまたはサブコマンド、ネストされた CLIST、または CLIST ステートメントからの戻りコードが入ります。この変数の値は、各ステートメントまたはコマンドの実行後に更新されるので、その値を参照するコードを実行する前に、記号変数の中にその値を保管してください。

エラー・ルーチンの中では、&LASTCC は、各ステートメントまたはコマンドの実行後に更新されません。RETURN ステートメントだけが、&LASTCC の値を更新します。エラー・ルーチン以外で &LASTCC を使用すると、&LASTCC には、エラーの発生時に実行していたコマンドまたはステートメントからの戻りコードが入ります。

&LASTCC は、負の戻りコードをサポートしません。CLIST は、REXX EXEC から負の戻りコードを受け取ると、それを 2 進数に変換し、最初のバイトを削除し、残りを正の 10 進の整数として &LASTCC 内に保管します。

&LASTCC が、TSO/E コマンド、サブコマンド、ネストされた CLIST、あるいはCLIST ステートメントからエラーの戻りコードを受け取ると、制御が CLIST 内にある場合は、それがエラー・ルーチンに渡されます。ただし、&LASTCC に、サブプロシージャー RETURN ステートメントからの戻りコードが入っているときは、制御はエラー・ルーチンに渡されません。

TSO/E コマンド出力のトラップ

56 z/OS V1R8.0 TSO/E CLIST

|

|

|

|

Page 77: TSO/E CLIST

&LASTCC は、複数のエラー状態を処理するエラー・ルーチン内で使用することができます。たとえば、エラー・ルーチンは、算術エラーを処理する場合、&LASTCC

を使用して、どの種類のメッセージを端末に表示するかを判別することができます。

ERROR +DOSET RCODE = &LASTCC

/* Character data in operands? */IF &RCODE = 852 THEN +WRITE Character data was found in numbers being added.

/* Numeric value too large? */IF &RCODE = 872 THEN +WRITE A numeric value in the addition was too large.(Other tests)...

RETURNENDSET SUM = &VALUE1 + &VALUE2 + &VALUE3;

&LASTCC 自身は、エラー・ルーチン内では更新されないので注意してください。

CLIST I/O 処理中にエラーが発生したときは、エラー・ルーチンを使用して、&LASTCC 内のエラー・コードを受け取ってください。たとえば、存在しないファイル (BADFILE) をオープンしようとして OPENFILE によって生成されたエラー・コードをトラップするには、次の CLIST をコーディングします。

PROC 0ERROR DOSET RC=&LASTCC.RETURNENDOPENFILE BADFILEWRITE LASTCC=&RC

&LASTCC に含めることのできる CLIST エラー・コードのリストは、 130ページの表 8にあります。

&MAXCC&MAXCC には、ネストされた CLIST によって、あるいは現在実行中の TSO/E コマンド、サブコマンド、または CLIST ステートメントによって戻された、最大の戻りコードが入ります。

&MAXCC は、サブプロシージャーが CLIST に戻るときには、設定されません。

&MAXCC を &LASTCC と一緒に使用することにより、エラー状態を判別することができます。たとえば、評価エラーによって出されたエラー・コードは、800 から899 の範囲になります。 &LASTCC の項の例にあるエラー・ルーチンを修正すると、そのエラーが算術評価に起因するものかどうかを最初に判別することができます。その場合、次の IF-THEN-ELSE シーケンスを、オペランド内の文字データの検査の前に挿入してください。

.../* Evaluation error? */

IF &MAXCC <800 OR &MAXCC >899 THEN +GOTO ...

戻りコードおよび理由コードの入手

第 5 章 制御変数の使用 57

Page 78: TSO/E CLIST

ELSE +...

TSOEXEC コマンドの結果の入手TSOEXEC コマンドの使用に関連した変数には、&SYSABNCD、&SYSABNRC、および &SYSCMDRC の 3 つがあります。これらの変数はいずれも、割り当てステートメントによって修正することができます。

&SYSABNCD、&SYSABNRC、および &SYSCMDRC には、TSOEXEC コマンドによって最後に呼び出されたコマンドにより戻された、ABEND コード、ABEND 理由コード、およびコマンド戻りコードが、入ります。これらの変数は、&LASTCC

および &MAXCC を使用する状況と同様の状況下で使用することができます。たとえば、TRANSMIT コマンドが異常終了した場合、次のようにコーディングします。

tsoexec transmit plpsc.d00abc1 dataset(letter.text)/* Abend code non-zero? */IF &SYSABNCD¬=0 THEN +DOWRITE The transmission of LETTER.TEXT toWRITE PLPSC.D00ABC1 abended.END

データ・セット属性の入手制御変数には、CLIST ステートメントによって設定されたいくつかの事前定義変数があります。 LISTDSI ステートメントは、データ・セット属性に関する情報を含むいくつかの変数を設定します。 これらの LISTDSI 変数は修正することはできません。

LISTDSI ステートメントLISTDSI (データ・セット情報のリスト ) ステートメントを使用して、データ・セットの属性に関する詳しい情報を検索することができます。このステートメントは、その情報を CLIST 変数内に保管します。 CLIST はその情報を使用して、そのデータ・セットに十分なスペースがあるか、そのデータ・セットが所定のタスク用に正しい形式になっているかどうかを判別します。 さらに CLIST は、この情報をTSO/E ALLOCATE コマンドへの入力として使用し、古いデータ・セットの一部の属性を持った新しいデータ・セットを作成し、他の属性を修正します。

データ・セットの割り振り情報を検索するには、LISTDSI ステートメントにそのデータ・セット名を指定します。 また、データ機能階層記憶管理プログラム(DFHSM) によってマイグレーションされたデータ・セットを再呼び出しすることと、区分データ・セットのディレクトリー情報を検索することを指定することもできます。

LISTDSI ステートメントに応答して、CLIST は、データ・セットの割り振り属性の1 つ 1 つを、個々の変数に保管します。 たとえば、データ・セットの 1 次スペース割り振りは変数 &SYSPRIMARY 内に保管され、その編成は &SYSDSORG の中に保管されます。 詳しい LISTDSI のリストについては、 187ページの『LISTDSI

ステートメント』を参照してください。

戻りコードおよび理由コードの入手

58 z/OS V1R8.0 TSO/E CLIST

Page 79: TSO/E CLIST

LISTDSI の使用例については、 170ページの『LISTDSI 情報を含むデータ・セットの割り振り - EXPAND CLIST』を参照してください。

データ・セット属性の入手

第 5 章 制御変数の使用 59

Page 80: TSO/E CLIST

データ・セット属性の入手

60 z/OS V1R8.0 TSO/E CLIST

Page 81: TSO/E CLIST

第 6 章 組み込み関数の使用

式のデータ・タイプの判別 - &DATATYPE . . . . . . . . . . . . . . 62算術評価の強制実行 - &EVAL . . . . . . . . . . . . . . . . . . . 63式の長さをバイトで判別 - &LENGTH . . . . . . . . . . . . . . . . 63算術評価の抑止 . . . . . . . . . . . . . . . . . . . . . . . . 64先行ブランクと末尾ブランクおよび先行ゼロの組み込み . . . . . . . . . 64

式の長さをバイトで判別 - &LENGTH . . . . . . . . . . . . . . . . 64二重アンパーサンドの保存 - &NRSTR . . . . . . . . . . . . . . . . 64二重アンパーサンド . . . . . . . . . . . . . . . . . . . . . . 651 つのレベルの記号置換 . . . . . . . . . . . . . . . . . . . . 65JCL ステートメントを含むレコード . . . . . . . . . . . . . . . . 65一時データ・セット名 . . . . . . . . . . . . . . . . . . . . 65記号パラメーター . . . . . . . . . . . . . . . . . . . . . . 65

文字データの定義 - &STR. . . . . . . . . . . . . . . . . . . . . 66&SYSDATE または &SYSSDATE と &STR の同時使用. . . . . . . . . 66&STR と先行および末尾ブランクの使用 . . . . . . . . . . . . . . 66CLIST ステートメント名と一致するストリングと &STR の同時使用 . . . . 67SYSIN JCL ステートメントを使用して入力を指定するときの &STR の使用 67

サブストリングの定義 - &SUBSTR . . . . . . . . . . . . . . . . . 68サブストリングの定義 - &SYSCSUBSTR . . . . . . . . . . . . . . . 70文字ストリングの大文字への変換 - &SYSCAPS . . . . . . . . . . . . . 70文字ストリングの小文字への変換 - &SYSLC . . . . . . . . . . . . . . 70データ・セットの可用性の判別 - &SYSDSN . . . . . . . . . . . . . . 70文字ストリングの、他の文字ストリング内における位置の確認 - &SYSINDEX 72

DBCS ストリングがある場合の &SYSINDEX の使用 . . . . . . . . . . 73記号置換のレベルの制限 - &SYSNSUB . . . . . . . . . . . . . . . . 73DBCS データの EBCDIC への変換 - &SYSONEBYTE . . . . . . . . . . 74EBCDIC データの DBCS への変換 - &SYSTWOBYTE . . . . . . . . . . 75

CLIST 言語には、変数、式、および文字ストリングで実行できる組み込み関数が含まれています。必要であれば、CLIST は変数または式を最初に評価し、次に、要求された機能を実行します。その後で、CLIST は組み込み関数の名前のもとにその結果を保管します。

組み込み関数を使用するには、その名前を入力した後に、変数、式、あるいは文字ストリングを括弧で囲んで続けます。 変数、式、または文字ストリングは、組み込み関数の引き数 とも呼ばれます。 引き数は、組み込み関数の直後に、ブランクを入れずに続けなければなりません。 表 6 では、それぞれの組み込み関数について簡単に説明するとともに、その詳細が記載されているページを示します。

表 6. 組み込み関数組み込み関数 機能 ページ

&DATATYPE(expression) expression (式) の評価が、文字ストリングまたは数値のいずれであるかを示します。

62

&EVAL(expression) expression (式) の算術評価を実行します。 63

&LENGTH(expression) 必要に応じて expression (式) を評価し、結果のバイト数を示します。 63

&NRSTR(string) 二重アンパーサンドを保存し、再スキャン不可能なストリングを定義します。

64

&STR(string) 文字ストリングとして使用されるデータを定義します。 66

© Copyright IBM Corp. 1988, 2006 61

Page 82: TSO/E CLIST

表 6. 組み込み関数 (続き)

組み込み関数 機能 ページ

&SUBSTR(exp[:exp],string) 文字ストリング内のある特定のバイトを使用します。 68

&SYSCAPS(string) ストリングを大文字に変換します。 70

&SYSCLENGTH(expression) 必要に応じて expression (式) を評価し、結果の文字数を示します。 64

&SYSCSUBSTR(exp[:exp],string) 文字ストリング内のある特定の文字を使用します。 70

&SYSDSN(dsname[(member)]) 指定されたデータ・セットが存在するかどうかを示します。 70

&SYSINDEX(string_1,string_2[,start]) ストリング (string_1) の位置を、特定の開始点から別のストリング(string_2) の中で見つけます。

72

&SYSLC(string) ストリングを小文字に変換します。 70

&SYSNSUB(level,expression) 式の中の記号置換のレベルを制限します。 73

&SYSONEBYTE(string) データのストリングを、2 バイト文字セット (DBCS) から EBCDIC に変換します。

74

&SYSTWOBYTE(string) データのストリングを、EBCDIC から 2 バイト文字セット (DBCS) に変換します。

75

上記の組み込み関数の他に、TSO/E では、インストール先で、独自の CLIST 組み込み関数を追加できるようにするためのインストール・システム出口も用意しています。この出口の詳細については、「z/OS TSO/E カスタマイズ」を参照してください。

注: &SYSNSUB の場合を例外として、組み込み関数は、引き数の中に出てくる二重アンパーサンド (&&) を解決しません。

式のデータ・タイプの判別 - &DATATYPE評価された式の中にどのデータ・タイプが含まれているかを判別するには、&DATATYPE 組み込み関数を使用します。式の評価後、CLIST はこの組み込み関数を、CHAR、NUM、DBCS、または MIXED のいずれかのストリングに置き換えます。これらのストリングは、以下の内容を示します。

v CHAR -- 評価された式に、少なくとも 1 つの非数値 EBCDIC 文字が含まれていますが、2 バイト文字セット (DBCS) の文字は含まれません。

v NUM -- 評価された式はすべて数値です。

v DBCS -- 評価された式は、単一の区切られた、DBCS データのストリングです。

v MIXED -- 評価された式には、DBCS 文字と EBCDIC 文字の両方が含まれています。

次の例は、いろいろな式の評価を示したものです。

SET A = &DATATYPE(ALPHABET) /* result: &A = CHARSET B = &DATATYPE(1234) /* result: &B = NUMSET C = &DATATYPE(SYS1;PROCLIB) /* result: &C = CHARSET D = &DATATYPE(3*2/4) /* result: &D = NUMSET E = &DATATYPE(12.34) /* result: &E = CHAR

たとえば、次の文節は真と評価されます。

IF &DATATYPE(12.34)=CHAR THEN

次の例では、規則 d1d2 を使用し、DBCS ストリングの始めと終わりのマークとなるシフトアウトおよびシフトイン区切り文字 (X'0E' および X'0F') を表す 2 つのDBCS 文字、< および > を示します。

組み込み関数の使用

62 z/OS V1R8.0 TSO/E CLIST

Page 83: TSO/E CLIST

SET A = &DATATYPE(<d1d2>) /* result: &A = DBCSSET B = &DATATYPE(ABC<d1d2>123) /* result: &B = MIXEDSET C = &DATATYPE(<>) /* result: &C = DBCSSET D = &DATATYPE(A<>C) /* result: &D = MIXEDSET E = &DATATYPE(<d1d2><d3d4>) /* result: &E = MIXED

たとえば、次の文節は真と評価されます。

IF &DATATYPE(<d1d2d3>)=DBCS THENIF &DATATYPE(A<d1d2d3>B)=MIXED THEN

算術評価の強制実行 - &EVALほとんどのステートメントでは、この中に算術式が含まれる場合、CLIST がそのステートメントを実行するときに、その式を評価することになります。ただし、WRITE ステートメントの場合、&EVAL 組み込み関数を使用することによって、算術式を評価することを、CLIST に対し明示的に指示する必要があります。たとえば、2 つの変数、&FNUM および &SNUM を加算し、その結果を表示する WRITE

ステートメントを作成するには、次のようにコーディングします。

WRITE &FNUM + &SNUM = &EVAL(&FNUM+&SNUM)

&FNUM が 4 で &SNUM が 3 であると仮定すると、CLIST は次のメッセージを表示します。

4 + 3 = 7

式の長さをバイトで判別 - &LENGTH式または文字ストリングのバイト数を判別するには、&LENGTH 組み込み関数を使用します。 &LENGTH は、長さを判別する前に、記号置換および算術評価を実行します。変数にヌル値がある場合、&LENGTH はゼロの値を戻します。

たとえば、次のステートメントが実行された後の、加算の結果 11 は 2 バイトであるために、&LENANSWR の値は 2 になります。

SET LENANSWR = &LENGTH(1+1+9)

また、&LENGTH は、記号変数を参照することもできます。 &CSTRING という変数の値の長さの 3 倍の値を保管したいとします。その値を &NXTFIELD という変数の中に保管するには、次のようにコーディングします。

SET NXTFIELD = 3 * &LENGTH(&CSTRING)

&CSTRING に値 100 が含まれる場合、&NXTFIELD には値 9 が含まれます。

ストリングに 2 バイト文字セット (DBCS) のデータが入っている場合、&LENGTH

は各 DBCS 文字を 2 バイトとカウントし、各 DBCS 区切り文字を 1 バイトとカウントします。たとえば、d1d2 を使用して 2 つの DBCS 文字を表し、< および >

を使用して DBCS 区切り文字 X'0E' と X'0F' を示します。

SET A = &LENGTH(<d1d2>) /* result: &A = 6

そのストリングに EBCDIC 文字と DBCS 文字が混合して含まれている場合も同じことが言えます。たとえば、次のとおりです。

SET A = &LENGTH(ABC<d1d2>) /* result: &A = 9

式のデータ・タイプの判別 - &DATATYPE

第 6 章 組み込み関数の使用 63

Page 84: TSO/E CLIST

算術評価の抑止CLIST に、&LENGTH 式の算術評価を実行させたくない場合、次のようにして、その式を &STR 組み込み関数で囲みます。

SET LENANSWR = &LENGTH(&STR(1+1+9))

上記のステートメントが実行された後、&LENANSWR には値 5 が入ります。

先行ブランクと末尾ブランクおよび先行ゼロの組み込み&LENGTH 式の先行および末尾ブランクおよび先行ゼロを割り当てに組み込みたい場合、その式を &STR 組み込み関数で囲みます。 こうしないと、それらのブランクおよびゼロが無視されることになります。

たとえば、変数 &IFIELD の長さを、&SLNGTH という変数の中に保管したいとします。 &IFIELD の内容は 0 472.20 です。 &IFIELD を &STR 組み込み関数の中に組み込んで、ブランクと先行ゼロをその割り当ての一部として組み込みます。

SET SLNGTH= &LENGTH(&STR(&IFIELD))

上記のステートメントが実行された後、&SLNGTH には値 8 が入ります。

式の長さをバイトで判別 - &LENGTH2 バイト文字セット (DBCS) の文字を含む式またはストリング内の文字数を判別するには、&SYSCLENGTH 組み込み関数を使用します。 &SYSCLENGTH と&LENGTH の相違は、&SYSCLENGTH が各 DBCS 文字を 2 バイトでなく 1 バイトとしてカウントし、DBCS 区切り文字をカウントしないという点にあります。たとえば、次のとおりです。

SET A = &SYSCLENGTH(<d1d2>) /* result: &A = 2

そのストリングに EBCDIC 文字と DBCS 文字が混合して含まれている場合も同じことが言えます。たとえば、次のとおりです。

SET A = &SYSCLENGTH(ABC<d1d2>) /* result: &A = 5

DBCS 文字のカウント方法の違いを除けば、&SYSCLENGTH は &LENGTH と同じです。

二重アンパーサンドの保存 - &NRSTR&NRSTR 組み込み関数を使用すると、CLIST が以下を行わないようにすることができます。

v 二重アンパーサンドのプレフィックスを持つ文字ストリングを検出したときに、最初のアンパーサンドを除去する。

v 変数で 2 つ以上のレベルの記号置換を実行する。

一時データ・セット (&&TEMP など) の名前を組み込む JCL ステートメントで&NRSTR を使用することができます。 &NRSTR を使用すると、CLIST が、一時データ・セット (&&TEMP) の名前を記号パラメーター (&TEMP) に変更しなくなります。

式の長さ - &LENGTH

64 z/OS V1R8.0 TSO/E CLIST

Page 85: TSO/E CLIST

二重アンパーサンド文字ストリング &&DATA を変数 &FILE に割り当てるには、次のようにコーディングします。

SET FILE = &NRSTR(&&DATA)

1 つのレベルの記号置換2 つの変数 &A および &C を値 &B に設定するには、次のようにコーディングします。

...SET A = &&BSET C = &NRSTR(&A)...

最初の SET ステートメントの実行後、&A には値 &B が入ります。 2 番目のSET ステートメントが実行されると、CLIST は記号置換を実行し、&A を &B に置き換えます。 &NRSTR によって、ステートメントはそれ以上スキャンされなくなり、そのため、&C には値 &B が割り当てられます。

JCL ステートメントを含むレコード以下の段落では、JCL ステートメントを含むレコードを処理するときの &NRSTR

組み込み関数の使用について述べます。

一時データ・セット名JCL ステートメントに一時データ・セット名 (&&TEMP など) が含まれている場合、そのステートメントを &NRSTR 組み込み関数で囲んで、CLIST が最初のアンパーサンドを削除しないようにします。次の CLIST は、&NRSTR を使用して、一時データ・セット名を JCL ステートメントの中に確保します。

submit *//&sysuid job ’Y2803P,?,S=C’,’SteveR’,msgclass=r,class=j// exec pgm=IEFBR14//dd1 dd dsn=&NRSTR(&&temp),disp=(,pass),unit=sysda&null

記号パラメーターJCL ステートメントに記号パラメーター (&LIBRARY など) が含まれている場合、&SYSNSUB 組み込み関数を使用して、CLIST が誤った記号置換を実行しないようにします。 上記の CLIST に JCL ステートメントが含まれているとします。

//dd2 dd dsn=&library,disp=(,pass),unit=sysda

記号置換が行われないようにするために、記号パラメーター &library を、次のようにして、&SYSNSUB 組み込み関数で囲むことができます。

//dd2 dd dsn=&SYSNSUB(0,&library),disp=(,pass),unit=sysda

&SYSNSUB の後の括弧で囲んだ 0 は、CLIST に、そのパラメーターでいくつのレベルの記号置換を実行したいかを通知します (この場合は、0 個のレベル)。&SYSNSUB 組み込み関数の詳細については、 73ページの『記号置換のレベルの制限 - &SYSNSUB』を参照してください。

二重アンパーサンドの保存 - &NRSTR

第 6 章 組み込み関数の使用 65

Page 86: TSO/E CLIST

文字データの定義 - &STR文字データを定義し、CLIST がそれを評価しないようにするには、&STR 組み込み関数を使用します。このデータは、式またはステートメントの場合があり、ネストされた変数、および 2 バイト文字セット (DBCS) 区切り文字で囲まれた DBCS の文字を入れることができます。

たとえば、ステートメント SET DIMENSNS=&STR(2*4) は文字ストリングとして2*4 を定義し、そのストリングを変数 &DIMENSNS に割り当てます。&STR 組み込み関数を使用しない場合、希望する割り当てを実行することはできません。これは、CLIST が、2*4 を算術式として評価し、&DIMENSNS を値 8 に設定するためです。

&STR 組み込み関数は、括弧で囲まれたデータについてのみ算術評価を抑止します。 &STATS を &DIMENSNS に設定すると、&STATS には文字ストリング 2*4

ではなく、値 8 が入ります。この文字ストリングを保存するには、次のようにコーディングします。

SET STATS=&STR(&DIMENSNS)

括弧を文字データとして定義するには、特殊なプロシージャーが必要になります。他の CLIST 演算子の場合と異なり、左括弧および右括弧は、文字データとして定義せずに、文字データの始め、または中間に置くことができます。括弧が文字ストリングの終わりに出てくる場合にのみ、他の演算子と同様に、&STR によって定義する必要があります。

次の例は、右括弧および左括弧を、TEXT という文字ストリングの最後の文字データとして置くように定義する方法を示しています。

右括弧:

SET &A = )SET &B = TEXT&STR(&A) /* result: B = TEXT)

左括弧:

SET &C = &STR((SET &D = TEXT&STR(&C) /* result: D = TEXT(

&SYSDATE または &SYSSDATE と &STR の同時使用WRITE 以外の CLIST ステートメントで &SYSDATE または &SYSSDATE を使用する場合、その変数を &STR 組み込み関数で囲みます。こうしないと、CLIST

は、日、月、年を分離するスラッシュを除算演算子と見なし、除算を実行してしまいます。

SET TODAY = &STR(&SYSDATE)

&STR と先行および末尾ブランクの使用文字ストリングの中に先行ブランクおよび末尾ブランクを保存するには、&STR 組み込み関数を使用します。たとえば、次のステートメントは、変数 &CMNDFLD

を、1 つのブランク、2 つのハイフン、「より大きい」記号、および 4 つのブランクに設定します。

SET CMNDFLD= &STR( --> )

文字データの定義 - &STR

66 z/OS V1R8.0 TSO/E CLIST

Page 87: TSO/E CLIST

CLIST ステートメント名と一致するストリングと &STR の同時使用CLIST ステートメントの名前と一致するインストール先作成コマンドを区別するには、&STR 組み込み関数を使用します。たとえば、そのインストール先でNGLOBAL という名前のコマンドを作成した場合、&STR を使用すれば、CLIST からそのコマンドを出し、その CLIST が、それを NGLOBAL ステートメントとして誤って解釈しないようにすることができます。

&STR(NGLOBAL)

同様に、RACF コマンドの RACFRW の SELECT サブコマンドを出すには、&STR

組み込み関数を使用して、そのサブコマンドを SELECT ステートメントと区別する必要があります。 詳しくは、 82ページの『SELECT ステートメントと RACF

SELECT サブコマンドとの区別』を参照してください。

SYSIN JCL ステートメントを使用して入力を指定するときの &STR の使用

プログラムを呼び出すバックグラウンド・ジョブのサブミットする場合、ときにより、入力ステートメントを指定する ‘//SYSIN DD *’ という JCL ステートメントを組み込むことがあります。入力ステートメントに先行ブランクが含まれている場合、あるいはそのステートメントが CLIST ステートメントと同じである場合は、そのステートメントを &STR 組み込み関数で囲みます。たとえば、SES という仮の言語に IF-THEN-ELSE シーケンスがあるとします。そのシーケンスを SYSIN 入力ステートメントの中に組み込もうとするなら、以下の MATRIX という仮の SES プログラムのバックグラウンド呼び出しで示すように、それを &STR 組み込み関数に組み込む必要があります。

PROC 1 FORMAT ACCT() CLASS(A)CONTROL MAIN...submit * end(nn)//&SYSUID1 JOB &ACCT,&SYSUID,CLASS=&CLASS;//STEP1 EXEC PGM=MATRIX...//SYSIN DD *&STR( IF &FORMAT=1 THEN OPEN DS1)&STR(ELSE OPEN DS2)GETFILES 1-12&STR(SET COLUMNS=GETFILES)...nn

入力ステートメントに先行ブランクが含まれている場合、あるいはそのステートメントが CLIST ステートメントと同じである場合に限り、そのステートメントを&STR 組み込み関数で囲みます。 CLIST がフォアグラウンドで MATRIX を呼び出した場合、&STR 組み込み関数は不要です。これは、そのプログラムのステートメントが MATRIX を含んだデータ・セットの中に置かれるためです。したがって、それらのステートメントを、CLIST ではなくそのプログラムと関連付ける必要があります。

文字データの定義 - &STR

第 6 章 組み込み関数の使用 67

Page 88: TSO/E CLIST

サブストリングの定義 - &SUBSTRCLIST が、置換を実行するときに、示されているストリングのうちのある特定のバイトだけを使用するように要求するには、&SUBSTR 組み込み関数を使用します。この場合、置換を行うストリングの開始位置および終了位置を示してください。

たとえば、&ANIMALS という変数に文字ストリング『DOGSCATSSEALS』が含まれていると想定した場合、&FELINE という変数を文字ストリング『CATS』に設定するには、次のようにコーディングします。

SET FELINE = &SUBSTR(5:8,&ANIMALS)

文字ストリング 『CATS』 は、&ANIMALS の 5 桁目から開始し、8 桁目で終わることを覚えておいてください。

&SUBSTR 組み込み関数には、他の組み込み関数を含めることができます。そのCLIST がユーザーからの入力を受け取り、それを &NAME という変数に割り当てるとします。 &NAME には、人の名とミドルネームの頭文字が入り、その直後に姓も続いて入ります。 頭文字と姓との間にブランクを挿入するには、&NFIELD という変数を以下からなる文字ストリングに設定します。1. 名とミドルネームの頭文字2. ブランク3. 姓

SET NFIELD = &STR(&SUBSTR(1:2,&NAME) &SUBSTR(3:&LENGTH(&NAME)+,&NAME))

サブストリングに 1 文字だけを入れたい場合、コロンと最後の式を省略することができます。たとえば、姓の最初の文字だけを処理の対象にしたい場合には、次のようにコーディングします。

SET FLTRLNAME = &SUBSTR(3,&NAME)

開始式および終了式の代わりに変数を使用することができます。たとえば、2 桁目から始まり 8 桁目で終わる &STRING のセクションを、&WIDGET という変数に設定するには、変数を作成してから、それを SET ステートメントの中で代用します。 サブストリングのデータが部品番号を表すと仮定します。

SET PART# = &STR(2:8,)SET WIDGET = &SUBSTR(&PART#&STRING)

&SUBSTR の中で変数に名前が付けられると、その変数の内容の算術評価が、&STR

における場合と同様に抑止されます。 たとえば、次のとおりです。

SET DIMENSNS = &STR(2*4)SET X = &SUBSTR(1:2,&DIMENSNS) /result: X = 2*

ただし、&LENGTH などとの別の組み込み関数が &SUBSTR 内に指定されると、その組み込み関数内の変数は、&SUBSTR より先に評価されます。その変数の算術評価が行われないようにするには、&STR を使用します。

SET DIMENSNS = &STR(2*4)SET X = &SUBSTR(1:&LENGTH(&STR(&DIMENSNS)),&DIMENSNS)/* result: X = 2*4

ストリングに 2 バイト文字セット (DBCS) のデータが入っている場合、&SUBSTR

は各 DBCS 文字を 2 バイトとカウントし、各 DBCS 区切り文字を 1 バイトとカ

サブストリングの定義 - &SUBSTR

68 z/OS V1R8.0 TSO/E CLIST

Page 89: TSO/E CLIST

ウントします。 たとえば、d1d2 を 使用して 2 つの DBCS 文字を示し、< および> を使用 して DBCS 区切り文字 X'0E' (シフトアウト) と X'0F' ( シフトイン) を示します。

SET X = &SUBSTR(8:9(A<d1d2>BC) /* result: X = BC

&SUBSTR が DBCS データを戻すと、&SUBSTR はそのデータを DBCS 区切り文字の X'0E' と X'0F' の間に入れます。 &SUBSTR は、正確に要求どおりのバイトを戻そうとします。しかし、サブストリングの開始位置および終了位置が DBCS データまたは DBCS 区切り文字である場合、&SUBSTR は、次の調整を行います。

サブストリングが次の場合 &SUBSTR は、以下を実行します。

DBCS 文字の最初のバイトから始まっている。

そのバイトを 1 バイトのブランクと置き換え、その右隣のバイトをシフトアウト区切り文字と置き換えます。

DBCS 文字の 2 番目のバイトから始まっている。

そのバイトをシフトアウト区切り文字を置き換えます。

シフトイン区切り文字から始まっている。 そのバイトを 1 バイトのブランクと置き換えます。

シフトアウト区切り文字で終了している。 そのバイトを 1 バイトのブランクと置き換えます。

DBCS 文字の最初のバイトで終了している。 そのバイトをシフトイン区切り文字を置き換えます。

DBCS 文字の 2 番目のバイトで終了している。

そのバイトを 1 バイトのブランクと置き換え、その左隣のバイトをシフトイン区切り文字と置き換えます。

さらに、このような調整によって無効な DBCS 文字、または 1 対の DBCS 区切り文字が隣接して生じた場合、&SUBSTR はそれらを 1 バイトのブランクと置き換えます。ただし、SUBSTR は、元のデータ・ストリングに含まれていた DBCS 区切り文字の隣接した対は変更しません。

以下に、調整処理の例をいくつか示します。この例で、文字 s、Dn、<、>、およびb は、 1 バイト文字、2 バイト文字、シフトアウト区切り文字、シフトイン区切り文字、および 1 バイト・ブランクを示します。

&SUBSTR(4:10,ss<D1D2D3D4>) /* result: b<D2D3>

&SUBSTR(5:11,ss<D1D2D3D4>) /* result: <D2D3>b

&SUBSTR(6:10,ss<D1><D3D4>) /* result: b<D3>

&SUBSTR(1:3,ss<D1D2D3D4>) /* result: ssb

&SUBSTR(3:5,ss<D1D2D3D4>) /* result: bbb

&SUBSTR は DBCS ストリングのデータを切り捨てる場合があるので、DBCS データの &SUBSTR の代替として &SYSCSUBSTR を使用することができます。

サブストリングの定義 - &SUBSTR

第 6 章 組み込み関数の使用 69

Page 90: TSO/E CLIST

サブストリングの定義 - &SYSCSUBSTRCLIST で、2 バイト文字セット (DBCS) の文字を、サブストリング演算の中で 1

文字として扱うようにしたい場合は、&SYSCSUBSTR 組み込み関数を使用します。&SYSCSUBSTR と &SUBSTR の相違は、&SYSCSUBSTR が、各 DBCS 文字を 1

文字としてカウントし、DBCS 区切り文字はカウントしないという点にあります。結果としてのサブストリングが DBCS 文字で開始または終了する場合、&SUBSTR

は必要に応じて DBCS 区切り文字を追加します。たとえば、次のとおりです。

SET X = &SUBSTR(2:3,<d1d2d3>) /* result: X = <d2d3>

ストリングに EBCDIC 文字と DBCS 文字の両方が含まれている場合も、同じことが言えます。

SET Y = 1260&SUBSTR(1:3,AB<d1d2d3>) /* result: X = AB<d1>

DBCS 文字の取り扱いが違うことを除けば、&SYSCSUBSTR は &SUBSTR と同じです。

文字ストリングの大文字への変換 - &SYSCAPS文字ストリングを大文字に変換するには &SYSCAPS を使用します。 &SYSCAPS

はストリング内に含まれている特殊文字や DBCS 文字は変換しません。ストリングが先行ゼロで始まっている場合、&SYSCAPS はそれを削除します。こうしないと、&SYSCAPS はそのストリング内の数字の変換を行いません。 &SYSCAPS 組み込み関数内では、文字ストリングを含む変数を使用することができます。

&SYSCAPS を &SYSLC と一緒に使用すると、CLIST 内のテキストの大文字変換を制御することができます。 104ページの『READ ステートメント入力に関する大文字および小文字の制御』にその例があります。

文字ストリングの小文字への変換 - &SYSLC文字ストリングを小文字に変換するには、&SYSLC を使用します。 &SYSLC はストリング内に含まれている数字、特殊文字、あるいは DBCS 文字は変換しません。&SYSLC 組み込み関数内では、文字ストリングを含む変数を使用することができます。データを小文字に変更するには、CONTROL ASIS または NOCAPS が有効であるか、&SYSASIS が ON の値に設定されている必要があります。

データ・セットの可用性の判別 - &SYSDSN指定されたデータ・セット、または指定されたデータ・セットとメンバーが存在するかの判別や、それらが使用可能であるかの判別には、&SYSDSN 組み込み関数を使用します。データ・セットがマイグレーション済みである場合には、&SYSDSN

はその再呼び出しを試みます。データ・セット名は、カタログ式データ・セットの名前、またはメンバー名を持つカタログ式区分データ・セットの名前にすることができます。 さらに、区分データ・セットのメンバーを指定すると、&SYSDSN は、そのデータ・セットへのアクセスがあるかどうかを検査します。

サブストリングの定義 - &SYSCSUBSTR

70 z/OS V1R8.0 TSO/E CLIST

Page 91: TSO/E CLIST

&SYSDSN 関数によって出された TSO/E メッセージを抑止するには、CONTROL

NOMSG ステートメントを使用します。CONTROL ステートメントについては、177ページの『CONTROL ステートメント』を参照してください。

&SYSDSN は、次のいずれかの値を戻します。

OK /* the data set or the data set and member exist/* and are available

MEMBER SPECIFIED, BUT DATASET IS NOT PARTITIONEDMEMBER NOT FOUNDDATASET NOT FOUNDERROR PROCESSING REQUESTED DATASETPROTECTED DATASET /* a member was specified but the

/* data set is RACF-protectedVOLUME NOT ON SYSTEMUNAVAILABLE DATASET /* another user has an exclusive

/* ENQ on the specified data setINVALID DATASET NAME, data-set-nameMISSING DATA SET NAME

データ・セットが使用可能である場合、さらに詳しい情報を入手すると役に立ちます。たとえば、後で、特定のデータ・セット編成を必要とするサービスを呼び出す必要が生じた場合は、LISTDSI ステートメントを使用します。 LISTDSI ステートメントの詳細については、 187ページの『LISTDSI ステートメント』を参照してください。

たとえば、&SYSDSN 組み込み関数を条件付きロジック ( 77ページの『第 7 章CLIST の構造化』 を参照) と一緒に使用すると、CLIST 内で使用するためにどのデータ・セットを割り振るかを判別することができます。

IF &SYSDSN(’SYS1.MYLIB’)=OK THEN +DO

alloc f(utility) da(’SYS1.MYLIB’)call (iecompar)

ENDELSE +IF &SYSDSN(’SYS1.INSTLIB(IECOMPAR)’)=OK THEN +

DOalloc f(utility) da(’SYS1.INSTLIB’)call iecompar

ENDELSE +...

完全修飾データ・セット名が &SYSDSN 組み込み関数の中に出てくる場合は、その名前を単一引用符で囲みます。 &SYSDSN 組み込み関数内では、データ・セット名を含む変数を使用することができます。

&SYSDSN 関数は、構文上無効なデータ・セット名がその関数に渡されると、メッセージ IKJ56709I を出します。 このメッセージが表示されないようにするには、CONTROL NOMSG を使用します。

PROC 0SET DSNAME = ABCDEFGHIJ.XYZ /* Syntactically not valid name,

/* because a qualifier is longer/* than 8 characters

CONTROL NOMSG /* Set OFF to suppress any SYSDSN/* TSO/E messages

WRITE VALUE RETURNED BY SYSDSN ==> &SYSDSN(&DSNAME)EXIT CODE(0)

データ・セットの可用性の判別 - &SYSDSN

第 6 章 組み込み関数の使用 71

Page 92: TSO/E CLIST

文字ストリングの、他の文字ストリング内における位置の確認 -&SYSINDEX

ある文字ストリングが他の文字ストリングの中のどこで始まっているかの位置を知るには、&SYSINDEX 組み込み関数を使用します。 言いかえると、&SYSINDEX

は、string_2 の中の string_1 の数値インデックス (またはオフセット) を戻します。 SYSINDEX が string_2 の中で string_1 を見つけられない場合、&SYSINDEX

はゼロの値を戻します。

使用する構文は、次のとおりです。

&SYSINDEX(string_1,string_2[,start])

ここで、

string_1

は、検索の目的となる文字ストリングです。

string_2

は、検索の対象範囲となる文字ストリングです。

start は、string_2 の中で string_1 の検索が開始される位置を示す数式です。これが省略された場合、またはゼロが指定されると、この値は 1 にデフォルトされます。

次の 1 から 4 の例では、&X が DOG で、&Y は CATDOGSDOG、さらに &Z

は 2 であると仮定します。

1. SET A = &SYSINDEX(&X,&Y) /* result: A = 4

v &SYSINDEX は、CATDOGSDOG の 4 桁目に DOG を見つけたため、インデックスは 4 です。

2. SET A = &SYSINDEX(&X,&Y,&Z) /* result: A = 4

v &SYSINDEX は 2 桁目から検索を開始し、この場合も 4 桁目で DOG を見つけました。

3. SET A = &SYSINDEX(&X,&Y,3+&Z) /* result: A = 8

検索が 5 桁目 (3+2) から開始されたために、&SYSINDEX は、8 桁目で 2 回目の DOG を見つけました。

4. SET A = &SYSINDEX(&X,&Y,9) /* result: A = 0

v 検索は 9 桁目から開始され、&SYSINDEX はターゲット・ストリングの DOG

を見つけることができませんでした。

string_1 および string_2 にはブランクを使用することができます。たとえば、次のとおりです。

SET A = &SYSINDEX(is full,the car is full) /* result: A = 9

string_2 でブランクを検索するには、string_1 を、値 &STR( ) を含む変数に設定します。 たとえば、次のとおりです。

SET BLANK = &STR( )SET TARG = THIS IS A TESTSET LOC = &SYSINDEX(&BLANK,&TARG) /* result: &LOC = 5

ストリングの、他のストリング内における位置の確認 - &SYSINDEX

72 z/OS V1R8.0 TSO/E CLIST

Page 93: TSO/E CLIST

string_1 または string_2 にコンマまたは右括弧が含まれている場合、最初に、&STR

を使用してそのストリングを変数の値に設定し、その後で、&SYSINDEX の中でその変数を使用します。この場合も、&STR(...) の中に入れます。たとえば、次のとおりです。

SET ARG = &STR(,)SET TARG = &STR((80,60))SET &LOC = &SYSINDEX(&STR(&ARG),&STR(&TARG)) /* result: &LOC = 4

SET ARG = &STR())SET TARG = &STR((80,60))SET &LOC = &SYSINDEX(&STR(&ARG),&STR(&TARG)) /* result: &LOC = 7

DBCS ストリングがある場合の &SYSINDEX の使用&SYSINDEX は、2 バイト文字セット (DBCS) の文字を含むストリングを検索することができます。 この場合、次のような考慮事項があります。

v string_1 および string_2 の中の DBCS 文字の両側には、常に DBCS 区切り文字を組み込みます。 たとえば、次のように < および > を使用して、DBCS 区切り文字の X'0E' (シフトアウト) および X'0F' (シフトイン) を示します。

SET A = &SYSINDEX(<d2>,<d1d2d3>) /* result: A = 2

v string_1 および string_2 には、EBCDIC、DBCS、その混合データの、どれでも入れることができます。 たとえば、次のとおりです。

SET X = &SYSINDEX(CD,A<d1d2>BCD) /* result: X = 5SET X = &SYSINDEX(<d2>,A<d1d2>BCD) /* result: X = 3

EBCDIC ストリングと DBCS ストリングは、同じ 16 進値を持つ場合でも、一致することはありません。たとえば、次のとおりです。

SET X = &SYSINDEX(AB,<d1d2d3>) /* result: X = 0/* where EBCDIC characters ’AB’ and a DBCS character ’d2’/* have the same hexadecimal value.

v string_1 の中で隣接したシフトアウト/シフトイン区切り文字と、隣接したシフトイン/シフトアウト区切り文字は、ターゲットの一部として扱われます。たとえば、次のとおりです。

SET X = &SYSINDEX(<d1><d2>,A<d1><d2>B) /* result: X = 1SET X = &SYSINDEX(<d1><d2>,A<d1d2>B) /* result: X = 0

v string_1 が DBCS 区切り文字のみで成り立っている場合は string_2 が検索され、その結果は、区切り文字の後の文字の位置になります。 たとえば、次のとおりです。

SET X = &SYSINDEX(<>,A<>BCD) /* result: X = 3

記号置換のレベルの制限 - &SYSNSUBCLIST がステートメント内で記号置換を行う回数を制限するには、&SYSNSUB 組み込み関数を使用します。 &SYSNSUB を使用すると、0 から 99 の範囲のレベルの置換に、CLIST を制限することができます。

&SYSNSUB の構文は、次のとおりです。

&SYSNSUB(level,expression)

ここで、

ストリングの、他のストリング内における位置の確認 - &SYSINDEX

第 6 章 組み込み関数の使用 73

Page 94: TSO/E CLIST

level

正の整数、または 0 から 99 までの正の整数に解決される記号変数です。この数は、式で実行する記号置換のレベル数を CLIST に示します。 level パラメーターには、他の組み込み関数または式を含めることはできません。

expression

は、その記号置換のレベルが制御され、その最終値がそれ以上いかなる種類の評価もされずに凍結される、CLIST の式です。

たとえば、次のとおりです。

SET Y = 30 /* result: &Y contains 30SET X = &&Y /* result: &X contains &YSET Z = &&X /* result: &Z contains &XSET A = &SYSNSUB(2,&Z) /* result: &A contains &Y

このように指定すると、CLIST は 2 レベルの置換だけを実行します。すなわち &Z

を &X に置き換え、次に &X を &Y に置き換えます。 CLIST は続行されず、&Y

の値は 30 となります (&SYSNSUB の制限がない場合と同様)。

&SYSNSUB を使用することによって、二重アンパーサンドに関する規則をオーバーライドすることができます。この規則では、CLIST は、最初のアンパーサンドを削除し、残りの変数の置換を行いません。 &SYSNSUB は、最初のアンパーサンドを1 レベルの置換としてカウントし、level パラメーターの値に達するまで置換を実行できるようにします。

たとえば、次のとおりです。

SET X = 10 /* result: &X = 10SET Y = &&X /* result: &Y = &X (rule for double &&)

SET Y = &SYSNSUB(2,&&X) /* result: &Y = 10 (&SYSNSUB overrides &&)

注: 制御変数 &SYSSCAN は、&SYSNSUB によって指定できる置換のレベルを制限します。 &SYSSCAN には、&SYSNSUB の level パラメーターに指定した数と同じか、それ以上の数を入れる必要があります。

DBCS データの EBCDIC への変換 - &SYSONEBYTE文字ストリングを、2 バイト文字セット (DBCS) から EBCDIC 文字セットに変換するには、&SYSONEBYTE 組み込み関数を使用します。 &SYSONEBYTE は、EBCDIC の同等のものをもつ DBCS 文字 (DBCS ブランク (X'4040') および、X'42'

の値で始まる DBCS 文字) だけを変換します。

&SYSONEBYTE は、最初のバイト (X'40' または X'42') を削除することによって、EBCDIC の同等のものをもつ DBCS 文字を変換します。 2 番目のバイトはそのまま残されますが、このバイトは EBCDIC 内の文字を表します。

&SYSONEBYTE は、変換できない DBCS 文字 (EBCDIC の同等のものがない) の両側に DBCS 区切り文字を入れます。

次の例は、DBCS から EBCDIC への完全な変換を示したものです。

SET X = &SYSONEBYTE(<d1d2d3d4>) /* result: X = ABCD

... のレベルの制限 - &SYSNSUB

74 z/OS V1R8.0 TSO/E CLIST

Page 95: TSO/E CLIST

次の例は、d5 および d6 が X'42' で開始されず、16 進数のブランク (X'4040') ではないと想定した場合の、DBCS から EBCDIC への部分的な変換を示したものです。

SET X = &SYSONEBYTE(<d3d4d5d6d7d8>) /* result: X = CD<d5d6>EF

EBCDIC データの DBCS への変換 - &SYSTWOBYTEEBCDIC 文字を 2 バイト文字セット (DBCS) に変換するには、&SYSTWOBYTE

組み込み関数を使用します。変換が可能な EBCDIC 文字は、16 進数で X'40' や、X'41' から X'FE' の範囲内に相当するものです。 それ以外の EBCDIC 文字を&SYSTWOBYTE で使用するとエラーになります。

&SYSTWOBYTE は、EBCDIC 文字に値 X'42' をプレフィックスとして付けることによって、それを DBCS に変換します。 EBCDIC ブランク (X'40') の場合、&SYSTWOBYTE は、それに X'40' をプレフィックスとして付けて DBCS のブランクを作成します。

&SYSTWOBYTE は、作成された DBCS ストリングを DBCS 区切り文字 (X'0E' および X'0F') で囲みます。

次の例は、EBCDIC から DBCS への完全な変換を示したものです。

SET X = &SYSTWOBYTE(ABCD) /* result: X = <dAdBdCdD>

次の例は、EBCDIC から DBCS への部分的な変換を示したものです。

SET X = &SYSTWOBYTE(CD<d5d6>EF) /* result: X = <dCdDd5d6dEdF>

DBCS データの EBCDIC への変換 - &SYSONEBYTE

第 6 章 組み込み関数の使用 75

Page 96: TSO/E CLIST

EBCDIC データの DBCS への変換 - &SYSTWOBYTE

76 z/OS V1R8.0 TSO/E CLIST

Page 97: TSO/E CLIST

第 7 章 CLIST の構造化

セレクションの実施 . . . . . . . . . . . . . . . . . . . . . . . 78IF-THEN-ELSE シーケンス . . . . . . . . . . . . . . . . . . . 78標準形式 . . . . . . . . . . . . . . . . . . . . . . . . . 78ヌルの ELSE 形式. . . . . . . . . . . . . . . . . . . . . . 79ヌルの THEN 形式 . . . . . . . . . . . . . . . . . . . . . 79

IF-THEN-ELSE シーケンスのネスト . . . . . . . . . . . . . . . . 80SELECT ステートメント . . . . . . . . . . . . . . . . . . . . 80テスト式を付けない場合の SELECT の使用 (単純 SELECT) . . . . . . 81テスト式を付けた場合の SELECT の使用 (複合 SELECT) . . . . . . . 81WHEN 節と WHEN コマンドとの区別 . . . . . . . . . . . . . . 82SELECT ステートメントと RACF SELECT サブコマンドとの区別 . . . . 82

ループ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82DO-WHILE-END シーケンス . . . . . . . . . . . . . . . . . . . 82DO-UNTIL-END シーケンス . . . . . . . . . . . . . . . . . . . 83反復 DO シーケンス . . . . . . . . . . . . . . . . . . . . . . 84複合 DO シーケンス . . . . . . . . . . . . . . . . . . . . . . 85ループのネスト . . . . . . . . . . . . . . . . . . . . . . . . 86END ステートメントと END コマンドまたはサブコマンドとの区別 . . . . 87

CONTROL ステートメントを使用する場合. . . . . . . . . . . . . 87DATA-ENDDATA シーケンスを使用する場合. . . . . . . . . . . . 88

サブプロシージャー . . . . . . . . . . . . . . . . . . . . . . . 88サブプロシージャーの呼び出し . . . . . . . . . . . . . . . . . . 88サブプロシージャーからの情報の戻し . . . . . . . . . . . . . . . 90

RETURN CODE ステートメントの使用 . . . . . . . . . . . . . . 90SYSREF ステートメントの使用 . . . . . . . . . . . . . . . . . 90

サブプロシージャー間での変数の共用 . . . . . . . . . . . . . . . 91NGLOBAL ステートメントの使用 . . . . . . . . . . . . . . . . 91

変数のサブプロシージャーへの限定 . . . . . . . . . . . . . . . . 91サブプロシージャー内で他のステートメントを使用する場合の考慮事項 . . . 92サブプロシージャー内での ATTN および ERROR ステートメントの使用 92サブプロシージャー内での CONTROL ステートメントの使用 . . . . . 92サブプロシージャー内での GOTO ステートメントの使用 . . . . . . . 92

CLIST のネスト . . . . . . . . . . . . . . . . . . . . . . . . 92エラーまたはアテンション割り込みからの入力スタックの保護 . . . . . . 94グローバル変数 . . . . . . . . . . . . . . . . . . . . . . . . 94ネストされた CLIST の終了 . . . . . . . . . . . . . . . . . . . 95

END コマンドを使用する場合 . . . . . . . . . . . . . . . . . 95EXIT ステートメントを使用する場合. . . . . . . . . . . . . . . 95

GOTO ステートメント . . . . . . . . . . . . . . . . . . . . . . 96

CLIST の構成は、次のいずれかにすることができます。

v コマンドおよびステートメントから成る単一のリスト

v 次にどのリストを実行するのかを示すステートメントによって連結されている、一連の短いリスト

CLIST を一連の短いリストとして作成する場合、構造化プログラミング手法を用いてそれらのリストを連結することができます。構造化プログラミングの場合、実行

© Copyright IBM Corp. 1988, 2006 77

Page 98: TSO/E CLIST

の流れはリストからリストへ一般に上から下への順に、最も高いレベルから最も低いレベルの詳細に向けて進みます。詳細の低位レベルでのリストは、CLIST の他の部分から呼び出すことができる共通コードを含んだ独立モジュール (サブプロシージャーおよびネストされた CLIST) です。構造化 CLIST を用いると、コードの反復を避けることができ、非構造化 CLIST の場合に比べて、読みやすく、保守も容易です。

本章では、CLIST 言語に関する構造上のエレメントについて説明するとともに、これらのエレメントを用いてコマンドおよびステートメントのリストの 1 つから別のリストに移動する方法を示します。構造化 CLIST ステートメントは、次のカテゴリーに分類されます。v セレクションv ループv サブプロシージャーへの呼び出しv 他の CLIST への呼び出し

セレクションの実施CLIST に、次にどのコマンドまたはステートメントを実行するかを示すには、IF ステートメントまたは SELECT ステートメントを使用します。これらのステートメントは、それぞれのセレクションをテストと結合させます。テストが真と判明した場合、CLIST は命令を実行し、そうでない場合、CLIST は代替命令を実行することができます。

IF-THEN-ELSE シーケンスIF-THEN-ELSE シーケンスは、1 個または 1 組の condition (条件) をテストし、そのテストの結果に基づいて実行すなわち action (処置) の論理パスを決定します。

condition (条件) は、比較式、または比較式を含んだ変数でなければなりません。複数の condition をコーディングすることもできますが、その場合、比較式 (または変数、あるいはその両方) を、論理演算子によって結合する必要があります。

action (処置) は、1 つまたは複数の命令です。 1 つの condition または 1 組のcondition が真の場合、CLIST は THEN action の中の命令を実行します。 1 つのcondition または 1 組の condition が偽の場合、CLIST は ELSE action の中の命令を実行します。

標準形式標準形式には、次のように、真および偽の両方の action が含まれています。

IF condition THEN action ELSE action

1 つの action に 2 つ以上のステートメントまたはコマンドが含まれる場合、そのaction を、DO-END シーケンスの中に入れる必要があります。たとえば、次のようにコーディングします。

IF condition THEN +DO...(action) /* action consists of a list of statements or commands

CLIST の構造化

78 z/OS V1R8.0 TSO/E CLIST

Page 99: TSO/E CLIST

...ENDELSE action /* action consists of a single statement or command

たとえば、CLIST は、ユーザー入力に基づいて更新したデータ・セットをオプションで印刷するとします。 CLIST が、ユーザーにデータ・セットを印刷するかどうかを決定するようにプロンプトを出し、その応答を &PRINT という変数の中に保管したとすると、次の IF-THEN-ELSE シーケンスで希望の処理が実行されます。

/***********************************************************************//* If the user wants data set printed, issue a message *//* saying that it is being printed and issue the command *//* that prints it. If user does not want data set printed *//* just issue a message saying that the data set is not *//* being printed. *//***********************************************************************/

IF &PRINT=YES THEN +DOWRITE We are printing the data set as you requested.printds da(&dsn)ENDELSE +WRITE The data set will not be printed.

action (処置) に含まれる命令が 1 つだけの場合、その命令を THEN または ELSE

ステートメントと同じ行に置くことができます。たとえば、上記の例におけるELSE ステートメントは、次のようにコーディングします。

ELSE WRITE The data set will not be printed.

ヌルの ELSE 形式特に ELSE action が必要でない場合、次の 2 つの方法のいずれかを用いて、ヌルの ELSE 節をコーディングすることができます。すなわち、ELSE 節全体を省略する方法と、オペランド (ある action) を指定せずに ELSE だけをコーディングする方法です。 次の IF-THEN-ELSE シーケンスでは、ELSE 全体が省略されています。

IF &PRINT=YES THEN +DOWRITE We are printing the data set as you requested.printds da(&dsn)END

また、以下のようにコーディングすることもできます。

IF &PRINT=YES THEN +DOWRITE We are printing the data set as you requested.printds da(&dsn)ENDELSE

ヌルの THEN 形式CLIST が単独でデータ・セットを印刷し、印刷を行うために他の CLIST を呼び出す必要がないとします。 データ・セットを印刷すべきでないときに真となるcondition (条件) をコーディングすることによって、ELSE ステートメントの終わりにまで有効にブランチするヌルの THEN 節を定義し、それによって、データ・セットを印刷するコーディングが行われないようになります。

セレクションの実施

第 7 章 CLIST の構造化 79

Page 100: TSO/E CLIST

次の IF-THEN-ELSE シーケンスは、&PRINT=NO の場合に印刷の action を迂回します (&PRINT に、YES またはヌルなどの他の値がある場合、印刷は実行されます)。

IF &PRINT=NO THENELSE +DO...(The rest of the CLIST, which prints the data set)...END

IF-THEN-ELSE シーケンスのネストIF-THEN-ELSE シーケンスには、他の (ネストされた) IF-THEN-ELSE シーケンスを含めることができます。たとえば、次の IF-THEN-ELSE シーケンスでは、そのELSE 節の action としてネストされた IF-THEN-ELSE シーケンスを使用します。

IF condition1 THEN +DOaction1 /* Do if condition 1 is trueEND

ELSE +IF condition2 THEN +

DOaction2 /* Do if condition1 is false andEND /* condition2 is true

ELSE +DOaction3 /* Do if condition1 and condition2END /* are both false

ネストされた IF-THEN-ELSE シーケンスによって、非常に正確な条件のもとで処理の流れを制御することができます。 ただし、ネストされた IF-THEN-ELSE シーケンスを、多数作成し、保守するのは困難な場合があります。そのため、多くの場合は、これに代わる方法として、SELECT ステートメントを使用することができます。

SELECT ステートメント多数の IF-THEN-ELSE ステートメントを使用する必要がある状況では、多くの場合、それらに代わって単一の SELECT ステートメントを使用することができます。SELECT ステートメントによって、CLIST は、可能なアクションのリストからアクションを選択することができます。 アクションは、1 つまたは複数のステートメントまたはコマンドで構成されます。 SELECT ステートメントには、END ステートメントで終わる次の構文があります。 SELECT ステートメントの使用に際しては、冒頭に test expression (テスト式) を付ける場合と、付けない場合があります。

SELECT [test expression]WHEN expression1...(action)...WHEN expression2WHEN expression3

[OTHERWISE]...(action)

セレクションの実施

80 z/OS V1R8.0 TSO/E CLIST

Page 101: TSO/E CLIST

...END

テスト式を付けない場合の SELECT の使用 (単純 SELECT)SELECT ステートメントから test expression (テスト式) を省略した場合、CLIST

は、真の値を求めて、WHEN 節の expression (式) を順にテストしていきます。真の値が見つかった (たとえば、1 = 1 など) 場合、CLIST はその WHEN 節のaction だけを実行します。その後で、CLIST は制御を END ステートメントに渡します。真の値と評価される expression (式) がなかった場合、CLIST はOTHERWISE action があれば、それを実行します。

たとえば、次の SELECT ステートメントは、前の処理からの戻りコードに基づいてアクションを選択します。

SELECTWHEN (&RTNCODE = 0) CALL ’A.B.LOAD(PGM)’WHEN (&RTNCODE = 1) +

DOSET &X = X + 1SET RETRY = &STR(YES)

ENDOTHERWISE SET &MSG = &STR(SEVERE ERROR)

END

単純 SELECT を使用するその他の例については、 125ページの図 6 および 161ページの図 26 を参照してください。

テスト式を付けた場合の SELECT の使用 (複合 SELECT)SELECT ステートメントに test expression (テスト式) を組み込むと、CLIST は、そのテスト式を、WHEN 節の式 (expression) と比較します。 各 WHEN 節ごとに、複数の式を指定することも、あるいは、ある範囲の値を、その範囲の小さい方の値と大きい方の値の間にコロン (:) を入れることによって指定することもできます。演算子の OR または | を使用することによって、WHEN 節の式および範囲を結合することができます。

テスト式が、WHEN 節の式の値と一致する場合、あるいは WHEN 節の式の中の値の範囲内に入る場合、CLIST は、その WHEN 節の action を実行し、その後で、END ステートメントに制御を渡します。

たとえば、次の SELECT ステートメントの場合、CLIST は最初の WHEN 節のaction を実行します。テスト式 (5) が、その WHEN 節の値 4:6 の範囲内に入るからです。

SELECT 5WHEN (3 | 7 | 4:6) action...WHEN (9 | &A + &Z) action...

END

テスト式を満足させる WHEN 節がない場合、CLIST は、OTHERWISE action があればそれを実行します。

たとえば、次の CLIST は、SELECT ステートメントを使用して、四半期ごとの報告を印刷する他の CLIST を呼び出します。 CLIST は、呼び出し側が提供するテス

セレクションの実施

第 7 章 CLIST の構造化 81

Page 102: TSO/E CLIST

ト式 (その月の数) を選択の基礎とします。 その月の数が、ある特定の範囲内に入るときに、CLIST は該当する報告を印刷します。 それ以外の場合、CLIST は、エラー・メッセージを書き出します。

PROC 1 MONTHSELECT (&MONTH)

WHEN (1:3) %FIRSTQTRWHEN (4:6) %SECNDQTRWHEN (7:9) %THIRDQTRWHEN (10:12) %FORTHQTROTHERWISE WRITE The month must be a number from 1 to 12.

END

WHEN 節と WHEN コマンドとの区別SELECT ステートメント内の WHEN 節は、WHEN SYSRC TSO/E コマンドとは構文的に異なります。 SELECT ステートメントでは、WHEN 節の後に左括弧がなければなりません。 SELECT ステートメントの action の一部として WHEN コマンドを使用したい場合は、DO-END シーケンス内に WHEN コマンドを入れて、SELECT ステートメントがそのコマンドを無効な WHEN 節として解釈するのを防ぎます。たとえば、次の構文は受け入れ可能な構文です。

SELECTWHEN (&X=1) +DO /* The action of the WHEN clause */WHEN SYSRC(= 8) TIME /* is the WHEN SYSRC TSO command. */END /* End of the DO group */

END /* End of the SELECT statement */

WHEN SYSRC TSO/E コマンドの使用方法について詳しくは、「z/OS TSO/E コマンド解説書」を参照してください。

SELECT ステートメントと RACF SELECT サブコマンドとの区別CLIST で、RACF コマンド RACFRW の SELECT サブコマンドを呼び出す場合、そのサブコマンドと SELECT ステートメントを区別する必要があります。それを行うには、&STR 組み込み関数を使用します。たとえば、次のようなサブコマンド名を指定することができます。

RACFRW&STR(SELECT) VIOLATIONS

ループ単純 DO-END シーケンスとは異なり、CLIST 言語内の他の DO シーケンスはループを形成します。ループは、ステートメントまたはコマンドのリストで、ループ内に指定された condition (条件) により、1 回または複数回実行したり、あるいはまったく実行しなかったりします。 CLIST は、その condition で指示する回数だけループを実行します。 condition が満たされるか、もはや真でなくなった場合は、ループの後の命令から実行が継続されます。

次の項では、DO ステートメントによってループを作成する方法を説明します。

DO-WHILE-END シーケンスDO-WHILE-END シーケンスは、指定された condition (条件) が真のときに実行するループを作成します。 condition が真でない場合、ループは実行しません。

セレクションの実施

82 z/OS V1R8.0 TSO/E CLIST

Page 103: TSO/E CLIST

DO-WHILE-END シーケンスを使用するには、次のようにコーディングします。

DO WHILE condition...(action)...

END

condition (条件) は、比較式、または比較式を含んだ変数でなければなりません。式または変数 (あるいはその両方) を論理演算子によって結合することによって、複数の condition をコーディングすることができます。

action (処置) は、1 つまたは複数の命令です。 CLIST は、WHILE 節の condition

が真である間、そのシーケンス内の命令を繰り返し実行します。condition が偽であるとき、CLIST は、END ステートメント後にある次の命令を実行します。

たとえば、そのシーケンスの前に変数 (通常はカウンター) を初期設定し、その変数を条件式に組み込むことができます。 その上で、action を実行しているときにその変数を修正し、その condition が最終的には偽になるようにすることができます。

たとえば、ある命令のセットを 5 回プロセスするには、次のようにコーディングすることができます。

SET &COUNTER = 5 /* Initialize counter *//* Perform the action while counter is greater than 0 */DO WHILE &COUNTER > 0...

(Set of instructions)...SET COUNTER = &COUNTER - 1 /* Decrease counter by 1 */END

変数 &COUNTER は、最初に 5 に設定されたループ・カウンターです。 WHILE

は、CLIST がこの DO-WHILE-END シーケンスの実行を開始するたびに、このカウンターの値をテストします。 &COUNTER の値がゼロより大きい値である (テストすべき condition が真である) 限り、CLIST はそのシーケンスを実行します。シーケンスの最後の命令が実行されると、カウンターの値が 1 ずつ減少します。カウンターの値がゼロになると (テストすべき condition が偽になると)、CLIST は、そのループを終了し、END ステートメントの後の命令から処理を継続します。

DO-WHILE シーケンスでエラーが起こると、実行は停止します。以前のリリースでは、DO-WHILE が単純 DO-END シーケンスとして扱われ、警告メッセージが出て、実行は継続していました。

DO-UNTIL-END シーケンスDO-UNTIL-END シーケンスは、少なくとも 1 回は実行し、指定された condition

が真になるまで継続するループを作成します。

DO-UNTIL-END シーケンスを使用するには、次のようにコーディングします。

DO UNTIL condition...(action)...

END

ループ

第 7 章 CLIST の構造化 83

Page 104: TSO/E CLIST

condition (条件) は、比較式、または比較式を含んだ変数でなければなりません。式または変数 (あるいはその両方) を論理演算子によって結合することによって、複数の condition をコーディングすることができます。

action (処置) は、1 つまたは複数の命令です。 CLIST は、シーケンス内の命令を1 回実行し、その後 UNTIL 節の condition が真であるかどうかテストします。condition が偽の場合、CLIST は condition が真になるまで ループを繰り返します。condition が真の場合、CLIST は、ループを終了し、END ステートメントの後にある次の命令を実行します。

たとえば、condition が真になるまである命令を繰り返すには、次のようにコーディングします。

DO UNTIL &INPUT = YES /* Perform action until condition is YES...(action)...WRITE Type YES if you are finishedREAD &INPUT;

END

DO UNTIL シーケンスは、ユーザーからの入力を要求する場合に役立ちます。入力が受け入れられた後 で決定が下されるので、ループは入力値に応じて継続または終了することができます。

反復 DO シーケンス反復 DO シーケンスは、数値が、所定の範囲内に入っている限り実行するループを作成します。この値は、CLIST 処理から導き出された変数にすることができます。反復 DO シーケンスの構造は、次のようになっています。

DO variable = from_expression TO to_expression +[BY by_expression]...

(action)...END

ここで、

variable

は、ループの制御変数です。その値は、ループが実行されるごとに変わり、1

(デフォルトの値) ずつ、または BY 式内で指定された値ずつ増加します。

from_expression

は、10 進整数、または 10 進整数に評価される式で、そこから制御変数が開始します。CLIST は、ループの開始時に、制御変数をこの値に設定します。

to_expression

は、10 進整数または 10 進整数に評価される式で、制御変数はその値まで増加または減少していきます。CLIST は、制御変数の値が FROM および TO 式により作成された範囲内に入っている限り、ループを実行します。

by_expression

は、10 進整数または 10 進整数に評価される式で、制御変数はその分だけ増加または減少します。デフォルトは 1 です。ループが実行した後、制御変数はこ

ループ

84 z/OS V1R8.0 TSO/E CLIST

Page 105: TSO/E CLIST

の分だけ増加または減少します。制御変数が FROM-TO の範囲内でなくなった場合、実行は、END ステートメントの後の命令から継続します。

たとえば、CLIST は次のループを 10 回実行する必要があります。

DO &count = 1 to 10 /* using default BY, increase &count by one/* each time through the loop...

END /* &count is now equal to 11

また、CLIST は、次のループを 5 回実行する必要があります。

DO &count = 1 TO 10 BY 2 /* increase &count by two/* each time through the loop...

END /* &count is now equal to 12

FROM、TO、および BY 式は、すべて CLIST 変数を含むことができます。

DO &count = &min TO &max BY &increment...END

複合 DO シーケンスこれまでの項では、ループの実行を制御するいろいろな方法を説明してきました。複合 DO シーケンス内では、これらのいろいろな種類のループ制御を結合することができます。複合 DO シーケンスは、反復 DO シーケンスを、DO-WHILE またはDO-UNTIL シーケンス (あるいはその両方) に結合します。

複合 DO シーケンス内では、反復 DO シーケンスが先で、その後に、DO-WHILE

シーケンスまたは DO-UNTIL シーケンスが続きます。

DO variable = from_exp TO to_exp BY by_exp +WHILE condition1 +UNTIL condition2 +...

(action)...END

CLIST は、 86ページの図 2 に示すように複合 DO シーケンスを実行します。

次の例では、使用可能な複合 DO シーケンスを示します。

SET &increment = 2 /* Initialize BY conditionSET &year = 87 /* Initialize WHILE conditionDO &count = 1 TO 10 BY &increment +WHILE &year=87 UNTIL &input=YES;...

(action)...WRITE Type YES if you are finishedREAD &INPUT;

END

ループ

第 7 章 CLIST の構造化 85

Page 106: TSO/E CLIST

DO シーケンスの action から、戻りコードを WHILE または UNTIL 式に入れたい場合は、&LASTCC から戻りコードを入手して、action の一部として他の変数の中にそれを保管してください。たとえば、次のとおりです。

DO &I = 1 to 10 WHILE (&RCODE = 0)...SET RCODE = &LASTCC

END

ループのネストループの action には他のループを入れることができます。ループ内のループは、ネストされたループと呼ばれます。 ループにネストされたループを入れる場合、同じ型のものでも、異なる型のものでもかまいません。

同じタイプのネストされたループを入れる場合はたいてい、他の反復 DO ループ内に反復 DO ループを入れる場合です。 たとえば、名前が PROC00 から PROC99

である 100 の CLIST を実行するには、次のようにコーディングします。

図 2. CLIST が複合 DO シーケンスを実行する方法

ループ

86 z/OS V1R8.0 TSO/E CLIST

Page 107: TSO/E CLIST

DO &I = 0 to 9DO &J = 0 to 9%proc&I&JENDEND

異なるタイプのネストされたループを入れる場合は、DO-WHILE ループにDO-UNTIL ループを入れる場合です。次の例をご覧ください。

SET &COUNTER1 = 0 /* Initialize outer loop counter */SET &COUNTER2 = 3 /* Initialize nested loop counter */DO WHILE &COUNTER1 < 5/* Perform action while &counter1 is less than 5 */...(action) /* Executes 5 times */...DO UNTIL &COUNTER2 = 0/* Perform action until &counter2 is equal to 0 */...(Subset of action) /* Executes 3 times */...SET COUNTER2 = &COUNTER2 - 1 /* Increase nested loop counter by 1 */END...SET COUNTER1 = &COUNTER1 + 1 /* Increase outer loop counter by 1 */END

END ステートメントと END コマンドまたはサブコマンドとの区別CLIST 内で TSO/E END コマンドまたはサブコマンドを出すことができます。END コマンドは CLIST を終了させ、END サブコマンドは TEST コマンドなどのある特定のコマンドを終了させます。 TSO/E END コマンドまたはサブコマンドを、DO シーケンスまたは SELECT ステートメントの処置の中に組み込むときは、END コマンドまたはサブコマンドを END ステートメントと区別する必要があります。 END ステートメントの区別は、CONTROL ステートメントまたはDATA-ENDDATA シーケンスを使用して行うことができます。

CONTROL ステートメントを使用する場合END ステートメントを END コマンドまたはサブコマンドと区別する 1 つの方法として、END オペランドを指定して CONTROL ステートメントをコーディングする方法があります。 この方法を用いる場合、END オペランドにコーディングした値が別の CONTROL END によってオーバーライドされていない限り、CLIST 内のすべての END ステートメントをその値と置き換える必要があります。

たとえば、END ステートメントの代わりに ENDO を使用したい場合、次のようにコーディングします。

CONTROL END(ENDO)SET COUNTER = 10DO WHILE &COUNTER GT 0...

(action)...test datapak(newpgm) /* Issue TSO/E TEST command */...(TEST subcommands)...end /* Issue END subcommand of TSO/E TEST */

ループ

第 7 章 CLIST の構造化 87

Page 108: TSO/E CLIST

...(more action)...SET COUNTER = &COUNTER - 1 /* Decrease counter by 1 */ENDO

DATA-ENDDATA シーケンスを使用する場合DO シーケンスまたは SELECT ステートメント内の END コマンドまたはサブコマンドを識別するもう 1 つの方法として、DATA-ENDDATA シーケンス内にそのコマンドまたはサブコマンドを置く方法があります。 たとえば、次のとおりです。

SET COUNTER = 10DO WHILE &COUNTER GT 0...

(action)...DATAtest datapak(newpgm) /* Issue TSO/E TEST command */...(TEST subcommands)...end /* Issue END subcommand of TSO/E TEST */ENDDATA...(more action)...SET COUNTER = &COUNTER - 1 /* Decrease counter by 1 */END

DATA-ENDDATA シーケンス内に入れることができるのは、TSO/E コマンドおよびサブコマンドのみです。 CLIST ステートメントが組み込まれていると、TSO/E

は、それを TSO/E コマンドとして実行しようとするので、エラーの原因となります。 DATA-ENDDATA シーケンスの詳細については、 99ページの『プロンプトに対する応答のコーディング - DATA PROMPT-ENDDATA シーケンス』を参照してください。

サブプロシージャーサブプロシージャーは、CLIST 内の 1 つまたは複数の場所から呼び出すことのできる CLIST の一部分です。サブプロシージャーを使用すると、CLIST を論理単位に編成することができ、その作成および保守が容易になります。 さらに、共通コードを 1 つの場所に保管し、CLIST の他の部分から呼び出すこともできます。このようにすると、コードの反復を避けることができます。

サブプロシージャーは、CLIST 内の情報伝達のための、いろいろな方法を提供します。実行できる内容は次のとおりです。v サブプロシージャーとの間で、参照または修正のためにパラメーターを受け渡しする。

v サブプロシージャー間で、変数をグローバルに共用する。v サブプロシージャー内の変数を、CLIST の他の部分から分離する。

サブプロシージャーの呼び出しサブプロシージャーは、SYSCALL ステートメントを使用して呼び出すことができます。 SYSCALL ステートメントに、サブプロシージャーと、そのサブプロシージ

ループ

88 z/OS V1R8.0 TSO/E CLIST

Page 109: TSO/E CLIST

ャーに渡したいパラメーターの名前を指定します。このパラメーターは、データ・ストリング、変数値、あるいは変数名のいずれかです。

たとえば、次の CLIST は、SYSCALL ステートメントを使用して、データ・ストリング、変数値 (&A) および 変数名 (B) をサブプロシージャー (XYZ) に渡します。

SET &A = ALSET &B = Jr.SYSCALL XYZ Jones &A B /* pass parameters to XYZ */

XYZ: PROC 3 PARM1 PARM2 PARM3 /* receive parameters on PROC stmt */SYSREF PARM3 /* indicate parm3 holds a var. name */WRITE &PARM1, &PARM2 &PARM3 /* result: JONES, AL Jr. */END

サブプロシージャーは、常に、ラベル付き PROC ステートメントで始まります。このラベルは、英字 (A から Z) で始まる、1 から 31 文字 (A から Z、0 から9、#、$、@) で構成されます。上記の例の場合、ラベルは XYZ です。PROC ステートメント上の数字 3 は、このサブプロシージャーが 3 つの定位置パラメーターを受け取ることを示しています。これらのパラメーターは、変数 PARM1、PARM2、および PARM3 に割り当てられます。 PROC ステートメントの詳細については、 197ページの『PROC ステートメント』を参照してください。

SYSREF ステートメントは、CLIST に、PARM3 が変数 (B) の名前を含んでいることを通知します。 SYSREF ステートメントを使用すると、サブプロシージャー内の他のステートメントが、その変数の値 (Jr.) を参照および修正できます。詳しくは、90ページの『SYSREF ステートメントの使用』を参照してください。

ブランクを含むパラメーターをサブプロシージャーに渡すには、変数値をパラメーター値と同じ値に設定してから、SYSCALL ステートメント上の &STR を使用して、その変数 (アンパーサンドなし) を参照します。サブプロシージャーでは、SYSREF ステートメントを使用して、SYSCALL ステートメント上で渡された変数名に対応する、PROC ステートメント・パラメーターを参照します。たとえば、次のとおりです。

SET &A = JOHN ALSYSCALL XYZ &STR(A) /* Pass variable to XYZ, omitting & from

/* the variable name...XYZ: PROC 1 PARM /* Subprocedure XYZSYSREF &PARM /* indicate PARM holds a variable nameWRITE &PARM /* result: JOHN AL

サブプロシージャーは、常に END ステートメントで終了する必要があります。サブプロシージャーが終了すると、そのサブプロシージャーは、SYSCALL ステートメントの後のステートメントに制御を戻します。

サブプロシージャーは SYSCALL ステートメントを使用して、以下を行うことができます。v 他のサブプロシージャーを呼び出して、そのサブプロシージャーへパラメーターを引き渡す。

v サブプロシージャー自身を呼び出す。v CLIST のメイン・プロシージャーにラベルがある場合、そのメイン・プロシージャーを呼び出す。

サブプロシージャー

第 7 章 CLIST の構造化 89

Page 110: TSO/E CLIST

サブプロシージャーからの情報の戻しサブプロシージャーは、以下を使用して呼び出し元に情報を戻すことができます。v 戻りコードv SYSREF 変数v NGLOBAL 変数

RETURN CODE ステートメントの使用サブプロシージャーは、RETURN ステートメントの CODE オプションを使用して呼び出し元に情報を戻すことができます。 TSO/E コマンドからの戻りコードと同様、サブプロシージャーからの戻りコードは、制御変数 &LASTCC の中に保管されますが、サブプロシージャーからのエラー戻りコードによって、エラー・ルーチンが制御を受け取ることはありません。

次の例では、サブプロシージャーは SYSCALL の後のステートメントに戻りコードを渡します。

SET &A = ALSYSCALL XYZ &A /* pass variable &A to XYZ */IF &LASTCC = 0 THEN +

WRITE All’s Well!

XYZ: PROC 1 PARM1WRITE &PARM1RETURN CODE(0)

END

SYSREF ステートメントの使用SYSCALL ステートメントが変数名 (アンパーサンドなし) を渡すと、サブプロシージャーは SYSREF ステートメントを使用して、以下のステートメントに、その変数の値を参照および修正させることができます。 SYSREF 変数への変更は、すべて前にさかのぼって有効になります。すなわち、新しい値は、呼び出し元に戻り、元の変数に割り当てられます。

次の例では、サブプロシージャーは、新しい値を、名前が (A) に渡されている変数に与えます。新しい値 (GEORGE) は、呼び出し元で、古い値 (AL) と置き換わります。

SET &A = ALSYSCALL XYZ A /* pass var. &A to XYZ, omitting the &*/;IF &LASTCC = 0 THEN +

WRITE &A /* result: GEORGE

XYZ: PROC 1 &PARM1SYSREF &PARM1 /* refer changes to the caller */SET &PARM1 = GEORGERETURN CODE(0)

END

注意 : SYSREF 変数では、常に、SYSCALL ステートメント上の対応する変数からアンパーサンド (&) を除きます。SYSCALL のアンパーサンドを除くことによって、変数の名前 (その値ではなく) をサブプロシージャーに渡すことができます。サブプロシージャーは、SYSREF ステートメントを使用すると、新しい値をその変数に割り当てることができます。

サブプロシージャー

90 z/OS V1R8.0 TSO/E CLIST

Page 111: TSO/E CLIST

サブプロシージャー間での変数の共用戻りコードおよび変数値を渡すことの他に、いろいろな CLIST の間、あるいは 1

つの CLIST の中のサブプロシージャーの間で共用する、共通変数を定義することができます。

いろいろな CLIST の間で共用する変数は、GLOBAL 変数と呼ばれます。GLOBAL 変数は、GLOBAL ステートメントを使用して定義します。これについては、 92ページの『CLIST のネスト』で詳しく説明します。

1 つの CLIST 内のサブプロシージャーによって共用される変数は、NGLOBAL (名前付きグローバル) 変数と呼ばれます。名前付きグローバル変数は、NGLOBAL ステートメントによって定義します。 NGLOBAL 変数を定義すると、同一 CLIST 内のサブプロシージャーはすべて、名前によってその変数を参照し、その値を修正することができます。

NGLOBAL 変数の、GLOBAL 変数との違いは次の点にあります。v 他の CLIST 変数にとってはグローバルではない (他の CLIST とは共用されない)。

v 名前によってのみ (位置ではなく) 定義される。v 一度定義するだけでよい。

NGLOBAL ステートメントの使用NGLOBAL ステートメントは、CLIST 内のすべてのサブプロシージャーが使用できる変数の名前を指定します。 次のサブプロシージャー (ABC) は、変数 A、B、および C を定義し、NGLOBAL ステートメントを使用して、それらの変数を、CLIST

内の他のサブプロシージャーが使用できるようにします。

ABC: PROC 0 /* In subprocedure ABC,NGLOBAL A,B,C /* define NGLOBAL variablesSET A = applesSET B = bananasSET C = cantaloupSYSCALL XYZ /* call subprocedure XYZEND

XYZ: PROC 0 /* In subprocedure XYZ,WRITE Mix &A, &B, and &C /* use the NGLOBAL variablesEND

NGLOBAL ステートメントは、その変数を使用するどのステートメントよりも前に置く必要があります。 NGLOBAL ステートメント上で指定できる変数の数は、無制限です。

サブプロシージャーで NGLOBAL ステートメントを使用する場合の別の例が、 170

ページの『LISTDSI 情報を含むデータ・セットの割り振り - EXPAND CLIST』に示してあります。

変数のサブプロシージャーへの限定サブプロシージャー内で定義する変数は、それらが、GLOBAL または NGLOBAL

ステートメント上で特別に指定されていない限り、そのサブプロシージャーでのみ有効です。 CLIST 内の異なるサブプロシージャーが、それぞれに同じ名前の変数を持つことができ、各変数は、それを定義したサブプロシージャーでのみ有効です。

サブプロシージャー

第 7 章 CLIST の構造化 91

Page 112: TSO/E CLIST

したがって、変数を定義するときは、その名前が以前にその CLIST 内で使用されたものであるかどうかをチェックする必要はありません。

サブプロシージャー内で他のステートメントを使用する場合の考慮事項CLIST ステートメントによっては、サブプロシージャー内で使用されたときに特別な考慮事項を必要とするものがあります。以下の項では、それらのステートメントとその考慮事項について説明します。

サブプロシージャー内での ATTN および ERROR ステートメントの使用サブプロシージャーは、それぞれ独自のアテンション・ルーチンおよびエラー・ルーチンを持つことができます。 これらは、CLIST ユーザーが端末のキーボードでアテンション・キーを押したとき、あるいはエラーが発生したときに制御を受け取るルーチンです。 これらのルーチンについては、サブプロシージャーで使用した場合の特別な考慮事項を含め、 117ページの『第 10 章 ATTN および ERROR ルーチンの作成』で詳しく説明します。たとえば、サブプロシージャーのアテンションまたはエラー・ルーチンには、ネストされたアテンションまたはエラー・ルーチンを入れることはできません。

サブプロシージャーが制御を受け取ると、呼び出し元のアテンションおよびエラー・ルーチンは、そのサブプロシージャーが ATTN または ERROR ステートメントを出すまでは有効なままの状態でいます。さらに、そのサブプロシージャーのアテンションおよびエラー・ルーチンは、そのルーチンがオフになるまで、または置き換えられるまで、あるいはそのサブプロシージャーが終了するまで有効です。サブプロシージャーが終了すると、呼び出し元のアテンションおよびエラー・ルーチンは制御を取り戻します。

サブプロシージャー内での CONTROL ステートメントの使用CLIST は、CONTROL ステートメントおよびある特定の制御変数を出すことによって、特殊な条件を確立することができます。 これらの条件は CONTROL 環境を構成し、サブプロシージャーを呼び出したときにも有効なままでいます。 サブプロシージャーは、独自の CONTROL 環境をセットアップすることができますが、この環境は、そのサブプロシージャーと、それが呼び出すサブプロシージャーにのみ適用されます。サブプロシージャーが終了すると、呼び出し元の CONTROL 環境が再び有効になります。

サブプロシージャー内での GOTO ステートメントの使用サブプロシージャー内で GOTO ステートメントを使用した場合、このステートメントは、同じサブプロシージャー内のラベルにのみブランチすることができます。GOTO ステートメントは、PROC ステートメントにブランチすることはできません。

CLIST のネストCLIST が他の CLIST を呼び出し、呼び出された CLIST がまた別の CLIST を呼び出す、というように次々に CLIST を呼び出すことができます。 他の CLIST によって呼び出された CLIST は、ネストされた CLIST と呼ばれます。ネストされたCLIST が終了すると、その CLIST は、それを呼び出した CLIST の後のステート

サブプロシージャー

92 z/OS V1R8.0 TSO/E CLIST

Page 113: TSO/E CLIST

メントに、自動的にブランチして戻ります。 グローバル変数を定義すれば、それを使用して、ネストされた CLIST が相互に通信できるようになります。

一連のネストされた CLIST を、レベルの構造にすることができます。ネスティング・チェーンの中では、ユーザーによって呼び出された CLIST が最上位または外側のレベルになります。外側のレベルの CLIST によって呼び出された CLIST は、その外側のレベルの CLIST の中にネストされ、その CLIST も、それより下位レベルの CLIST を中にネストすることになります。

図 3 では、PROC1 が外側のレベルの CLIST です。この PROC1 は PROC2 を呼び出し、次に PROC3 を呼び出し、これらは PROC1 の中にネストされます。PROC2 は PROC4 を呼び出し、PROC4 は PROC5 を呼び出します。 PROC4 はPROC2 の中にネストされ、PROC5 は PROC4 の中にネストされます。

CLIST は順番に実行されるため、PROC1 は、PROC5、PROC4、PROC2 が処理を終了するまで、PROC3 を呼び出すことができません。

また、ネストされた階層の中の 2 つ以上のレベルで同じ CLIST を呼び出すことも可能です。これは、ネストされた CLIST が呼び出されるつど、そのコピーが新しくストレージ内に作成されるためです。たとえば、PROC2 および PROC4 が両方ともPROC5 を呼び出すことができます。

PROC1

PROC2

PROC4

PROC5

PROC3

図 3. ネストされた CLIST

CLIST のネスト

第 7 章 CLIST の構造化 93

Page 114: TSO/E CLIST

エラーまたはアテンション割り込みからの入力スタックの保護CLIST が実行されると、その CLIST は、各ステートメントを実行可能なフォーマットに変換した後、それを入力スタックと呼ばれるストレージ内のセクションに入れます。TSO/E は、この入力スタックからその入力 (TSO/E コマンドおよび CLIST

ステートメント) を受け取ります。

ネストされた CLIST の場合、入力スタックは、それらがネストされている順序でCLIST の内容を保持します。

エラーまたはアテンション割り込みの発生時には、入力スタックが消去 (フラッシュ) されないように、それを保護することができます。入力スタックを保護するには、エラーまたはアテンション割り込みの発生時に制御を渡したい CLIST の始めに、NOFLUSH または MAIN オペランドを指定した CONTROL ステートメントをコーディングしておきます。

ネストされた CLIST によって確立されたオプションは、その CLIST が実行している間だけ有効です。特に、ネストされた CLIST の CONTROL ステートメント・オプションと、アテンションおよびエラー・ルーチンは、ネストされた CLIST がその呼び出し元に制御を返すと有効でなくなります。

サブコマンド環境内でネストされている CLIST (EDIT の EXEC サブコマンドのもとで呼び出された CLIST) は、サブコマンドおよび CLIST ステートメントのみを実行することができます。これらは、END サブコマンドが実行されるまで、TSO/E

コマンドを実行することも、また、それらによって呼び出された、ネストされたCLIST を実行することもできません。

グローバル変数グローバル変数は、GLOBAL ステートメントで定義された変数です。この変数によって、ネストされた CLIST 間の通信が可能になります。ネストされたチェーン内のCLIST はすべて、グローバル変数の値を修正または参照することができます。

それぞれの CLIST 内のグローバル変数には、固有の名前が付いている必要があります。ネストされた CLIST 内の GLOBAL ステートメント上のグローバル変数の数を、最上位レベルの CLIST 内の GLOBAL ステートメント上のグローバル変数の数より多くすることはできません。

グローバル変数を確立するには、まず最初に、ネストされたチェーン内の複数のCLIST によって参照される記号変数の合計数を判断します。 (ネストされたチェーン内にある最上位レベルの CLIST も含めてください。) 次に、データの受け渡しに関係する、チェーン内の各 CLIST 内で、GLOBAL ステートメントをコーディングします。

たとえば、 93ページの図 3 では、各 CLIST 内で、次のようなグローバル変数定義があるとします。

PROC1: GLOBAL A B C D

PROC2: GLOBAL X Y Z

PROC3: GLOBAL F G H K

PROC4: GLOBAL Q

PROC5: GLOBAL R S.

CLIST のネスト

94 z/OS V1R8.0 TSO/E CLIST

Page 115: TSO/E CLIST

変数 &A、&X、&F、&Q、および &R は、すべての CLIST が共有することができます。PROC4 が &Q を D777 に設定すると、&A、&X、&F、および &R もD777 に設定されます。

ネストされた CLIST 内では、グローバル変数は定位置変数です。すなわち、最初に定義されるすべての変数は、同じ変数を示し、2 番目に定義されるすべての変数はまた同じ変数を示す、というようになります。

ネストされた CLIST の終了ネストされた CLIST を終了する方法には次の 3 つの方法があります。

v ネストされた CLIST の最後で、呼び出し元の CLIST に自動的に制御が戻されるようにする。

v END コマンドを出す。

v EXIT コマンドを出す。

END コマンドを使用する場合END コマンドは、CLIST の終了だけを行えます。制御は、それを呼び出したCLIST に戻されますが、戻りコードを設定することはできません。END コマンドを使用するには、次のようにコーディングします。

end

END コマンドは CLIST を終了するだけなので、戻りコードを呼び出し元の CLIST

に返す必要がある場合には、使用しないでください。 使用した場合には、呼び出し元の CLIST が、予測不能な状態の戻りコードを受け取る可能性があります。呼び出し元に正しく戻りコードを渡す必要がある場所には、EXIT ステートメントを使用してください。

EXIT ステートメントを使用する場合ネストされた CLIST が、それを呼び出した CLIST に制御を戻すようにするには、次のようにコーディングします。

EXIT

EXIT ステートメント上に戻りコードを指定することができます。戻りコードを指定すると、下位レベル CLIST が、その呼び出し元に、エラーまたは実行の成功の通知を戻すことができます。 終了時に戻りコードを渡すには、次のようにコーディングします。

EXIT CODE(expression)

expression (式) は、正の整数、ゼロ、または、置換後の値が整数である記号変数のいずれかでなければなりません。 ネストされた CLIST は、式の値を制御変数&LASTCC の中に保管します。

エラーまたはアテンション割り込みが発生した場合、ネストされた CLIST は、CONTROL MAIN または CONTROL NOFLUSH オプションによって、終了しないように保護されている CLIST に制御を渡すことができます。 制御を、このように保護されている CLIST に戻すには、次のようにコーディングします。

EXIT QUIT

CLIST のネスト

第 7 章 CLIST の構造化 95

Page 116: TSO/E CLIST

または

EXIT CODE(expression) QUIT

ネストされたチェーン内の CLIST が終了しないように保護されている場合、実行は、その CLIST のアクティブなエラーまたはアテンション・ルーチンでのアクションに基づいて続行されます。エラーおよびアテンション・ルーチンの作成については、 117ページの『第 10 章 ATTN および ERROR ルーチンの作成』を参照してください。

ネストされたチェーン内のどの CLIST も、エラーまたはアテンション割り込みの発生後でも終了しないように保護されていない場合、QUIT をコーディングすると、制御が、その CLIST を呼び出した環境 (すなわち、TSO/E、TSO/E EDIT モード、または ISPF) に戻されます。

GOTO ステートメントGOTO ステートメントによって、CLIST 内のラベルへの無条件ブランチが行われます。このラベルは、置換後の値が CLIST 内の有効なラベルである変数にすることができます。 GOTO ステートメントの使用例を以下に示します。

IF &A = 555 THEN GOTO A1IF &A NE 0 THEN GOTO A2

A1: processing...A2: processing

...

SET TARGET = B1IF &X = 777 THEN GOTO &TARGETELSE +

DOSET TARGET = B2...IF LASTCC = 0 THEN +SET TARGET = B1GOTO &TARGETEND

B1: processingB2: processing

...

GOTO ステートメントは、以下のようにブランチすることはできません。v 別の CLIST へv サブプロシージャーの PROC ステートメントへv 1 つのサブプロシージャーから別のサブプロシージャーへv サブプロシージャーから CLIST のメイン・プロシージャーへ

CLIST のネスト

96 z/OS V1R8.0 TSO/E CLIST

Page 117: TSO/E CLIST

第 8 章 端末ユーザーとの通信

ユーザーに入力を促すプロンプト . . . . . . . . . . . . . . . . . . 97PROC ステートメントによるプロンプト . . . . . . . . . . . . . . 97WRITE および WRITENR ステートメントによるプロンプト . . . . . . . 98TSO/E コマンドによるプロンプト . . . . . . . . . . . . . . . . . 98プロンプトに対する応答のコーディング - DATA PROMPT-ENDDATA シーケンス . . . . . . . . . . . . . . . . . . . . . . . . 99

端末へのメッセージの書き出し . . . . . . . . . . . . . . . . . . 101WRITE および WRITENR ステートメントの使用 . . . . . . . . . . . 101通知メッセージの表示の制御 . . . . . . . . . . . . . . . . . . 102

端末からの応答の受信 . . . . . . . . . . . . . . . . . . . . . . 102READ ステートメントを使用する場合 . . . . . . . . . . . . . . . 102

READ ステートメント入力に関する大文字および小文字の制御 . . . . . 104READDVAL ステートメントの使用 . . . . . . . . . . . . . . . . 106

端末への制御の引き渡し . . . . . . . . . . . . . . . . . . . . . 107TERMIN または TERMING ステートメント後の制御の戻り . . . . . . . 108TERMIN または TERMING ステートメント後の入力 . . . . . . . . . 109

ISPF パネルの使用 . . . . . . . . . . . . . . . . . . . . . . . 110ISPF の制約事項 . . . . . . . . . . . . . . . . . . . . . . . 110ISPF パネルを用いる CLIST の例 . . . . . . . . . . . . . . . . 110

CLIST 言語には、端末ユーザーと通信するための方法がいくつかあります。それらの方法を以下に示します。v ユーザーに入力を促すプロンプトを出すv ユーザーにメッセージを書き出すv ユーザーから応答を受け取るv ユーザーに制御を渡すv ISPF パネルを使用する

ユーザーに入力を促すプロンプトCLIST は、次の方法で、入力を促すプロンプトを出します。

v CLIST の最初の行に定位置またはキーワード・パラメーターを含む PROC ステートメントを使用する

v WRITE および WRITENR ステートメントを使用する

v TSO/E コマンドを使用する

PROC ステートメントによるプロンプトCLIST の最初の PROC ステートメントに定位置パラメーターを組み込む場合、CLIST ユーザーは、そのパラメーターごとに値を指定する必要があります。実行時にユーザーが値を指定しない場合、CLIST は、ユーザーが値を指定するまでプロンプトを出し続けます。たとえば、下記の PROC ステートメントの場合、

PROC 2 NAME ADDRESS

ユーザーは、実行時に 2 つの定位置パラメーター (たとえば、次のパラメーター)

を渡す必要があります。

© Copyright IBM Corp. 1988, 2006 97

Page 118: TSO/E CLIST

EX clistname ’Jones Fishville’

ユーザーがパラメーターを渡さないと、CLIST は、NAME および ADDRESS を求めるプロンプトを出します。 ユーザーが必要な値を指定せずにキーワード・パラメーターを渡すと、CLIST の最初の PROC ステートメントもプロンプトを出してきます。たとえば、次の PROC ステートメントによって、ユーザーは、括弧内に値を指定してパラメーター ACCT を渡すことができます。

PROC 0 ACCT()

たとえば、次のように値が指定されていない ACCT を渡すと、

EX clistname ’ACCT’

CLIST は値を求めるプロンプトを出します。

CLIST の最初の PROC ステートメントとは異なり、サブプロシージャー上のPROC ステートメントは、パラメーターがない場合でもプロンプトを出しません。PROC ステートメントの詳細については、 24ページの『PROC ステートメントを使用する場合』を参照してください。

WRITE および WRITENR ステートメントによるプロンプト端末ユーザーにメッセージを送信し、入力を促すプロンプトを出すために、WRITE

ステートメントまたは WRITENR ステートメントのいずれか一方、あるいはこの両方を組み合わせて使用することができます。 WRITE または WRITENR の後に入力を受け取る場合は、READ ステートメントを使用します。 WRITE ステートメントおよび WRITENR ステートメントの詳しい使用方法については、 101ページの『WRITE および WRITENR ステートメントの使用』を参照してください。

TSO/E コマンドによるプロンプトTSO/E コマンドによっては (LISTDS など)、コマンドの名前以外にも情報を必要とするものがあり、それらは、その情報が提供されていない場合、それを求めるプロンプトを出します。ただし、CLIST に組み込まれている TSO/E コマンドは、そのCLIST でプロンプトの表示が許容されている場合にのみ、入力を求めるプロンプトを出すことができます。 CLIST 内でのプロンプトは、TSO/E コマンドの PROFILE

と EXEC によって、および CLIST ステートメントの CONTROL と制御変数&SYSPROMPT によって制御されます。

次の表は、PROFILE コマンドと EXEC コマンドおよび CONTROL ステートメントに、PROMPT/NOPROMPT をさまざまな形で明示的に指定した場合のプロンプトの効果を示したものです。 この場合、SET &SYSPROMPT = ON には CONTROL

PROMPT と同じ効果があり、SET &SYSPROMPT = OFF には CONTROL

NOPROMPT と同じ効果があることを覚えておいてください。

ユーザーに入力を促すプロンプト

98 z/OS V1R8.0 TSO/E CLIST

Page 119: TSO/E CLIST

注:

1. PROFILE PROMPT はデフォルトの指定で、特定の CLIST ではなく、TSO/E セッションに適用されます。 前の PROFILE NOPROMPT をオーバーライドする必要がない限り、PROFILE PROMPT を指定する必要はありません。

2. PROFILE コマンドは、CLIST の外でも、CLIST 内でも実行することができます。

3. EXEC NOPROMPT はデフォルトの指定で、それが呼び出した CLIST にのみ適用されます。

4. CONTROL ステートメントは、それを含んでいる CLIST にのみ適用されます。

5. CONTROL ステートメントが CLIST 内に含まれていない場合、&SYSPROMPT

が ON に設定されていない限り、CONTROL NOPROMPT が暗黙指定されます。

プロンプトに対する応答のコーディング - DATAPROMPT-ENDDATA シーケンスバックグラウンドで CLIST を実行する場合、ユーザーは CLIST からプロンプトへの応答をすることはできません。 この問題を回避するためには、DATA

PROMPT-ENDDATA シーケンスを使用します。 DATA PROMPT-ENDDATA シーケンスを使用すると、TSO/E コマンドまたはサブコマンドによって、プロンプトに対する応答を指定することができます。

ユーザーに入力を促すプロンプト

第 8 章 端末ユーザーとの通信 99

Page 120: TSO/E CLIST

DATA PROMPT-ENDDATA シーケンスを使用するには、次のようにコーディングします。

DATA PROMPT.../* Responses */

ENDDATA

シーケンスの直前に、プロンプトを出す TSO/E コマンドまたはサブコマンドがない場合、エラーとなります (エラー・コード 968 が制御変数 &LASTCC の中に表れます)。プロンプトを出そうとすれば出すことができる コマンドまたはサブコマンドが、プロンプトを出さない場合には、このエラー状態を無視しても構いません。

DATA PROMPT-ENDDATA シーケンス内の応答は、ユーザーがその応答を入力する場合とまったく同じでなければなりません。各 DATA PROMPT-ENDDATA シーケンスは、その直前のコマンドまたはサブコマンドによって出されるプロンプトに対してのみ応答することができます。ただし、複数のプロンプトに対する場合には、複数の応答を組み込むことができます。応答の数が多過ぎると、エラー・ルーチンがない場合、エラー・メッセージが出され、CLIST が終了する場合があります。

DATA PROMPT-ENDDATA シーケンスの後に、TSO/E コマンドがプロンプトを出すのをやめさせるには、ENDDATA の後にヌル行をコーディングします。ヌル行をコーディングするには、最初にヌル値の変数を次のように設定します。

SET &abc =

その上で、その変数を ENDDATA の後の行に入れます。

ENDDATA&abc

ある特定のオペランドをコーディングした場合、TSO/E コマンドの中には入力を求めるプロンプトを出すものがあります。 たとえば、LINK コマンドはリンケージ・エディターを呼び出します。データ・セット名の代わりにアスタリスク (*) を入れると、TSO/E は制御ステートメントを求めるプロンプトを出します。バックグラウンドで実行する可能性のある CLIST にこのような LINK コマンドを組み込む場合、DATA PROMPT-ENDDATA シーケンスの中にその制御ステートメントを入れてください。 次の CLIST は、バックグラウンドで実行された場合、メンバー X

(ファイル DD1 の中にある) をリンク・エディットします。

CONTROL PROMPT LISTIF &SYSENV=FORE THEN /* CLIST is running in the foreground */ +

link (*) /* Prompt user for control statements */ +load(’d32kds1.load’) pr(*) ncal xref list let

ELSE /* CLIST is being run in the background */ +DO

SET NULL = /* set null line to stop prompting after ENDDATAlink (*) +load(’d32kds1.load’) pr(*) ncal xref list letDATA PROMPT /* Designate responses to prompts */include dd1(x)entry xname xENDDATA&NULL /* null line stops prompting */

END

ユーザーに入力を促すプロンプト

100 z/OS V1R8.0 TSO/E CLIST

Page 121: TSO/E CLIST

DATA PROMPT-ENDDATA シーケンスを使用する場合には、他に次のような考慮事項があります。

v CLIST はプロンプトを出すことを許可しなければならない。

v CLIST は、そのプロンプトに対する応答を使用する前に、記号置換を実行する。(応答内に変数を組み込むことができます。)

端末へのメッセージの書き出しCLIST は、端末ユーザーに 2 種類のメッセージ、すなわち、その CLIST からユーザーが書き出したメッセージ、およびその CLIST 内のコマンドまたはステートメントからの通知メッセージを送ります。

WRITE および WRITENR ステートメントの使用端末にメッセージを送信し、入力を促すプロンプトを出す場合に有効な CLIST ステートメントには、次の 2 つがあります。

v WRITE は、端末にメッセージを表示するとともに、メッセージの表示後には、端末のディスプレイのカーソルを次の行の最初に戻します。

v WRITENR は、端末にメッセージを表示し、メッセージの表示後は、端末のディスプレイのカーソルを、そのメッセージの最後に置いたままにします。(WRITENR の ″NR″ は ″No Return (復帰しない)″ の意味です。)

いずれのステートメントを使用しても、メッセージを送信することができます。ただし、そのメッセージがユーザーに入力を促す場合には WRITENR の方が適している場合があります。

ユーザーに入力を促す場合には、WRITE または WRITENR ステートメントの後にREAD ステートメントを組み込みます。 READ ステートメントは、ユーザーの入力を、1 つまたは複数の変数の中に読み込みます。詳しくは、 102ページの『READ

ステートメントを使用する場合』を参照してください。

WRITE および WRITENR の後にはいずれの場合も、必ず 1 つ以上のブランクを置いてからメッセージのテキストを続けてください。たとえば、次のとおりです。

CONTROL ASIS...WRITE Your previous entry was invalid.WRITE Do you want to continue?WRITENR Enter yes or no.

これらのステートメントの結果として、端末ユーザーに対し次のメッセージが画面に表示されます。

Your previous entry was invalid.Do you want to continue?Enter yes or no. __

カーソルは最後の行のピリオドで停止し、CLIST がユーザーの応答を待っていることを示します。 CONTROL ASIS が指定されているため、CLIST はメッセージを、「書き込まれたとおりに」大文字と小文字の両方を使用して表示します。

ユーザーに入力を促すプロンプト

第 8 章 端末ユーザーとの通信 101

Page 122: TSO/E CLIST

また、WRITENR ステートメントを使用して、テキストを結合することもできます。たとえば、次のとおりです。

CONTROL CAPS...WRITENR Please enter your useridWRITE followed by two blanks.

これらのステートメントの結果として、端末ユーザーに対し、次のメッセージが表示されます。

PLEASE ENTER YOUR USERID FOLLOWED BY TWO BLANKS.

CONTROL CAPS 指定されているため、メッセージは、表示される前にすべて大文字に変換されます。

通知メッセージの表示の制御CONTROL ステートメントのオペランドまたは &SYSMSG 制御変数を使用すると、CLIST 内のコマンドまたはステートメントからの通知メッセージを表示または抑止するように要求することができます。

v 表示するように要求する場合は、次のようにコーディングします。

CONTROL MSG

または

SET &SYSMSG = ON

v 通知メッセージの表示を抑止する場合は、次のようにコーディングします。

CONTROL NOMSG

または

SET &SYSMSG = OFF

MSG/NOMSG オプションは、エラー・メッセージに対し無効です。エラー・メッセージは必ず表示されます。

端末からの応答の受信READ および READDVAL ステートメントにより、CLIST は、2 つの方法で端末からのユーザー入力にアクセスすることができます。 READ ステートメントは端末から直接入力を受け取り、通常、その後に WRITE または WRITENR ステートメントが続きます。READDVAL ステートメントの場合は、&SYSDVAL 制御変数から入力を受け取ります。

READ ステートメントを使用する場合READ ステートメントによって、CLIST で、端末入力を記号変数の形で使用できます。普通、READ ステートメントの前に 1 つまたは複数の WRITE またはWRITENR ステートメントを付け、それによって CLIST が入力を待っていることをユーザーに知らせるとともに、待っている入力の種類をユーザーに知らせます。

端末へのメッセージの書き出し

102 z/OS V1R8.0 TSO/E CLIST

Page 123: TSO/E CLIST

READ ステートメントには、1 つまたは複数の記号変数を組み込むことができます。 READ ステートメントに変数が組み込まれていない場合、CLIST は、ユーザーが入力する情報を、制御変数 &SYSDVAL の中に保管します。

WRITE ステートメントが、ユーザーに、4 つの名前を入力するように要求したとします。それに付随する READ ステートメントは、次のようにコーディングすることができます。

READ A,B,C,D

READ ステートメント上の変数には、アンパーサンドは必要でないことに注意してください。

直前の WRITE ステートメントに対してユーザーが次のように応答した場合、

SMITH,JONES,KELLY,INGALLS,GREENE

CLIST は、次のように、これらの名前を READ ステートメント上の記号変数に割り当てます。

&A has the value SMITH.&B has the value JONES.&C has the value KELLY.&D has the value INGALLS.

READ ステートメントに組み込まれている名前は 4 つのだけなので、CLIST は 5

番目の名前 (GREENE) は無視します。

また、READ ステートメントを変数なしでコーディングすることもできます。

READ

ユーザーが上記と同じ 5 つの名前で応答した場合、それらの名前はすべて制御変数&SYSDVAL に保管される必要があります。CLIST は、入力ストリングを保存するために、区切り文字を削除しません。 たとえば、ユーザーが直前の READ ステートメントに対し、「SMITH,JONES,KELLY,INGALLS,GREENE」と入力して応答すると、&SYSDVAL の値は次のようになります。

SMITH,JONES,KELLY,INGALLS,GREENE

READ ステートメント上の変数の 1 つにヌル値を割り当てるために、ユーザーが二重コンマまたは二重アポストロフィ (2 つの単一引用符) を入力する場合があります。たとえば、CLIST が、ユーザーに 4 つの番号を要求するメッセージを送信するとします。これらの番号を受け取る READ ステートメントは、次のようになります。

READ NUM1,NUM2,NUM3,NUM4

ユーザーの応答が、

15,24,,73

または

’15’ ’24’ ’’ ’73’

のいずれかであれば、READ ステートメント上の記号変数の値は次のようになります。

端末からの応答の受信

第 8 章 端末ユーザーとの通信 103

Page 124: TSO/E CLIST

&NUM1 has the value 15.&NUM2 has the value 24.&NUM3 has a null value.&NUM4 has the value 73.

単一引用符も有効な区切り文字であるため、完全修飾 データ・セット名を変数に読み込む場合には注意が必要です。 この理由は、ユーザーが、TSO/E 命名規則に従ってデータ・セット名を単一引用符の中に入れた場合、CLIST は通常それらをデータではなく区切り文字として読み取ってしまうためです。 WRITE ステートメントが完全修飾データ・セットの名前を要求した場合、CLIST は、READ ステートメントを &SYSDVAL 制御変数と一緒に使用して、単一引用符を残したままユーザーが入力したとおりのデータ・セット名を受け取ることができます。

次の CLIST は、READ ステートメントおよび &SYSDVAL を使用して、データ・セット名を囲んでいる単一引用符を残します。さらに、ユーザーが完全修飾データ・セット名を入力したかどうか調べるために引用符をチェックし、それが入力されていない場合は、その名前に引用符とユーザーのプレフィックスを付けます。

PROC 0WRITE Enter the name of a data set.READSET &DSN = &SYSDVAL /* Get name from &SYSDVAL; */IF &SUBSTR(1:1,&DSN) ¬= &STR(’) THEN +DO /* If not fully qualified, */SET &DSN = ’&SYSPREF;.&DSN’ /* add prefix and quotation marks. */ENDWRITE &DSN

また、READ ステートメントを使用すると、CLIST の呼び出し時に提供されなかった PROC ステートメント・キーワードの値を取得することもできます。たとえば、PROC ステートメントが、デフォルトがヌル値であるキーワードとして &ALPHA

を定義したとします。 &ALPHA には、月面上のゴルフ・ボールの数が入っていて、ユーザーが、CLIST の呼び出し時に &ALPHA に値を割り当てないとします。しかし、CLIST 内の変数 &SPACEVENTS により、&ALPHA にヌルでない値を入れる要求を出すコードが実行されることになります。 &ALPHA の値を取得するために、次のコードによって、ユーザーに &ALPHA の値を要求するメッセージが送信されます。その後で、パラメーターとして &ALPHA を指定した READ ステートメントが出されます。

PROC 0 ALPHA()...SET SPACEVENTS = &ALPHADO WHILE &SPACEVENTS = /* Null */WRITE Enter the number of golf balls thereWRITE are on the moon. A null value is unacceptable.READ ALPHASET SPACEVENTS = &ALPHAEND

ユーザーが READ 入力の行を正符号またはハイフンで終了すると、READ ステートメントはそれを継続記号と見なし、次の行の入力を待ちます。詳しくは、 14ページの『継続記号』を参照してください。

READ ステートメント入力に関する大文字および小文字の制御READ ステートメント入力の大文字および小文字を制御するには、CONTROL ステートメントに CAPS/ASIS/NOCAPS オペランドを使用するか、&SYSASIS 制御変

端末からの応答の受信

104 z/OS V1R8.0 TSO/E CLIST

Page 125: TSO/E CLIST

数、あるいは &SYSLC および &SYSCAPS 組み込み関数を使用します。&SYSASIS 制御変数および CAPS/ASIS/NOCAPS オペランドは、CLIST がすべてのREAD ステートメント入力を大文字に変換すべきかどうかを示します。(CLIST

は、この入力に含まれている数字、国別文字、特殊文字、あるいは DBCS 文字は修正しません。)

CLIST に、READ ステートメントからのすべての入力を変換させたい場合には、デフォルト (CAPS) を使用するか、以下をコーディングします。

CONTROL CAPS

または

SET &SYSASIS = OFF

READ ステートメントによるすべての入力を、それが入力されたときのフォーマットのままにしておくように CLIST に要求する場合は、次のようにコーディングします。

CONTROL ASIS

または

CONTROL NOCAPS

または

SET &SYSASIS = ON

CAPS/ASIS/NOCAPS オペランドは、READ ステートメントからの入力に影響があるのと同じく、WRITE ステートメントからの出力にも影響があります。

&SYSLC および &SYSCAPS によって、入力ストリングのサブストリングとともに個々のストリングの調製を行うこともできます。

たとえば、CLIST が ファーストネーム、ミドル・ネーム、およびラストネームの入力を求めるプロンプトを出した場合、その CLIST は、その名前を保管する前に、それが正しく大文字に変換されているか確認する必要があります。以下のコーディングは、その方法を示したものです。

CONTROL ASIS /* Do not translate READ input to uppercase */WRITENR Enter first name:READ FNAMEWRITENR Enter middle name:READ MNAMEWRITENR Enter last name:READ LNAME

/********************************************************************//* Set the lengths of the first, middle, and last names to *//* variables so that the substring notation is easier to read. *//********************************************************************/

SET LGTHFNAME = &LENGTH(&FNAME)SET LGTHMNAME = &LENGTH(&MNAME)SET LGTHLNAME = &LENGTH(&LNAME)

/********************************************************************//* Capitalize the first letters in first, middle, and last names */

端末からの応答の受信

第 8 章 端末ユーザーとの通信 105

Page 126: TSO/E CLIST

/* and make sure all other letters are in lowercase characters. *//********************************************************************/

SET F = &SUBSTR(1,&SYSCAPS(&FNAME))&SUBSTR(2:&LGTHFNAME,&SYSLC(&FNAME))SET M = &SUBSTR(1,&SYSCAPS(&MNAME))&SUBSTR(2:&LGTHMNAME,&SYSLC(&MNAME))SET L = &SUBSTR(1,&SYSCAPS(&LNAME))&SUBSTR(2:&LGTHLNAME,&SYSLC(&LNAME))SET NAME = &STR(&F &M &L)

入力が CADman haVVy fisH の場合、&NAME には 『Cadman Havvy Fish』 というストリングが入ります。

READDVAL ステートメントの使用READDVAL ステートメントは、&SYSDVAL 制御変数の内容にアクセスします。&SYSDVAL には、次の 3 種類の情報のいずれかが入っています。

v オペランドを指定しない READ ステートメントによって得られた情報

v 107ページの『端末への制御の引き渡し』の説明した、TERMIN ステートメントの後で CLIST に制御を戻す行区切り文字以外のデータ

v 割り当てステートメントによって、CLIST が &SYSDVAL に明示的に入れた情報

CLIST は、&SYSDVAL 内の各入力ストリングを、READDVAL ステートメント上の各変数に順に入れます。

このトピックに関する今後の説明においては、次のストリングが &SYSDVAL の中に入っていると想定してください。

SMITH JONES KELLY

次のステートメントは、そのストリングを記号変数に割り当てます。

READDVAL NAME1,NAME2,NAME3

READDVAL ステートメント上の変数には、アンパーサンドは必要でないことに注意してください。

上記の READDVAL ステートメントによって、次のような結果になります。

&NAME1; has the value SMITH.&NAME2; has the value JONES.&NAME3; has the value KELLY.

注: 変数 &NAME1、&NAME2、および &NAME3 は、CLIST の実行中に別の値に設定することができます。 ただし、&SYSDVAL の内容が修正されずにREADDVAL が再度実行された場合、これらの変数は SYSDVAL の現行値にリセットされます。

次のステートメントも、&SYSDVAL から 3 つのストリング全部を読み取ります。

READDVAL NAME1,NAME2,NAME3,NAME4

&NAME4 の値は、4 番目の値を指定するための入力ストリングが &SYSDVAL 内に不足しているために、ヌル値になります。

ただし、次のステートメントは、変数 NAME1 および NAME2 にだけ値を割り当てます。

READDVAL NAME1,NAME2

端末からの応答の受信

106 z/OS V1R8.0 TSO/E CLIST

Page 127: TSO/E CLIST

READDVAL 上には、CLIST が &SYSDVAL 内の入力ストリングを割り当てることができる変数が 2 つしかないので、CLIST はそれ以外のストリングを無視します。上記の例の場合、CLIST は KELLY を無視します。

端末への制御の引き渡し端末に制御を渡し、ユーザーが制御を CLIST に戻すための方法を確立するために、2 つの CLIST ステートメントが使用できます。

1. TERMIN は、端末に制御を渡すとともに、ユーザーが制御を CLIST に戻すための方法を確立します。 TERMIN から実行された CLIST は、TERMIN ステートメントを出した CLIST の中にネストされていない と見なされ、それらの 2 つの CLIST の間でグローバル変数を共用することはできません。

2. TERMING は、端末に制御を渡すとともに、ユーザーが制御を CLIST に戻すための方法を確立します。TERMING から実行された CLIST は、TERMING ステートメントを出した CLIST の中にネストされていると見なされ、それらの 2 つの CLIST の間でのグローバル変数の共用はできます。

TERMIN および TERMING が制御を渡す方法についての、その他の相違点を表 7

にリストしてあります。

表 7. TERMIN ステートメントと TERMING ステートメントの比較

特性 TERMIN TERMING

TERMIN(G) エレメント以外の場所での GLOBAL 変数の共用

不可 可

CLIST アクセス・ルーチン IKJCT441 を介するTERMIN(G) エレメント以外の場所での変数アクセス

不可 可

検査コマンド出力トラッピング - IKJCT441 およびIRXEXCOM は、TERMIN(G) エレメントの反対側にある CLIST と REXX EXEC を認識する

不可 可

CONTROL NOMSG ステートメント - TERMIN(G) エレメントの反対側にある NOMSG 設定値の検査が可能

不可 可

TERMIN および TERMING エレメントは CLIST 生成のタイプ・エレメントで、外部の STACK サービス・ルーチンによって入力スタックに追加できないため、これらのエレメントは同じタイプのものであると見なされます。 最上部のスタック・エレメントが TERMIN または TERMING エレメントである場合、戻りコード 60

(X'3C') が戻されます。 詳しくは、 204ページの『TERMIN および TERMING ステートメント』を参照してください。

注: ISPF または REXX EXEC のもとで、あるいは TSO/E バックグラウンド内で、TERMIN または TERMING ステートメントを含む CLIST を出すと、そのTERMIN または TERMING ステートメントが CLIST を終了します。 CLIST

が TSO/E バックグラウンド内で出されると、TSO/E はメッセージ IKJ56550I

も出して、TERMIN または TERMING ステートメントがバックグラウンド処理ではサポートされていないことを示します。

端末からの応答の受信

第 8 章 端末ユーザーとの通信 107

Page 128: TSO/E CLIST

TERMIN または TERMING ステートメントは、文字ストリングを定義するか (この場合、そのストリングの 1 つを、ユーザーが入力して、CLIST に制御を戻します)、ヌル行を定義します (この場合、ユーザーがそこで Enter キーを押して CLIST

に制御を戻します)。

TERMIN または TERMING ステートメントは、通常、単独では機能しません。TERMIN または TERMING ステートメントの前に WRITE ステートメントを使用すると、端末に制御が渡されている理由と、制御を CLIST に戻す方法がユーザーに通知されます。

READ ステートメントとは異なり、ユーザーは、TERMIN または TERMING によって、コマンドまたはサブコマンドを入力し、WRITE ステートメントのプロンプトに応答する前にプログラムを呼び出すことができます。

CLIST が TERMIN または TERMING ステートメントを出すとただちに、ユーザーが端末で制御を受け取ります。 TERMIN または TERMING ステートメントが出された後で、ユーザーがモード・メッセージを受け取る場合があります。 モード・メッセージが出される場合、そのモード・メッセージは READY、または CLIST を呼び出したときに使用されたコマンドの名前です。 (READY が表示されると、ユーザーは CLIST が終了したものと考えがちです。 ユーザーの混乱を避けるため、TERMIN または TERMING ステートメントの前に置かれている WRITE ステートメントの中で、ユーザーにそのことを通知する必要があります。)

TERMIN または TERMING ステートメント後の制御の戻りTERMIN または TERMING ステートメントの後で CLIST に制御を戻すには、TERMIN または TERMING ステートメントをコーディングし、CLIST に制御を戻すための文字ストリングを 1 つ以上定義します。 たとえば、次のとおりです。

TERMIN IGNORE,PROCESS,TERMINATE

この後、ユーザーは、IGNORE、PROCESS、または TERMINATE を入力して、CLIST に制御を戻します。&SYSDLM 制御変数は、使用されたストリングの位置を識別します。たとえば、ユーザーが TERMINATE を入力して制御を戻す場合、&SYSDLM には 3 が入ります。これは、TERMINATE が TERMIN またはTERMING ステートメントの 3 番目の変数であることによります。複数のストリングを使用することによって、ユーザーは CLIST に対し、実行してほしい処置を示すことができます。

ヌル行を有効ストリングの 1 つとして使用することはできますが、その場合は必ずTERMIN または TERMING ステートメントの最初のストリングとして使用する必要があります。そのためには、次のように、最初の文字ストリングの直前にコンマを入れます。

TERMIN ,PROCESS,TERMINATE

ユーザーは、上記のステートメントを用いて、ヌル行 (Enter キーを押す)、PROCESS、または TERMINATE のいずれかを入力することにより、制御を戻すことができます。

端末への制御の引き渡し

108 z/OS V1R8.0 TSO/E CLIST

Page 129: TSO/E CLIST

ヌル行を入力 (Enter キーを押す) することによってユーザーが制御を戻せるようにする、TERMIN または TERMING ステートメントを出すことができます。これを行うには、次のようにコーディングします。

TERMIN

ユーザーが CLIST に制御を戻すための手段としてヌル行を使用する場合には、TSO/E コマンド・プロセッサーの中には、ヌル行を機能区切り文字として使用するものがあるため (たとえば、EDIT のもとで入力モードと編集モードの切り替えを行う場合など)、注意を払う必要があります。

TERMIN または TERMING ステートメント後の入力ユーザーは、制御を戻すとき、制御を戻すためのストリングに入力を付加することを、オプションで行うことができます。 CLIST は、その入力を &SYSDVAL 制御変数の中に保管しますが、READDVAL ステートメントを実行することによって、その制御変数にアクセスすることができます。 CLIST 内で CONTROL ASIS がコーディングされていない限り、READDVAL ステートメントによってその入力が大文字に変換されます。

TERMIN または TERMING ステートメントの後、制御を戻すとき、WRITE ステートメントが、ユーザーに対し、削除すべきデータ・セットがあるかどうかを CLIST

に通知するように求めるプロンプトを出すとします。ユーザーは、以下のように入力することによって、その要求を確認します。

PROCESS JCL.CNTL(BUDGT) ACCOUNT.DATA

次の CLIST は、上記のステートメントの中のデータ・セットを削除します。

WRITE Check your catalog and enter the names ofWRITE up to two data sets you want deleted.WRITE They must be separated by a comma or blank andWRITE the first name must be preceded by the word PROCESSWRITE and a blank. If you do not want to delete any dataWRITE sets, type in the word IGNORE. If you want to endWRITE the CLIST, type in TERMINATE.TERMIN IGNORE,PROCESS,TERMINATE/* Read the two data set names (if any) in &SYSDVAL into/* variables called &DSN1 and &DSN2READDVAL DSN1 DSN2/* If the user wants to delete data sets (PROCESS),/* delete themIF &SYSDLM = 2 THEN +DOIF &DSN1¬= THEN +delete &DSN1IF &DSN2¬= THEN +delete &DSN2

END/* If the user wants the CLIST to ignore the deletion request/* but continue processing, execute the rest of CLIST. The/* null ELSE path covers the request to terminate immediately.IF &SYSDLM = 1 THEN +DO

(Rest of CLIST)END

端末への制御の引き渡し

第 8 章 端末ユーザーとの通信 109

Page 130: TSO/E CLIST

ISPF パネルの使用CLIST は、対話式システム生産性向上機能 (ISPF) のパネルを表示することによって、端末ユーザーと通信することができます。ISPF パネルを使用して、ユーザーは、選択を行い、データを入力することができます。これにより、CLIST で、その選択内容および入力が使用できるようになります。 また、ISPF パネルでは、ユーザーの入力に基づいて CLIST を呼び出すこともできます。 CLIST は、ISPF を用いて、ユーザーと実にさまざまなパネル使用に基づくダイアログを実行することができます。

CLIST は、ISPEXEC コマンドを使用して ISPF パネルを表示します。 ISPEXEC

コマンドおよびそのオペランドの使用の詳細については、「z/OS ISPF サービス・ガイド」を参照してください。

ISPF の制約事項ISPF パネルで使用する変数の名前は、8 文字より長くすることはできません。

ISPF パネルを用いる CLIST の例CLIST から ISPF パネルを表示する例が、 159ページの『ISPF ダイアログを使用したフルスクリーン・アプリケーションの作成 - PROFILE CLIST』にあります。PROFILE CLIST は、呼び出し時に渡された入力に基づいて、4 つのパネルのいずれかを表示します。そのうちの 2 つのパネルでは、ユーザーが入力する (Enter キーまたは END PF キーを押す) と、CLIST は別のパネルを表示するか、そのセッションを終了します。 PROFILE CLIST のパネルは、その ISPF パネル定義の形式で示されます。そこには、パネルを割り振るための指示も含まれています。

ISPF パネルの使用

110 z/OS V1R8.0 TSO/E CLIST

Page 131: TSO/E CLIST

第 9 章 ファイル入出力の実行

入出力でサポートされる文字 . . . . . . . . . . . . . . . . . . . 111ファイルのオープン . . . . . . . . . . . . . . . . . . . . . . . 111ファイルのクローズ . . . . . . . . . . . . . . . . . . . . . . . 112ファイルからのレコードの読み取り . . . . . . . . . . . . . . . . . 113ファイルへのレコードの書き込み . . . . . . . . . . . . . . . . . . 113ファイルの更新 . . . . . . . . . . . . . . . . . . . . . . . . 114ファイル終わり処理 . . . . . . . . . . . . . . . . . . . . . . . 115入出力の実行に関する特別な考慮事項 . . . . . . . . . . . . . . . . 115

CLIST は、物理順次データ・セット、区分データ・セット (PDS) のメンバー、またはファイルとして割り振られている端末に対し、入出力を実行することができます。ファイルのオープン、読み取り、書き込み、およびクローズを行うために、4

つの CLIST ステートメントが使用できます。

v OPENFILE は、入力、出力、または更新用にすでに割り振られているファイルをオープンします。そのファイルの割り振りは、TSO/E ALLOCATE コマンドまたはステップ割り振り (ログオン・プロシージャー内の JCL ステートメント) を使用して行われています。

v GETFILE は、同じ CLIST 内でオープンされたファイルからレコードを読み取ります。

v PUTFILE は、同じ CLIST 内でオープンされたファイルにレコードを書き込みます。

v CLOSFILE は、同じ CLIST 内でオープンされたファイルをクローズします。

CLIST が入出力を実行するときは必ず、ファイル終わり状態および発生する可能性のあるエラーを処理することができる、エラー・ルーチンを組み込んでください。115ページの『ファイル終わり処理』は、ファイル終わり状態を処理するエラー・ルーチンを含む CLIST を示しています。

CLIST をネストするときは必ず、対応する OPENFILE、GETFILE、PUTFILE、および CLOSFILE ステートメントが同じ CLIST 内に置かれている必要があります。

入出力でサポートされる文字CLIST I/O ステートメントは、16 進コード 40 から FF によって表されるすべてのデータ文字を処理することができます。これについての詳しい説明、および特殊文字を含んだデータ・セットから入出力を実行する場合の注意については、 16ページの『CLIST でサポートされる文字』を参照してください。

ファイルのオープンOPENFILE ステートメントの構文は、次のとおりです。

OPENFILE filename {INPUT } /* to read records from the file{OUTPUT} /* to write records to the file{UPDATE} /* to update records in the file

© Copyright IBM Corp. 1988, 2006 111

Page 132: TSO/E CLIST

入出力用にデータ・セットをオープンするには、必ずそのファイル名にデータ・セットを割り振ってから、そのファイル名を OPENFILE ステートメントで使用してください。データ保全性を確保するために、ファイルが入出力用にオープンされた後、CLIST は、ファイル名変数に対し、1 つのレベルの置換だけを実行します。すなわち、ファイル名がファイル・レコードで置き換えられた後、そのファイル・レコードをその元のフォーマットで保管できるように、CLIST がそのレコードの再スキャンを行わない、ということです。

データ・セットをファイル名に割り振るには、FILE キーワードを指定してALLOCATE コマンドを使用します。ファイル名は任意の値で、割り振り時に作成することができます。

たとえば、以下のようにコーディングすることができます。...

allocate file(paycheks) da(’d58tan1.checks.data’) shrOPENFILE PAYCHEKS...

また、次のように、ファイル名を記号変数としてコーディングすることもできます。

...SET FILEID= PAYCHEKS...allocate file(&FILEID) da(’d58tan1.checks.data’) shrOPENFILE &FILEID...

PDS のメンバーをファイル名に割り振れば、そのメンバーのオープンが可能になります。たとえば、次のようになります。

allocate file(income) da(’d58tan1.receipts(july)’) shrOPENFILE INCOME

ただし、PDS の 2 つ以上のメンバーを、出力用に同時にオープンする場合にはOPENFILE ステートメントを使用しないでください。

ファイルのクローズオープン・ファイルをクローズするには、対応する OPENFILE ステートメントに指定されたファイル名と同じ名前が入っている CLOSFILE ステートメントを使用します。たとえば、次のようにコーディングしてファイルをオープンした場合、

OPENFILE &FILEID

そのファイルのクローズは、次のようにコーディングして行います。

CLOSFILE &FILEID

オープンされているファイルは、CLIST が終了する前にクローズしておかないと、いったんログオフしてから再度ログオンするまで、再び処理できない場合があります。

CLOSFILE の例については、 113ページの『ファイルからのレコードの読み取り』および 113ページの『ファイルへのレコードの書き込み』の例を参照してください。

ファイルのオープン

112 z/OS V1R8.0 TSO/E CLIST

Page 133: TSO/E CLIST

ファイルからのレコードの読み取りオープン・ファイルからレコードを読み取るには、GETFILE ステートメントを使用します。 CLIST はファイル名と同じ名前の変数を作成し、その中にレコードを入れます。ファイルがオープンされている限り、後続の GETFILE ステートメントが、ファイルからのそれ以降のレコードを順に読み取っていきます。ファイル終わりに達すると、&LASTCC にはエラー・コード 400 が入ります。ファイル終わり状態の検出および処理の方法については、 115ページの『ファイル終わり処理』を参照してください。

D58TAN1.CHECKS.DATA というデータ・セットに、次のレコードが入っているとします。

200BLACKBUY449REFY450YARRUM

レコードを 3 つの変数に読み取るには、次のようにコーディングします。...(error routine)...

allocate file(paycheks) da(’d58tan1.checks.data’) shr reuOPENFILE PAYCHEKS /* Defaults to INPUT */SET COUNTER=1DO WHILE &COUNTER ¬> 3GETFILE PAYCHEKS /* Read a record */SET EMPLOYEE&COUNTER=&PAYCHEKS /* Store the record */SET COUNTER=&COUNTER+1 /* Increase counter by one */ENDCLOSFILE PAYCHEKS /* Close the file */

GETFILE を使用して端末からデータを読み取る場合、そのデータは大文字に変換されます。端末ユーザーは、CLIST がファイル終わりと認識できる記号によってそのデータを終了させる必要があります。

ファイルへのレコードの書き込みファイルにレコードを書き込むには、次のようにします。

1. 出力用にファイルをオープンします (OPENFILE filename OUTPUT)。

2. ファイル名と同じ名前の変数を、そのファイルに書き込むレコードに設定します。

3. PUTFILE ステートメントにファイル名を指定して、次のようにレコードをデータ・セットに書き込みます。

OPENFILE PRICES OUTPUT /* open the file for outputSET PRICES = $2590.00 /* set variable to input recordPUTFILE PRICES /* put variable record into the file

注: PUTFILE ステートメントのファイル名に変数を使用する場合、次のようにして、ネストされた変数を使用してレコードを入れます。

OPENFILE &FILEID OUTPUT /* open the file for outputSET &&FILEID = $2590.00 /* set variable to input recordPUTFILE &FILEID /* put variable record into the file

ファイルからのレコードの読み取り

第 9 章 ファイル入出力の実行 113

Page 134: TSO/E CLIST

ファイルがオープンされている限り、後続の PUTFILE ステートメントが、データ・セットにそれ以降のレコードを順に書き込んでいきます。後処理としてNEW、OLD、または SHR が指定されているデータ・セットでは、ファイルをクローズして、それを再オープンした場合、後続の PUTFILE ステートメントは、そのデータ・セット内の最初のレコードをオーバーレイします。後処理として MOD が指定されているデータ・セットでは、ファイルをクローズして、それを再オープンした場合、後続の PUTFILE ステートメントは、そのデータ・セットの終わりにレコードを追加します。

CLIST に次の変数が含まれているとします。

&EMPLOYEE1,; which contains the value ’BLACKBUY: $200.00’.&EMPLOYEE2,; which contains the value ’REFY: $449.00’.&EMPLOYEE3,; which contains the value ’YARRUM: $450.00’.

D58TAN1.CURNTSAL.DATA というデータ・セットの中に上記の値を入れるには、次のようにコーディングします。

allocate file(salaries) da(’d58tan1.curntsal.data’) shr reuOPENFILE SALARIES OUTPUT /* Open the file for output */SET COUNTER=1DO WHILE &COUNTER ¬> 3SET EMPLOYEE=&&EMPLOYEE&COUNTERSET SALARIES=&EMPLOYEE /* Set the record to be written */PUTFILE SALARIES /* Write the record */SET COUNTER=&COUNTER+1 /* Increase counter by one */ENDCLOSFILE SALARIES /* Close the file */

ファイルの更新オープン・ファイル内のレコードを更新するには、GETFILE および PUTFILE ステートメントを使用します。更新を行うためにファイルをオープンした後 (OPENFILE

ファイル名 UPDATE)、希望のレコードが読み取られるまで GETFILE ステートメントを連続して実行します。ファイル名と同じ名前の変数に新しい値を割り当てた後に、PUTFILE ステートメントを実行してレコードを更新します。

ファイルがオープンしている限り、レコードの更新が可能です。

D58TAN1.CHECKS.DATA というデータ・セットが可変長ブロック化レコード・フォーマットになっており、そこに次のレコードが含まれているとします。

200BLACKBUY449REFY450YARRUM

REFY のレコードを更新するには、次のようにコーディングします。...(error routine)...

allocate file(paycheks) da(’d58tan1.checks.data’) shr reuOPENFILE PAYCHEKS UPDATE /* Open file for updating */GETFILE PAYCHEKS /* Read first record */DO WHILE &SUBSTR(4:7,&PAYCHEKS)¬=REFYGETFILE PAYCHEKS /* Read another record */ENDSET PAYCHEKS = 000REFY /* Set new value */PUTFILE PAYCHEKS /* Write new value to data set */CLOSFILE PAYCHEKS /* Close the file */

ファイルへのレコードの書き込み

114 z/OS V1R8.0 TSO/E CLIST

Page 135: TSO/E CLIST

ファイル終わり処理CLIST が入出力を実行する場合は必ず、ファイル終わり状態を処理するコードを組み込んでください。 CLIST では、ファイル終わりによってエラー状態が生じます(エラー・コード 400)。この状態を処理するには、入出力を実行するコードの前にエラー・ルーチンを設けます。

エラー・ルーチンとは、CLIST 内でエラーが発生すると制御を得る一連のブロックです。エラー・ルーチンは、エラー (エラー・コード 400 など) を識別し、適切な処置を試みます。エラー・ルーチンの作成方法の詳細については、 117ページの『第 10 章 ATTN および ERROR ルーチンの作成』を参照してください。

次のエラー・ルーチンは、&LASTCC の値を保管し、オープン・ファイルをクローズして解放し、さらにファイル終わりに達したかどうかを判別するステートメントにブランチします。

SET RCODE=0 /* Initialize the return code variable to 0 */SET EOF=OFF /* Set the end-of-file indicator off */...ERROR +DOSET RCODE = &LASTCC /* Save the value of &LASTCC */IF &RCODE=400 THEN +DOCLOSFILE PAYCHEKS /* Close the open filefree f(paycheks) /* Free the open fileWRITE No record to update because end-of-file was reached.SET EOF=ONRETURN /* Branch to statement that tests forEND /* EOF (IF &EOF=ON THEN...)ELSE EXIT /* For other errors, EXITENDallocate file(paycheks) da(’d58tan.checks.data’) shr reu /* Allocate/* file *//* and establish file name of paycheks */OPENFILE PAYCHEKS UPDATE /* Open file for updating */SET COUNTER=1 /* Initialize counter to 1 */DO WHILE &COUNTER <= 4GETFILE PAYCHEKS /* Skip records */SET COUNTER= &COUNTER+1 /* Increase counter by 1 *//* If EOF reached, end loop. Null else */IF &EOF=ON THEN GOTO OUTENDSET PAYCHEKS = 480BUZZBEE /* Set variable to new value */PUTFILE PAYCHEKS /* Update fourth record */CLOSFILE PAYCHEKS /* Close the file */...

(rest of CLIST)...OUT: END

入出力の実行に関する特別な考慮事項v MOD オペランド

ファイル終わり処理

第 9 章 ファイル入出力の実行 115

Page 136: TSO/E CLIST

データ・セットを割り振る場合には、MOD オペランドを使用することができます。このオペランドによって、順次データ・セットの終わりにデータを追加することができます。 MOD オペランドの詳細については、「z/OS TSO/E コマンド解説書」、および「z/OS TSO/E REXX ユーザーズ・ガイド」を参照してください。

v JCL ステートメントを含むレコード

CLIST が JCL ステートメントを含むレコードの読み取りまたは書き込みを行う場合、その CLIST が、記号置換によってそのステートメントに不適切な変更を行う場合があります。不適切な変更が行われないようにするには、&NRSTR または &SYSNSUB 組み込み関数を使用します。この詳細および例については、 61

ページの『第 6 章 組み込み関数の使用』を参照してください。

v 連結データ・セット

1 つのファイル名に割り振られた (連結された) 複数データ・セットに対して、入出力操作を実行することができます。ただし、その連結の最初のデータ・セットは空であってはなりません。GETFILE ステートメントが出されて、連結内の最初のデータ・セットが空であると、そのファイルに割り振られた他のすべてのデータ・セットは無視され、レコードがまったく読み取られないことになります。

入出力の実行に関する特別な考慮事項

116 z/OS V1R8.0 TSO/E CLIST

Page 137: TSO/E CLIST

第 10 章 ATTN および ERROR ルーチンの作成

アテンション・ルーチンの作成 . . . . . . . . . . . . . . . . . . 117アテンション・ルーチンの取り消し . . . . . . . . . . . . . . . . 118アテンション割り込みからの入力スタックの保護 . . . . . . . . . . . 118アテンション・ルーチンを含む CLIST の例 . . . . . . . . . . . . . 119サブプロシージャーおよびアテンション・ルーチン . . . . . . . . . . 121CLIST アテンション機能 . . . . . . . . . . . . . . . . . . . . 121

エラー・ルーチンの作成 . . . . . . . . . . . . . . . . . . . . . 122エラー・ルーチンの取り消し . . . . . . . . . . . . . . . . . . 122エラーからの入力スタックの保護 . . . . . . . . . . . . . . . . . 123エラー・ルーチンを含む CLIST の例 . . . . . . . . . . . . . . . 123サブプロシージャーおよびエラー・ルーチン . . . . . . . . . . . . 123

アテンション割り込みおよびエラーという 2 種類のイベントが生じると、CLIST の実行は完了前に停止します。CLIST 言語では、アテンション割り込みおよびエラーを処理するルーチンをコーディングするためのステートメントを 2 つ用意しています。 2 つのステートメントとは、ATTN と ERROR です。ATTN ステートメントについては、『アテンション・ルーチンの作成』で説明します。また、ERROR ステートメントについては、 122ページの『エラー・ルーチンの作成』で説明します。

アテンション割り込みは、ユーザーが端末のキーボードのアテンション・キー (通常、PA1 または ATTN) を押したときに起こります。ユーザーがアテンション割り込みを入力する理由にはいくつかあります。たとえば、無限ループを終了するため、あるいは CLIST を終了する場合、などです。ユーザーは、CLIST によって呼び出されたコマンド・プロセッサーの異常終了の結果として CLIST エラー・ルーチンが実行中の場合、あるいは TSO/E コマンドが CLIST 内で実行される前には、アテンション割り込みを入力することはできません。コマンド異常終了の進行中に受け取ったアテンション割り込みは、無視されます。

エラーは、数値が 231-1 を超えた場合、ファイルの終わり状態、あるいは TSO/E

コマンドからの非ゼロ戻りコードなど、いろいろな理由で起こります。

アテンション・ルーチンの作成ユーザーがアテンション割り込みを入力しときにとるべき処置 (action) は、ATTN

ステートメントを使用して指定します。 この処置は、任意の実行可能ステートメントとすることができますが、多くの場合、その CLIST に合わせて調製されたオペレーションを実行する DO シーケンスです。 ATTN の処置 (action) は、次のような構造にすることができます。

ATTN +DO...(action)...END

© Copyright IBM Corp. 1988, 2006 117

Page 138: TSO/E CLIST

ATTN ステートメントおよびその処置 (action) は、それが適用されるコードよりも前に置かなければなりません。その処置では複数の CLIST ステートメントを実行することができますが、TSO/E コマンド、TSO/E サブコマンド、またはヌル行は、1

つしか実行できません。 (ヌル行は、アテンション割り込みが起こったときに実行していたステートメントまたはコマンドに制御を戻します。) 実行中の 1 つのTSO/E コマンドがアテンション処理 CLIST の呼び出しである場合、そのアテンション処理 CLIST では、希望するだけの数の TSO/E コマンドまたはサブコマンドを実行することができます。

アテンションの処置で TSO/E コマンド、サブコマンド、またはヌル行を実行しない場合、その処置には EXIT または RETURN ステートメントが組み込まれている必要があります。 EXIT ステートメントは CLIST を終了し、RETURN ステートメントは、ユーザーがアテンション割り込みを入力したときに実行していたステートメント、コマンド、またはサブコマンドの後の、CLIST ステートメント、コマンド、またはサブコマンドに制御を戻します。

アテンション・ルーチンの始めに、TSO/E がアテンション割り込みを処理しているということを、ユーザーに通知する必要があります。これを行わないと、ユーザーが別のアテンション割り込みを入力してしまう場合があります。TSO/E がどのように複数のアテンション割り込みを処理するかについては、「z/OS TSO/E

Programming Services」を参照してください。

アテンション・ルーチンの取り消しアテンション・ルーチンは任意の時点で取り消すことができ、CLIST は特別なアテンション処理をしなくても続行することができます。 アテンション・ルーチンを取り消すには、次のようにコーディングします。

ATTN OFF

これを入力することによって、最後に確立されたアテンション・ルーチンが無効になります。ATTN OFF は、アテンション・ルーチンの中では使用しないでください。

また、前のアテンション・ルーチンをオーバーライドするアテンション・ルーチンをコーディングすることもできます。この場合、各アテンション・ルーチンによって、それ以前のすべてのアテンション・ルーチンがオーバーライドされます。新しいアテンション・ルーチンの初期設定は、必要なだけ何回でも行うことができます。

アテンション割り込みからの入力スタックの保護CLIST が実行されると、その CLIST は、各ステートメントを実行可能なフォーマットに変換した後、それを入力スタックと呼ばれるストレージ内のセクションに入れます。TSO/E は、この入力スタックからその入力 (TSO/E コマンドおよび CLIST

ステートメント) を受け取ります。

CLIST を終了させないアテンション・ルーチンを作成する場合は、アテンション割り込みの発生時に、ストレージから入力スタックが消去 (フラッシュ) されないように保護してください。入力スタックの保護は、MAIN オペランドを指定してCONTROL ステートメントをコーディングすることによって行うことができます。

アテンション・ルーチンの作成

118 z/OS V1R8.0 TSO/E CLIST

Page 139: TSO/E CLIST

MAIN オペランドは、その CLIST が呼び出し元の TSO/E 環境内のメイン CLIST

であることを示し、アテンション割り込みの発生時に、TSO/E で入力スタックがフラッシュされないようにします。

アテンション・ルーチンの処理は、CONTROL MAIN がコーディングされているかどうか、およびそのルーチンが TSO/E コマンド、RETURN ステートメント、またはヌル行のいずれを実行しているかによって異なります。

v CONTROL MAIN がコーディングされていない場合、CLIST は終了し、ユーザーには、制御が端末に戻されたことを示す READY メッセージが表示されます。

v CONTROL MAIN がコーディングされていて、アテンション・ルーチン内でヌル行が実行される場合、CLIST は、ユーザーがアテンション割り込みを入力した時点で実行していたステートメントまたはコマンドから続行します。

v CONTROL MAIN がコーディングされていて、TSO/E コマンドまたは RETURN

ステートメントが出された場合、CLIST は、ユーザーがアテンション割り込みを入力した時点で実行していた、ステートメントまたはコマンドの次の ステートメントまたはコマンドから続行します。

この他、アテンション割り込みの処理についてのさらに詳しい説明が必要な場合は、「z/OS TSO/E ユーザーズ・ガイド」を参照してください。

アテンション・ルーチンを含む CLIST の例120ページの図 4 に示されている ALLOCATE CLIST には、ユーザーに、CLIST

を終了したいかどうかの指示を求めるプロンプトを出すアテンション・ルーチンが入っています。

ユーザーが YES と入力して CLIST を終了し、データ・セットが割り振られていれば、アテンション・ルーチンは HOUSKPNG という CLIST を呼び出します ( 121

ページの図 5 を参照)。この CLIST は、割り振られたデータ・セットを解放します。 この後に、アテンション・ルーチンは ALLOCATE CLIST を終了します。

ユーザーが YES と入力しないで ALLOCATE CLIST を終了すると、アテンション・ルーチンは CONTROL MAIN およびヌル行を出して、アテンション割り込みが起こった場所に制御を戻します。

120ページの図 4 の中のアテンション・ルーチンは、TSO/E コマンドを 1 つだけ(%houskpng またはヌル行) を出していることに注意してください。ただし、HOUSKPNG CLIST 自身は、それがいくつのデータ・セットを解放する必要があるかに応じて、最高 3 つまでのコマンドを出します。

アテンション・ルーチンの作成

第 10 章 ATTN および ERROR ルーチンの作成 119

Page 140: TSO/E CLIST

/*****************************************************************//* THE ALLOCATE CLIST ALLOCATES THREE DATA SETS REQUIRED FOR *//* A PROGRAM. IT IS EQUIPPED TO HANDLE ATTENTION INTERRUPTS *//* ENTERED AT ANY POINT. WHEN NECESSARY, IT INVOKES HOUSKPNG. *//*****************************************************************/

PROC 2 &DS1 &DS2CONTROL END(STOP) /* substitute "STOP" for END statement */CONTROL PROMPTATTN +

DOWRITE TSO is processing your attentionWRITENR Do you want to end? If so, type YES ====>READ &ENDIF &END = YES THEN +

/* If user wants to end, terminate the CLIST after the HOUSKPNG routine */ +/* frees any data sets allocated by the CLIST. */

DOCONTROL FLUSH /* flush the input stack after HOUSKPNG */

STOPELSE +

CONTROL MAIN /* return control to the CLIST */IF &FOOTPRINT = YES AND &END = YES THEN +

%houskpng &ds1 &ds2 &cleanup /* call HOUSKPNG to free data sets */ELSE +

DOSET &NULL =&NULL /* issue null line to continue at the */

/* point where the attention occurred. */STOP

STOPalloc f(input) da(&ds1.text) shr reuSET FOOTPRINT = YESSET CLEANUP=1alloc f(output) da(&ds2.text) reuSET CLEANUP=2alloc f(temp) da(temp.text)SET CLEANUP=3call ’myid.myprog.load(member)’free f(temp) da(temp.text)SET CLEANUP=2free f(output) da(&ds2.text)SET CLEANUP=1free f(input) da(&ds1.text)SET FOOTPRINT = /* Set FOOTPRINT back to null */

図 4. アテンション・ルーチンを含む CLIST - ALLOCATE CLIST

アテンション・ルーチンの作成

120 z/OS V1R8.0 TSO/E CLIST

Page 141: TSO/E CLIST

サブプロシージャーおよびアテンション・ルーチンアテンション・ルーチンは CLIST サブプロシージャーを呼び出すことができます。呼び出されたサブプロシージャー内の TSO/E コマンドは、アテンション・ルーチンの中にある TSO/E コマンドと同じ効力を持ちます。最初の TSO/E コマンドが実行されると、アテンション処理は終了し、制御は、アテンション割り込みが発生した時点で実行中の、CLIST 内の行の次の行に渡ります。

サブプロシージャーには、アテンション・ルーチンを含めることができます。しかし、サブプロシージャー内のアテンション・ルーチンには、ネストされたアテンションまたはエラー・ルーチンを含めることはできません。

CLIST アテンション機能CLIST アテンション機能 (TSO/E の中の) および STAX マクロの CLSTATTN パラメーターによって、アテンション割り込みの処理が非常に柔軟に行えるようになります。 STAX マクロの CLSTATTN パラメーターによって、プログラムが、アテンション・ルーチンを含む CLIST の処理中にアテンション割り込みが発生したときに制御を受け取る、アテンション・ルーチンを確立することができます。プログラムのアテンション・ルーチンは、CLIST アテンション機能を呼び出して CLIST アテンション・ルーチンを処理することができます。

以前は、端末モニター・プログラム (TMP) が、アテンション・ルーチンによって、CLIST のアテンション割り込みを処理していました。現在では、プログラムが、独

/*****************************************************************//* THE HOUSKPNG CLIST IS INVOKED WHEN THE USER WANTS TO END THE *//* ALLOCATE CLIST AFTER AN ATTENTION AND DATA SETS ARE ALREADY *//* ALLOCATED. BASED ON THE VALUE OF THE VARIABLE CLEANUP, *//* THE CLIST FREES FROM ONE TO THREE OF THE DATA SETS ALLOCATED *//* IN THE ALLOCATE CLIST. *//*****************************************************************/

PROC 3 &DS1 &DS2 &CLEANUPCONTROL END(ENDO)ATTN +EXIT QUITIF &CLEANUP=1 THEN +free f(input) da(&ds1.text)IF &CLEANUP=2 THEN +DOfree f(input) da(&ds1.text)free f(output) da(&ds2.text)ENDOIF &CLEANUP=3 THEN +DOfree f(input) da(&ds1.text)free f(output) da(&ds2.text)free f(temp) da(temp.text)ENDO

図 5. アテンション処理 - HOUSKPNG CLIST

アテンション・ルーチンの作成

第 10 章 ATTN および ERROR ルーチンの作成 121

Page 142: TSO/E CLIST

自のアテンション・ルーチンにその処理を実行させることによって、制御を維持できるようになりました。 CLIST アテンション機能および STAX マクロの使用の詳細については、「z/OS TSO/E Programming Services」を参照してください。

エラー・ルーチンの作成エラー・ルーチンを作成するには、ERROR ステートメントを使用します。エラー・ルーチンは、CLIST が、CLIST サブプロシージャー以外のものから非ゼロ戻りコードを受け取ったときに取る処置を定義します。 ( 130ページの表 8 に、CLIST

エラー・コードをリストしています。) この処置は、任意の実行可能ステートメントとすることができますが、多くの場合、示されたエラーに合わせて調製されたオペレーションを実行する DO グループです。 ERROR の処置 (action) は、次のような構造にすることができます。

ERROR +DO...(action)...END

ERROR ステートメントおよびその処置 (action) は、それが適用されるコードの前に置かなければなりません。処置には、CLIST がエラー発生時に実行しているモードに応じて、TSO/E コマンドおよびサブコマンドを含めることができます。アテンション・ルーチンとは異なり、エラー・ルーチンの処置は、複数の TSO/E コマンドまたはサブコマンドを出すことができます。

エラー・ルーチンの処置で CLIST を終了させない場合、その CLIST に RETURN

ステートメントを組み込む必要があります。 RETURN ステートメントは、エラー発生時に実行されていた CLIST ステートメント、TSO/E コマンド、または TSO/E

サブコマンドの次の、CLIST ステートメント、TSO/E コマンド、またはサブコマンドに制御を戻します。同じエラー・ルーチンを活動化するエラーが繰り返して起こると、CLIST を終了させてしまうことがあります。

そのために、それ以前のエラー・ルーチンをオーバーライドするエラー・ルーチンをコーディングすることもできます。その場合、各エラー・ルーチンは、それ以前のすべてのエラー・ルーチンをオーバーライドします。新しいエラー・ルーチンの初期設定は、必要なだけ何回でも行うことができます。

エラー・ルーチンの取り消しCLIST 内で最後に確立されたエラー・ルーチンを取り消すには、取り消しすべきエラー・ルーチンの後に、

ERROR OFF

または

ERROR

のいずれかをコーディングします。

アテンション・ルーチンの作成

122 z/OS V1R8.0 TSO/E CLIST

Page 143: TSO/E CLIST

ERROR OFF とコーディングすると、処理は、エラー・ルーチンが確立されていなかった場合と同様に継続されます。 障害が発生すると、障害の種類に応じて、次のいずれかが起こります。

v 障害が、ABEND を原因とする場合、あるいは TSO/E コマンドまたはサブコマンドからの非ゼロ戻りコードを原因とする場合、CLIST は、障害の起こった命令の次の順序の命令から実行を継続します。

v 障害が CLIST ステートメント内または式の評価の中にある場合、障害のある命令と、説明を行う CLIST エラー・メッセージが表示され、CLIST は終了します。

ERROR がオペランドを指定せずに入力されると、CLIST は、エラーで終了したCLIST 上のコマンド、サブコマンド、またはステートメントを表示します。説明を含む CLIST エラー・メッセージは表示されません。&LASTCC は 0 にリセットされ、CLIST は次の順次ステートメントまたはコマンドから続行されます。

エラーからの入力スタックの保護CLIST が実行されると、その CLIST は、各ステートメントを実行可能なフォーマットに変換した後、それを入力スタックと呼ばれるストレージ内のセクションに入れます。TSO/E は、この入力スタックからその入力 (TSO/E コマンドおよび CLIST

ステートメント) を受け取ります。

エラー・ルーチンを含む CLIST を作成する場合、入力スタックが、エラー発生時にストレージから消去 (フラッシュ) されないように保護してください。 入力スタックを保護するには、NOFLUSH または MAIN オペランドを組み込んだ CONTROL

ステートメントをコーディングします。 CONTROL ステートメントは、必ずエラー・ルーチンの前、できれば CLIST の最初に置いてください。

エラー・ルーチンを含む CLIST の例125ページの図 6 に示されている COPYDATA CLIST には、以下を処理するエラー・ルーチンが含まれています。v 割り振り前エラーv ファイル終わり状態v 割り振りエラー

この CLIST は、既存のデータ・セットを出力データ・セットにコピーするために必要なデータ・セットを割り振ります。 コピーが正しく行われると、この CLIST

は、オペランドを指定せずに ERROR ステートメントを実行することによってエラー・ルーチンを取り消し、続行します。

サブプロシージャーおよびエラー・ルーチンエラー・ルーチンは、CLIST サブプロシージャーを呼び出すことができ、サブプロシージャーは、RETURN ステートメントを出して、エラー・ルーチンに制御を戻すことができます。 エラー・ルーチン自身は、RETURN を出して、エラーのステートメントの後のステートメントに制御を戻さなければなりません。たとえば、次のエラー・ルーチンはサブプロシージャーを呼び出します。

ERROR +DOSET &ECODE = 8

エラー・ルーチンの作成

第 10 章 ATTN および ERROR ルーチンの作成 123

Page 144: TSO/E CLIST

SELECTWHEN (&FOOTPRINT=2) SYSCALL ABC ECODE...END /* End of SELECTRETURN /* return control to CLISTEND /* End of error routine...ABC: PROC 1 CODEPARM /* subroutine ABCSYSREF &CODEPARM /* refer variable back to caller’s &ECODEfree f(indata) /* free data setsfree f(outdata)SET &CODEPARM = 12 /* set error codeRETURN /* return control to error routineEND /* end of subroutine ABC

サブプロシージャーには、エラー・ルーチンを含めることができます。しかし、サブプロシージャー内のエラー・ルーチンには、ネストされたアテンションまたはエラー・ルーチンを入れることはできません。

エラー・ルーチンの作成

124 z/OS V1R8.0 TSO/E CLIST

Page 145: TSO/E CLIST

/*****************************************************************//* THE COPYDATA CLIST COPIES RECORDS FROM A DATA SET INTO AN *//* OUTPUT DATA SET. IT IS EQUIPPED TO HANDLE ERRORS CAUSED BY *//* END-OF-FILE, ALLOCATION ERRORS, AND ERRORS CAUSED BY OTHER *//* STATEMENTS AND COMMANDS IN THE CLIST. *//*****************************************************************/

CONTROL NOFLUSH END(ENDO) /* Protect the stack from being flushed/* so that when error is caused by end-of-file, CLIST can continueERROR +DOSET RCODE=&LASTCC /* Save return code/* If end-of-file, branch to CLOSFILE statementsSELECTWHEN (&RCODE=400) +DO /* IF End-of-file is reached, */SET EOFFLAG = YES /* Set flag and return to the */RETURN /* I/O procedure. */ENDO/* If error occurred before allocation, set exit code to 4WHEN (&FOOTPRINT=0) SET ECODE=4/* If allocation of file OUTDS failed, free file INDATA and set/* exit code to 8WHEN (&FOOTPRINT=1) +DOfree f(indata) da(text.data)SET ECODE=8ENDO/* If the error was not caused by end-of-file or allocation error,/* free both files and set exit code to 12. In this case, error was/* caused by one of the file I/O statementsWHEN (&FOOTPRINT=2) +DOfree f(indata) da(text.data)free f(outds)SET ECODE=12ENDOENDO /* End of SELECT statementEXIT CODE(&ECODE) /* For all errors except end-of-file condition,/* exit the CLIST with the appropriate exit codeENDO /* End of error routineSET FOOTPRINT=0 /* Identify pre-allocation errors...SET FOOTPRINT=1 /* Identify allocation error for file INDATAalloc f(indata) da(d15rbo1.text.data) shr reu /* Allocate input data setSET FOOTPRINT=2 /* Identify allocation error for file OUTDSalloc f(outds) sysout(a) /* Allocate output data setOPENFILE INDATA /* Open input data setOPENFILE OUTDS OUTPUT /* Open output data set/* Copy records from input data set to output data set */

図 6. COPYDATA CLIST (1/2)

エラー・ルーチンの作成

第 10 章 ATTN および ERROR ルーチンの作成 125

Page 146: TSO/E CLIST

DO WHILE &EOFFLAG ¬= YES /* Do the following until EOF is reached*/GETFILE INDATA /* Read input recordIF &EOFFLAG ¬= YES THEN +DOSET OUTDS=&INDATA /* Set output record to value of input recordPUTFILE OUTDS /* Write output record to output data setENDO

ENDOEOF: CLOSFILE INDATA /* Close input data setCLOSFILE OUTDS /* Close output data setERROR /* From this point on, display statement that causes error/* along with any error messages...

図 6. COPYDATA CLIST (2/2)

エラー・ルーチンの作成

126 z/OS V1R8.0 TSO/E CLIST

Page 147: TSO/E CLIST

第 11 章 CLIST のテストおよびデバッグ

CONTROL ステートメントの診断オプションの使用 . . . . . . . . . . . 127診断出力内のメッセージ . . . . . . . . . . . . . . . . . . . . 128CLIST 内で診断出力をオプションにする方法 . . . . . . . . . . . . 129

CLIST メッセージに関するヘルプの入手 . . . . . . . . . . . . . . . 129CLIST エラー・コードの取得 . . . . . . . . . . . . . . . . . . . 130

本章では、診断プロシージャーを使用して CLIST をテストすることにより、エラーを検出し、訂正する方法を説明します。 診断プロシージャーの内容は、以下のとおりです。

v CONTROL ステートメントの診断オプションを使用して、CLIST ステートメントおよび TSO/E コマンド内のエラーを検出する。

v CLIST メッセージに関するヘルプを入手する。

v CLIST エラー・コードを検出し、理解する。

CONTROL ステートメントの診断オプションの使用CONTROL ステートメントによって、CLIST 用の処理オプションを定義することができます。 CONTROL ステートメントのオプションの中には、CLIST エラーの診断に役立つものがあります。これらの診断オプション (LIST、CONLIST、SYMLIST、および MSG) を使用することによって、CLIST は、その実行時に、端末にそのステートメント、コマンド、および通知メッセージを表示することができます。多くの場合、そこに表示された情報から、エラーを含むステートメントやコマンドを検出することができます。

診断オプションは、CONTROL ステートメント上で、別々にあるいは一緒に使用することができます。最も詳しい診断情報を入手するには、オプションを一緒に (順序は問いません) コーディングします。

CONTROL LIST CONLIST SYMLIST MSG

CONTROL ステートメントは、CLIST の先頭、あるいはテストまたはデバッグを行いたい CLIST 内の任意の場所に入れることができます。各 CONTROL ステートメントは、それ以前のすべての CONTROL ステートメントをオーバーライドします。診断オプションをオフにするには、次のように入力します。

CONTROL NOLIST NOCONLIST NOSYMLIST NOMSG

オプションを変更したい場合に CONTROL ステートメントを再入力しなくてすむ方法として、制御変数の &SYSLIST、&SYSCONLIST、&SYSSYMLIST、および&SYSMSG を使用して、現行の設定値をテストまたは変更することができます。これらの制御変数の使用の詳細については、 50ページの『CLIST CONTROL ステートメントのオプションの設定』を参照してください。

診断オプションには、次の働きがあります。

SYMLISTCLIST は、記号置換のためのスキャンを行う前に、端末に各 TSO/E コマンド、サブコマンド、または CLIST ステートメントを表示します。

© Copyright IBM Corp. 1988, 2006 127

Page 148: TSO/E CLIST

LISTCLIST は、記号置換の後、ただし実行前に、端末に各 TSO/E コマンドまたはサブコマンドを表示します。

CONLISTCLIST は、記号置換の後、ただし実行前に、端末に各 CLIST ステートメントを表示します。

MSGCLIST は、端末に通知メッセージを表示します。

注: SYMLIST および CONLIST は、GLOBAL または NGLOBAL ステートメントを表示しません。

図 7 の CLIST には、CONTROL ステートメントに診断オプションを含んでいます。この CLIST を実行すると、コマンドおよびステートメントは、図 8 に示されているように端末に表示されます。

各ステートメントおよびコマンドはそれぞれ端末に 2 回ずつ表示されることに注意してください。最初に表示されるのは、CONTROL SYMLIST によるもので、CLIST

内に表示されるとおりにそのステートメントまたはコマンドを示します。 2 番目に表示されるものは、前の行の記号置換の結果を示します。 行が置換をしない (変数を含んでいない) 場合は、両方とも同じ内容になります。

診断出力内のメッセージCLIST は、各ステートメントまたはコマンドで記号置換を行った後で、そのステートメントまたはコマンドを実行します。したがって、LIST と CONLIST を指定して MSG オプションを使用すると、実行エラーに関するメッセージが、エラーの原因となった行の後に端末に表示されます。

CONTROL LIST CONLIST SYMLIST MSGSET INPUT = data.set.nameSET DSN = &INPUT;allocate file(a) dataset(’myid.&dsn’)free file(a)

図 7. 診断 CONTROL オプションを含む CLIST の例

SET INPUT = data.set.nameSET INPUT = data.set.nameSET DSN = &INPUT;SET DSN = data.set.nameallocate file(a) dataset(’myid.&dsn’)allocate file(a) dataset(’myid.data.set.name’)free file(a)free file(a)

図 8. CLIST からの診断出力の例

CONTROL ステートメントの診断オプション

128 z/OS V1R8.0 TSO/E CLIST

Page 149: TSO/E CLIST

たとえば、 128ページの図 7 の CLIST は、入力データ・セットがカタログされていないと失敗します。 入力データ・セットがカタログされていない場合、CLIST

は、実行に失敗したステートメントの後に、メッセージとともに次の情報を端末に表示します。

診断出力は、CLIST がエラーを検出すると、ALLOCATE コマンドの後に終了します。最後の行からさかのぼって調べると、エラーの原因を発見し、訂正することができます (この場合は &INPUT の値)。

図 9 の最後の行は、その前のメッセージ行からの継続であることに注意してください。 CLIST が ISPF のもとで実行されると、その継続は、図 9 に示されているように表示されます。 行モードの TSO/E のもとでは、継続を表示するには、正符号の後に疑問符 (?) を入力する必要があります。

CLIST 内で診断出力をオプションにする方法その CLIST を呼び出した人は誰でも、診断出力をオプションとして使用できるようにすることができます。 これを行うには、次のように、PROC ステートメントにDEBUG などのキーワード・パラメーターをコーディングします。

PROC 0 DEBUGIF &DEBUG=DEBUG THEN +CONTROL LIST CONLIST SYMLIST MSG

CONTROL オプションは、DEBUG パラメーターを指定して CLIST を呼び出すと有効になります。たとえば、明示的呼び出しでは次のようになります。

EX clistname ’DEBUG’

あるいは、暗黙的呼び出しの場合は、次のようになります。

%clistname DEBUG

CLIST メッセージに関するヘルプの入手CLIST メッセージ番号は、IKJ という文字で始まります。CLIST メッセージの説明が必要な場合は、「z/OS TSO/E メッセージ」の IKJ セクションにあるメッセージ番号を調べてください。メッセージの説明には、問題を訂正するために処置を実行する必要がある場合には、その処置に関する情報も含まれています。

SET INPUT = data.set.nameSET INPUT = data.set.nameSET DSN = &INPUT;SET DSN = data.set.nameallocate file(a) dataset(’myid.&dsn’)allocate file(a) dataset(’myid.data.set.name’)IKJ56228I DATA SET MYID.DATA.SET.NAME NOT FOUND IN CATALOGOR CATALOG CANNOT BE ACCESSEDIKJ56701I MISSING DATA SET NAME+IKJ56701I MISSING NAME OF DATA SET TO BE ALLOCATED

図 9. CLIST からの診断出力内のエラー・メッセージの例

CONTROL ステートメントの診断オプション

第 11 章 CLIST のテストおよびデバッグ 129

Page 150: TSO/E CLIST

CLIST エラー・コードの取得CLIST 制御変数 &LASTCC には、最後に実行された TSO/E コマンドまたはCLIST ステートメントからのエラー・コードが含まれます。 CLIST 内の各コマンドまたはステートメントの後に、たとえば、次のようにコーディングすることによって、&LASTCC からエラー・コードを検索することができます。

SET ECODE = &LASTCC

その上で、そのエラー・コードを端末に書き出すか、それを基にしてそれ以降の処理を実行することができます。&LASTCC の使用の詳細については、 56ページの『戻りコードおよび理由コードの入手』を参照してください。

注: RETURN ステートメントの場合を除き、エラー・ルーチン内では、CLIST ステートメントおよび TSO/E コマンドは &LASTCC の値を更新しません。エラー・ルーチン内で &LASTCC を使用する場合、&LASTCC には、エラー発生時に実行していたコマンドまたはステートメントからの戻りコードが入ります。

表 8 は、CLIST ステートメントが &LASTCC 内で戻すエラー・コードをリストし、それについて説明したものです。特に注意書きがない限り、これらのコードは10 進形式です。

表 8. CLIST ステートメント・エラー・コード (10 進数)

エラー・コード 意味

16 仮想記憶域が不足しています。より多くのストレージを使ってログオンするか、TSO/E PROFILE に VARSTORAGE(HIGH) を 指定してください。

300 システムだけが更新できる制御変数を、ユーザーが更新しようとしました。

304 EXIT ステートメント上で、無効なキーワードが検出されました。

308 CODE キーワードが指定されましたが、EXIT ステートメントにコードが指定されていません。

312 内部 GLOBAL 処理エラー

316 TERMIN 区切り文字が 256 文字より長くなっています。

324 GETLINE エラー

328 TERMIN に 64 を超える区切り文字があります。

332 ファイル名構文が無効です。

336 ファイルがすでにオープンされています。

340 OPEN タイプ構文が無効です。

344 OPEN タイプが未定義です。

348 指定されたファイルがオープンされていません。(たとえば、ファイル名が割り振られていません。) そのファイルを再割り振りしてください。

352 GETFILE - ファイル名が現在オープンされていません。

356 GETFILE - ファイルがシステムによってクローズされています。(たとえば、そのファイルが EDIT モードのもとでオープンされましたが、EDIT モードが終了しています。)

360 PUTFILE - ファイル名が現在オープンされていません。

CLIST エラー・コードの取得

130 z/OS V1R8.0 TSO/E CLIST

|

Page 151: TSO/E CLIST

表 8. CLIST ステートメント・エラー・コード (10 進数) (続き)

エラー・コード 意味

364 PUTFILE - ファイルがシステムによってクローズされています (コード 356 を参照)。

368 PUTFILE - CLOSFILE - ファイルが OPENFILE によってオープンされていません。

372 PUTFILE - 更新用にオープンされたファイルで GETFILE より前に出されました。

376 可変長レコード形式を使用して、PDS のディレクトリーをオープンすることができません。

380 論理レコード長が 32767 を超えるデータ・セットは、CLIST I/O にはサポートされていません。

400 GETFILE - ファイル終わり。TSO/E は、この状態を、ERROR 処置によって処理可能なエラーとして扱います。

404 ユーザーが、INPUT 用にオープンされているファイルに書き込みを行おうとしました。

408 ユーザーが、OUTPUT 用にオープンされているファイルから読み取りを行おうとしました。

412 ユーザーが、ファイル終わりに達した後に、ファイルを更新しようとしました。

416 ユーザーが空のファイルを更新しようとしました。

500 DO ステートメント上の TO 値が非数値です。

502 DO ステートメント上の FROM 値が非数値です。

504 DO ステートメント上の BY 値が非数値です。

508 SYSCALL ステートメントに未定義のプロシージャー名が入っています。

512 RETURN ステートメントに未定義のキーワードが入っています。

516 プロシージャーの名前が変数として使用されています。

524 ESTAE ルーチンを確立することができません。

528 PROC ステートメントでの定位置指定が無効です。

532 PROC ステートメント上の記号パラメーター内に無効な文字が検出されました。

536 PROC ステートメント上の記号パラメーター名が長過ぎます。

540 PROC ステートメントに定義された定位置パラメーターの数が、渡された数より少なくなっています。

544 記号パラメーターが PROC ステートメントで定義されていません。

548 PROC ステートメント上でパラメーター名の重複が検出されました。

552 キーワード・パラメーターに無効なデフォルトがあります。

556 PROC ステートメントで、デフォルトのキーワード値に右側の引用符がありません。

560 PROC ステートメントの処理中に PARSE エラーが発生しました。

568 異常終了

572 SYSREF 変数がパラメーターとして渡されませんでした。

576 SYSREF 変数が PROC ステートメントで定義されていません。

CLIST エラー・コードの取得

第 11 章 CLIST のテストおよびデバッグ 131

Page 152: TSO/E CLIST

表 8. CLIST ステートメント・エラー・コード (10 進数) (続き)

エラー・コード 意味

580 サブプロシージャーの ERROR または ERROR ルーチン内で、ATTN ステートメントが検出されました。

584 サブプロシージャーの ERROR または ATTN ルーチン内で、ATTN

ステートメントが検出されました。

588 DBCS 区切り文字の間の文字が、2 バイト文字の範囲外です。

592 DBCS ストリングに奇数のバイト数が入っていて、文字の 1 つが不完全であることを示しています。

596 対応する終了区切り文字のない、開始 DBCS 区切り文字が検出されました。

600 2 つの DBCS 区切り文字の間に終了区切り文字がないものが検出されました。

604 IKJCT44B 内のインストール先作成 CLIST 組み込み関数の処理中にエラーが発生しました。

608 IKJCT44S 内で、インストール先作成 CLIST ステートメントの処理中にエラーが発生しました。

612 インストール・システム出口内でエラーが発生しました。

620 EBCDIC &SYSTWOBYTE データが、有効な DBCS 範囲から外れています。

624 システム変数の処理中にエラーが発生しました (下記の注を参照)。

708 先行ステートメントに無効な &SYSINDEX 式があります。

712 先行ステートメントに無効な &SYSINDEX 開始パラメーターがあります。開始パラメーターは負数であってはなりません。

716 先行ステートメントに無効な &SYSNSUB レベル・パラメーターがあります。レベル・パラメーターは 0 から 99 までの数でなければなりません。

720 先行ステートメントに、&SYSNSUB レベル・パラメーターまたは式パラメーター (あるいはその両方) がありません。

724 先行ステートメントに、組み込み関数を記号変数として使用する、&SYSNSUB レベル・パラメーターがあります。

8xx 評価ルーチン・エラー・コード。

800 演算子があるべき場所にデータが検出されました。

804 データがあるべき場所に演算子が検出されました。

808 比較演算子が SET ステートメント内で使用されました。

812 (予約済み)

816 ステートメントの終わりに演算子が検出されました。

820 演算子の順序が間違っています。データが演算子と混同されている可能性があります。

824 2 つ以上の排他的演算子が検出されました。

828 2 つ以上の排他的比較演算子が検出されました。

832 算術演算の結果が、有効な範囲 (-2,147,483,647 から +2,147,483,647)

から外れています。

836 (予約済み)

840 オペランドの数が不足しています。

CLIST エラー・コードの取得

132 z/OS V1R8.0 TSO/E CLIST

Page 153: TSO/E CLIST

表 8. CLIST ステートメント・エラー・コード (10 進数) (続き)

エラー・コード 意味

844 有効な演算子がありません。

848 データを文字データとしてロードしようと試みられましたが、そのデータは数値です (そのデータで算術演算が実行されています)。

852 加算エラー - 文字データ

856 減算エラー - 文字データ

860 乗算エラー - 文字データ

864 除算エラー - 文字データまたは 0 による除算

868 文字データにプレフィックスが検出されました。

872 数値が大き過ぎます。

900 単一のアンパーサンドが検出されました。

904 (予約済み)

908 エラーが起こったために制御を受け取ったエラー処置の中に、別のエラーが発生しました。

912 サブストリングの範囲が無効です。

916 サブストリングの範囲の中に、非数値の値が検出されました。

920 サブストリングの範囲の値が小さ過ぎます (ゼロまたは負数)。

924 サブストリングの構文が無効です。

932 ストリングの範囲から外れているサブストリングが検出されました。(たとえば、&SUBSTR 変数が、2 文字分しかないデータの最初の 3

文字を、サブストリング化しようとしました。)

936 値を必要とする組み込み変数が、値を指定せずに入力されました。

940 記号変数が無効です。

944 記号変数としてラベルが使用されました。

948 GOTO ステートメントのラベル構文が無効です。

952 GOTO ラベルが定義されていません。

956 GOTO ステートメントにラベルがありません。

960 &SYSSCAN が無効な値に設定されました。

964 &LASTCC が無効な値に設定され、EXIT がそれをデフォルトとして使用しようとしました。

968 DATA PROMPT-ENDDATA ステートメントが指定されましたが、プロンプトは出されませんでした。

972 TERMIN ステートメントは、バックグラウンド・ジョブ内では使用できません。

976 READ ステートメントは、バックグラウンド・ジョブ内では使用できません。

980 記号置換の最中に、最大ステートメント長 (32756) を超過しました。

984 TERMING 区切り文字が 256 文字より長くなっています。

988 TERMING に 64 を超える区切り文字があります。

992 TERMING ステートメントは、バックグラウンド・ジョブ内では使用できません。

999 内部 CLIST エラー

CLIST エラー・コードの取得

第 11 章 CLIST のテストおよびデバッグ 133

Page 154: TSO/E CLIST

表 8. CLIST ステートメント・エラー・コード (10 進数) (続き)

エラー・コード 意味

Sxxx システム異常終了コード (16 進数で表示)

Uxxx ユーザー異常終了コード (16 進数で表示)

注: これの基になるエラー (エラー・コード 624 によって要約されています) については、必ず、より詳しいエラー・メッセージが示されます。このメッセージは、エラー・ルーチンを使用したときに抑止されません。

CLIST エラー・コードの取得

134 z/OS V1R8.0 TSO/E CLIST

Page 155: TSO/E CLIST

第 12 章 CLIST の例

TSO/E コマンドの組み込み - LISTER CLIST . . . . . . . . . . . . . 136ルーチン・タスクの単純化 - DELETEDS CLIST . . . . . . . . . . . . 136ユーザー提供の入力からの算術式の作成 - CALC CLIST . . . . . . . . . 137フロントエンド・プロンプトの使用 - CALCFTND CLIST. . . . . . . . . 137システム・サービスの初期設定および呼び出し - SCRIPTDS CLIST . . . . . 140サブタスクを実行するための CLIST の呼び出し - SCRIPTN CLIST . . . . . 142JCL ステートメントの組み込み - SUBMITDS CLIST . . . . . . . . . . 145&SUBSTR を用いた入力ストリングの分析 - SUBMITFQ CLIST . . . . . . 145プログラムのフォアグラウンド実行およびバックグラウンド実行 - RUNPRICE

CLIST . . . . . . . . . . . . . . . . . . . . . . . . . . . 147オプションの組み込み - TESTDYN CLIST . . . . . . . . . . . . . . 148システム関連タスクの単純化 - COMPRESS CLIST . . . . . . . . . . . 150アプリケーションへのインターフェースの単純化 - CASH CLIST . . . . . . 152入出力を実行するときの &SYSDVAL の使用 - PHONE CLIST. . . . . . . 153SYSPROC へのデータ・セットの割り振り - SPROC CLIST . . . . . . . . 155ISPF ダイアログを使用したフルスクリーン・アプリケーションの作成 -

PROFILE CLIST . . . . . . . . . . . . . . . . . . . . . . . 159LISTDSI 情報を含むデータ・セットの割り振り - EXPAND CLIST . . . . . 170

本章では、これまでの章で説明した CLIST の機能を示す CLIST の例を紹介します。これらの例では、CLIST が、SYSPROC に割り振られている PDS の中に常駐しているものとします。

表 9 では、CLIST の名前をリストするとともに、その機能を簡単に説明します。これらの CLIST の多くには、記号変数、制御変数、組み込み関数、および条件付きシーケンスの例が含まれています。

表 9. CLIST の例とその機能

CLIST 機能 ページ

LISTER TSO/E コマンドを組み込みます。 136

DELETEDS ルーチン・タスクを単純化します。 136

CALC ユーザー提供の入力から算術式を作成します。 137

CALCFTND フロントエンド・プロンプトを実行します。 137

SCRIPTDS システム・サービスを初期設定し、呼び出します。 140

SCRIPTN サブタスクを実行するために CLIST を呼び出します。 142

SUBMITDS JCL を含み、フロントエンド・プロンプトを実行します。 145

SUBMITFQ サブストリング化を実行し、柔軟性を向上させます。 145

RUNPRICE ジョブのフォアグラウンド実行依頼あるいはバックグラウンド実行依頼を可能にします。

147

TESTDYN 呼び出し元にオプションを提供し、指定されたオプションに基づいて初期設定を実行します。

148

COMPRESS ルーチン、システム関連タスクを単純化します。 150

CASH 複合アプリケーションへの呼び出し元のインターフェースを単純化します。

152

PHONE I/O を実行し、&SYSDVAL にレコードを読み込みます。 153

© Copyright IBM Corp. 1988, 2006 135

Page 156: TSO/E CLIST

表 9. CLIST の例とその機能 (続き)

CLIST 機能 ページ

SPROC &SYSOUTTRAP および &SYSOUTLINE 変数を使用して、コマンド出力を管理します。

155

PROFILE CLIST 内で ISPF ダイアログ管理サービスを使用し、フルスクリーン・アプリケーションを作成します。

159

EXPAND LISTDSI ステートメントを使用して、既存のデータ・セットの特性を持つ新しいデータ・セットを割り振ります。

170

TSO/E コマンドの組み込み - LISTER CLISTユーザーが、CLIST を呼び出して所定のタスクまたはタスク・グループを実行できるように、関連活動を編成することができます。最も単純な例としては、TSO/E コマンドをグループにまとめる CLIST があります。

LISTER CLIST は、2 つの TSO/E コマンドで構成されます。 (図 10 を参照してください。) LISTCAT コマンドは、呼び出し側のカタログ内のすべてのエントリーをリストします。LISTALC コマンドは、呼び出し元のユーザー ID に割り振られている、すべてのデータ・セットの名前および状況をリストします。TSO/E は、これらのコマンドによって生成された出力を、TSO/E がそれらのコマンドを実行した順序で表示します。呼び出し元は、コマンドを入力し、その出力を表示し、さらに別のコマンドを入力する、といった作業をする必要はありません。呼び出し元から必要とされている入力はすべて 1 度に行われます。

ルーチン・タスクの単純化 - DELETEDS CLISTルーチン・タスクを単純化するための 1 つの方法として、そのプロセスを可能な限り対話式にする CLIST を作成する方法があります。たとえば、DELETE コマンドの構文は、データ・セットをいくつか削除したいだけのユーザーにはわかりにくい場合があります。このようなユーザーのために、このプロセスを単純化する CLIST

を作成することができます。 137ページの図 11 に示されている DELETEDS CLIST

は、そのような CLIST の 1 例です。この CLIST は、呼び出し元に、データ・セット名または完了インディケーターの入力を求めるプロンプトを出します。

listcatlistalc status

図 10. LISTER CLIST

TSO/E コマンドの組み込み - LISTER CLIST

136 z/OS V1R8.0 TSO/E CLIST

Page 157: TSO/E CLIST

ユーザー提供の入力からの算術式の作成 - CALC CLIST図 12 に示されている CALC CLIST には、呼び出し元からの次の 3 つの入力ストリングを要求する、PROC ステートメントが入っています。v 数値v 算術演算子v もう 1 つの数値

CLIST は、これらの 3 つの値を表す定位置パラメーター変数を使用して、算術式を作成します。 WRITE ステートメントは、未評価の式、等号、および評価済みの式から成るメッセージを表示します。CALC には、妥当性検査ステートメントは含まれません。そのため、上記の要件を満たしていない入力があると、&EVAL 組み込み関数が失敗し、エラー・コードが生成されます。

フロントエンド・プロンプトの使用 - CALCFTND CLISTフロントエンド・プロンプトは、CLIST が、他のステートメントの中で入力データを使用する前にそのデータを検証します。たとえば、図 12 の CALC CLIST は、&FVALUE および &LVALUE が有効な数値、または有効な数値を含む変数を表していると想定しています。またさらに、&OPER は有効な算術演算子を表していると想定しています。

139ページの図 13 に示されている CALCFTND では、CLIST は最初に &FVALUE

が文字データではなく数値であることを確認します。 WRITE ステートメントのメ

/**********************************************************************//* THIS CLIST PROMPTS THE USER FOR THE NAMES OF THE DATA *//* SETS TO BE DELETED, ONE AT A TIME. *//**********************************************************************/

SET DONE=NODO WHILE &DONE=NOWRITE Enter the name of the data set you want deleted.WRITE Omit the identification qualifier (userid).WRITE Do not put the name in quotation marks.WRITE When you are finished deleting all data sets, type an ’f’.READ DSNIF &DSN = F THEN SET DONE=YESELSE delete &DSNEND

図 11. DELETEDS CLIST

PROC 3 FVALUE OPER LVALUE

/**********************************************************************//* DISPLAY THE ENTIRE EQUATION AT THE TERMINAL, INCLUDING THE RESULT *//* OF THE EXPRESSION. *//**********************************************************************/

WRITE &FVALUE&OPER&LVALUE = &EVAL(&FVALUE&OPER&LVALUE)

図 12. CALC CLIST

CALC CLIST

第 12 章 CLIST の例 137

Page 158: TSO/E CLIST

ッセージは、呼び出し元がその値の中に小数点を含めようとしている可能性を指摘できるように調製されています。 CLIST はそのような値を、数値ではなく文字データと見なします。 DO-WHILE-END シーケンスは、呼び出し元が有効な数値を指定するまで実行を続けます。&LVALUE には、同様の DO-WHILE-END シーケンスが提供されます。

&OPER の検査は多少複雑です。&OPER は有効な算術演算子 (+、-、*、/、**、//

のいずれかの記号) でなければなりません。したがって、対応する DO-WHILE-END

シーケンスの条件では、比較式の論理積を取る必要があります。&OPER が式の中の演算子と等しくない場合に、各式は真となります。すべての式が真になった場合、&OPER は有効な算術演算子ではないことになります。 CLIST が &OPER および有効な算術演算子を文字データと見なすように、必ずそれらを &STR 組み込み

フロントエンド・プロンプトの使用 - CALCFTND CLIST

138 z/OS V1R8.0 TSO/E CLIST

Page 159: TSO/E CLIST

関数で囲んでください。

PROC 0 FVALUE( ) OPER( ) LVALUE( )

/**********************************************************************//* IF &FVALUE IS NOT VALID, CONTINUE PROMPTING THE USER TO ENTER *//* AN ACCEPTABLE VALUE. *//**********************************************************************/

CONTROL ASIS /* Allow upper and lower case WRITE statements */

SET &NULL =DO WHILE &DATATYPE(&FVALUE) ¬= NUM

IF &STR(&FVALUE) = &NULL THEN +WRITE Please enter a first value without decimal points &STR(-)

ELSE +DOWRITENR Your first value is not numeric. Reenter a number withoutWRITE decimal points &STR(-)ENDREAD &FVALUE

END

/**********************************************************************//* IF &OPER IS NOT VALID, CONTINUE PROMPTING THE USER TO ENTER *//* AN ACCEPTABLE VALUE. *//**********************************************************************/

DO WHILE &STR(&OPER)¬=&STR(+) AND &STR(&OPER)¬=&STR(-) AND +&STR(&OPER)¬=&STR(*) AND &STR(&OPER)¬=&STR(/) AND +&STR(&OPER)¬=&STR(**) AND &STR(&OPER)¬=&STR(//)

IF &STR(&OPER) = &NULL THEN +DOWRITE Please enter a valid arithmetic operator (+,-,*,/,**,//)WRITE enclosed in parentheses, for example, (+) or (-).ENDELSE +DOWRITE Your second value is not a valid operator (+,-,*,/,**,//).WRITE Reenter this value, using one of the valid arithmeticWRITE operators enclosed in parentheses, for example, (+) or (-).ENDREAD &OPER

END

図 13. CALCFTND CLIST (1/2)

フロントエンド・プロンプトの使用 - CALCFTND CLIST

第 12 章 CLIST の例 139

Page 160: TSO/E CLIST

システム・サービスの初期設定および呼び出し - SCRIPTDS CLISTSCRIPTDS CLIST によって、ユーザーは、入力データ・セットに対して SCRIPT

プログラムを実行し、出力を印刷することができます。

141ページの図 14 に示すように、SCRIPTDS は定位置パラメーター &DSN を必要とします。呼び出し元は、印刷する PDS メンバーの名前を指定します。 CLIST

は、SCRIPT プログラムの呼び出し時に、&DSN 変数を、memo.text データ・セットのメンバー名として組み込みます。 &SYSPREF は制御変数であり、その値はCLIST で使用できるため、呼び出し元が &SYSPREF に入力を提供する必要はありません。入力データ・セットの識別修飾子として &SYSPREF を組み込むと、呼び出し元で完全修飾データ・セット名を入力する必要はなくなります。また、CLIST

は、出力データ・セット名が入力データ・セット名と対応するように、出力デー

/**********************************************************************//* IF &LVALUE IS NOT VALID, CONTINUE PROMPTING THE USER TO ENTER *//* AN ACCEPTABLE VALUE. *//**********************************************************************/

DO WHILE &DATATYPE(&LVALUE) ¬= NUMIF &STR(&LVALUE) = &NULL THEN +

WRITE Please enter a second value without decimal points &STR(-)ELSE +DOWRITENR Your last value is not numeric. Reenter a number withoutWRITE decimal points &STR(-).ENDREAD LVALUE

END

/**********************************************************************//* ONCE THE OPERANDS HAVE BEEN VERIFIED, EVALUATE THE EXPRESSION AND *//* DISPLAY THE RESULT AT THE TERMINAL. *//**********************************************************************/WRITE &FVALUE&OPER&LVALUE = &EVAL(&FVALUE&OPER&LVALUE)

図 13. CALCFTND CLIST (2/2)

システム・サービス - SCRIPTDS CLIST

140 z/OS V1R8.0 TSO/E CLIST

Page 161: TSO/E CLIST

タ・セットの割り振り時に &SYSPREF および &DSN を代わりに使用します。

PROC 1 DSN LIST/**********************************************************************//* THIS CLIST (SCRIPTDS) SETS UP THE ENVIRONMENT FOR SCRIPTING A *//* DATA SET, ISSUES THE SCRIPT COMMAND, AND PRINTS THE OUTPUT. *//**********************************************************************/CONTROL NOFLUSH NOMSGIF &LIST=LIST THEN +

CONTROL LIST/**********************************************************************//* DELETE THE OUTPUT DATA SET INTO WHICH THE SCRIPTED FILE WILL BE *//* PLACED IN CASE IT IS STILL ALLOCATED FROM A PREVIOUS INVOCATION *//* OF SCRIPTDS. *//**********************************************************************/delete ’&SYSPREF.&DSN.list’

図 14. SCRIPTDS CLIST (1/2)

システム・サービス - SCRIPTDS CLIST

第 12 章 CLIST の例 141

Page 162: TSO/E CLIST

サブタスクを実行するための CLIST の呼び出し - SCRIPTN CLISTアプリケーション・タスクを直接実行する CLIST を作成することもできますが、また、ネストされた CLIST の間でアプリケーション・タスクを分け、その実行を制御する CLIST を作成することもできます。たとえば、 141ページの図 14 に示したSCRIPTDS によって実行されたタスクと同じタスクを実行するために、他の 2 つのCLIST を呼び出す CLIST を作成することができます。

143ページの図 15 に示されている SCRIPTN では、SCRIPTDS と同じ結果になります。呼び出し元は、SCRIPTDS に行ったときと同様に、データ・セット名クォリファイアーを指定します。 SCRIPTN は &DSNAM をグローバル変数として定義します。これは、SCRIPTN が、その変数を参照する 2 つの CLIST を呼び出すためです。 SCRIPTN は、SCRIPTD と呼ばれる CLIST を呼び出します。SCRIPTD

は、SCRIPT コマンドを呼び出すときに、memo.text データ・セットのメンバー名と

/**********************************************************************//* DEFINE A FILE NAME (DDNAME) FOR THE OUTPUT DATA SET SO THAT THE *//* SCRIPT PROGRAM CAN REFERENCE IT. FREE THE FILE BECAUSE SCRIPT WILL*//* ALSO ALLOCATE THE DATA SET. *//**********************************************************************/alloc f(a) da(’&SYSPREF.&DSN.list’) dsorg(ps) recfm(v,b,m) +

blk(3156) sp(10,10) tr new release reufree f(a)CONTROL LIST

/**********************************************************************//* ISSUE THE SCRIPT COMMAND, SPECIFYING THE NAME OF THE DATA SET *//* MEMBER TO BE SCRIPTED: MEMO.TEXT(&DSN). *//**********************************************************************/script ’&SYSPREF.memo.text(&DSN)’ +message(delay id trace) device(3800n6) twopass +profile(’script.r3.maclib(ssprof)’) +lib(’script.r3.maclib’) +sysvar(c 1 d yes) +bind(8 8) chars(gt12 gb12) file(’&SYSPREF.&DSN.list’) continue

/**********************************************************************//* FREE THE FILES REQUIRED TO PRINT THE SCRIPTED DATA SET. *//* THEN ALLOCATE THEM, REQUESTING TWO COPIES ON THE 3800 PRINTER. *//**********************************************************************/SET RC=&LASTCC /* Get SCRIPT return code */IF RC<=4 THEN +DOCONTROL NOMSGCONTROL MSGalloc f(sysprint) dummy reusealloc f(sysut1) da(’&SYSPREF.&DSN.list’) shr reusealloc f(sysut2) sysout(n) fcb(std4) chars(gt12,gb12) +

copies(2) optcd(j) reusealloc f(sysin) dummy reuse

/**********************************************************************//* INVOKE THE UTILITY TO HAVE THE DATA SET PRINTED AND FREE THE *//* FILES. *//**********************************************************************/call ’sys1.linklib(iebgener)’free f(sysut1,sysut2,sysprint,sysin)END

図 14. SCRIPTDS CLIST (2/2)

サブタスクの実行 - The SCRIPTN CLIST

142 z/OS V1R8.0 TSO/E CLIST

Page 163: TSO/E CLIST

して &DSNAM 変数を組み込みます (図 16 を参照してください)。これらのタスクを終了すると、SCRIPTD は SCRIPTN に制御を戻し、実行は、SCRIPTD の呼び出しの次のコマンドから続行します。 このコマンドは OUTPUT と呼ばれる CLIST

を呼び出します ( 144ページの図 17 を参照してください)。 OUTPUT は、出力データ・セットを印刷するための IEBGENER ユーティリティーの呼び出しに必要な割り振りを行います。

PROC 1 DSNGLOBAL DSNAMSET DSNAM=&DSNIF &LENGTH(&DSN) LE 8 AND /* ENSURE VALID NAME AND */ +

&DATATYPE(&SUBSTR(1,&DSN))=CHAR THEN /* VALID FIRST CHARACTER */ +DO

/**********************************************************************//* INVOKE THE SCRIPTD CLIST TO SET UP THE ENVIRONMENT REQUIRED TO *//* SCRIPT THE INPUT DATA SET AND THEN RUN THE SCRIPT COMMAND. */

/**********************************************************************/%scriptd/**********************************************************************/

/* INVOKE THE OUTPUT CLIST TO PRINT 2 COPIES OF THE SCRIPTED *//* DATA SET ON THE 3800 PRINTER. *//**********************************************************************/

IF &LASTCC<=4 THEN /* Test return code from SCRIPTD */ +DO%outputENDELSE WRITE SCRIPTD FAILEDENDELSE +WRITE The name entered must be less than 9 characters long and +

the first character must not be numeric.

図 15. SCRIPTN CLIST

GLOBAL DSNAM

/**********************************************************************//* THIS CLIST (SCRIPTD) SETS UP THE ENVIRONMENT FOR SCRIPTING A *//* DATA SET PROVIDED BY THE USER AND ISSUES THE SCRIPT COMMAND. *//**********************************************************************/

CONTROL NOFLUSH NOMSGERROR +DO /* If an error occurs,SET RC=&LASTCC /* get return codeEXIT CODE(&RC)/* and pass control back to SCRIPTNEND

図 16. SCRIPTD CLIST (1/2)

サブタスクの実行 - The SCRIPTN CLIST

第 12 章 CLIST の例 143

Page 164: TSO/E CLIST

/**********************************************************************//* DELETE THE OUTPUT DATA SET INTO WHICH THE SCRIPTED FILE WILL BE *//* PLACED IN CASE IT IS STILL ALLOCATED FROM A PREVIOUS INVOCATION *//* OF SCRIPTN. *//**********************************************************************/

delete ’&SYSPREF.&DSNAM.list’

/**********************************************************************//* DEFINE THE OUTPUT DATA SET SO THAT THE SCRIPT PROGRAM CAN REFERENCE*//* IT. FREE THE FILE BECAUSE SCRIPT WILL ALSO ALLOCATE THE DATA SET *//**********************************************************************/

alloc f(a) da(’&SYSPREF.&DSNAM.list’) dsorg(ps) recfm(v,b,m) +blk(3156) sp(50,30) tr new release reu

free f(a)CONTROL LIST

/**********************************************************************//* ISSUE THE SCRIPT COMMAND, SPECIFYING THE NAME OF THE DATA SET *//* MEMBER TO BE SCRIPTED: MEMO.TEXT(&DSNAM). *//* THEN RETURN CONTROL TO SCRIPTN. *//**********************************************************************/

script ’&SYSPREF.memo.text(&DSNAM)’ +message(delay id trace) device(3800n6) twopass +profile(’script.r3.maclib(ssprof)’) +lib(’script.r3.maclib’) +sysvar(c 1 d yes) +bind(8 8) chars(gt12 gb12) file(’&SYSPREF.&DSNAM.list’) continue

図 16. SCRIPTD CLIST (2/2)

GLOBAL DSNAM

/**********************************************************************//* THIS CLIST (OUTPUT) FREES FILES REQUIRED TO PRINT THE SCRIPTED *//* DATASET, ALLOCATES THEM REQUESTING TWO COPIES ON THE 3800 *//* PRINTER, AND INVOKES IEBGENER TO HAVE THEM PRINTED. *//**********************************************************************/

CONTROL NOMSGCONTROL MSGalloc f(sysprint) dummy reusealloc f(sysut1) da(’&SYSPREF.&DSNAM.LIST’) shr reusealloc f(sysut2) sysout(n) fcb(std4) chars(gt12,gb12) +

copies(2) optcd(j) reusealloc f(sysin) dummy reuse

/**********************************************************************//* INVOKE THE UTILITY TO HAVE THE DATA SET PRINTED AND FREE THE *//* FILES. THEN RETURN CONTROL TO SCRIPTN. *//**********************************************************************/

call ’sys1.linklib(iebgener)’free f(sysut1,sysut2,sysprint,sysin)

図 17. OUTPUT CLIST

サブタスクの実行 - The SCRIPTN CLIST

144 z/OS V1R8.0 TSO/E CLIST

Page 165: TSO/E CLIST

JCL ステートメントの組み込み - SUBMITDS CLISTCLIST にジョブ制御言語 (JCL) を組み込むことができます。 図 18 に示されている SUBMITDS CLIST は、SUBMIT * コマンドを使用して、JCL ステートメントがそのコマンドの直後に続いていることを示します。

SUBMITDS は、フロントエンド・プロンプトを使用してジョブ・カード情報を検証し、その後で、1 つのデータ・セットを別のデータ・セットにコピーするジョブの実行依頼をします。妥当性検査では、顧客番号が 4 桁の番号であることを検証する以外の検査は行いません。

顧客番号には、&LENGTH 組み込み関数によって無視される先行ゼロが含まれている場合があるため、CLIST は &ACCT の長さの評価では &STR 組み込み関数を使用します。

SUBMITDS CLIST は、以下を想定しています。v 顧客番号は必須であり、4 桁の数字でなければならない。v 顧客番号には先行ゼロが含まれている場合がある。v ジョブのデフォルトの CLASS は C である。

&SUBSTR を用いた入力ストリングの分析 - SUBMITFQ CLIST&SUBSTR 組み込み関数を使用して、呼び出し元からの入力を分析し、必要に応じてその入力を修正することができます。

146ページの図 19 に示されている SUBMITFQ CLIST は、呼び出し元によって指定されたデータ・セット名が完全修飾名であるかどうかを判別します。データ・セ

PROC 2 DSN ACCT CLASS(C)

/**********************************************************************//* IF &ACCT IS NOT VALID, CONTINUE PROMPTING UNTIL THE USER ENTERS *//* AN ACCEPTABLE VALUE. *//**********************************************************************/

DO WHILE &LENGTH(&STR(&ACCT)) ¬= 4 OR &DATATYPE(&ACCT) ¬= NUMWRITE Your account number is invalid.WRITE Reenter a four-digit number.READ ACCTEND

/**********************************************************************//* ONCE ACCOUNT NUMBER HAS BEEN VERIFIED, SUBMIT THE JOB. *//**********************************************************************/

SET SLSHASK=&STR(/*) /* Set the /* required for jcl comment statement */SUBMIT * END($$)//&SYSUID1 JOB &ACCT,&SYSUID,CLASS=&CLASS,NOTIFY=&SYSUID/&SLSHASK THIS STEP COPIES THE INPUT DATASET TO SYSOUT=A//COPY EXEC PGM=COPYDS//SYSUT1 DD DSN=&SYSUID.&DSN,DISP=SHR;//SYSUT2 DD SYSOUT=A$$

図 18. SUBMITDS CLIST

JCL ステートメントの組み込み - SUBMITDS CLIST

第 12 章 CLIST の例 145

Page 166: TSO/E CLIST

ット名が完全修飾でない (ユーザー ID を組み込んでいない) 場合、SUBMITFQ

は、ユーザー ID を追加し、JCL ステートメント上でデータ・セット名を正しい形式にして実行依頼します。

SUBMITFQ は、&DSN の最初の文字と単一引用符 (') を比較することにより、そのデータ・セット名が完全修飾であるかどうかを判別します。論理比較が真であれば、CLIST は、完全修飾データ・セット名であると想定し、引用符を削除します。(ALLOCATE コマンドにおける場合とは異なり、JCL ステートメントでは、完全修飾データ・セット名は単一引用符で囲まれていません。) &DSN の最初の文字が単一引用符でない場合、CLIST は、そのデータ・セット名が完全修飾でないと想定し、文字ストリング『&SYSUID..』を付加します。いずれの場合も、SYSUT1 JCL

ステートメント内で参照されるときは、&DSN に完全修飾データ・セット名が含まれます。

PROC 2 DSN ACCT CLASS(C)

/**********************************************************************//* IF &ACCT IS NOT VALID, CONTINUE PROMPTING UNTIL THE USER ENTERS *//* AN ACCEPTABLE VALUE. *//**********************************************************************/

DO WHILE &LENGTH(&STR(&ACCT)) ¬= 4 OR &DATATYPE(&ACCT) ¬= NUMWRITE Your account number is invalid.WRITE Reenter a four-digit number.READ ACCTEND

/**********************************************************************//* IF THE DATA SET IS FULLY QUALIFIED, REMOVE THE QUOTATION MARKS. OTHERWISE, *//* PREFIX THE CURRENT USERID. *//**********************************************************************/

IF &STR(&SUBSTR(1,&DSN)) = ’ THEN +SET DSN = &STR(&SUBSTR(2:&LENGTH(&DSN)-1,&DSN))ELSE SET DSN=&STR(&SYSUID.&DSN)WRITE &DSN

/**********************************************************************//* ONCE ACCOUNT NUMBER HAS BEEN VERIFIED, SUBMIT THE JOB. *//**********************************************************************/

SET SLSHASK=&STR(/*) /* Set the /* req. for the jcl comment statement */SUBMIT * END($$)//&SYSUID1 JOB &ACCT,&SYSUID,CLASS=&CLASS/&SLSHASK THIS STEP COPIES THE INPUT DATASET TO SYSOUT=A//COPY EXEC PGM=COPYDS//SYSUT1 DD DSN=&DSN,DISP=SHR;//SYSUT2 DD SYSOUT=A$$

図 19. SUBMITFQ CLIST

入力ストリングの分析 - SUBMITFQ CLIST

146 z/OS V1R8.0 TSO/E CLIST

Page 167: TSO/E CLIST

プログラムのフォアグラウンド実行およびバックグラウンド実行 -RUNPRICE CLIST

フォアグラウンドまたはバックグラウンドのいずれでもプログラムを呼び出すCLIST を作成することができます。 バックグラウンド・ジョブを作成することにより、CLIST は、そのジョブによって、その CLIST 自身も含め、どのプログラムでもバックグラウンドで呼び出すことができます。 この型の CLIST を使用すると、JCL についてよく知らないユーザーでも、プログラムの実行依頼をすることができます。 CLIST の中に JCL を入れることによって、ユーザーの作業を単純化するとともに、ユーザーが実行できるタスクの範囲を大きく広げることができます。 148

ページの図 20 に示されている RUNPRICE CLIST は、この型の CLIST を示してものです。

RUNPRICE は、APRICE と呼ばれる COBOL プログラムをフォアグラウンドで実行する場合と、APRICE を実行するジョブをバックグラウンドで実行依頼する場合があります。この CLIST は、呼び出し元が RUNPRICE の呼び出しに BATCH キーワードを組み込んでいるかどうかに基づき、どちらの型の呼び出しを実行するかを判別します。

実行 - RUNPRICE CLIST

第 12 章 CLIST の例 147

Page 168: TSO/E CLIST

オプションの組み込み - TESTDYN CLISTCLIST が、呼び出し元の指定に応じていろいろな機能を実行できるようにするためのオプションを、その CLIST 内でコーディングすることができます。

149ページの図 21 に示されている TESTDYN CLIST は、PARMTEST というプログラムを実行するために必要な環境をセットアップします。このプログラムは、端末から入力された動的割り振り入力パラメーターをテストするものです。TESTDYN では、条件付き IF-THEN-ELSE シーケンス、および PROC ステートメント上のオプションのキーワードによって、呼び出し元が、CLIST の呼び出し時に、オプションをいくつでも選択することができます。 たとえば、1 つのオプションとして、呼び出し側が、PARMTEST が生成したシステム・メッセージを端末ではなくデータ・セットに送信したいかどうか、というものがあります。 TESTDYN

は、その PROC ステートメント上にキーワード・パラメーター SYSPRINT を組み込んでおり、そのパラメーターにデフォルトの * を割り当てます。このデフォルトによって、システム・メッセージは端末に送信されます。 呼び出し元は、そのデフ

PROC 0 M(R) BATCH

/**********************************************************************//* THIS CLIST (RUNPRICE) SUBMITS A JOB FOR EXECUTION EITHER IN THE *//* FOREGROUND OR BACKGROUND, BASED ON WHETHER THE INVOKER INDICATES *//* ’BATCH’ ON THE INVOCATION. THE MESSAGE CLASS DEFAULTS TO ’R’, *//* THOUGH THE INVOKER MAY CHANGE IT. *//**********************************************************************/CONTROL END(ENDO)/**********************************************************************//* IF &BATCH DOES NOT EQUAL A NULL, THIS INDICATES THAT THE INVOKER *//* INCLUDED THE KEYWORD ON THE INVOCATION. IN THIS CASE, THE INVOKER*//* WANTS THE JOB SUBMITTED IN THE BACKGROUND, SO CREATE A JOB THAT *//* EXECUTES THE TMP AND THEN INVOKES RUNPRICE WITHOUT THE ’BATCH’ *//* KEYWORD. ON THIS SECOND INVOCATION OF RUNPRICE, ONLY THE *//* APRICE PROGRAM IS EXECUTED. *//* IF &BATCH EQUALS A NULL, THIS INDICATES THAT THE INVOKER WANTS *//* TO START THE PROGRAM IN THE FOREGROUND. IN THIS CASE, SIMPLY *//* INVOKE THE APRICE PROGRAM DIRECTLY. *//**********************************************************************/

SET SLSHASK=&STR(/*) /* Set the /* for JOBPARM to a variable */IF &BATCH=BATCH THEN +DOCONTROL NOMSGSUBMIT * END(NN)//STEVE1 JOB ’accounting info’,’STEVE’,// MSGLEVEL=(1,1),CLASS=T,NOTIFY=&SYSUID,MSGCLASS=&M,// USER=????????,PASSWORD=????????&SLSHASK JOBPARM COPIES=1//BACKTMP EXEC PGM=IKJEFT01,REGION=4096K,DYNAMNBR=10//SYSPRINT DD DUMMY//SYSTSPRT DD SYSOUT=*//SYSTSIN DD *ex ’d84rlh1.tsoer2.pubs.clist(runprice)’NNENDOELSE call ’d60fot1.allot.cobol(aprice)’

図 20. RUNPRICE CLIST

オプションの組み込み - TESTDYN CLIST

148 z/OS V1R8.0 TSO/E CLIST

Page 169: TSO/E CLIST

ォルトをオーバーライドし、システム・メッセージがシステム出力データ・セットに送信されるようにすることもできます。

SYSPRINT に SYSOUT がコーディングされているかどうかを判別する処理には、特別な配慮が払われている点に注意してください。 IF ステートメントでは、変数&SYSPRINT のデフォルトがアスタリスクであり、このアスタリスクを CLIST が乗算演算子と見なすため、変数 &SYSPRINT は &STR 組み込み関数の中に囲まれます。 &STR 組み込み関数は、そのアスタリスクを文字データとして定義し、CLIST

がそれを算術に使用しないようにします。

PROC 0 MBR(PARMTEST) SYSPRINT(*) SYSLIB(LOAD) OUTFILE(VLDPARMS) LISTDSETS

/**********************************************************************//* THIS CLIST SETS UP THE ENVIRONMENT NEEDED FOR EXECUTION OF *//* A PROGRAM NAMED ’PARMTEST’ WHICH TESTS DYNAMIC ALLOCATION *//* INPUT PARAMETERS ENTERED FROM THE TERMINAL. *//**********************************************************************/

/**********************************************************************//* IF THE USER REQUESTED THAT DATA SETS BE LISTED, LIST THEM. *//**********************************************************************/

IF &LISTDSETS = LISTDSETS THEN +DOWRITE PROGRAM: &MBRWRITE SYSPRINT: &SYSPRINTWRITE SYSLIB: &SYSLIBWRITE OUTFILE: &OUTFILE

END

/**********************************************************************//* IF THE USER REQUESTED THAT SYSTEM MESSAGES BE SENT TO A SYSTEM *//* OUTPUT DATA SET, ALLOCATE SYSPRINT TO SYSOUT. OTHERWISE, *//* ALLOCATE SYSPRINT TO THE DATA SET NAME (OR TERMINAL) AS *//* INDICATED BY THE USER. *//**********************************************************************/

IF &STR(&SYSPRINT) = SYSOUT THEN +alloc f(sysprint) sysout reuELSE alloc f(sysprint) da(&SYSPRINT) reu

/**********************************************************************//* ALLOCATE THE SYSTEM LIBRARY, WHETHER IT BE THE DEFAULT (LOAD) *//* OR ANOTHER LIBRARY. *//**********************************************************************/

alloc f(syslib) da(&SYSLIB) reu shr

図 21. TESTDYN CLIST (1/2)

オプションの組み込み - TESTDYN CLIST

第 12 章 CLIST の例 149

Page 170: TSO/E CLIST

システム関連タスクの単純化 - COMPRESS CLISTときにより、ユーザーが、何回にもわたって更新したデータ・セットを圧縮して、メンバーを追加するためのスペースを解放しなければならない場合があります。このプロセスには、データ・セットの圧縮にかかわるコピーを実行する IEBCOPY ユーティリティーで必要となるデータ・セットの割り振り、およびそのユーティリティーの呼び出しの 2 つの作業が含まれます。

151ページの図 22 に示されている COMPRESS CLIST は、データ・セットの圧縮に必要な機能をすべて実行します。

COMPRESS CLIST には、ストレージを最も効率的に使用するための特殊なプロシージャーが組み込まれています。 たとえば、COMPRESS は、IEBCOPY ユーティリティーが必要とする入力を入れるためのデータ・セットを割り振ることができます。ただし、IEBCOPY が入力で必要とするコマンドは以下に示すものだけです。

copy indd=output,outdd=output

1 つのコマンドのためだけに永続ストレージを無駄にしないように、COMPRESS

は、データ・セット名を指定しない ALLOCATE コマンドを使用して、SYSIN ファイルに仮想 I/O (VIO) データ・セットを作成します。 ALLOCATE コマンドは、ファイル名 SYSIN を VIO データ・セットに割り振り、その上で、COPY コマンドを含むレコードを SYSIN ファイルに書き込みます。

/**********************************************************************//* ALLOCATE THE OUTPUT DATA SET FOR THE PROGRAM. ALLOCATE THE *//* INPUT DATA SET TO THE TERMINAL. *//**********************************************************************/

alloc f(outfile) da(&OUTFILE) lrecl(121) blksize(1210) recfm(f,b) reualloc f(sysin) da(*) reu

/**********************************************************************//* CALL PARMTEST AND NOTIFY THE USER THAT THE INVOCATION WAS *//* SUCCESSFUL OR UNSUCCESSFUL. *//**********************************************************************/

CONTROL NOFLUSHcall ’steve.lib.load(&MBR)’IF &LASTCC = 0 THEN +WRITE &MBR invoked successfully at &SYSTIME on &SYSDATEELSE +WRITE &MBR invoked unsuccessfully at &SYSTIME on &SYSDATE

図 21. TESTDYN CLIST (2/2)

システム関連タスクの単純化 - COMPRESS CLIST

150 z/OS V1R8.0 TSO/E CLIST

Page 171: TSO/E CLIST

PROC 1 DSNAME DISP(OLD) LISTCONTROL NOFLUSH /* Preserve the input stack for errors */

/**********************************************************************//* THIS CLIST (COMPRESS) COMPRESSES A DATA SET AND INFORMS THE USER *//* WHETHER THE COMPRESS WAS SUCCESSFUL. *//**********************************************************************//* SET UP AN ERROR ROUTINE TO FREE ALLOCATED FILES WHEN AN ERROR OCCURS./**********************************************************************/

ERROR +DOERROR OFFWRITE An error has occurred prior to the actual compress.free file(sysin,sysprint,sysut3,sysut4,output)GOTO FINISHEND

/**********************************************************************//* IF THE USER WANTS TO VIEW THE TSO COMMANDS AS THEY START, ISSUE *//* THE CONTROL LIST STATEMENT. *//**********************************************************************/

IF &LIST=LIST THEN +CONTROL LIST

/**********************************************************************//* ESTABLISH ENVIRONMENT NEEDED BY IEBCOPY UTILITY. *//**********************************************************************/

allocate file(sysin) space(1,1) track lrecl(80) recfm(f) blksize(80) reuseIF &SYSDSN(COMPRESS;LIST) ¬= OK THEN +allocate file(sysprint) dataset(compress.list) recfm(f,b,a) +

lrecl(121) blksize(12947) space(1,1) track reuseELSE +allocate file(sysprint) dataset(compress.list) shr reuseallocate file(sysut3) unit(sysda) space(1,1) cylinders reuallocate file(sysut4) unit(sysda) space(1,1) cylinders reuallocate file(output) dataset(&DSNAME) &DISP reu

/**********************************************************************//* PLACE THE COPY COMMAND INTO THE SYSIN FILE REQUIRED BY IEBCOPY. *//**********************************************************************/

OPENFILE SYSIN OUTPUTSET SYSIN = &STR( COPY INDD=OUTPUT,OUTDD=OUTPUT)PUTFILE SYSINCLOSFILE SYSIN

図 22. COMPRESS CLIST (1/2)

システム関連タスクの単純化 - COMPRESS CLIST

第 12 章 CLIST の例 151

Page 172: TSO/E CLIST

アプリケーションへのインターフェースの単純化 - CASH CLIST他のプログラム言語で書かれたアプリケーションへアクセスする場合があります。ただし、システムをあまり頻繁に使用しないユーザーにとっては、それらのプログラムを呼び出すために必要なインターフェースを理解することがむずかしい場合があります。そのため、まったく新しいアプリケーションを作成するのではなく、ユーザーとそのようなアプリケーションとの間の仲介としての働きをする CLIST を作成する方法があります。

たとえば、CASHFLOW というプログラムは、週間レポート、および月間レポートを作成し、印刷します。 呼び出し元が週間レポートを必要とする場合、次のように呼び出します。

call ’sys1.plib(cashflow)’ ’a,,,38,ccfdacr’

呼び出し元が月間レポートを必要とする場合、次のように呼び出します。

call ’sys1.plib(cashflow)’ ’x,,,49,ccfmacr’

上記の呼び出しは、非常に専門的であるばかりでなく、覚えておくのも困難です。

また、CASHFLOW ではファイルの割り振りも必要となります。週間レポートの場合、次の割り振りが必要です。

alloc f(projwkly) da(weekly) shr

また、月間レポートの場合は、次の割り振りが必要です。

alloc f(projmtly) da(monthly) shr

CASHFLOW のプロセスを単純化するために、『アプリケーションへのインターフェースの単純化 - CASH CLIST』 に示されている CASH CLIST が次の仲介タスクを実行します。

1. 呼び出し元が週間レポート、月間レポートのどちらを希望しているかを判別する。

/**********************************************************************//* Set up an error routine to notify user of compress errors. *//**********************************************************************/

ERROR +DOWRITE Compress error--Details in ’&SYSPREF compress.list’GOTO FINISHEND

/**********************************************************************//* INVOKE IEBCOPY UTILITY TO PERFORM THE COMPRESS. *//**********************************************************************/

tsoexec call ’sys1.linklib(iebcopy)’ ’size=512k’WRITE &DSNAME compressed at &SYSTIME

FINISH: end /* End the CLIST */

図 22. COMPRESS CLIST (2/2)

インターフェースの単純化 - CASH CLIST

152 z/OS V1R8.0 TSO/E CLIST

Page 173: TSO/E CLIST

2. CASHFLOW を呼び出す CALL コマンド上のパラメーター・ストリングで置き換えられる変数に、値を割り当てる。この値は、要求されているレポートの種類で必要なパラメーターに対応します。

3. 適切なデータ・セットを割り振ります。

入出力を実行するときの &SYSDVAL の使用 - PHONE CLIST多くの場合、データ・レコードには、関連したいくつかの情報または情報のブロックが含まれています。たとえば、順次レコードには、人の名前および電話番号を含めることができます。このタイプのレコードを読み取るときは、情報のブロックを分ける必要があります。 SYSDVAL を、レコードを含んだデータ・セットのファイル名として定義することによって、各レコードを SYSDVAL に読み取ることができます。CLIST は、この SYSDVAL を &SYSDVAL 制御変数と同じ値にします。 その上で、情報のブロックを保管したい変数の名前を含む READDVAL ステートメントを出すことができます。

155ページの図 24 に示されている PHONE CLIST は、この技法を活用しています。 PHONE は、NAME と呼ばれる定位置パラメーターを使用して、姓を入力として受け取ります。 PHONE は、次に、SYS1.STAFF.DIRECTRY というデータ・セットを割り振り、それをファイル名 SYSDVAL に割り当てます。SYS1.STAFF.DIRECTRY 内の各レコードには、姓の次にブランクおよび電話番号が入っています。 サンプル・レコードを次に示します。

PICKERELL 555-5555GORGEN 555-4444

/* PROMPT THE USER FOR THE WORD ’WEEKLY’ or ’MONTHLY’ */

DO WHILE &TYPE¬=WEEKLY AND &TYPE¬=MONTHLYWRITE Enter the word WEEKLY or MONTHLY to indicate theWRITE type of report you want to create.READ TYPEEND

/**********************************************************************//* NOW THAT A VALID REQUEST HAS BEEN ESTABLISHED, ALLOCATE THE *//* APPROPRIATE DATA SET, ASSIGN THE APPROPRIATE VALUES TO CALL *//* COMMAND PARAMETER VARIABLES, AND INVOKE CASHFLOW. *//**********************************************************************/

IF &TYPE=WEEKLY THEN +DOalloc f(projwkly) da(weekly) shrSET INVOKE=38SET CHAR=aSET OPT=ccfdacrENDELSE +DOalloc f(projmtly) da(monthly) shrSET INVOKE=49SET CHAR=xSET OPT=ccfmacrENDcall ’sys1.plib(cashflow)’ ’&CHAR,,,&INVOKE,&OPT’

図 23. CASH CLIST

インターフェースの単純化 - CASH CLIST

第 12 章 CLIST の例 153

Page 174: TSO/E CLIST

PHONE は、レコード内の最初の文字ストリングを &LNAME という変数に設定し、2 番目のストリングを &PHONUMBR という変数に設定します。 そしてその後で &NAME を &LNAME と比較し、それらが同じ場合には、対応する電話番号(&PHONUMBR の中に含まれている) を端末に表示します。それらの名前が同じでない場合、PHONE は他のレコードを読み取り、同じテストを行います。

ディレクトリー内のいずれの名前も、呼び出し元から指定された名前と一致しない場合、CLIST は、ファイルの終わりエラー・ルーチンにブランチします。 ファイルの終わりルーチンは、呼び出し元に、名前が見つからないことを通知し、変数DONE=YES を設定して、ループを終了させます。

入出力を実行するときの &SYSDVAL の使用 ...

154 z/OS V1R8.0 TSO/E CLIST

Page 175: TSO/E CLIST

SYSPROC へのデータ・セットの割り振り - SPROC CLISTSPROC CLIST は、CLIST データ・セットをファイル SYSPROC に割り振って、ユーザーがそのデータ・セット内にある CLIST を暗黙的に実行できるようにします。SPROC CLIST は、その CLIST データ・セットを、SYSPROC に割り振られたデータ・セットのリストの中の最初のデータ・セットとして割り振るため、TSO/E は、他のデータ・セットを検索する前に、CLIST のデータ・セットを検索します。

PROC 1 NAME

/**********************************************************************//* THIS CLIST (PHONE) SEARCHES A DATA SET FOR A NAME THAT MATCHES THE *//* NAME SUPPLIED TO THE CLIST. IF A MATCH IS FOUND, THE CORRESPONDING *//* TELEPHONE NUMBER IS DISPLAYED AT THE TERMINAL. OTHERWISE, A MESSAGE IS *//* ISSUED INFORMING THE USER THAT A MATCH WAS NOT FOUND. *//**********************************************************************/

/**********************************************************************//* ALLOCATE THE INPUT DATA SET FOR THE CLIST. *//**********************************************************************/

alloc f(sysdval) da(’sys1.staff.directry’) shr reu

/**********************************************************************//* OPEN THE FILE, AND SET UP AN ERROR ROUTINE TO HANDLE END-OF-FILE. *//**********************************************************************/

CONTROL NOMSG NOFLUSHERROR +DOIF &LASTCC = 400 THEN +DOWRITENR The name requested, &NAME, was not found in the staffWRITE directory.SET DONE=YESENDRETURNEND /* END OF END-OF-FILE ROUTINE */SET DONE=NOOPENFILE SYSDVAL

/**********************************************************************//* THIS LOOP RETRIEVES RECORDS FROM THE INPUT DATA SET UNTIL A MATCH *//* IS FOUND OR END OF FILE IS REACHED. IF A MATCH IS FOUND, THE *//* SECOND VARIABLE ON THE READDVAL STATEMENT (THE ONE CONTAINING *//* THE TELEPHONE NUMBER) IS DISPLAYED. *//**********************************************************************/

DO WHILE &DONE=NOGETFILE SYSDVALREADDVAL LNAME PHONUMBRIF &STR(&NAME) = &STR(&LNAME) THEN +DOWRITE &PHONUMBRSET DONE=YESEND

ENDCLOSFILE SYSDVALfree file(sysdval)

図 24. PHONE CLIST

SYSPROC へのデータ・セットの割り振り - SPROC CLIST

第 12 章 CLIST の例 155

Page 176: TSO/E CLIST

注: ALTLIB コマンドを使用して、CLIST データ・セットを定義し、それらの検索順序を暗黙的実行用に確立することもできます。

SPROC は、次のステップを実行します。まず、SYSPROC に現在割り振られているすべてのデータ・セットを検出し、それらを連結します。次に、呼び出し元のデータ・セットをその連結の最初に追加し、その連結を SYSPROC に割り振ります。

155ページの『SYSPROC へのデータ・セットの割り振り - SPROC CLIST』 に示されている CLIST は、&SYSOUTTRAP を使用して LISTALC STATUS コマンドからの出力をインターセプトし、そのコマンド出力を &SYSOUTLINEnn 変数内に保管します。 LISTALC STATUS コマンドによって生成された出力は、次のようにフォーマットされます。

--DDNAME---DISP--DATA-SET-NAME1

FILE-NAME1 DISPOSITIONDATA-SET-NAME2

FILE-NAME2 DISPOSITIONDATA-SET-NAME3

DISPOSITIONDATA-SET-NAME4

FILE-NAME3 DISPOSITION

上記のフォーマットでは、DATA-SET-NAME1 は FILE-NAME1 に割り振られ、DATA-SET-NAME2 および DATA-SET-NAME3 は FILE-NAME2 に割り振られ、DATA-SET-NAME4 は FILE-NAME3 に割り振られます。ファイル名の開始位置は常に出力行の 3 桁目ですが、データ・セット名の開始位置は 1 桁目です。 SPROC

は次のことを行います。

1. ストリング SYSPROC が検出されるか、またはすべての出力が検索されるまで、&SYSOUTLINEnn 変数をループします。 (SYSPROC にデータ・セットが割り振られていない可能性があります。)

2. SYSPROC が検出された場合、SPROC は、変数をリスト内の直前のデータ・セットの名前に設定し、それを単一引用符で囲みます。

3. SYSPROC に割り振られている最初のデータ・セット名を含む行の、3 行後の&SYSOUTLINEnn 変数から開始します。 この行には、新しいファイル名が入っている (この場合は、SPROC が SYSPROC に割り振られているすべてのデータ・セットを検出しています) か、連結内の次のデータ・セットの後処理が入っています。 SPROC は、変数を 3 つのブランクに設定することによって、その行の内容を判別します。

この行に後処理が入っている場合、SPROC は &SYSOUTLINEnn を 1 だけ減らしてデータ・セット名を取り出し、その名前を、新しい連結内のデータ・セットを表す変数 (&CONCAT) に追加します。 SPROC は、別のファイル名が検出されるまで、あるいはすべてのコマンド出力が検索されるまで、このプロシージャーを繰り返します。すべてのデータ・セットが連結リストに追加されたら、SPROC は、ALLOCATE コマンドを出し、ユーザーのデータ・セット名を連結リストの最初に追加します。

SPROC には、割り振りエラーが発生した場合にそれを処理するためのエラー・ルーチンが含まれています。 SPROC 自身を SYSPROC に割り振ることもできますが、その場合、ユーザーは、SPROC を暗黙的に呼び出すことができます。 しかし、CLIST が SYSPROC ファイルを解放してから連結を再設定できるまでの間に

SYSPROC へのデータ・セットの割り振り - SPROC CLIST

156 z/OS V1R8.0 TSO/E CLIST

Page 177: TSO/E CLIST

CLIST に障害が発生すると、ユーザーはいったんログオフしてからログオンし直さなければ、SPROC を暗黙的に再呼び出しすることはできません。

PROC 0 LISTIF &LIST=LIST THEN +CONTROL LIST CONLIST

/**********************************************************************//* THIS CLIST (SPROC) CONCATENATES DATA SETS AND ALLOCATES THEM *//* TO THE FILE SYSPROC. *//* THE USER IS PROMPTED TO SUPPLY THE NAME OF THE DATA *//* SET TO BE ADDED TO THE BEGINNING OF THE CONCATENATION. *//**********************************************************************//**********************************************************************//* IF ALLOCATION FAILS, TELL THE USER TO LOG OFF, LOG ON, AND, IF *//* DESIRED, TRY EXECUTING SPROC AGAIN. *//**********************************************************************/CONTROL NOFLUSHERROR +DOWRITE An error has been encountered in the SYSPROC concatenation.WRITE Please log off, then log on again, and, if desired, re-invokeWRITE SPROC. If the problem persists, see your system programmer.GOTO OUTEND

/**********************************************************************//* PROMPT THE USER FOR THE NAME OF THE DATA SET TO BE ADDED TO THE *//* BEGINNING OF THE SYSPROC CONCATENATION. *//**********************************************************************/WRITE Enter the fully-qualified data set name you wantWRITE added to the beginning of the SYSPROC concatenation.WRITE Do N O T place quotation marks around the dataset name.READ ADD

図 25. SPROC CLIST (1/3)

SYSPROC へのデータ・セットの割り振り - SPROC CLIST

第 12 章 CLIST の例 157

Page 178: TSO/E CLIST

/**********************************************************************//* SET A VARIABLE TO THREE BLANKS. THIS VARIABLE IS USED TO CHECK *//* THE LISTALC COMMAND OUTPUT FOR THE BEGINNING OF A DIFFERENT *//* FILENAME AFTER SYSPROC DATA SETS HAVE BEEN LISTED. *//**********************************************************************/SET BLANKS = &STR( )/**********************************************************************//* SET &SYSOUTTRAP TO A LARGE ENOUGH VALUE TO ENSURE THAT ALL OF *//* THE LINES OF OUTPUT FROM THE LISTALC COMMAND CAN BE VIEWED. *//**********************************************************************/SET &SYSOUTTRAP = 300

/**********************************************************************//* ISSUE THE LISTALC STATUS COMMAND AND LOOP THROUGH THE VARIABLES *//* CONTAINING THE OUTPUT LINES UNTIL THE LINE CONTAINING *//* THE FILENAME *//* SYSPROC IS FOUND OR UNTIL ALL LINES HAVE BEEN VIEWED. *//* (ALL LINES HAVE BEEN VIEWED WHEN A NULL LINE IS RETURNED.) *//* AN AUXILIARY VARIABLE MUST BE CREATED (&DSN) TO LOOP THROUGH *//* &SYSOUTLINEnn &I REPRESENTS THE VALUE OF nn. *//* NOTE THAT, TO SET &DSN TO &SYSOUTLINE, TWO AMPERSANDS *//* MUST BE PLACED BEFORE SYSOUTLINE TO AVOID SYMBOLIC SUBSTITUTION *//* OF &SYSOUTLINE *//* IF SYSPROC IS FOUND, SET THE VARIABLE &CONCAT EQUAL TO *//* THE PREVIOUS LINE (CONTAINING THE NAME *//* OF THE FIRST DATA SET ALLOCATED TO SYSPROC). *//**********************************************************************/

lista stSET &SYSOUTTRAP = 0SET SPROC = &STR(SYSPROC)SET FOUND = NOSET I=1DO WHILE &STR(&FOUND) = NO AND &I <= &SYSOUTLINESET DSN = &SYSOUTLINE&IIF &LENGTH(&STR(&DSN)) >=9 THEN +

IF &STR(&SUBSTR(3:9,&DSN)) = &SPROC THEN +DOSET FOUND = YESSET I = &I-1;SET DSN = &&SYSOUTLINE&ISET CONCAT = ’&DSN’ENDELSE SET I = &I+1

ELSE SET I = &I+1END

図 25. SPROC CLIST (2/3)

SYSPROC へのデータ・セットの割り振り - SPROC CLIST

158 z/OS V1R8.0 TSO/E CLIST

Page 179: TSO/E CLIST

ISPF ダイアログを使用したフルスクリーン・アプリケーションの作成 -PROFILE CLIST

CLIST 言語は、フルスクリーン・パネルを表示する ISPF ダイアログ管理サービスを呼び出すアプリケーションに適しています。 ISPF の詳細については、「z/OS

ISPF サービス・ガイド」を参照してください。

PROFILE CLIST は、入力パネルを表示する CLIST の例ですが、ユーザーはこのパネルで情報を修正することができます。 PROFILE CLIST によって、ユーザーは、そのプロファイルを修正するために、以下の機能が実行できるようになります。v 端末特性の設定v LOG/LIST パラメーターの設定v PF キー (1 から 12) の設定v PF キー (13 から 24) の設定

PROFILE CLIST には、基本選択パネルを表示する CLIST から制御が渡されます。基本選択パネルは、ユーザーに対し、実行したい機能の指定を求めるプロンプトを出し (QCMD)、その機能が PF キーの設定であれば、表示したい PF キー(QKEYS) を指定することを指示します。その後で、CLIST は、PROFILE を呼び出し、QCMD および QKEYS の値を渡します。

PROFILE は、QCMD および QKEYS という PROC ステートメント・キーワードを参照することによって、どの選択が要求されているかを判別します。

/**********************************************************************//* IF SYSPROC WAS FOUND, LOOP THROUGH DATA SETS UNTIL ANOTHER *//* FILENAME IS ENCOUNTERED OR UNTIL THE REST OF THE OUTPUT HAS *//* BEEN PROCESSED. SETTING &I = &I+3 MAPS &DSN TO THE LINE AFTER *//* THE NEXT DATA SET NAME, WHICH WILL CONTAIN ANOTHER FILENAME IF *//* WE HAVE ALREADY PROCESSED THE LAST DATA SET ALLOCATED TO SYSPROC *//* AND WE HAVE NOT REACHED THE END OF THE COMMAND OUTPUT. *//**********************************************************************/IF &FOUND=YES THEN +

DO WHILE &I+3 <= &SYSOUTLINESET I = &I+3;SET DSN = &&SYSOUTLINE&IIF &STR(&SUBSTR(1:3,&DSN)) = &BLANKS THEN +DOSET I = &I-1SET DSN = &&SYSOUTLINE&ISET CONCAT = &CONCAT&STR( ’)&DSN’ENDELSE +SET I=&SYSOUTLINE

END

/**********************************************************************//* WHEN ALL DATA SETS ALLOCATED TO SYSPROC HAVE BEEN ADDED TO THE *//* VARIABLE &CONCAT, ADD THE USER’S DATA SET TO THE BEGINNING OF *//* THE CONCATENATION. (INSERT THE VARIABLE &ADD BEFORE &CONCAT) *//* THIS CLIST ASSUMES THAT THE DATA SET HAS BEEN ENTERED CORRECTLY *//* BY THE USER. *//**********************************************************************/alloc f(sysproc) da(’&ADD’ &CONCAT) shr reuOUT: end

図 25. SPROC CLIST (3/3)

ISPF を使用したアプリケーション - PROFILE CLIST

第 12 章 CLIST の例 159

Page 180: TSO/E CLIST

&QCMD が 1 の場合、PROFILE は端末特性パネル定義を表示します。

&QCMD が 2 の場合、PROFILE は LOG/LIST パラメーター・パネル定義を表示します。

&QCMD が 3 で、&QKEYS が 12 の場合、PROFILE は PF キー 1 から 12 のパネル定義を表示します。

&QCMD が 3 で、&QKEYS が 24 の場合、PROFILE は PF キー 13 から 24 のパネル定義を表示します。

パネルは、ISPEXEC コマンドを使用して表示されます。

ユーザーが、特定のパネルの表示または修正 (あるいはその両方) を行った後にEND キーを押すと、&LASTCC の値は 8 となります。PROFILE は、&LASTCC

の値をテストすることによって、ユーザーがいつ選択を終了したかを確認することができます。

ユーザーが 2 つの PF キー・パネルの一方を表示している場合、Enter キーを押せばもう一方のパネルに切り替えることができます。 PROFILE は、&QKEYS を、もう一方のパネルを表す PF キー (12 または 24) に設定して、ユーザーが必要に応じて次々に切り替えを実行できるようにします。 Enter キーを押すと、DO-UNTIL-END シーケンスが再実行され、それにより PROFILE は &QKEYS の値をテストして、どのパネルを表示するかを判別します。 他の選択シーケンスの場合と同様、PF キー・シーケンスは、ユーザーが END キーを押すと終了します。

PROFILE によって表示された 4 つのパネルのいずれかで設定または変更された値は、パネル定義上の対応する変数内に保管されます。

表 10 は、PROFILE CLIST およびそれがサポートしている 4 つのパネル定義の目的とそのダイアグラムの番号を示したものです。

表 10. PROFILE CLIST およびそれがサポートしているパネルの目的およびダイアグラム

CLIST/ パネル 目的 図

PROFILE ユーザー・プロファイル・パネルの管理 26

XYZABC10 端末特性パネル 27

XYZABC20 LOG/LIST パラメーター・パネル 28

XYZABC30 PF キー 1 から 12 パネル 29

XYZABC40 PF キー 13 から 24 パネル 30

ISPF を使用したアプリケーション - PROFILE CLIST

160 z/OS V1R8.0 TSO/E CLIST

Page 181: TSO/E CLIST

PROC 0 QCMD(1) QKEYS(12)

/**********************************************************************//* THIS CLIST (PROFILE) DISPLAYS THE PANEL THAT CONTAINS THE PROFILE *//* DATA THE USER WANTS TO UPDATE. IT SETS THE FINISH FLAG TO NO AND *//* THEN DETERMINES WHICH OF THE FOUR POSSIBLE PANELS THE USER NEEDS *//* DISPLAYED. *//**********************************************************************/

CONTROL MSG END(ENDO)SET FINISH = NO

図 26. PROFILE CLIST (1/2)

ISPF を使用したアプリケーション - PROFILE CLIST

第 12 章 CLIST の例 161

Page 182: TSO/E CLIST

PROFILE CLIST によって表示されるパネルは、パネル定義形式で、これ以降のページに示してあります。 PROFILE CLIST がこれらのパネルを表示するには、それらのパネルがファイル ISPPLIB に割り振られた区分データ・セットのメンバーである必要があります。たとえば、次のようにします。

allocate file(ispplib) dataset(test.panels)

/**********************************************************************//* IF THE USER WANTS TO UPDATE TERMINAL CHARACTERISTICS, DISPLAY *//* THE ASSOCIATED PANEL. *//**********************************************************************/

SELECTWHEN (&QCMD = 1) +DO UNTIL (&FINISH = YES)ISPEXEC DISPLAY PANEL(XYZABC10) /* Display first panel */IF &LASTCC = 8 THEN /* If user presses END, */ +SET FINISH = YES /* end panel display */

ENDO

/**********************************************************************//* IF THE USER WANTS TO UPDATE LOG/LIST PARAMETERS, DISPLAY *//* THE ASSOCIATED PANEL. *//**********************************************************************/

WHEN (&QCMD = 2) +DO UNTIL (&FINISH = YES)ISPEXEC DISPLAY PANEL(XYZABC20) /* Display 2nd panel */IF &LASTCC = 8 THEN /* If user presses END, */ +SET FINISH = YES /* end panel display. */ENDO

/**********************************************************************//* IF THE USER WANTS TO UPDATE PF KEYS, DETERMINE WHICH GROUP THE *//* USER WANTS TO UPDATE: 1-12 or 13-24. DISPLAY THE ASSOCIATED PANEL.*//**********************************************************************/WHEN (&QCMD = 3) +

DO UNTIL (&FINISH = YES)IF &QKEYS = 12 THEN +DOISPEXEC DISPLAY PANEL(XYZABC30) /* Display PF keys 1-12 */IF &LASTCC = 8 THEN /* If user presses END, */ +SET FINISH = YES /* end panel display. */ELSE +SET QKEYS = 24 /* If user presses ENTER, */

ENDO /* display next panel. */ELSE +DOISPEXEC DISPLAY PANEL(XYZABC40) /* Display PF keys 13-24 */IF &LASTCC = 8 THEN /* If user presses END, */ +SET FINISH = YES /* end panel display. */ELSE +SET QKEYS = 24 /* If user presses ENTER, */

ENDO /* display previous panel. */ENDO

ENDO /* End of SELECT statement/*/* EXIT ROUTINE/*FINAL: +SET FCODE = 0EXIT CODE(&FCODE)

図 26. PROFILE CLIST (2/2)

ISPF を使用したアプリケーション - PROFILE CLIST

162 z/OS V1R8.0 TSO/E CLIST

Page 183: TSO/E CLIST

ISPF パネルの詳しい作成方法および割り振り方法については、「z/OS ISPF サービス・ガイド」を参照してください。

)ATTR DEFAULT(%+_)/* % TYPE(TEXT) INTENS(HIGH) defaults displayed for *//* + TYPE(TEXT) INTENS(LOW) information only *//* _ TYPE(INPUT) INTENS(HIGH) CAPS(ON) JUST(LEFT) */

@ TYPE(INPUT) INTENS(HIGH) PAD(_) CAPS(ON))BODY+ SAMPLE - SET THE TERMINAL CHARACTERISTICS%COMMAND === _ZCMD +%

+Type the information where requested, or change the information shown+by typing over it:++ TERMINAL TYPE %=== @Z + 3277, 3277A, 3278, 3278A, or 3278T ++ NUMBER OF PF KEYS%===>@Z + 12 or 24+ INPUT FIELD PAD %===>@Z+ Nulls (N) or Blanks (B)+ SCREEN FORMAT %===>@Z + (3278 Model 5 only) DATA, STD, or MAX+ COMMAND DELIMITER%===>@Z+ Any special character+++++++++++++

)INIT.ZVARS = ’(ZTERM ZKEYS ZPADC ZSF ZDEL)’&ZSF = TRANS (&ZFMT D,DATA S,STD M,MAX *,’ ’)

)PROCIF (&ZCMD ¬= ’ ’) .MSG = ISPZ001 /* NOT VALID COMMAND */VER (&ZTERM NB LIST 3277,3277A,3278,3278A,3278T)&ZCHARLM = TRANS(&ZTERM

3277 , ISP32773277A , ISP3277A3278 , ISP32783278A , ISP3278A3278T , ISP3278T)

VER (&ZKEYS NB LIST 12,24)IF (&ZKEYS = 24)

VER (&ZTERM LIST 3278 MSG=ISPO002)VER (&ZPADC NB LIST N,B)VER (&ZSF,NONBLANK)&ZFMT = TRUNC (&ZSF,1)VER (&ZFMT,LIST D,S,M)VER (&ZDEL NB PICT C)IF (.MSG ¬= ’ ’)

.RESP = ENTER)END

図 27. 端末特性パネル定義 (XYZABC10)

ISPF を使用したアプリケーション - PROFILE CLIST

第 12 章 CLIST の例 163

Page 184: TSO/E CLIST

)ATTR DEFAULT(%+_)/* % TYPE(TEXT) INTENS(HIGH) defaults displayed for *//* + TYPE(TEXT) INTENS(LOW) information only *//* _ TYPE(INPUT) INTENS(HIGH) CAPS(ON) JUST(LEFT) */

@ TYPE(INPUT) INTENS(HIGH) PAD(_) CAPS(ON))BODY+ SAMPLE - SET THE LOG/LIST PARAMETERS%COMMAND ===>_ZCMD +%

+Type the information where requested, or change the information shown+by typing over it:++ %LOG %LIST +++ PROCESS OPTION %===>@Z+ @Z++ SYSOUT CLASS %===>@Z + @Z ++ LOCAL PRINTER ID %===>@Z + @Z ++ LINES PER PAGE %===>@Z + @Z ++ PRIMARY PAGES %===>@Z + @Z ++ SECONDARY PAGES %===>@Z + @Z +++++++++++

図 28. LOG/LIST 特性パネル定義 (XYZABC20) (1/2)

ISPF を使用したアプリケーション - PROFILE CLIST

164 z/OS V1R8.0 TSO/E CLIST

Page 185: TSO/E CLIST

)INIT.ZVARS = ’(ZLOGFDSP,ZLSTFDSP,ZLOGCLA,ZLSTCLA,ZLOGPID,ZLSTPID, +

ZLOGLIN,ZLSTLIN,ZLOG1PG,ZLST1PG,ZLOG2PG,ZLST2PG)’

)PROCIF (&ZCMD ¬= ’ ’) .MSG = ISPZ001 /* NOT VALID COMMAND */VER (&ZLOGFDSP LIST J,L,K,D,’ ’)VER (&ZLSTFDSP LIST J,L,K,D,’ ’)IF (&ZLOGFDSP = J)

VER (&ZLOGCLA,NB)IF (&ZLOGFDSP = L)

VER (&ZLOGPID,NB)IF (&ZLSTFDSP = J)

VER (&ZLSTCLA,NB)IF (&ZLSTFDSP = L)

VER (&ZLSTPID,NB)VER (&ZLOGLIN NB NUM)VER (&ZLOGLIN RANGE 1,99)VER (&ZLSTLIN NB NUM)VER (&ZLSTLIN RANGE 1,99)VER (&ZLOG1PG NB NUM)VER (&ZLOG1PG RANGE 0,9999)VER (&ZLST1PG NB NUM)VER (&ZLST1PG RANGE 1,9999)VER (&ZLOG2PG NB NUM)VER (&ZLOG2PG RANGE 0,9999)VER (&ZLST2PG NB NUM)VER (&ZLST2PG RANGE 1,9999)IF (&ZLOG1PG = 0)

VER (&ZLOG2PG,NB)VER (&ZLOG2PG,RANGE,0,0)

IF (&ZLOG1PG ¬= 0)VER (&ZLOG2PG,NB NUM)VER (&ZLOG2PG,RANGE,1,9999)

IF (.MSG ¬= ’ ’ ).RESP = ENTER

)END

図 28. LOG/LIST 特性パネル定義 (XYZABC20) (2/2)

ISPF を使用したアプリケーション - PROFILE CLIST

第 12 章 CLIST の例 165

Page 186: TSO/E CLIST

)ATTR DEFAULT(%+_)/* % TYPE(TEXT) INTENS(HIGH) defaults displayed for *//* + TYPE(TEXT) INTENS(LOW) information only *//* _ TYPE(INPUT) INTENS(HIGH) CAPS(ON) JUST(LEFT) */

@ TYPE(INPUT) INTENS(HIGH) PAD(_) CAPS(ON))BODY+ SAMPLE - SET PF KEYS 1-12%COMMAND ===>_ZCMD +%+Type the information where requested, or change the information shown+by typing over it:++ PF1 %===>@QPF01 ++ PF2 %===>@QPF02 ++ PF3 %===>@QPF03 ++ PF4 %===>@QPF04 ++ PF5 %===>@QPF05 ++ PF6 %===>@QPF06 ++ PF7 %===>@QPF07 ++ PF8 %===>@QPF08 ++ PF9 %===>@QPF09 ++ PF10 %===>@QPF10 ++ PF11 %===>@QPF11 ++ PF12 %===>@QPF12 +++++++

)INITIF (&QPF01 = ’ ’)

&QPF01 = HELPIF (&QPF02 = ’ ’)

&QPF02 = SPLIT

IF (&QPF03 = ’ ’)&QPF03 = END

IF (&QPF04 = ’ ’)&QPF04 = RETURN

IF (&QPF05 = ’ ’)&QPF05 = RFIND

IF (&QPF06 = ’ ’)&QPF06 = RCHANGE

図 29. PF キー 1 から 12 パネル定義 (XYZABC30) (1/2)

ISPF を使用したアプリケーション - PROFILE CLIST

166 z/OS V1R8.0 TSO/E CLIST

Page 187: TSO/E CLIST

IF (&QPF07 = ’ ’)&QPF07 = UP

IF (&QPF08 = ’ ’)&QPF08 = DOWN

IF (&QPF09 = ’ ’)&QPF09 = SWAP

IF (&QPF10 = ’ ’)&QPF10 = LEFT

IF (&QPF11 = ’ ’)&QPF11 = RIGHT

IF (&QPF12 = ’ ’)&QPF12 = CURSOR

)PROCIF (&ZCMD ¬= ’ ’) .MSG = ISPZ001IF (&QPF01 = ’ ’)

&QPF01 = HELPIF (&QPF02 = ’ ’)

&QPF02 = SPLIT

IF (&QPF03 = ’ ’)&QPF03 = END

IF (&QPF04 = ’ ’)&QPF04 = RETURN

IF (&QPF05 = ’ ’)&QPF05 = RFIND

IF (&QPF06 = ’ ’)&QPF06 = RCHANGE

IF (&QPF07 = ’ ’)&QPF07 = UP

IF (&QPF08 = ’ ’)&QPF08 = DOWN

IF (&QPF09 = ’ ’)&QPF09 = SWAP

IF (&QPF10 = ’ ’)&QPF10 = LEFT

IF (&QPF11 = ’ ’)&QPF11 = RIGHT

IF (&QPF12 = ’ ’)&QPF12 = CURSOR

IF (.MSG ¬= ’ ’).RESP = ENTER

)END

図 29. PF キー 1 から 12 パネル定義 (XYZABC30) (2/2)

ISPF を使用したアプリケーション - PROFILE CLIST

第 12 章 CLIST の例 167

Page 188: TSO/E CLIST

)ATTR DEFAULT(%+_)/* % TYPE(TEXT) INTENS(HIGH) defaults displayed for *//* + TYPE(TEXT) INTENS(LOW) information only *//* _ TYPE(INPUT) INTENS(HIGH) CAPS(ON) JUST(LEFT) */

@ TYPE(INPUT) INTENS(HIGH) PAD(_) CAPS(ON))BODY+ SAMPLE - SET PF KEYS 13-24%COMMAND ===>_ZCMD +%

+Type the information where requested, or change the information shown+by typing over it; then, to set PF keys 1-12, press ENTER.++ PF13 %===>@QPF13 ++ PF14 %===>@QPF14 ++ PF15 %===>@QPF15 ++ PF16 %===>@QPF16 ++ PF17 %===>@QPF17 ++ PF18 %===>@QPF18 ++ PF19 %===>@QPF19 ++ PF20 %===>@QPF20 ++ PF21 %===>@QPF21 ++ PF22 %===>@QPF22 ++ PF23 %===>@QPF23 ++ PF24 %===>@QPF24 +++++++

図 30. PF キー 13 から 24 パネル定義 (XYZABC40) (1/2)

ISPF を使用したアプリケーション - PROFILE CLIST

168 z/OS V1R8.0 TSO/E CLIST

Page 189: TSO/E CLIST

)INITIF (&QPF13 = ’ ’)

&QPF13 = HELPIF (&QPF14 = ’ ’)

&QPF14 = SPLITIF (&QPF15 = ’ ’)

&QPF15 = ENDIF (&QPF16 = ’ ’)

&QPF16 = RETURNIF (&QPF17 = ’ ’)

&QPF17 = RFIND

IF (&QPF18 = ’ ’)&QPF18 = RCHANGE

IF (&QPF19 = ’ ’)&QPF19 = UP

IF (&QPF20 = ’ ’)&QPF20 = DOWN

IF (&QPF21 = ’ ’)&QPF21 = SWAP

IF (&QPF22 = ’ ’)&QPF22 = LEFT

IF (&QPF23 = ’ ’)&QPF23 = RIGHT

IF (&QPF24 = ’ ’)&QPF24 = CURSOR

)PROCIF (&ZCMD ¬= ’ ’) .MSG = ISPZ001IF (&QPF13 = ’ ’)

&QPF13 = HELPIF (&QPF14 = ’ ’)

&QPF14 = SPLITIF (&QPF15 = ’ ’)

&QPF15 = ENDIF (&QPF16 = ’ ’)

&QPF16 = RETURN

IF (&QPF17 = ’ ’)&QPF17 = RFIND

IF (&QPF18 = ’ ’)&QPF18 = RCHANGE

IF (&QPF19 = ’ ’)&QPF19 = UP

IF (&QPF20 = ’ ’)&QPF20 = DOWN

IF (&QPF21 = ’ ’)&QPF21 = SWAP

IF (&QPF22 = ’ ’)&QPF22 = LEFT

IF (&QPF23 = ’ ’)&QPF23 = RIGHT

IF (&QPF24 = ’ ’)&QPF24 = CURSOR

IF (.MSG ¬= ’ ’).RESP = ENTER

)END

図 30. PF キー 13 から 24 パネル定義 (XYZABC40) (2/2)

ISPF を使用したアプリケーション - PROFILE CLIST

第 12 章 CLIST の例 169

Page 190: TSO/E CLIST

LISTDSI 情報を含むデータ・セットの割り振り - EXPAND CLIST『LISTDSI 情報を含むデータ・セットの割り振り - EXPAND CLIST』 に示されている EXPAND CLIST は、より大きいスペースを持つデータ・セットを再割り振りし、そのデータ・セットがスペース不足にならないようにします。

EXPAND CLIST は LISTDSI ステートメントを使用して、1 次データ・セットの割り振りに関する情報を検索します。その情報は、CLIST 変数内に保管されます。次に CLIST は、その情報をサブプロシージャーへの入力として使用します。サブプロシージャーは TSO/E ALLOCATE コマンドを出し、1 次データ・セットと同じ属性を保有しながらも 1 次スペースは 2 倍である、新しいデータ・セットを作成します。

LISTDSI によって設定される CLIST 変数についての詳しい説明は、 187ページの『LISTDSI ステートメント』 を参照してください。

LISTDSI 情報を含むデータ・セットの割り振り - EXPAND CLIST

170 z/OS V1R8.0 TSO/E CLIST

Page 191: TSO/E CLIST

/**********************************************************************//* PROCEDURE: EXPAND *//* *//* INPUT: BASEDS - NAME OF DATA SET WITH THE ALLOCATION *//* ATTRIBUTES YOU WANT THE NEW DATA SET *//* TO HAVE. *//* NEWDS - NAME OF NEW DATA SET TO BE ALLOCATED. *//* *//* OUTPUT: NEW DATA SET ALLOCATED WITH THE SAME ATTRIBUTES AS *//* THE BASE DATA SET BUT WITH A PRIMARY ALLOCATION *//* TWICE THE SIZE OF THE BASE DATA SET. *//* *//* DESCRIPTION: ISSUE BUILT-IN FUNCTION &SYSDSN TO ENSURE THE BASE *//* DATA SET EXISTS. ISSUE LISTDSI STATEMENT TO SET *//* CLIST VARIABLES WITH ATTRIBUTES OF THE BASE DATA *//* SET. DOUBLE THE CONTENTS OF THE PRIMARY SPACE *//* VARIABLE, THEN USE THE VARIABLES AS INPUT TO *//* THE ALLOCATE COMMAND TO ALLOCATE A NEW DATA SET. *//**********************************************************************/

PROC 2 BASEDS NEWDSIF &SYSDSN(&BASEDS) = OK THEN +DO /* If the base data set exists */LISTDSI &BASEDS /* Issue LISTDSI statement */NGLOBAL &SYSPRIMARY,&SYSSECONDS /* Make LISTDSI variables avail- */SET &RC = &LASTCC /* able to subprocedures */IF &RC = 0 THEN +SYSCALL ALC &BASEDS &NEWDS /* Call subprocedure ALC */ELSE +DO /* If LISTDSI failed */WRITE &SYSMSGLVL1 /* First-level message */WRITE &SYSMSGLVL2 /* Second-level message */WRITE RETURN CODE = &RC /* Return code */WRITE REASON CODE = &SYSREASON /* LISTDSI reason code */END

ENDELSE +WRITE DATA SET &BASEDS NOT FOUND

ALC: PROC 2 BASE NEW /* Subprocedure ALC */SET NEWPRIMARY = 2 * &SYSPRIMARY /* Compute new primary space */ALLOCATE DA(&NEW) NEW SPACE(&NEWPRIMARY,&SYSSECONDS) +

LIKE(&BASE) CATALOG /* Allocate the new data set */WRITE DATA SET &NEW HAS BEEN ALLOCATED

END

図 31. EXPAND CLIST

LISTDSI 情報を含むデータ・セットの割り振り - EXPAND CLIST

第 12 章 CLIST の例 171

Page 192: TSO/E CLIST

LISTDSI 情報を含むデータ・セットの割り振り - EXPAND CLIST

172 z/OS V1R8.0 TSO/E CLIST

Page 193: TSO/E CLIST

第 13 章 参照

CLIST ステートメントの構文の読み方 . . . . . . . . . . . . . . . . 173ATTN ステートメント . . . . . . . . . . . . . . . . . . . . . . 176CLOSFILE ステートメント . . . . . . . . . . . . . . . . . . . . 177CONTROL ステートメント . . . . . . . . . . . . . . . . . . . . 177DATA-ENDDATA シーケンス . . . . . . . . . . . . . . . . . . . 180DATA PROMPT-ENDDATA シーケンス . . . . . . . . . . . . . . . 180ステートメント . . . . . . . . . . . . . . . . . . . . . . . . 180END ステートメント . . . . . . . . . . . . . . . . . . . . . . 182ERROR ステートメント . . . . . . . . . . . . . . . . . . . . . 182EXIT ステートメント . . . . . . . . . . . . . . . . . . . . . . 183GETFILE ステートメント . . . . . . . . . . . . . . . . . . . . 184GLOBAL ステートメント . . . . . . . . . . . . . . . . . . . . 185GOTO ステートメント. . . . . . . . . . . . . . . . . . . . . . 186IF-THEN-ELSE シーケンス . . . . . . . . . . . . . . . . . . . . 186LISTDSI ステートメント . . . . . . . . . . . . . . . . . . . . . 187

LISTDSI によって設定される CLIST 変数 . . . . . . . . . . . . . 190戻りコード . . . . . . . . . . . . . . . . . . . . . . . . . 194理由コード . . . . . . . . . . . . . . . . . . . . . . . . . 194

NGLOBAL ステートメント . . . . . . . . . . . . . . . . . . . . 195OPENFILE ステートメント . . . . . . . . . . . . . . . . . . . . 196PROC ステートメント . . . . . . . . . . . . . . . . . . . . . . 197PUTFILE ステートメント. . . . . . . . . . . . . . . . . . . . . 198READ ステートメント . . . . . . . . . . . . . . . . . . . . . . 199READDVAL ステートメント . . . . . . . . . . . . . . . . . . . 199RETURN ステートメント. . . . . . . . . . . . . . . . . . . . . 199SELECT ステートメント . . . . . . . . . . . . . . . . . . . . . 200単純 SELECT . . . . . . . . . . . . . . . . . . . . . . . . 200複合 SELECT . . . . . . . . . . . . . . . . . . . . . . . . 201

SET ステートメント . . . . . . . . . . . . . . . . . . . . . . 202SYSCALL ステートメント . . . . . . . . . . . . . . . . . . . . 203SYSREF ステートメント . . . . . . . . . . . . . . . . . . . . . 204TERMIN および TERMING ステートメント. . . . . . . . . . . . . . 204WRITE および WRITENR ステートメント . . . . . . . . . . . . . . 206END コマンド . . . . . . . . . . . . . . . . . . . . . . . . . 207EXEC コマンド . . . . . . . . . . . . . . . . . . . . . . . . 207

このセクションでは、CLIST ステートメントの構文を説明します。 CLIST の実行を開始したり終了したりするために用いる 2 つの TSO/E コマンド (すなわち、EXEC および END) については、「z/OS TSO/E コマンド解説書」を参照してください。

CLIST ステートメントの構文の読み方本章では、以下に定義する構造を使用して構文の説明を行います。

© Copyright IBM Corp. 1988, 2006 173

Page 194: TSO/E CLIST

構文図は、線に沿って、左から右、上から下に読みます。

二重矢印は、ステートメントの開始と終了を示します。�� STATEMENT ��

ステートメントの構文を示すのに複数行が必要な場合は、矢印でその連結を示します。�� STATEMENT ............ ............ ............ ............ �

� ............ ............ ............ ............ ......... ��

必須項目は、横の線 (主線) 上に示します。�� STATEMENT required_item ��

オプショナル項目は、メインパスの下に示します。�� STATEMENT

optional_item��

複数の項目から選択できる場合は、それらの選択項目を縦にスタックして示してあります。

v いずれかの項目を選択する必要がある 場合は、スタック内の項目の 1 つを主線上に示してあります。�� STATEMENT required_choice_1

required_choice_2��

v オプショナルの項目の場合は、スタック全体を主線の下に示してあります。�� STATEMENT

optional_choice_1optional_choice_2

��

主線の左上に戻る矢印は、その項目が反復可能であることを示します。

�� STATEMENT � repeatable_item ��

スタックの上の反復矢印は、スタックされている選択から複数の項目を選択できるか、1 つの選択項目を反復できることを示します。

�� STATEMENT � repeatable_item_1repeatable_item_2

��

デフォルトは主パス上に表示されます。たとえば、choice_2 も choice_3 も選択しない場合は、choice_1 と見なされます。(デフォルトは、明確化のためにコーディングしても構いません。)

�� STATEMENTchoice_1

choice_2choice_3

��

CLIST ステートメントの構文の読み方

174 z/OS V1R8.0 TSO/E CLIST

Page 195: TSO/E CLIST

構文図が大き過ぎるか複雑過ぎるために印刷または表示できない場合は、部分的に主構文図の下に詳細内容として示します。�� STATEMENT required_variable

’optional_parameter’FRAGMENT ��

FRAGMENT:OPERAND

optional_choice_1aoptional_choice_1b

optional_choice_2aoptional_choice_2b

�optional_choice_3aoptional_choice_3b

optional_choice_4aoptional_choice_4b

上記の構文図は、次の構文図と同じです。�� STATEMENT required_variable

’optional_parameter’OPERAND �

�optional_choice_1aoptional_choice_1b

optional_choice_2aoptional_choice_2b

optional_choice_3aoptional_choice_3b

�optional_choice_4aoptional_choice_4b

��

CLIST ステートメントでは、大文字、数字、および下記にリストしてある記号セットは、構文で示されているとおりに使用してください。

アポストロフィまたは単一引用符’

アスタリスク *

コンマ ,

等号 =

括弧 ( )

ピリオド .

アンパーサンド &

パーセント %

コロン :

構文に出てくるイタリックの小文字および記号は、そのステートメントで特定の情報に置き換えられる変数情報を表しています。たとえば、name が構文の中に出てきた場合、ステートメントを入力するときに、この変数を特定の値 (たとえば、ALPHA) に置き換えます。

ハイフンは小文字の単語および記号を結び付けて、単一の変数を形成させます。たとえば、member-name が構文の中に出てきた場合、ステートメントでは、その変数を特定の値 (たとえば、BETA) に置き換えます。

英数字 : 特に指定のない限り、英数字とは次のいずれかを指します。

CLIST ステートメントの構文の読み方

第 13 章 参照 175

Page 196: TSO/E CLIST

英字 : A から Z

数値 : 0 から 9

特殊 : $ # @

CLIST ステートメントのプレフィックスとして、英字で始まる 1 から 31 文字の英数字から成るラベルを付けることができます。 このラベルを、別の行に置くこともできます。ラベル名の直後にはコロンが必要です。たとえば、次のとおりです。

label: +

v IF A= ...

ATTN ステートメントATTN ステートメントは、ユーザーがアテンション割り込みを行ったときに TSO/E

が実行するルーチンを定義する場合に使用します。アテンション割り込みは、ユーザーが CLIST の処理を終了または変更できるようにその CLIST の実行を停止します。

��label:

ATTNOFFaction ��

label

この ATTN ステートメントにブランチするために、CLIST が GOTO ステートメントで参照できる名前。 label は、英字で始まる 1 から 31 文字の英数字です。

OFF以前のアテンション処置がすべて無効になります。 ATTN OFF は、アテンション・ルーチンの中では使用しないでください。

action

次のいずれかを指定します。

1. 1 個の TSO/E コマンド (通常、アテンション処理 CLIST を呼び出す EXEC

コマンド)、またはヌル (ブランク) 行。処置で実行できる TSO/E コマンドは 1 つだけですが、アテンション処理 CLIST は複数の TSO/E コマンドを実行することができます。

2. アテンション出口ルーチンを構成する DO-END シーケンス。このルーチンには、RETURN ステートメントまたは EXIT ステートメント、および 1 つの TSO/E コマンドまたはヌル行を含む CLIST ステートメントを入れることもできます。

ヌル行が実行されると、TSO/E はアテンションを無視し、実行は割り込みが行われた場所から継続されます。

EXIT ステートメントが実行されると、アテンションは無視され、CLIST は終了します。

TSO/E コマンドが実行されると、そのコマンドに制御が渡されます。

TSO/E コマンド、EXIT ステートメント、またはヌル行が実行されると、TSO/E

はその他のすべてを無視します。

CLIST ステートメントの構文の読み方

176 z/OS V1R8.0 TSO/E CLIST

Page 197: TSO/E CLIST

アテンション・ルーチンが、CLIST を終了させる以外の処理を行う場合は、CONTROL ステートメントの MAIN オペランドを使用して、アテンション割り込みが行われたときにその CLIST が入力スタックから消去されないように保護してください。詳しくは、『CONTROL ステートメント』 を参照してください。

CLOSFILE ステートメントCLOSFILE ステートメントは、OPENFILE ステートメントによって以前にオープンされた QSAM ファイルをクローズする場合に使用します。各 CLOSFILE ステートメントでクローズできるファイルは 1 つだけです。

注: CLOSFILE ステートメントは、対応する OPENFILE ステートメントと同じCLIST 内で出す必要があります。

��label:

CLOSFILE file_name&symbolic_variable_name

��

label

この CLOSFILE ステートメントにブランチするために、CLIST が GOTO ステートメントで参照できる名前。label は、英字で始まる 1 から 31 文字の英数字です。

file_name | symbolic_variable_name

file_name

現在のセッションで割り振られたときにファイル (データ・セット) に割り当てられたファイル名 (ddname)

symbolic_variable_name

file_name を割り当てた記号変数

CONTROL ステートメントCONTROL ステートメントは、CLIST に処理オプションを定義する場合に使用します。このオプションは、CONTROL が実行されてから CLIST が終了するまで、あるいは CLIST が別の CONTROL ステートメントを出すまで有効です。

次の変数で CONTROL オプションをオンまたはオフに設定することもできます。

&SYSPROMPT ON は PROMPT に相当し、OFF は NOPROMPT

に相当します。

&SYSSYMLIST ON は SYMLIST に相当し、OFF は NOSYMLIST

に相当します。

&SYSCONLIST ON は CONLIST に相当し、OFF は NOCONLIST

に相当します。

&SYSLIST ON は LIST に相当し、OFF は NOLIST に相当します。

&SYSASIS ON は ASIS に相当し、OFF は CAPS に相当します。

ATTN ステートメント

第 13 章 参照 177

Page 198: TSO/E CLIST

&SYSMSG ON は MSG に相当し、OFF は NOMSG に相当します。

&SYSFLUSH ON は FLUSH に相当し、OFF は NOFLUSH に相当します。

CONTROL ステートメントも、上記のいずれの変数も出さない CLIST は、オプション NOPROMPT、NOSYMLIST、NOLIST、NOCONLIST、CAPS、MSG、およびFLUSH を指定して実行されます。ユーザーは、PROMPT および LIST を、CLIST

を呼び出すために出される EXEC コマンドまたはサブコマンドのキーワードとして入力することによって設定することができます。

CONTROL にはデフォルトのオペランドはありません。オペランドを指定せずにCONTROL を入力すると、システムは、システム・デフォルト、EXEC コマンド、または前の CONTROL ステートメントによってすでに定義されているオプションを使用します。さらに、オペランドが指定されていない場合、システムは現在有効なオプションを表示します。

注: CONTROL オペランドを記号変数として入力することはできません。��

label:CONTROL

PROMPTNOPROMPT

SYMLISTNOSYMLIST

LISTNOLIST

�CONLISTNOCONLIST

CAPSNOCAPSASIS

MSGNOMSG

FLUSHNOFLUSH

MAIN�

�END(string)

��

label

この CONTROL ステートメントにブランチするために、CLIST が GOTO ステートメントで参照できる名前。label は、英字で始まる 1 から 31 文字の英数字です。

PROMPT |NOPROMPT

PROMPTCLIST 内の TSO/E コマンドは、端末に入力を促すプロンプトを出すことができます。(PROFILE コマンドの PROMPT オペランドも有効になっていなければなりません。)

NOPROMPTCLIST 内の TSO/E コマンドは、端末に入力を促すプロンプトを出すことはできません。

SYMLIST | NOSYMLIST

SYMLIST各実行可能ステートメントは、記号置換のためにそれがスキャンされる前に端末に表示されます。実行可能ステートメントには、コマンド、サブコマンド、および CLIST ステートメントがあります。

NOSYMLIST実行可能ステートメントは、記号置換の前に端末に表示されません。

CONTROL ステートメント

178 z/OS V1R8.0 TSO/E CLIST

Page 199: TSO/E CLIST

LIST | NOLIST

LISTコマンドおよびサブコマンドは、記号置換の後で、なおかつ実行の前に端末に表示されます。

NOLISTコマンドおよびサブコマンドは端末に表示されません。

CONLIST | NOCONLIST

CONLISTCLIST ステートメントは、記号置換の後で、なおかつ実行の前に端末に表示されます。

NOCONLISTCLIST ステートメントは、記号置換の後に端末に表示されません。

CAPS | NOCAPS | ASIS

CAPS文字ストリングは、プロセスが行われる前に大文字に変換されます。

NOCAPS または ASIS文字ストリングは、プロセスが行われる前に大文字に変換されません。

MSG | NOMSG

MSGCLIST 内のコマンドおよびステートメントからの通知メッセージは、端末に表示されます。

NOMSGCLIST 内のコマンドおよびステートメントからの通知メッセージは、端末に表示されません。

FLUSH | NOFLUSH

FLUSHシステムは、NOFLUSH または MAIN が検出されない限り、入力スタックと呼ばれるネストされた CLIST のキューを消去 (フラッシュ) することができます。システムは、通常、実行エラーが起こるとスタックをフラッシュします。

NOFLUSHシステムは、エラー発生時に CLIST をフラッシュすることはできません。

注: CLIST がフラッシュされないよう保護するには、その CLIST にエラー・ルーチンが含まれている必要があります。

MAINこれは、TSO/E 環境内のメイン CLIST で、システムからのスタック・フラッシュ要求によって削除することはできません。 MAIN が指定されている場合、FLUSH が有効であるかどうかに関係なく、この CLIST に関して NOFLUSH

条件が想定されます。このオペランドは、CLIST を終了させる以外のすべてのことを実行する、アテンション・ルーチンを含んでいる CLIST の場合には必須です。

CONTROL ステートメント

第 13 章 参照 179

Page 200: TSO/E CLIST

END(string)DO または SELECT ステートメント、またはサブプロシージャーを終了させるEND ステートメントの代わりとして CLIST によって認識される文字ストリング。string は英字で始まる 1 から 4 文字の英数字です。

DATA-ENDDATA シーケンスコマンドまたはサブコマンドが CLIST ステートメントと解釈されないようにしたい場合には、DATA-ENDDATA シーケンスを使用します。CLIST は、DATA-ENDDATA シーケンス内のコマンドとサブコマンドのグループを、無視し、実行のために TSO/E に渡すデータであると見なします。

CLIST ステートメントは、TSO/E がそれをコマンドまたはサブコマンドとして実行しようとするので、DATA-ENDDATA シーケンス内に組み込まないでください。

記号置換は、そのグループの実行前に行われます。

��label:

DATA � commandssubcommands

ENDDATA ��

label

この DATA-ENDDATA シーケンスにブランチするために、CLIST が GOTO ステートメントで参照できる名前。label は、英字で始まる 1 から 31 文字の英数字です。

commands | subcommands

無視され、実行のための TSO/E に渡されるデータ。

DATA PROMPT-ENDDATA シーケンスDATA PROMPT-ENDDATA シーケンスは、TSO/E コマンドまたはサブコマンドによって出されたプロンプトに対する応答と指定する場合に使用します。このシーケンスの直前にプロンプトを出しているコマンドまたはサブコマンドが置かれていない場合は、エラー状態 (エラー・コード 968) になります。��

label:DATA PROMPT responses ENDDATA ��

注: DATA PROMPT-ENDDATA シーケンスを使用するときは、次の規則が適用されます。

v CLIST はプロンプトを出すことを許可しなければならない。v 記号置換は、応答が送信される前に実行されます。

ステートメントDO ステートメントは、コマンド、サブコマンド、およびステートメントのシーケンス (DO シーケンス) を実行する場合に使用します。DO ステートメントを使用すると、DO シーケンスを 1 回だけあるいは反復して実行することもでき、さらに、ある特定の条件が真である場合に実行することもできます。

CONTROL ステートメント

180 z/OS V1R8.0 TSO/E CLIST

Page 201: TSO/E CLIST

DO シーケンスを 1 回だけ 実行するには、DO および END ステートメントだけを組み込みます。

DO シーケンスを反復して 実行するには、開始値、TO 値、およびオプショナルでBY 値を含んだ変数を組み込みます。

DO シーケンスを条件付き で実行するには、WHILE または UNTIL 節を組み込みます。WHILE 節は、先行判断を含んでおり、比較式が真である間だけ実行します。UNTIL 節は、後判断を含んでおり、比較式が真になるまで実行します。

DO シーケンスを、反復してなおかつ 条件付きで (複合 DO)、実行するには、WHILE 節または UNTIL 節 (あるいはその両方) が、from 節、TO 節、およびオプションの BY 節の後に続いている必要があります。

DO ステートメントは、DO シーケンスの始めを示します。END ステートメントはDO シーケンスを終了させます。TSO/E END コマンドを DO シーケンス内で使用したい場合、CONTROL ステートメントの END オペランドを使用して、END ステートメントを再定義する必要があります。��

label:DO 実行のタイプ (DO-sequence)

label:END ��

実行のタイプ

反復実行先行判断実行後判断実行

反復実行BY 1

variable = from_expr. TO to_expr.BY by_expr.

先行判断実行WHILE condition

後判断実行UNTIL condition

label

この DO ステートメントにブランチするために、CLIST が GOTO ステートメントで参照できる名前。label は、英字で始まる 1 から 31 文字の英数字です。

variable

DO シーケンスの実行を制御する記号変数。実行のつど、この変数値はある特定の数値だけ増加あるいは減少します。この値が特定の限界を超えると、CLIST

は DO シーケンスの実行を停止し、END ステートメントの後に次の命令を実行します。

from_expression

10 進整数、または 10 進整数に評価される式であり、DO 変数の初期値を形成します。

DO ステートメント

第 13 章 参照 181

Page 202: TSO/E CLIST

to_expression

10 進整数、または 10 進整数に評価される式であり、DO 変数の終了値を形成します。

by_expression

10 進整数、または 10 進整数に評価される式で、DO 変数は、DO シーケンスの実行のつどその分だけ増加または減少します。

condition

比較式、または論理演算子によって順序付けられる比較式のシーケンス。この式(1 つまたは複数) には、2 バイト文字セットの文字を含む文字データを入れることができます。

BY 節がない場合、DO 変数の値は、DO シーケンスの実行ごとに 1 ずつ増加します。

by-expression が、負の数字に評価される場合、または負符号 (-) で始まる数字から成る場合、DO 変数はその数値分だけ減少します。

DO シーケンスのステートメントが DO 変数を修正した場合、CLIST は、DO シーケンスを反復するかどうかの判断に、その新しい値を使用します。

DO シーケンスには、ネストされた DO ステートメントを含めることができます。

END ステートメントEND ステートメントは、DO シーケンス、SELECT ステートメント、またはサブプロシージャーの終わりを示す場合に使用します。 END ステートメントは、DO シーケンス、SELECT ステートメント、またはサブプロシージャーの後に、単独で 1

行に置く必要があります。�� END ��

END ステートメントは、TSO/E END コマンドとは別のものです。 END ステートメントと END コマンドの両方を CLIST で使用する場合、END ステートメントを再定義することによって、それらを区別する必要があります。 CONTROL ステートメントを使用して、次のように END ステートメントの再定義を行うことができます。

CONTROL END(string)

ここで、string は 英字で始まる 1 から 4 文字の英数字です。このストリングを、CLIST 内の END ステートメントの代わりに使用してください。

ERROR ステートメントERROR ステートメントは、現在実行している CLIST 内のコマンド、サブコマンド、および CLIST ステートメントからの非ゼロ戻りコードがあるかどうかを検査する環境をセットアップする場合に使用します。エラー・コードが検出されると、処理は、そのエラーを登録したコマンド、サブコマンド、または CLIST ステートメン

DO ステートメント

182 z/OS V1R8.0 TSO/E CLIST

Page 203: TSO/E CLIST

トでアクティブな ERROR ルーチンから続行します。 ERROR ルーチンがアクティブではない場合、CLIST はそのエラーの重大度に応じて、終了するか、続行します。

エラー出口は、システムによって入力スタックからフラッシュされないように保護する必要があります。スタックのフラッシュによって、エラーの戻りコードが有効でなくなります。スタックのフラッシュを防止するには、CONTROL ステートメントの MAIN または NOFLUSH オペランドを使用します。

オペランドを指定せずに ERROR を入力すると、CLIST は、エラーになって終了した CLIST 内のコマンド、サブコマンド、またはステートメントを表示します。説明を行う CLIST ERROR メッセージは表示されません。&LASTCC は 0 にリセットされ、CLIST は次の順次ステートメントまたはコマンドから続行されます。

その CLIST で LIST オプションが要求された場合、ヌルの ERROR ステートメントは無視されます。

ERROR ステートメントは、その ERROR ステートメントへのブランチをひき起こす原因となるステートメントよりも前に置く必要があります。��

label:ERROR

OFFaction

��

label

この ERROR ステートメントにブランチするために、CLIST が GOTO ステートメントで参照できる名前。label は、英字で始まる 1 から 31 文字の英数字です。

OFF | action

OFFERROR ステートメントによって以前セットアップされた処置はすべて無効になります。

action

実行可能ステートメントで、一般に、ルーチンを構成する DO シーケンス。この action (処置) では、TSO/E コマンド、サブコマンド、およびCLIST ステートメントを実行することができます。

注: DO シーケンス・ルーチンの中で ERROR OFF をコーディングすると、そのルーチンから CLIST に制御が戻らなくなります。

EXIT ステートメントEXIT ステートメントは、現在実行している CLIST を呼び出したプログラムに制御を戻す場合に使用します。この出口に関連する戻りコードは、ユーザーが指定することもできますし、デフォルト 0 をとることもできます。

他の CLIST によって呼び出された CLIST は、ネストされているといいます。複数のレベルのネストが可能です。ネストの構造は階層と呼ばれます。制御が呼び出し元の CLIST に戻されると、その階層内の位置が「上がります」。 TSO/E 自身は、階層の最上位に位置しています。

ERROR ステートメント

第 13 章 参照 183

Page 204: TSO/E CLIST

EXIT を入力すると、制御は 1 レベル上がります。QUIT オペランドを指定してEXIT を入力すると、システムは、最初に見つけた CLIST で、MAIN またはNOFLUSH が有効になっているものに制御を渡してそのレベルを上げようとします( 177ページの『CONTROL ステートメント』 を参照してください)。そのようなCLIST が検出されない場合、制御は TSO/E に渡され、それによって、すべてのCLIST が入力スタックからフラッシュされ、制御は端末に渡されます。��

label:EXIT

CODE(expression) QUIT��

label

この EXIT ステートメントにブランチするために、CLIST が GOTO ステートメントで参照できる名前。label は、英字で始まる 1 から 31 文字の英数字です。

CODE (expression)CLIST の定義による戻りコード。expression は、正の整数、ゼロ、あるいは 10

進整数を求める式でなければなりません。CODE が指定されていない場合、システムはデフォルトの戻りコードとして 0 を使用します。

QUITMAIN または NOFLUSH オプションがアクティブになっている CLIST が検出されるか、あるいは TSO/E が制御を受け取るまで、制御はネストされた階層の上位に向けて渡されます。

GETFILE ステートメントGETFILE ステートメントは、OPENFILE ステートメントによってオープンされたQSAM ファイルからレコードを読み取る場合に使用します。 GETFILE が実行されるたびに、レコードが 1 つずつ取り出されます。

GETFILE の実行後、ファイル名変数には取得したレコードが入れられます。GETFILE を使用して端末からデータを読み取ると、そのデータは大文字に変換されます。

注: GETFILE ステートメントは、対応する OPENFILE ステートメントと同じCLIST 内で出す必要があります。

��label:

GETFILE file_name ��

label

この GETFILE ステートメントにブランチするために、CLIST が GOTO ステートメントで参照できる名前。label は、英字で始まる 1 から 31 文字の英数字です。

file_name

現在のセッションで割り振られたときにファイル (データ・セット) に割り当てられたファイル名 (ddname)。ファイル名を含んだ記号変数を指定しないでください。

EXIT ステートメント

184 z/OS V1R8.0 TSO/E CLIST

Page 205: TSO/E CLIST

GLOBAL ステートメントGLOBAL ステートメントは、ネストされた CLIST 間で値を共用する場合に使用します。ネストされた CLIST の階層では、最高位の CLIST に、ネストされたチェーン全体で使用される最大数の変数を持った GLOBAL ステートメントが入っている必要があります。下位レベルの CLIST には、その CLIST が最高位の CLIST 内で定義されたグローバル変数を参照するようになっている場合には、GLOBAL ステートメントが組み込まれていなければなりません。

注: GLOBAL ステートメントは、CLIST のグローバル変数に REXX EXEC アクセスを付与するために使用することはできません。REXX EXEC は CLIST 変数にアクセスすることはできません。

グローバル変数は定位置であり、その順序は、最高位 CLIST 内の GLOBAL ステートメントによって定義されます。これと同じ変数セットを参照する下位レベルのCLIST はすべて、この順序に従って同じ値を参照しなければなりません。変数名は、下位レベル CLIST に固有のものとすることができます。これは、どのレベルのGLOBAL ステートメントの場合でも、その N 番目の名前は、各レベルの記号名が異なっていても同じ値を参照するということを意味します。たとえば、ネストされた CLIST が 5 番目のグローバル変数を参照した場合、その CLIST は 5 つのグローバル変数を定義する必要があります。また、その CLIST が 2 番目のグローバル変数を参照する場合は、2 つのグローバル変数を定義するだけでかまいません。

多数の GLOBAL ステートメントは累積されます。たとえば、CLIST に、3 つの変数を定義している GLOBAL ステートメントがあり、その後に 2 つの変数を定義している別の GLOBAL ステートメントがある場合、5 つの変数が定義されたことになります。後者の GLOBAL ステートメントは、4 番目と 5 番目の変数を定義します。

GLOBAL ステートメントは、必ず、その変数 (variable) を使用または定義するステートメントの前に置いてください。

��label:

GLOBAL variable_1 �

variable��

label

この GLOBAL ステートメントにブランチするために、CLIST が GOTO ステートメントで参照できる名前。label は、英字で始まる 1 から 31 文字の英数字です。

variable_1 / variable

この CLIST の記号変数。この名前は、この GLOBAL ステートメントによって作成されている変数を参照する場合と、最高位 CLIST 内の GLOBAL ステートメントによって作成された変数を参照する場合があります。

GLOBAL ステートメント

第 13 章 参照 185

Page 206: TSO/E CLIST

GOTO ステートメントGOTO ステートメントは、CLIST 内で無条件ブランチを行う場合に使用します。他の CLIST にブランチすることはできません。��

label:GOTO target

&variable��

label

この GOTO ステートメントにブランチするために、CLIST が GOTO ステートメントで参照できる名前。label は、英字で始まる 1 から 31 文字の英数字です。

target | variable

target

ステートメントまたはコマンド上のラベル。

variable

有効なラベルを含む記号変数。

GOTO ステートメントは、以下のようにブランチすることはできません。v 別の CLIST へv サブプロシージャーの PROC ステートメントへv 1 つのサブプロシージャーから別のサブプロシージャーへv サブプロシージャーから CLIST のメイン・プロシージャーへ

IF-THEN-ELSE シーケンスIF-THEN-ELSE シーケンスは、条件を定義し、その条件の真偽をテストし、さらにテストの結果に基づいて処置を開始する場合に使用します。同じ論理行に THEN とELSE をコーディングしないでください。��

label:IF logical_expression THEN

action ELSEaction

��

label

この IF-THEN-ELSE シーケンスにブランチするために、CLIST が GOTO ステートメントで参照できる名前。label は、英字で始まる 1 から 31 文字の英数字です。

logical_expression

比較式、または論理演算子によって順序付けられる比較式のシーケンス。この式(1 つまたは複数) には、2 バイト文字セットの文字を含む文字データを入れることができます。

action

実行可能なコマンド、サブコマンド、または CLIST ステートメント。(2 つ以上のステートメントから成る処置は、DO シーケンスの中に囲んでください。)

THEN action (処置) は、論理式が真である場合に呼び出されます。ELSE action

(処置) は、論理式が偽である場合に呼び出されます。ヌルの THEN またはヌルの ELSE ステートメントが実行されると、制御は IF-THEN-ELSE シーケンスの後にある次の順次ステートメントに渡されます。

GOTO ステートメント

186 z/OS V1R8.0 TSO/E CLIST

Page 207: TSO/E CLIST

この処置は、必ず、THEN 節または ELSE 節と同じ行上に置くか、継続文字によってその行に連結してください。正しい例を以下に示します。

IF &FOOTPRINT = 0 THEN SET ECODE = 4

IF &FOOTPRINT = 0 THEN +SET ECODE = 4

IF &FOOTPRINT = 0 THEN +DO

SET ECODE = 4...END

LISTDSI ステートメントLISTDSI ステートメントは、DASD 上で使用できるデータ・セットに関する情報を入手する場合に使用します。LISTDSI ステートメントによって、データ・セットの割り振り、保護、およびディレクトリーに関する情報を検索し、CLIST 変数内にその情報を保管することができます。

LISTDSI ステートメントは、世代別データ・グループ (GDG) データ・セットをサポートしますが、次のタイプのデータまたはデータ・セットはサポートしません。

v テープにあるデータ

v 相対 GDG 名

v UNIX ファイル・システムのデータ・セット

サポートしないデータまたはデータ・セットを使用すると、予期できない結果が生じる場合があります。

CLIST は、LISTDSI 情報を使用して、そのデータ・セットが正しいサイズであるかどうか、所定のタスク用に正しい編成またはフォーマットになっているかどうかを判別します。さらに、CLIST は、LISTDSI 情報を ALLOCATE コマンドへの入力として使用して、古いデータ・セットの一部の属性を使用し、その他の属性は変更することによって新しいデータ・セットを作成します。

LISTDSI を使用して VSAM データ・セットに関する情報を検索すると、CLIST

は、ボリューム通し ID (変数 &SYSVOLUME 内)、総称装置タイプ (変数&SYSUNIT 内)、およびデータ・セット編成 (変数 &SYSDSORG 内) だけを保管します。 CLIST は、他の LISTDSI 変数をすべて疑問符 (?) に設定します。

LISTDSI を使用して複数のボリューム・データ・セットに関する情報を検索する場合、CLIST は、最初のボリュームに関する情報だけを保管します。同様に、ファイル名または PREALLOC パラメーターを指定して、その同じファイル名に他のデータ・セットを割り振った場合、システムが、希望したデータ・セットに関する情報を検索しない場合があります。

LISTDSI を使用して FILE に関する情報を取得する際、そのファイルが複数のデータ・セットの連結からなっている場合には、LISTDSI は、その FILE 内の最初のデータ・セットに関する情報だけを戻します。同様に、FILE がマルチボリューム・データ・セットを指す場合、LISTDSI は最初のボリュームに関する情報だけを戻し、そのデータがマルチボリュームであることを検出することはできません。

IF-THEN-ELSE シーケンス

第 13 章 参照 187

|

|

|

|

|

|

|

Page 208: TSO/E CLIST

データ・セットが SMS によって管理されるデータ・セットで、マルチボリュームに拡張することが可能だがまだ拡張されていない場合、そのデータ・セットは、2

番目のボリュームに拡張されるまで、LISTDSI に単一ボリューム・データ・セットと見なされます。いずれの場合も、LISTDSI は、要求によって参照された最初のボリュームに関する情報だけを検索します。

注: LISTDSI は、SYSnnnnn の形式のファイル名を、システム生成のファイル名と見なします。SYSnnnnn の形式のファイル名を用いて、複数回にわたって事前割り振りされたデータ・セットに関する情報を入手する場合に LISTDSI を使用すると、既存のファイルが意に反して解放されてしまうことがあります。

LISTDSI ステートメントによって出された TSO/E メッセージを抑止するには、CONTROL NOMSG ステートメントを使用します。 CONTROL ステートメントについては、 177ページの『CONTROL ステートメント』を参照してください。��

label:LISTDSI data_set_name

VOLUME(serial_id)PREALLOC

file_name FILE

�NODIRECTORYDIRECTORY

NOSMSINFO

SMSINFO RECALLNORECALL

��

label

この LISTDSI ステートメントにブランチするために、CLIST が GOTO ステートメントで参照できる名前。label は、英字で始まる 1 から 31 文字の英数字です。

data_set_name | file_name

data_set_name

情報を検索したいデータ・セットの名前。

file_name

情報を検索したい割り振り済みファイル (ddname) の名前。

VOLUME(serial_id) | PREALLOCVOLUME(serial_id)データ・セットが入っているボリュームの通し番号を指定します。

PREALLOC指定されたデータ・セットの位置が、カタログ検索によって決定されるわけではなく、そのデータ・セットの割り振りによって決定されるものであることを指定します。PREALLOC によって、前もって割り振られたデータ・セットの位置を、カタログを検索せずに突き止めることができ、また、マウントされていないボリュームをマウントすることができます。

VOLUME も PREALLOC も指定しない場合、システムは、データ・セットの位置をカタログ検索によって突き止めます。

file_name を指定すると、LISTDSI は VOLUME および PREALLOC パラメーターを無視します。

LISTDSI ステートメント

188 z/OS V1R8.0 TSO/E CLIST

Page 209: TSO/E CLIST

FILEdata_set_name ではなく、file_name が提供されたことを示します。 FILE を指定しないと、LISTDSI はデータ・セット名が提供されたものと見なします。

DIRECTORY | NODIRECTORY

DIRECTORY区分データ・セットに関するディレクトリー情報が必要であることを示します。

NODIRECTORY区分データ・セットに関するディレクトリー情報が必要でないことを示します。ディレクトリー情報が必要ではない場合、NODIRECTORY によって、処理速度が大幅に上がります。NODIRECTORY はデフォルトです。

SMSINFO | NOSMSINFOSMS 管理データ・セットに関する SMS 情報 (たとえば、データ・セットのタイプ、使用済みスペース、データ名、ストレージ名、および管理クラス名など)

が必要であるかどうかを示します。 190ページの表 11 も参照してください。

SMSINFOdata_set_name または file_name に関する SMS 情報が必要であることを示します。data_set_name も file_name も、VSAM 索引またはデータ・コンポーネントを参照することはありません。

指定されたデータ・セットが SMS によって管理されているものでない場合、LISTDSI は継続しますが、該当の CLIST 変数に SMS 情報は入れられません。

データ・セットに関する SMS 情報が必要な場合にだけ SMSINFO を指定するようにしてください。NOSMSINFO (デフォルト) は、LISTDSI ステートメントの実行時間を大幅に短縮します。

NOSMSINFO指定されたデータ・セットに関する SMS 情報は必要でないことを示します。 NOSMSINFO はデフォルトです。

RECALL | NORECALL

RECALLHSM によってマイグレーションされたデータ・セットの再呼び出しが必要であることを示します。システムは、そのマイグレーション・レベルあるいは、そのマイグレーション先の装置のタイプと関係なく、データ・セットを再呼び出しします。

NORECALLデータ・セットの再呼び出しは必要ないことを示します。データ・セットがマイグレーション済みになっている場合、システムはエラー・メッセージを表示します。

RECALL も NORECALL も指定しない場合、システムは、それが直接アクセス記憶装置 (DASD) にマイグレーションされた場合にのみ、データ・セットを再呼び出しします。

LISTDSI ステートメント

第 13 章 参照 189

Page 210: TSO/E CLIST

LISTDSI 関数は、構文上誤りのあるデータ・セット名がその関数に渡されると、メッセージ IKJ56709I を出します。このメッセージが表示されないようにするには、CONTROL NOMSG を使用します。

PROC 0SET DSNAME = ABCDEFGHIJ.XYZ /* Syntactically not valid name,

/* because a qualifier is longer/* than 8 characters

CONTROL NOMSG /* Set OFF to suppress any LISTDSI/* TSO/E messages

LISTDSI &DSNAME /* Obtain data set informationWRITE Return code from LISTDSI is ==> &LASTCCEXIT CODE(0)

LISTDSI によって設定される CLIST 変数表 11 は、LISTDSI によって設定される CLIST 変数の内容を示したものです。VSAM データ・セットの場合、変数 &SYSVOLUME、&SYSUNIT、および&SYSDSORG のみが正確です。それ以外の変数はすべて疑問符 (?) に設定されます。

表 11. LISTDSI によって設定される変数

変数 内容

&SYSDSNAME データ・セット名

&SYSVOLUME ボリューム通し ID

&SYSUNIT ボリュームが置かれている総称装置タイプ。たとえば、『3390』 など。

&SYSDSORG データ・セット編成 :

PS 物理順次

PSU 物理順次移動不可

DA 直接編成

DAU 直接編成移動不可

IS 索引順次

ISU 索引順次移動不可

PO 区分編成

POU 区分編成移動不可

VS VSAM

??? 不明

LISTDSI ステートメント

190 z/OS V1R8.0 TSO/E CLIST

Page 211: TSO/E CLIST

表 11. LISTDSI によって設定される変数 (続き)

変数 内容

&SYSRECFM レコード・フォーマット。以下のような 1 から 6 文字の組み合わせ。

U 未定義長レコード

F 固定長レコード

V 可変長レコード

T 装置のトラックあふれ機構を使用して書き込まれるレコード (3375、3380、および3390 では、トラックあふれ機構はサポートされません)

B ブロック化されたレコード

S 標準またはスパンされた可変ブロックとして書き込まれるレコード

A ASCII 制御文字を含むレコード

M 機械コード制御文字を含むレコード

?????? 不明

&SYSLRECL 論理レコード長

&SYSBLKSIZE ブロック・サイズ

&SYSKEYLEN キーの長さ

&SYSALLOC 割り振り、スペース単位

&SYSUSED 使用済み割り振り (スペース単位) 拡張区分データ・セット(PDSE) に対しては『N/A』 が戻されます。PDSE の使用済みスペースについては、&SYSUSEDPAGES の説明を参照してください。

&SYSUSEDPAGES 拡張区分データ・セット (PDSE) の使用済みスペースを 4K

ページ単位で示します。

&SYSPRIMARY スペース単位での 1 次割り振り

&SYSSECONDS スペース単位での 2 次割り振り

&SYSUNITS スペース単位 :

CYLINDER スペース: シリンダー単位

TRACK スペース: トラック単位

BLOCK スペース: ブロック単位

???????? スペース: 単位は不明

&SYSEXTENTS 割り振られるエクステント数

&SYSCREATE 作成日を年/日のフォーマットで示します。例 : 1985/102

&SYSREFDATE 最終参照日付を年/日 (たとえば、1995/107) のフォーマットで示します。 (DIRECTORY を指定すると、日付が更新されます。)

&SYSEXDATE 満了日を年/日 (たとえば、1995/365) のフォーマットで示されます。

LISTDSI ステートメント

第 13 章 参照 191

Page 212: TSO/E CLIST

表 11. LISTDSI によって設定される変数 (続き)

変数 内容

&SYSPASSWORD パスワード表示

NONE パスワード保護なし

READ 読み取り用パスワードが必須

WRITE 書き込み用パスワードが必須

&SYSRACFA RACF 表示

NONE RACF 保護なし

GENERIC 総称プロファイルがこのデータ・セットを扱う

DISCRETE 個別プロファイルがこのデータ・セットを扱う

&SYSUPDATED 変更インディケーター

YES データ・セットが更新された。

NO データ・セットは更新されていない。

&SYSTRKSCYL &SYSUNIT 変数で示される装置のシリンダーあたりのトラック数

&SYSBLKSTRK &SYSUNIT 変数内で示された装置のトラック当たりの&SYSBLKSIZE のブロック数。PDSE の場合、ブロック・サイズ &SYSBLKSIZE が PDSE のトラックを「スパンする」ことができるため、『N/A』 の値が戻されます。&SYSUSEDPAGES に含まれる値は、PDSE のスペース使用量のより重要な測定値です。

&SYSADIRBLK 区分データ・セット (PDS) に対しては、割り振られたディレクトリー・ブロック数が戻されます。拡張区分データ・セット (PDSE) に対しては、そのディレクトリーへの静的割り振りは行われないため、″NO_LIM″ が戻されます。この値が戻されるのは、LISTDSI ステートメントに DIRECTORY が指定されている場合だけです。

&SYSUDIRBLK 区分データ・セット (PDS) に対しては、使用されたディレクトリー・ブロック数が戻されます。拡張区分データ・セット (PDSE) に対しては、静的な値でないため ″N/A″ が戻されます。この値が戻されるのは、LISTDSI ステートメントに DIRECTORY が指定されている場合だけです。

&SYSMEMBERS メンバー数。これは、DIRECTORY が指定されたときに、区分データ・セットに対してのみ戻されます。

&LASTCC LISTDSI 戻りコード

&SYSREASON LISTDSI 理由コード

&SYSMSGLVL1 エラーが発生した場合の第 1 レベル・メッセージ

&SYSMSGLVL2 エラーが発生した場合の 2 番目のレベルのメッセージ

LISTDSI ステートメント

192 z/OS V1R8.0 TSO/E CLIST

Page 213: TSO/E CLIST

表 11. LISTDSI によって設定される変数 (続き)

変数 内容

&SYSDSSMS DFSMS/MVS が提供するデータ・セットのタイプに関する情報を含みます。

SMS DSNTYPE 情報を検索できない場合、SYSDSSMS 変数には、以下の内容が含まれます。

SEQ 順次データ・セットの場合

PDS 区分データ・セットの場合

PDSE 拡張区分データ・セットの場合

データ・セットが PDSE で、SMS DSNTYPE 情報を検索できない場合、SYSDSSMS 変数には、以下の内容が含まれます。

LIBRARY PDSE が空の場合

PROGRAM_LIBRARY 拡張区分データ・セットのプログラム・ライブラリーの場合

DATA_LIBRARY 拡張区分データ・セットのデータ・ライブラリーの場合

&SYSDATACLASS(1) SMS データ・クラス名 - LISTDSI ステートメントにSMSINFO を指定し、データ・セットが SMS で管理されている場合にのみ戻されます。

&SYSSTORCLASS(1) SMS ストレージ・クラス名 - LISTDSI ステートメントにSMSINFO を指定し、データ・セットが SMS で管理されている場合にのみ戻されます。

&SYSMGMTCLASS(1) SMS 管理クラス名 - LISTDSI ステートメントに SMSINFO

を指定し、データ・セットが SMS で管理されている場合にのみ戻されます。

&SYSSEQDSNTYPE 順次データ・セットのタイプを示します。

BASIC - 通常の順次データ・セット

LARGE - 大規模な順次データ・セット

EXTENDED - 拡張された順次データ・セット

拡張された順次データ・セット、基本的な順次データ・セットおよび大規模な順次データ・セットについての詳細は、DFSMS を参照してください。

注:

1. これらの変数がそのシステムでアクティブになるには、MVS/DFP 3.2 (またはそれ以降)

または DFSMS/MVS 1.1 (またはそれ以降) のいずれかが必要です。SMS で管理しないデータ・セットに対しては、これらの変数はヌル・ストリングを戻します。

LISTDSI ステートメント

第 13 章 参照 193

||

Page 214: TSO/E CLIST

戻りコードLISTDSI ステートメントからの戻りコードは、CLIST 変数 &LASTCC の中で示されます。エラー・ルーチンは、CLIST が LISTDSI から非ゼロ戻りコードを受け取った場合、制御を受け取りません。 表 12 は、LISTDSI 戻りコードとその意味をリストしたものです。

表 12. LISTDSI 戻りコード

戻りこーど 意味

0 処理は正常に行われました。

4 データ・セット情報がないものがあります。戻された変数&SYSREASON の理由コードを検討し、&SYSMSGLVL1 および&SYSMSGLVL2 で戻されたメッセージを検査して、どの情報がないのかを判別してください。

16 処理は失敗しました。いずれの CLIST 変数も有効と見なされません。

理由コードLISTDSI ステートメントからの理由コードは、CLIST 変数 &SYSREASON の中で示されます。 表 13 は、LISTDSI 戻りコードとその意味をリストしたものです。理由コードを用いて、CLIST 変数 &SYSMSGLVL2 はメッセージ IKJ584nnI に設定されます。この場合の nn は、理由コードです。これらのメッセージについては、「z/OS TSO/E メッセージ」に説明があります。

表 13. LISTDSI 理由コード

理由コード 意味

0 正常に完了しました。

1 ステートメント解析でエラーが生じました。

2 動的割り振り処理でエラーが生じました (SVC 99 エラー)。

3 データ・セットがプロセスできないタイプのものです。

4 UNIT 名の判別でエラーが生じました (IEFEB4UV エラー)。

5 データ・セットがカタログされていません (LOCATE マクロのエラー)。

6 データ・セット属性の入手エラー (OBTAIN マクロのエラー)。

7 装置タイプの検出エラー (DEVTYPE マクロのエラー)。

8 データ・セットが直接アクセス装置上にありません。

9 DFHSM がデータ・セットをマイグレーションしましたが、NORECALL

のために検索ができません。

11 ディレクトリー情報が要求されましたが、当該データ・セットに対するアクセス権限がありません。

12 VSAM データ・セットがサポートされていません。

13 データ・セットをオープンできません。

14 装置制御ブロック (UCB) テーブル内で装置タイプが見つかりません。

17 システムまたはユーザーの異常終了が生じました。

18 データ・セット情報の一部しか入手されませんでした。

19 データ・セットが複数のボリューム上に存在します。

20 適格装置テーブル (EDT) 内に装置タイプが見つかりません。

LISTDSI ステートメント

194 z/OS V1R8.0 TSO/E CLIST

Page 215: TSO/E CLIST

表 13. LISTDSI 理由コード (続き)

理由コード 意味

21 データ・セットを見つけようとしてカタログ・エラーが生じました。

22 ボリュームがマウントされていません (OBTAIN マクロのエラー)。

23 ボリューム上で永続入出力エラーが生じました (OBTAIN マクロのエラー)。

24 OBTAIN マクロでデータ・セットが見つかりません。

25 データ・セットが非 DASD 装置にマイグレーションされました。

26 MSS (大容量記憶) デバイス上のデータ・セット。

27 データ・セットにボリューム通し番号が割り振られていません。

28 DD 名は 1 から 8 文字でなければなりません。

29 データ・セット名または DD 名を指定する必要があります。

30 データ・セットが SMS によって管理されていません。

31 ISITMGD マクロが、不正な戻りコードおよび理由コードと一緒に戻されました。戻りコードおよび理由コードは、メッセージ IKJ58431I の中で見つけることができます。このメッセージは、変数 &SYSMSGLVL2

に戻されます。

32 SMS 情報を検索することができません。DFSMS/MVS のレベルが正しくありません。

33 SMS 情報を検索することができません。DFSMS/MVS がアクティブではありません。

34 SMS 情報を検索することができません。OPEN エラー。

35 DFSMS/MVS 内部サービス IGWFAMS からの予期しないエラー。

36 SMS サービス・モジュールからの予期しないエラー。

37 DFSMS サービス IGGCSI00 からの予期しないエラー。

NGLOBAL ステートメントNGLOBAL ステートメントは、CLIST 内のサブプロシージャー間で値を共用する場合に使用します。

NGLOBAL (名前付きグローバル) は、名前によって変数を定義します。 NGLOBAL

変数を定義すると、同一 CLIST 内のサブプロシージャーは、名前によってその変数を参照し、その値を修正することができます。他の CLIST は、NGLOBAL 変数にアクセスしたり、それを修正することはできません。

NGLOBAL ステートメント上で定義することができる変数の数には制限はありません。 NGLOBAL ステートメントは、その変数を使用するどのステートメントよりも前に置く必要があります。

��label:

NGLOBAL variable_1 �

variable��

LISTDSI ステートメント

第 13 章 参照 195

Page 216: TSO/E CLIST

label

この NGLOBAL ステートメントにブランチするために、CLIST が GOTO ステートメントで参照できる名前。label は、英字で始まる 1 から 31 文字の英数字です。

variable_1 / variable

この CLIST の記号変数。この名前は、この NGLOBAL ステートメントによって定義されている変数を参照します。

注: NGLOBAL ステートメントで名前を指定された変数は、PROC ステートメント上に置くことはできません。

OPENFILE ステートメントOPENFILE ステートメントは、入出力用の QSAM ファイルをオープンする場合に使用します。このファイルは、そのセッション中に割り振られていて、ファイル名が割り当てられているものでなければなりません。OPENFILE を 1 回実行してオープンできるファイルは 1 つだけで、同じ PDS の異なるメンバーのために同時にファイルをオープンすることはできません。これらのファイルは、長さが 32767 バイト以下の論理レコードを持つデータ・セットである必要があります。

注: OPENFILE ステートメントは、どの入出力変数もヌルに設定します。 SET ステートメントを使用する前に必ず OPENFILE ステートメントを実行して、入出力レコードを作成してください。

コマンド・モードからサブコマンド・モードへ、あるいはその逆に変更を行う場合、先に固有ファイル上のファイル入出力を完了してください。モード間ファイル入出力は、サポートされておらず、それを行おうとすると、予測不可能な異常終了が起こります。

ファイル入出力を使用する CLIST には、NOFLUSH を指定してください。(CONTROL ステートメントを参照してください。) NOFLUSH を指定しなかったために、システム処置によって TSO/E が入力スタックがフラッシュされてしまうと、ユーザーはシステムを回復するためにログオフしなければならない場合があります。ユーザーは、″FILE NOT FREED, DATA SET IS OPEN.″ などのようなメッセージを受け取ることによってその状態を認識します。

��label:

OPENFILE file_name&symbolic_variable_name

INPUTOUTPUTUPDATE

��

label

この OPENFILE ステートメントにブランチするために、CLIST が GOTO ステートメントで参照できる名前。label は、英字で始まる 1 から 31 文字の英数字です。

file_name | symbolic_variable_name

file_name

現在のセッションでファイル (データ・セット) を割り振ったときにそのファイルに割り当てられたファイル名 (ddname)。

NGLOBAL ステートメント

196 z/OS V1R8.0 TSO/E CLIST

Page 217: TSO/E CLIST

symbolic_variable_name

file_name を割り当てた記号変数。

INPUT | OUTPUT | UPDATE

INPUT入力を行うためにファイルをオープンします。

OUTPUT出力を行うためにファイルをオープンします。

UPDATE随所で更新を行うためにファイルをオープンします。すなわち、CLIST

は、そのファイルをクローズするまでに GETFILE および PUTFILE の両ステートメントを実行することができます。

PROC ステートメントPROC ステートメントは、以下を行う場合に使用します。

v EXEC コマンドで CLIST に渡されるパラメーターを定義する。この場合、PROC

はオプションですが、それを使用する場合は、その CLIST 内の最初の実行可能ステートメントでなければなりません。

v サブプロシージャーを定義し、SYSCALL ステートメント上でそのサブプロシージャーに渡されるパラメーターを定義する。サブプロシージャーは、PROC ステートメントで開始する必要があります。この場合、PROC ステートメントにはラベルが付けられている必要があり、さらに、それに対応して、そのサブプロシージャーの終わりを示す END ステートメントも必要です。

��label:

PROC positional_number �

positional_parameter�

� � keyword_parameter( )

default_valueEND

��

label

この PROC ステートメントに制御を渡すために、SYSCALL ステートメント内で CLIST が参照できる名前。サブプロシージャーを開始する PROC ステートメントでは必須で、label は、英字で始まる、1 から 31 文字の英数字です。

positional_number

渡される必須定位置パラメーターの数。1 から 5 の 10 進数を入力します。 1

つもない場合は、0 を入力してください。

positional_parameter

CLIST またはサブプロシージャーに渡される定位置パラメーター。

定位置パラメーター名は、長さが 1 から 252 文字の、英字で始まる英数字です。小文字の値は、大文字に変換されます。

PROC ステートメント上の定位置パラメーターの名前が GLOBAL 変数の名前と同じであると、エラーとなります。

OPENFILE ステートメント

第 13 章 参照 197

Page 218: TSO/E CLIST

keyword_parameter

CLIST またはサブプロシージャーに渡されるキーワード・パラメーター。

キーワード・パラメーター名は、長さが 1 から 31 文字の、英字で始まる英数字です。この名前には文字の下線 (_) を含めることはできません。小文字の値は、大文字に変換されます。

default_value

ユーザーが EXEC コマンドまたは SYSCALL ステートメントに関連のキーワードを指定しない場合に、CLIST またはサブプロシージャー内で対応する変数に割り当てられる値。

この値を省略した (空の括弧) 場合、ユーザーが、EXEC コマンドまたはSYSCALL ステートメントの関連のキーワードに値を指定することができます。

注: 記号置換は、キーワード・パラメーターのデフォルトについては行われません。

すべてのパラメーターには、CLIST またはサブプロシージャーが実行を開始した時点で初期値があります。各パラメーター名は、関連パラメーターの初期値を持つ記号変数の名前になります。渡されるパラメーターの値は、その CLIST またはサブプロシージャーがアクティブである間だけ有効です。小文字で渡される値は、EXEC

コマンドによって大文字に変換されます。

PUTFILE ステートメントPUTFILE ステートメントは、オープンしている QSAM ファイルにレコードを書き込む場合に使用します。PUTFILE を 1 回実行するごとに書き込まれるレコードは1 つです。ユーザーが同じレコードを 2 回以上送りたくない場合、次の PUTFILE

ステートメントが出される前に、割り当てステートメントを使用してファイル名変数を異なるレコードに割り当てる必要があります。

注: PUTFILE ステートメントは、対応する OPENFILE ステートメントと同じCLIST 内で出す必要があります。

��label:

PUTFILE file_name ��

label

この PUTFILE ステートメントにブランチするために、CLIST が GOTO ステートメントで参照できる名前。label は、英字で始まる 1 から 31 文字の英数字です。

file_name

現在のセッションで割り振られたときにファイル (データ・セット) に割り当てられたファイル名 (ddname)。ファイル名を含んだ記号変数を指定しないでください。

PROC ステートメント

198 z/OS V1R8.0 TSO/E CLIST

Page 219: TSO/E CLIST

READ ステートメントREAD ステートメントは、端末から入力を読み取り、その入力を記号変数に保管する場合に使用します。これらの変数は、READ ステートメントで定義される場合、あるいは CLIST 内に別の場所で定義される場合があります。通常、READ ステートメントの前には、ユーザーに、端末で応答を入力するように要求する WRITE または WRITENR ステートメントが置かれます。��

label:READ

�variable_1variable

��

label

この READ ステートメントにブランチするために、CLIST が GOTO ステートメントで参照できる名前。label は、英字で始まる 1 から 31 文字の英数字です。

variable_1 / variable

有効な変数名。この変数は、端末ユーザーから入力される入力データ内の値が、指定の変数内に順次に保管されるという点では、定位置です。

オペランドが省略されている場合、この入力は &SYSDVAL 制御変数内に保管されます。

READDVAL ステートメントREADDVAL ステートメントは、&SYSDVAL 制御変数の現在の内容を、1 つまたは複数の指定された記号変数に割り当てる場合に使用します。

変数 (variable) への割り当ては、指定された順序で順次に実行されます。値が割り当てられていない変数は、デフォルトのヌル値になります。変数の数より値の数が多い場合、&SYSDVAL の余分な値は割り当てられません。

��label:

READDVAL variable_1 �

variable��

label

この READDVAL ステートメントにブランチするために、CLIST が GOTO ステートメントで参照できる名前。label は、英字で始まる 1 から 31 文字の英数字です。

variable_1 / variable

有効な変数名。変数は、あらかじめ定義されている必要はありません。

RETURN ステートメントRETURN ステートメントは、以下を行う場合に使用します。

v エラー・ルーチンまたはアテンション・ルーチンから、エラーのため終了したステートメントまたはアテンションに割り込まれたステートメントの、次のステートメントに制御を返す。

READ ステートメント

第 13 章 参照 199

Page 220: TSO/E CLIST

v サブプロシージャーからの戻りコードを提供する。制御は、そのサブプロシージャーを呼び出した SYSCALL ステートメントの次のステートメントに渡ります。この戻りコードは制御変数 &LASTCC 内に保管されます。(ただし、CLIST サブプロシージャーからの戻りコードによって、エラー・ルーチンが制御を受け取ることはない ので注意してください。)

RETURN は、サブプロシージャー、活動化されたエラー・ルーチン、または活動化されたアテンション・ルーチンから出された場合にのみ有効です。それ以外のところから出された場合、RETURN はノー・オペレーションとして扱われます。��

label:RETURN

CODE( )expression

��

label

この RETURN ステートメントにブランチするために、CLIST が GOTO ステートメントで参照できる名前。label は、英字で始まる 1 から 31 文字の英数字です。

CODEサブプロシージャーは戻りコードを出すことができます。制御は、そのサブプロシージャーを呼び出した SYSCALL ステートメントの次のステートメントに渡ります。

expression

CLIST の定義による戻りコード。expression は、文字ストリング、10 進整数、または 10 進整数に評価される式です。この式は制御変数 &LASTCC 内に保管されます。 CODE に式がない場合、&LASTCC はヌル値をとります。

SELECT ステートメントSELECT ステートメントは、いくつかの代替処置の 1 つを条件付きで実行する場合に使用します。 SELECT ステートメントには、単純 SELECT と複合 SELECT の2 つの形式があります。

単純 SELECT単純 SELECT ステートメントでは、CLIST は 1 つまたは複数の式をテストします。 CLIST は、評価結果の値が真となる式を検出すると、関連の処置を実行し、その後で、制御を END ステートメントに渡します。式のいずれも真でない場合、CLIST は、OTHERWISE 節があればそこで処置を実行し、なければ制御を END ステートメントに渡します。

RETURN ステートメント

200 z/OS V1R8.0 TSO/E CLIST

Page 221: TSO/E CLIST

��label:

SELECT ――――――― �

� � WHEN ( logical_expression )action

――――――― �

�OTHERWISE action

―――――――――――――――――label:

END ��

注: WHEN および OTHERWISE ステートメントは、それぞれ別の行に置き、SELECT と END から分離する必要があります。上記の構文図を参照してください。

label

この SELECT ステートメントにブランチするために、CLIST が GOTO ステートメントで参照できる名前。label は、英字で始まる 1 から 31 文字の英数字です。

logical_expression

評価結果が真または偽の条件となるような比較式。&A = 3 または &B ¬> 10 など。

action

任意の CLIST ステートメント、TSO/E コマンド、または DO シーケンス。ヌルの action (処置) は制御を END ステートメントに渡します。この処置には、ネストされた IF、DO、および SELECT ステートメントを組み込むことができます。この action の中のどのステートメントにも、ラベルを付けることができ、それによって GOTO ステートメントがそこにブランチすることができます。

複合 SELECT複合 SELECT ステートメントには、冒頭にテスト式を組み込みます。 CLIST はテスト式を評価して、その値を WHEN expression の値と比較します。

複合 SELECT ステートメントでは、WHEN expression に、論理演算子 | (OR) によって仕切られた複数の式を含めることができます。また、WHEN expression には、値の範囲も組み込むことができます。その場合、最低の値と最高の値の間にコロン(:) を入れて範囲を表します。たとえば、3:5 は、3、4、および 5 を表します。

テスト式が、WHEN expression の値と一致する場合、あるいは WHEN expression

の中の値の範囲内に入る場合、CLIST は、関連の処置を実行し、制御を END ステートメントに渡します。一致する値が検出されない場合、CLIST は OTHERWISE

節がある場合はそこの処置を実行し、そうでなければ END ステートメントに制御を渡します。

SELECT ステートメント

第 13 章 参照 201

Page 222: TSO/E CLIST

��label:

SELECT test_expression �

� � WHEN ( expression ): expression action|OR

�OTHERWISE action label:

END ��

label

この SELECT ステートメントにブランチするために、CLIST が GOTO ステートメントで参照できる名前。label は、英字で始まる 1 から 31 文字の英数字です。

test_expression

WHEN 節内の式と比較する値となる論理式または文字ストリング。

expression

文字ストリング、1 つの論理式、または 1:5 などの範囲。値と範囲は WHEN

(&A-3 | &B | 4:6) などのように結合することができます。

action

任意の CLIST ステートメント、TSO/E コマンド、または DO シーケンス。ヌルの action (処置) は制御を END ステートメントに渡します。この処置には、ネストされた IF、DO、および SELECT ステートメントを組み込むことができます。この処置の中のどのステートメントにも、独自のラベルを付けることができます。

SET ステートメントSET ステートメントは、記号変数または制御変数に値を割り当てる場合に使用します。��

label:SET

&symbolic_variable_name&control_variable_name

=EQ

value ��

label

この SET ステートメントにブランチするために、CLIST が GOTO ステートメントで参照できる名前。label は、英字で始まる 1 から 31 文字の英数字です。

symbolic_variable_name | control_variable_name

symbolic_variable_name

値を割り当てる記号変数。

control_variable_name

値を割り当てる制御変数。(修正可能な制御変数については、 36ページの表4 を参照してください。)

SELECT ステートメント

202 z/OS V1R8.0 TSO/E CLIST

Page 223: TSO/E CLIST

EQ | =「等しい」の演算子。

value

有効な数値または文字ストリング。

SYSCALL ステートメントSYSCALL ステートメントは、サブプロシージャーに制御を渡す場合に使用します。 SYSCALL ステートメントには、そのサブプロシージャーの名前、および渡されるパラメーターが含まれています。サブプロシージャーの名前は、そのサブプロシージャーを開始する PROC ステートメント上のラベルと一致している必要があります。��

label:SYSCALL procname

�parameter_1parameter

��

label

この SYSCALL ステートメントにブランチするために、CLIST が GOTO ステートメントで参照できる名前。label は、英字で始まる 1 から 31 文字の英数字です。

procname

サブプロシージャーを開始する PROC ステートメントのラベル。

parameter_1 / parameter

定数、記号変数、組み込み関数、および算術式などの、任意の有効な CLIST

式。すべてのパラメーターは、CLIST 区切り文字 (ブランク、コンマ、またはタブ) によって分離されます。ブランクを含むパラメーターを渡す方法については、 88ページの『サブプロシージャーの呼び出し』 を参照してください。

そのパラメーターが、サブプロシージャー内の SYSREF ステートメント内で参照される変数の名前である場合、SYSCALL ステートメントではその変数名にアンパーサンドを組み込むことはできません。

そのサブプロシージャーの PROC ステートメントが、パラメーターを受け取る変数を定義する役目を負っています。

SET &A = JohnSET &B = ALSYSCALL XYZ &A B

.WRITE &B..

XYZ: PROC 2 PARM1 PARM2.SYSREF &PARM2WRITE &PARM2SET &PARM2 = GEORGE

END

/* pass variables to XYZ, omitting & from/* the variable name referenced on SYSREF/* result: GEORGE

/* Subprocedure XYZ */

/* Indicate PARM2 holds a variable name/* result: AL

SET ステートメント

第 13 章 参照 203

Page 224: TSO/E CLIST

SYSREF ステートメントサブプロシージャー内の SYSREF ステートメントは、呼び出し元から渡される変数の名前を識別する場合に使用します。サブプロシージャーは、その変数の値を参照および変更することができます。新しい値を SYSREF 変数に割り当てる場合、新しい値はさかのぼって有効になります。すなわち、新しい値はサブプロシージャーにおいても、また同様に呼び出し元でも有効です。

サブプロシージャー内の SYSREF ステートメントに、呼び出し元が渡した変数の名前に対応する PROC ステートメント・パラメーターをリストしてください。SYSREF ステートメントは、必ず、その変数を使用するサブプロシージャー・ステートメントの前に置いてください。��

label:SYSREF

�variable_1variable

��

label

この SYSREF ステートメントにブランチするために、CLIST が GOTO ステートメントで参照できる名前。label は、英字で始まる 1 から 31 文字の英数字です。

variable_1 / variable

PROC ステートメントからのパラメーターの名前。このパラメーターは、PROC

ステートメントに渡された変数の名前に対応します。変数名では、アンパーサンド (&) はオプションです。

次の例では、サブプロシージャーは新しい値を、(B) に名前が渡されている変数に割り当てます。新しい値 (GEORGE) は、呼び出し元で、その変数の古い値 (AL) と置き換わります。

SET &A = JohnSET &B = ALSYSCALL XYZ &A B

.WRITE &AWRITE &B.

XYZ: PROC 2 PARM1 PARM2.SET &parm1 = JoeWRITE &parm2SYSREF &PARM2WRITE &PARM2SET &PARM2 = GEORGE

END

/* pass variables to XYZ, omitting & from/* the variable name referenced on SYSREF/* result: JOHN (original value)/* result: GEORGE (changed value)

/* Subprocedure XYZ */

/* change value of &parm1/* result: JOE/* indicate PARM2 holds a variable name/* result: AL/* change value of SYSREF variable

TERMIN および TERMING ステートメントTERMIN または TERMING ステートメントは、CLIST から端末ユーザーに制御を渡す場合に使用します。また、TERMIN または TERMING を使用して、ユーザーが制御を CLIST に戻すために入力する文字ストリング (ヌル行も含め) を定義することもできます。通常、TERMIN の前には、端末ユーザーに応答を要求するWRITE ステートメントが置かれます。

SYSREF ステートメント

204 z/OS V1R8.0 TSO/E CLIST

Page 225: TSO/E CLIST

TERMIN または TERMING ステートメントは、次のいずれかの方法で CLIST が出されると、CLIST を終了します。v ISPF のもとでv バックグラウンドでv REXX EXEC から (ネストされた CLIST)

制御は、TERMIN または TERMING の後のステートメントで CLIST に戻されます。制御が戻されるときは、&SYSDLM および &SYSDVAL が設定されています。��

label:TERMINTERMING string_1

user_input,

� �

stringuser_input

,

��

label

この TERMIN ステートメントにブランチするために、CLIST が GOTO ステートメントで参照できる名前。label は、英字で始まる 1 から 31 文字の英数字です。

TERMIN | TERMING端末に制御を移動し、ユーザーが制御を CLIST に戻すための方法を確立します。

TERMINTERMIN から実行された CLIST は、その TERMIN ステートメントを出した CLIST の中にネストされているとは見なされません。 TERMIN ステートメントには、次の働きがあります。

v GLOBAL 変数の共用 - GLOBAL 変数は、TERMIN 以外の場所では共用できません。 TERMIN から実行された CLIST と、その TERMIN を出した CLIST との間でグローバル変数の共用はできません。

v 変数アクセス - TERMIN 以外の場所での変数アクセスは、CLIST 変数アクセス・ルーチン IKJCT441 を介して通信することはできません。

v 検査コマンド出力トラッピング (&SYSOUTTRAP) - IKJCT441 およびIRXEXCOM は、TERMIN エレメントの反対側にある CLIST またはREXX EXEC を認識しません。

v CONTROL NOMSG ステートメント - TERMIN エレメントの反対側にある NOMSG 設定値の検査はできません。

TERMINGTERMING から実行された CLIST は、その TERMING ステートメントを出した CLIST の中にネストされていると見なされます。TERMING ステートメントには、次の働きがあります。

TERMIN および TERMING ステートメント

第 13 章 参照 205

Page 226: TSO/E CLIST

v GLOBAL 変数の共用 - GLOBAL 変数は、TERMING 以外の場所でも共用することができます。TERMING から実行された CLIST と、そのTERMING を出した CLIST との間のグローバル変数の共用はできます。

v 変数アクセス - TERMING 以外の場所での変数アクセスは、CLIST 変数アクセス・ルーチン IKJCT441 を介して通信することができます。

v 検査コマンド出力トラッピング (&SYSOUTTRAP) - IKJCT441 およびIRXEXCOM は、TERMING エレメントの反対側にある CLIST またはREXX EXEC を認識します。

v CONTROL NOMSG ステートメント - TERMING エレメントの反対側にある NOMSG 設定値の検査はできます。

string_1 / string

CLIST に制御を戻すために端末ユーザーが入力する文字ストリング。&SYSDLM 制御変数には、ユーザーが入力したストリングの位置に対応する数字が含まれます (string1 の場合は 1、string2 の場合は 2、など)。

user_input

端末ユーザーによって入力された追加入力。この入力は、&SYSDVAL 制御変数の中に保管されます。

, ストリングの代わりにコンマを指定すると、端末ユーザーはヌル行を入力して(Enter キーを押して)、制御を CLIST に戻すことができます。

オペランドが指定されていない場合、端末ユーザーはヌル行を入力して、制御をCLIST に戻します。

WRITE および WRITENR ステートメントWRITE および WRITENR ステートメントは、テキストを定義して、それを端末に表示させる場合に使用します。このテキストは、メッセージ、情報、またはプロンプトに使用することができます。��

label:WRITEWRITENR

text ��

label

この WRITE/WRITENR ステートメントにブランチするために、CLIST がGOTO ステートメントで参照できる名前。label は、英字から始まる 1~31 桁の英数字。

WRITE | WRITENR

WRITEテキストの表示後、カーソルは新しい行に移動します。

WRITENRテキストの表示後、カーソルは新しい行に移動しません。

text

端末に表示されるテキスト。記号変数も含め、どの文字ストリングでも入力することができます。算術式を &EVAL 組み込み関数で囲んでいない限り、WRITE/WRITENR ステートメントは、その式の評価を行いません。 CLIST

は、WRITE/WRITENR ステートメントと同じ行に注釈も表示します。

TERMIN および TERMING ステートメント

206 z/OS V1R8.0 TSO/E CLIST

Page 227: TSO/E CLIST

END コマンドEND コマンドについての詳細は、「z/OS TSO/E コマンド解説書」を参照してください。

EXEC コマンドEXEC コマンドについては、「z/OS TSO/E コマンド解説書」を参照してください。

END コマンド

第 13 章 参照 207

Page 228: TSO/E CLIST

EXEC コマンド

208 z/OS V1R8.0 TSO/E CLIST

Page 229: TSO/E CLIST

付録. アクセシビリティ

アクセシビリティ機能は、運動障害または視覚障害など身体に障害を持つユーザーがソフトウェア・プロダクトを快適に使用できるようにサポートします。 z/OS のアクセシビリティの主要機能により、ユーザーは以下のことができるようになります。

v 画面読み上げ機能および画面拡大機能などの支援機能の使用

v キーボードのみを使用して、特定の機能または画面を使用したのと同等の機能を操作

v 色、コントラスト、フォント・サイズなど表示属性のカスタマイズ

支援機能の使用画面読み上げ機能などの支援機能は、 z/OS のユーザー・インターフェースを使用して機能します。この支援機能を使用して z/OS インターフェースにアクセスする場合、その特定情報については、支援機能の資料を参照してください。

ユーザー・インターフェースのキーボード・ナビゲーションユーザーは、TSO/E または ISPF を使用して z/OS ユーザー・インターフェースにアクセスできます。 TSO/E および ISPF インターフェースへのアクセス方法については、「z/OS TSO/E 入門」、「z/OS TSO/E ユーザーズ・ガイド」、および「z/OS

ISPF ユーザーズ・ガイド 第 1 巻」を参照してください。 上記の資料には、キーボード・ショートカットまたはファンクション・キー (PF キー) の使用方法を含むTSO/E および ISPF の使用方法が記載されています。それぞれの資料では、PF キーのデフォルトの設定値とそれらの機能の変更方法についても説明しています。

z/OS 情報z/OS 情報は、画面読み上げ機能を使用して、下記のインターネット・ライブラリーのなかの z/OS ブックの BookServer/Library Server 版で入手することができます。

www.ibm.com/servers/eserver/zseries/zos/bkserv/

© Copyright IBM Corp. 1988, 2006 209

Page 230: TSO/E CLIST

210 z/OS V1R8.0 TSO/E CLIST

Page 231: TSO/E CLIST

特記事項

本書は米国 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) 交換された情報の相互利用を可能にすることを目的として、本プログラムに関する情報を必要とする方は、下記に連絡してください。

IBM CorporationMail Station P300

© Copyright IBM Corp. 1988, 2006 211

Page 232: TSO/E CLIST

2455 South RoadPoughkeepsie, NY 12601-5400USA

本プログラムに関する上記の情報は、適切な使用条件の下で使用することができますが、有償の場合もあります。

本書で説明されているライセンス・プログラムまたはその他のライセンス資料は、IBM 所定のプログラム契約の契約条項、IBM プログラムのご使用条件、またはそれと同等の条項に基づいて、 IBM より提供されます。

この文書に含まれるいかなるパフォーマンス・データも、管理環境下で決定されたものです。そのため、他の操作環境で得られた結果は、異なる可能性があります。一部の測定が、開発レベルのシステムで行われた可能性がありますが、その測定値が、一般に利用可能なシステムのものと同じである保証はありません。さらに、一部の測定値が、推定値である可能性があります。実際の結果は、異なる可能性があります。お客様は、お客様の特定の環境に適したデータを確かめる必要があります。

IBM 以外の製品に関する情報は、その製品の供給者、出版物、もしくはその他の公に利用可能なソースから入手したものです。IBM は、それらの製品のテストは行っておりません。したがって、他社製品に関する実行性、互換性、またはその他の損害賠償請求については確証できません。 IBM 以外の製品の性能に関する質問は、それらの製品の供給者にお願いします。

IBM の将来の方向または意向に関する記述については、予告なしに変更される場合があり、単に目標を示しているものです。

本書には、日常の業務処理で用いられるデータや報告書の例が含まれています。より具体性を与えるために、それらの例には、個人、企業、ブランド、あるいは製品などの名前が含まれている場合があります。これらの名称はすべて架空のものであり、名称や住所が類似する企業が実在しているとしても、それは偶然にすぎません。

著作権使用許諾:

本書には、様々なオペレーティング・プラットフォームでのプログラミング手法を例示するサンプル・アプリケーション・プログラムがソース言語で掲載されています。お客様は、サンプル・プログラムが書かれているオペレーティング・プラットフォームのアプリケーション・プログラミング・インターフェースに準拠したアプリケーション・プログラムの開発、使用、販売、配布を目的として、いかなる形式においても、IBM に対価を支払うことなくこれを複製し、改変し、配布することができます。このサンプル・プログラムは、あらゆる条件下における完全なテストを経ていません。従って IBM は、これらのサンプル・プログラムについて信頼性、利便性もしくは機能性があることをほのめかしたり、保証することはできません。このサンプル・プログラムは、 IBM のアプリケーション・プログラミング・インターフェースに準拠したアプリケーション・プログラムの開発、使用、販売、または配布を目的として、いかなる形式においても IBM に対価を支払うことなくこれを複製し、改変し、配布することができます。

特記事項

212 z/OS V1R8.0 TSO/E CLIST

Page 233: TSO/E CLIST

この情報をソフトコピーでご覧になっている場合は、写真やカラーの図表は表示されない場合があります。

プログラミング・インターフェース情報本書には、お客さまが z/OS TSO/E のサービスを受けるプログラムを作成することができるように作られたプログラミング・インターフェースの説明が記載されています。

商標以下は、IBM Corporation の商標です。v DFSMS/MVS

v DFSMShsm

v IBM

v MVS

v MVS/DFP

v MVS/ESA

v OS/390

v RACF

v Resource Link

v SP

v VTAM

v z/OS

v z/OS.e

v zSeries

Linux は、Linus Torvalds の米国およびその他の国における商標です。

Microsoft、Windows、Windows NT®、およびWindows ロゴは、 Microsoft

Corporation の米国およびその他の国における商標です。

UNIX は、The Open Group の米国およびその他の国における登録商標です。

他の会社名、製品名およびサービス名等はそれぞれ各社の商標です。

特記事項

特記事項 213

Page 234: TSO/E CLIST

214 z/OS V1R8.0 TSO/E CLIST

Page 235: TSO/E CLIST

参考文献

このセクションでは、TSO/E ライブラリーの文書と関連資料をリストしています。

TSO/E 出版物TSO/E 出版物

v z/OS TSO/E 管理, SA88-8626

v z/OS TSO/E CLIST, SA88-8627

v z/OS TSO/E コマンド解説書, SA88-8628

v z/OS TSO/E カスタマイズ, SA88-8629

v z/OS TSO/E 概説書, SA88-8630

v z/OS TSO/E Guide to SRPI, SA22-7785

v z/OS TSO/E メッセージ, SA88-8631

v z/OS TSO/E 入門, SA88-8632

v z/OS TSO/E プログラミング・ガイド, SA88-8633

v z/OS TSO/E Programming Services, SA22-7789

v z/OS TSO/E REXX 解説書, SA88-8635

v z/OS TSO/E REXX ユーザーズ・ガイド, SA88-8636

v z/OS TSO/E システム・プログラミング コマンド解説書, SA88-8637

v z/OS TSO/E System Diagnosis: Data Areas, GA22-7792

v z/OS TSO/E ユーザーズ・ガイド, SA88-8638

関連資料z/OS MVS の資料

v z/OS MVS 計画: APPC/MVS 管理, SA88-8571

v z/OS MVS Programming: Writing Transaction Programs for APPC/MVS, SA22-7621

v z/OS MVS 初期設定およびチューニング 解説書, SA88-8564

v z/OS MVS Programming: Authorized Assembler Services Guide, SA22-7608

v z/OS MVS Programming: Authorized Assembler Services Reference ALE-DYN,

SA22-7609

v z/OS MVS システム・メッセージ 第 1 巻 (ABA-AOM), SA88-8597

v z/OS MVS システム・メッセージ 第 2 巻 (ARC-ASA), SA88-8598

v z/OS MVS システム・メッセージ 第 3 巻 (ASB-BPX), SA88-8599

v z/OS MVS システム・メッセージ 第 4 巻 (CBD-DMO), SA88-8600

v z/OS MVS システム・メッセージ 第 5 巻 (EDG-GFS), SA88-8601

v z/OS MVS システム・メッセージ 第 6 巻 (GOS-IEA), SA88-8602

v z/OS MVS システム・メッセージ 第 7 巻 (IEB-IEE), SA88-8603

v z/OS MVS システム・メッセージ 第 8 巻 (IEF-IGD), SA88-8604

v z/OS MVS システム・メッセージ 第 9 巻 (IGF-IWM), SA88-8605

© Copyright IBM Corp. 1988, 2006 215

Page 236: TSO/E CLIST

v z/OS MVS システム・メッセージ 第 10 巻 (IXC-IZP), SA88-8606

v z/OS MVS システム・コード, SA88-8592

v z/OS MVS Data Areas, Vol 1 (ABEP-DALT), GA22-7581

v z/OS MVS Data Areas, Vol 2 (DCCB-ITZYRETC), GA22-7582

v z/OS MVS Data Areas, Vol 3 (IVT-RCWK), GA22-7583

v z/OS MVS Data Areas, Vol 4 (RD-SRRA), GA22-7584

v z/OS MVS Data Areas, Vol 5 (SSAG-XTLST), GA22-7585

ISPF 出版物

v z/OS ISPF サービス・ガイド, SC88-8962

v z/OS ISPF ISPF ダイアログ開発者 ガイドとリファレンス, SC88-8964

参考文献

216 z/OS V1R8.0 TSO/E CLIST

Page 237: TSO/E CLIST

索引日本語, 数字, 英字, 特殊文字の順に配列されています。なお, 濁音と半濁音は清音と同等に扱われています。

[ア行]アクセシビリティ 209

アテンション処理 CLIST 118

例 121

アテンション割り込み 117

処置の定義 117

処置の取り消し 118

入力スタックの保護 118

アテンション・ルーチン確立 117

取り消し 118

入力スタックの保護 118

例 119

アプリケーション異なる言語管理のための CLIST の使用 3

フルスクリーン作成 159

CLIST 2

アプリケーションへのインターフェース単純化 152

アンパーサンド (&)

意味、変数名の頭 22

二重アンパーサンドの使用 29

SET ステートメント内 23

暗黙的実行利点 5

CLIST の 8

CLIST の割り振り 9

インストール・システム出口組み込み関数の作成 62

CLIST の作成 14

インターセプトCLIST からのコマンド出力例 155

&SYSOUTTRAP の使用 54

英数字定義 15, 175

エラーからの入力スタックの保護 123

コードリスト 130

CLIST 内で取得 130

エラー (続き)

状態ファイル終わり処理 115

処置の定義 122

処置の取り消し 122

ルーチン作成 122

取り消し 122

入力スタックの保護 123

ファイル終わり 115

CLIST の例 124

エラー・メッセージ関連ヘルプの入手 129

端末での表示 128

CLIST エラー・ルーチン 134

演算子算術 18

比較 18

論理 18

大文字小文字からの変換

CONTROL CAPS による 179

&SYSCAPS による 70

小文字への変換&SYSLC による 70

オプションCLIST 内への組み込み例 149

TESTDYN の使用 148

[カ行]解釈言語利点 1

括弧算術演算子として 18

文字データとしての定義 66

カテゴリー、CLIST の自己完結型アプリケーション 2

他の言語で作成されたアプリケーションの管理 3

ルーチン・タスクの実行 2

可用性テストデータ・セット 70

関数組み込み 61

概要 61

記号置換の制限 (&SYSNSUB) 73

再スキャン不可能文字ストリング (&NRSTR) の定義 64

© Copyright IBM Corp. 1988, 2006 217

Page 238: TSO/E CLIST

関数 (続き)

組み込み (続き)

サブストリングの定義 (&SUBSTR) 68

サブストリングの定義 (&SYSCSUBSTR) 70

実値の定義 (&STR) 66

ストリング内のストリングの位置確認(&SYSINDEX) 72

データ・セットの可用性の判別 (&SYSDSN) 70

文字数による式の長さの判別(&SYSCLENGTH) 64

DBCS データの EBCDIC への変換(&SYSONEBYTE) 74

EBCDIC データの DBCS への変換(&SYSTWOBYTE) 75

READ 入力の大文字への変換 (&SYSCAPS) 70

READ 入力の小文字への変換 (&SYSLC) 70

組み込み関数算術評価の強制実行 (&EVAL) 63

式の長さをバイトで判別 (&LENGTH) 63

データ・タイプの判別 (&DATATYPE) 62

完全修飾データ・セット名処理例 145

関連活動の編成 136

キーボード 209

キーワード・パラメーターPROC ステートメント上説明 25

によるプロンプト 98

例 147

記号置換制限

&NRSTR による 64

&SYSCAN による 49

&SYSNSUB による 73

ネストされた変数 30

変数 22

参照: 記号置換記号変数値 23

値の割り当て 21

命名 22

基本制御プログラムレベルの確認 45

区切り文字ピリオドデータと変数を区別するために使用される 145

2 バイト文字セットの 20

CLIST ステートメントの 14

CLIST 内の DBCS ストリングの区切り文字 20

区別CLIST ステートメント名と一致するストリング 67

区別 (続き)

END ステートメントの END サブコマンドとの一般 87

CONTROL ステートメントの使用 87

DATA-ENDDATA シーケンスの使用 88

RACF SELECT サブコマンドと SELECT ステートメントの 82

WHEN コマンドと WHEN 節の 82

組み込み関数 61

概要 61

独自の作成 62

&DATATYPE 62

&EVAL 63

&LENGTH 63

&NRSTR 64

&STR 66

&SUBSTR 68

&SYSCAPS 70

&SYSCLENGTH 64

&SYSCSUBSTR 70

&SYSDSN 70

&SYSINDEX 72

&SYSLC 70

&SYSNSUB 73

&SYSONEBYTE 74

&SYSTWOBYTE 75

グローバル変数エラー・ルーチンの

CONTROL の MAIN オペランドを使用する保護123

確立 94

例 94

計算順序 19

計算の順序 19

継続記号 14

結合、変数 28

コード、エラーリスト 130

構造化、CLIST の 77

グローバル記号変数確立 94

例 94

考慮事項 77

サブプロシージャー 88

終了ネストされた CLIST の 95

END コマンドを使用する CLIST 95

EXIT ステートメントを使用する CLIST 95

反復 DO シーケンスの使用 84

複合 DO シーケンスの使用 85

218 z/OS V1R8.0 TSO/E CLIST

Page 239: TSO/E CLIST

構造化、CLIST の (続き)

ブランチ、CLIST 内のGOTO ステートメントの使用 96

CLIST のネスト 92

例 93

DO グループの使用考慮事項 82

DO-END シーケンス 78

END ステートメントのサブコマンドとの区別 87

DO ステートメントの使用DO ループのネスト 86

DO-UNTIL-END シーケンスの使用 83

DO-WHILE-END シーケンスの使用 82

例 83

IF-THEN-ELSE シーケンスヌルの THEN 形式 79

IF-THEN-ELSE シーケンスの使用ヌルの ELSE 形式 79

ヌルの THEN 形式 79

標準形式 78

condition (条件) 78

IF-THEN-ELSE のネスト 80

SELECT ステートメントの使用 80

コマンドとの WHEN 節の区別 82

テスト式を付けた場合 81

テスト式を付けない場合 81

END ステートメントのサブコマンドとの区別 87

構文ATTN ステートメント 176

CLOSFILE ステートメント 177

CONTROL ステートメント 177

DATA PROMPT-ENDDATA シーケンス 180

DATA-ENDDATA シーケンス 180

DO ステートメント 180

END ステートメント 182

ERROR ステートメント 182

EXIT ステートメント 183

GETFILE ステートメント 184

GLOBAL ステートメント 185

GOTO ステートメント 186

IF-THEN-ELSE シーケンス 186

LISTDSI ステートメント 187

NGLOBAL ステートメント 195

OPENFILE ステートメント 196

PROC ステートメント 197

PUTFILE ステートメント 198

READ ステートメント 199

READDVAL ステートメント 199

RETURN ステートメント 200

SELECT ステートメント 200

SET ステートメント 202

SYSCALL ステートメント 203

構文 (続き)

SYSREF ステートメント 204

TERMIN ステートメント 204

TERMING ステートメント 204

WRITE ステートメント 206

WRITENR ステートメント 206

構文規則 13

継続記号 14

CLIST

大文字の使用 15

区切り文字 14

コメント 15

フォーマット設定 15

ラベル 15

CLIST ステートメントの長さ 15

構文図 173

コマンドインストール先システム作成

CLIST ステートメント名との区別 67

TSO/E

CLIST の使用 2, 17

コマンド出力の管理LISTALC コマンド 155

コメント、CLIST 内の 15

小文字大文字からの変換

&SYSLC による 70

大文字への変換CONTROL CAPS による 179

&SYSCAPS による 70

保存CONTROL NOCAPS による 179

&SYSASIS による 52

[サ行]作成端末へのメッセージ 101

ファイルへのレコード 113

フルスクリーン・アプリケーション 159

作成、CLIST

TSO/E EDIT およびフルスクリーン・エディター 6

サブコマンド環境ネストされた CLIST への影響 94

EDIT コマンドのによる CLIST の実行 7

CLIST を修正するための使用 6

TEST コマンドのによる CLIST の実行 7

索引 219

Page 240: TSO/E CLIST

サブストリング化入力ストリングでの例 145

ファイル入出力実行時の回避 154

サブタスクネストされた CLIST を使用する実行 142

OUTPUT 142

SCRIPTD 142

サブプロシージャー間の変数の共用

NGLOBAL ステートメントの使用 91

からの情報の戻りそ及 (SYSREF) 変数 90

戻りコード 90

制御の引き渡し 88

内での SYSREF の使用 90

呼び出し、SYSCALL の使用 88

PROC ステートメントによる定義 89

算術演算子 18

算術式ユーザー提供の入力からの作成 137

算術評価の強制実行 63

式算術 18

単純 18

比較 18

論理 18

自己完結型アプリケーション 2

時刻入手 40

システム管理機能SMF ID 48

システム関連タスク単純化 150

システム名確認 45

システム・サービス初期設定および呼び出し例 142

シスプレックス名確認 47

実行、ファイル入出力のREADDVAL ステートメントの使用 153

&SYSDVAL の使用 153

シフトアウト文字、DBCS ストリングの 20

シフトイン文字、DBCS ストリングの 20

終了ネストされた CLIST の 95

END コマンドを使用する CLIST 95

EXIT ステートメントを使用する CLIST 95

戻りコードの指定 95

出力のトラップ例 (SPROC CLIST) 156

&SYSOUTLINE 54

&SYSOUTTRAP 54

取得現在の日付と時刻 38

CLIST 内からの入力DATA PROMPT-ENDDATA シーケンスの使用

99

ショートカット・キー 209

処置アテンション・ルーチンのアテンション割り込み 117

取り消し 118

入力スタックの保護 118

CONTROL の MAIN オペランドを使用する保護119

エラー・ルーチンの 122

エラーの原因となる命令のリスト 122

取り消し 122

入力スタックの保護 123

CONTROL の MAIN または NOFLUSH オペランドを使用する保護 123

ジョブフォアグラウンドおよびバックグラウンド実行例 147

ジョブ・カード情報検証例 145

身体障害 209

診断プロシージャーCLIST の 127

ステートメントおよびコマンドのコーディング 173

ストリング内のストリングの位置確認、&SYSINDEX による 72

ストリング内のストリングのオフセット確認、&SYSINDEX による 72

制御大文字および小文字

CONTROL の CAPS オペランドの使用 105

&SYSLC および &SYSCAPS 制御変数の使用105

メッセージの表示 102

制御変数参照: 変数

正符号継続記号として 14

算術演算子として 18

セッション・マネージャー可用性の判別、&SYSPROC に関する 41

による画面の再形式設定 40

220 z/OS V1R8.0 TSO/E CLIST

Page 241: TSO/E CLIST

設定端末特性 159, 163

LOG/LIST パラメーター 159, 163

PF キー定義 159

PF キー定義 (1 から 12) 165

PF キー定義 (13 から 24) 167

選択メニューPROFILE CLIST との関連性 159

そ及変数サブプロシージャー内での定義

SYSREF の使用 90

属性、データ・セットデフォルト 6

LISTDSI による検索 58

[タ行]ダイアログ、ISPF

作成 110

例 159

対話式システム生産性向上機能 (ISPF)

参照: ISPF (対話式システム生産性向上機能)

単純 SELECT ステートメント構文 200

単純化アプリケーションへのインターフェース 152

システム関連タスク 150

ルーチン・タスク 136

CASHFLOW を呼び出すプロセス 152

端末からの応答の受信 102

からの入力を促すプロンプト 97

メッセージの書き出し 101

端末特性記述する変数 40

設定 159, 163

データ機能階層記憶管理プログラム (DFHSM)

参照: DFHSM (データ機能階層記憶管理プログラム)

データ・セット可用性

&SYSDSN による検査 70

属性デフォルト 6

LISTDSI による検索 58

属性に関する情報 187

名前サブストリング化の実行 145

修飾の判別 145

CLIST 内の読み取りに関する注意 104

EXEC コマンドの指定 7

データ・セット (続き)

入出力実行 111

ALTLIB を用いた割り振り例 11

データ・セットの圧縮 150

定位置パラメーターPROC ステートメント上説明 25

によるプロンプト 97

定義記号変数 23

再スキャン不可能文字ストリング (&NRSTR) 64

サブストリング (&SUBSTR) 68

サブストリング (&SYSCSUBSTR) 70

実値 (&STR) 66

出口インストール先システム組み込み関数の作成 62

CLIST の作成 13

ルーチン確立 118

テスト式付けない場合の SELECT ステートメントの使用 81

付ける場合の SELECT ステートメントの使用 81

特記事項 211

トラップ、TSO/E コマンド出力例 (SPROC CLIST) 156

&SYSOUTLINE 54

&SYSOUTTRAP 54

[ナ行]二重アンパーサンド使用 29

保存、&NRSTR による 64

二重アンパーサンドの保存&NRSTR による 64

入出力ファイルの実行 111

入力端末からの取得 97

入力スタック保護アテンション・ルーチンの 118

エラー・ルーチンの 123

ネストされた CLIST 94

CONTROL の MAIN オペランドの使用 119, 123

CONTROL の NOFLUSH オペランドの使用 123

入力スタックのフラッシュ&SYSFLUSH による 52

索引 221

Page 242: TSO/E CLIST

入力ストリングサブストリング化の実行例 145

入力パネルPROFILE CLIST の例 159, 160

ヌルの変数作成 23

ELSE フォーマット 79

line

アテンション・ルーチン内で出す 119

DATA PROMPT-ENDDATA で使用するためのコーディング 99

THEN フォーマット 79

ネスト変数 29

ループ 86

CLIST

ネストされた CLIST の入力スタックの保護 52,

94

例 93

例 - SCRIPTN CLIST 142

CLIST がネストされているかどうかの判別 50

CLIST のネストファイル入出力に関する制限 111

IF-THEN-ELSE シーケンス 80

ネットワーク・ノード名確認 46

年形式、2 桁の年参照: SYSDATE

参照: SYSJDATE

参照: SYSSDATE

年形式、4 桁の年参照: SYS4DATE

参照: SYS4JDATE

参照: SYS4SDATE

[ハ行]パーセント記号 (%)

CLIST の暗黙的実行での使用 8

ハイフン継続記号として 14

はじめに 1

バックグラウンドバックグラウンド実行のための CLIST の調整、

&SYSENV の使用 49

CLIST からのジョブの実行例 147

CLIST の実行 8

パネル、ISPF

例 160

パネル、ISPF (続き)

XYZABC10 163

XYZABC20 163

XYZABC30 165

XYZABC40 167

CLIST からの表示 2, 110

CLIST 内の ISPF コマンド 2

パラメーターCLIST への引き渡し 9

PROC ステートメントでの定義キーワード・パラメーター 25, 198

定位置パラメーター 24, 197

反復 DO シーケンスループの作成のための使用 84

判別式のデータ・タイプ (&DATATYPE) 62

式の長さバイトで (&LENGTH) 63

文字数による (&SYSCLENGTH) 64

データ・セットの可用性 (&SYSDSN) 70

比較演算子 18

引き渡し、端末への制御のTERMIN ステートメント 107

TERMIN ステートメント後の制御の戻し 109

日付形式、2 桁の年参照: SYSDATE

参照: SYSJDATE

参照: SYSSDATE

日付形式、4 桁の年参照: SYS4DATE

参照: SYS4JDATE

参照: SYS4SDATE

日付の入手年間通算日の形式 39

標準形式 39

分類可能形式 39

表示CLIST からのパネル 2

CLIST ステートメント置換後、&SYSCONLIST の使用 51

置換前、&SYSSYMLIST の使用 51

TSO/E コマンド置換後、&SYSLIST の使用 52

ピリオドデータと変数を区別するために使用される例 28, 145

ファイル終わり処理実行 115

例 125

ファイルからのレコードの読み取り 113

ファイル入出力実行 111

222 z/OS V1R8.0 TSO/E CLIST

Page 243: TSO/E CLIST

ファイル入出力 (続き)

ファイル終わり処理 115

ファイルのオープン 111

ファイルのクローズ 112

ファイル名の意味 111

連結データ・セット上で 116

JCL ステートメント上の 115

READDVAL の使用 153

&SYSDVAL の使用 153

ファイルからのレコードの読み取り 113

ファイルの更新 114

ファイルへのレコードの書き込み 113

ファイルのオープン 111

ファイルのクローズ 112

ファイルの更新 114

ファイル名意味、ファイル入出力における 111

フォアグラウンドCLIST からのジョブの実行例 147

CLIST の実行 8

&SYSENV を使用したフォアグラウンド実行に合わせた CLIST の調整 49

複合 DO シーケンスループの作成のための使用 85

複合 SELECT ステートメント使用 201

複合変数 28

フットプリント (フラグ)

設定CLIST 内の 120

テストアテンション処理 CLIST 内の 121

不等号 (¬=) 18

負符号継続記号 (ハイフン) として 14

算術演算子として 18

ブランチ、CLIST 内のGOTO ステートメントの使用 96

フルスクリーン・アプリケーション作成 159

例 160

フロントエンド・プロンプト例 140, 145

CALC CLIST への追加 137

プロンプト、入力を促す 97

大文字および小文字の制御 104

完全修飾データ・セット名を読み取る場合の注意104

ステートメントの使用PROC 97

READ 102

プロンプト、入力を促す (続き)

ステートメントの使用 (続き)

READDVAL 106

TERMIN 107

WRITE 101

WRITENR 101

プロンプトへの応答のコーディングDATA PROMPT-ENDDATA シーケンスの使用

99

メソッド 97

例 140, 145

CLIST からの許可&SYSPROMPT の使用 51

TERMIN ステートメント後の &SYSDLM 制御変数の重要度 108

TERMIN ステートメント後の制御の戻し 108

&SYSDVAL 制御変数内への入力データの保管 106

変換、READ ステートメント入力大文字への (&SYSCAPS) 70

小文字への (&SYSLC) 70

編集、CLIST

TSO/E EDIT およびフルスクリーン・エディター 6

変数値 23

記号置換 22, 30

記号変数の定義 23

結合記号および文字のストリング 28

DBCS データ・セットの包含 31

サブプロシージャー変数 91

制御現在の日付および時刻に関連の 38

システムに関連した 42

説明 34

端末特性を記述する 40

入力に関連の 53

変更可能 36

変更不可能 37

戻りコードおよび理由コードに関連の 56

ユーザーに関連の 41

CLIST CONTROL ステートメントに関連の 50

CLIST に関連の 49

TSOEXEC コマンドに関連の 58

TSO/E コマンド出力のトラップ 54

&LASTCC 56

&MAXCC 57

&SYS4DATE 39

&SYS4JDATE 39

&SYS4SDATE 39

&SYSAPPCLU 44

&SYSASIS 52

&SYSCLONE 42

索引 223

Page 244: TSO/E CLIST

変数 (続き)

制御 (続き)

&SYSCONLIST 51

&SYSCPU 42

&SYSDATE 39

&SYSDATE および &SYSSDATE に関する考慮事項 39, 40

&SYSDFP 43

&SYSDLM 53

&SYSDVAL 53

&SYSENV 49

&SYSFLUSH 52

&SYSICMD 50

&SYSISPF 44

&SYSJDATE 39

&SYSJES 44

&SYSLIST 52

&SYSLRACF 44

&SYSLTERM 40

&SYSMSG 52

&SYSMVS 45

&SYSNAME 45

&SYSNEST 50

&SYSNODE 46

&SYSOPSYS 46

&SYSOUTLINE 54

&SYSOUTTRAP 54

&SYSPCMD 50

&SYSPCMD と &SYSSCMD の関係 50

&SYSPLEX 47

&SYSPREF 41

&SYSPROC 41

&SYSPROMPT 51

&SYSRACF 47

&SYSSCAN 49

&SYSSCMD 50

&SYSSDATE 39

&SYSSECLAB 47

&SYSSMFID 48

&SYSSMS 47

&SYSSRV 42

&SYSSTIME 40

&SYSSYMDEF 48

&SYSSYMLIST 51

&SYSTERMID 40

&SYSTIME 40

&SYSTSOE 49

&SYSUID 41

&SYSWTERM 40

二重アンパーサンドの使用 29

ネスト 29

変数 (続き)

命名説明 22

PROC ステートメント上 22

割り当て、値の説明 21

GLOBAL 94

LISTDSI ステートメント 190

LISTDSI ステートメントによって設定される 190

NGLOBAL 91

TSOEXEC コマンドに関連の&SYSABNCD 58

&SYSABNRC 58

変数で許容されている数値 19

変数の暗黙的定義 23

保管、CLIST 内のコマンド出力の例 155

保護入力スタックアテンション・ルーチンの 118

エラー・ルーチンの 123

ネストされた CLIST 94

CONTROL の MAIN オペランドの使用 119, 123

CONTROL の NOFLUSH オペランドの使用 123

/* を含む JCL ステートメント例 145

[マ行]メッセージ端末への書き出し

WRITE および WRITENR の使用 101

の表示の制御CONTROL MSG による 102, 179

&SYSMSG による 52

メッセージ検索ツール、LookAt xiv

文字セット入出力でサポートされている 111

2 バイト 20

CLIST でサポートされる 16

戻りコードサブプロシージャーからの 90

CLIST ステートメントからの取得 130

LISTDSI ステートメントによって設定される 194

[ヤ行]読み取り、端末からの入力の完全修飾データ・セット名を読み取る場合の注意

104

PROC ステートメント・キーワードの値の取得 104

224 z/OS V1R8.0 TSO/E CLIST

Page 245: TSO/E CLIST

読み取り、端末からの入力の (続き)

READ ステートメントの使用大文字および小文字の制御 104

説明 102

READDVAL ステートメントの使用 106

TERMIN ステートメントの使用説明 107

TERMIN ステートメント後の制御の戻し 109

&SYSDLM 制御変数の意味 108

TERMING ステートメントの使用TERMING ステートメント後の制御の戻し 109

&SYSDLM 制御変数の意味 108

&SYSDVAL 制御変数内への入力データの保管 106

読み取り、CLIST 内からの入力のDATA PROMPT-ENDDATA シーケンスの使用例 100

より大きくない (¬>) 18

より小さくない (¬<) 18

[ラ行]ラベル 15, 176

理由コードLISTDSI ステートメントによって設定される 194

ルーチンアテンション 117

エラー 122

ルーチン・タスク単純化 136

CLIST による実行 2

ループ、作成反復 DO シーケンスの使用 84

複合 DO シーケンスの使用 85

DO-UNTIL-END シーケンスの使用 83

DO-WHILE-END シーケンスの使用 82

例、CLIST のリスト 135

レコードファイルからの読み取り 113

ファイル名前の更新 114

ファイル入出力の実行に関する考慮事項一般 111

連結データ・セット 116

JCL ステートメント 115

ファイルへの書き込み 113

&SYSDVAL を使用した変数への直接コピー 153

レベル、検索のALTLIB を用いた指定 10

連結入出力用データ・セット 116

複合 28

変数 28

連結 (続き)

ALTLIB を用いた CLIST データ・セット 10

SYSPROC への CLIST データ・セットCLIST の例 155

論理演算子 18

[ワ行]割り当て、値の記号変数 23

割り振り、CLIST ライブラリーの暗黙的実行 9

割り振り情報LISTDSI による検索 58

AALLOCATE CLIST

アテンション・ルーチン 119

ALTLIB コマンド例 11

を用いた代替 CLIST ライブラリーの指定 10

ISPF のもとでの使用 10

AND

論理演算子 18

APPC/MVS

名前の確認 44

ASIS

CONTROL ステートメント・オペランド 52, 179

ATTN ステートメント構文 176

サブプロシージャー内での使用 92

入力スタックの保護 118

による CLIST アテンション・ルーチンの作成 117

BBCP

レベルの確認 45

BY 式反復 DO ループ内の 84

CCALC CLIST

入力からの算術式の作成 137

フロントエンド・プロンプトの追加 137

CALCFTND CLIST 139

CAPS

CONTROL ステートメント・オペランド 179

CASH CLIST 152

索引 225

Page 246: TSO/E CLIST

CLIST

アテンション機能 121

エラー・コード 130

実行 7

ステートメント独自の作成 14

リスト 13

データ・セットコピー 7

作成 5, 6

デフォルト属性 6

編集 6

テスト 127

デバッグ 127

命名上の制約 5

命名の制約事項 5

予約語 5

ライブラリー 5

暗黙的実行 9

インストール先定義の 5

ユーザー定義の 5

ALTLIB を用いた割り振り 11

language 1

CLIST エラー・コードの理解 130

CLIST エラー・コードのリスト 130

CLIST ステートメントの長さ 15

CLIST での大文字の使用 15

CLIST 内でのフォーマット設定 15

CLIST のアテンション機能 121

CLIST のコピー考慮事項 7

CLIST の実行暗黙的に 8

一般 7

明示的に 7

CLIST が実行された方法の確認 50

CLIST のテスト 127

CLIST のデバッグ 127

CLIST の明示的実行 7

CLIST の例 153

アテンション・ルーチン 119

アプリケーションへのインターフェース単純化 153

エラー・ルーチン 124

オプション組み込み 149

加算CALC CLIST へのフロントエンド・プロンプト

140

キーワードフォアグラウンド/バックグラウンド・ジョブを実行するための使用 147

CLIST の例 (続き)

許可CLIST のバックグラウンド実行 147

CLIST のフォアグラウンド実行 147

区別オペランドからの演算子 149

データからの変数 145

組み込みオプション 149

JCL ステートメント 145

TSO/E コマンド 136

検証ジョブ・カード情報 145

作成入力からの算術式 137

フルスクリーン・アプリケーション 160

VIO データ・セット 150

サブストリング化入力ストリングでの実行 145

ファイル入出力実行時の回避 154

システム関連タスク単純化 150

使用フォアグラウンド/バックグラウンド・ジョブを実行するためのキーワード 147

初期設定システム・サービス 142

ジョブのバックグラウンド実行 147

ジョブのフォアグラウンド実行 147

ジョブ・カード情報検証 145

単純化アプリケーションへのインターフェース 153

システム関連タスク 150

ルーチン・タスク 137

フルスクリーン・アプリケーション作成 160

編成関連アクティビティー 136

保護先行ゼロ 145

/* を含む JCL ステートメント 145

呼び出しサブタスクを実行するためのネストされた

CLIST 142

システム・サービス 142

ルーチン・タスク単純化 136

連結SYSPROC へのデータ・セット 157

READDVAL ステートメントファイル入出力の実行時の使用 154

226 z/OS V1R8.0 TSO/E CLIST

Page 247: TSO/E CLIST

CLIST の例 (続き)

TSO/E コマンド組み込み 136

VIO データ・セット作成 150

CLIST の例のリスト 135

CLIST 変数設定される、LISTDSI によって

&LASTCC 192

&SYDSORG 190

&SYSADIRBLK 192

&SYSALLOC 191

&SYSBLKSIZE 191

&SYSBLKSTRK 192

&SYSCREATE 191

&SYSDATACLASS 193

&SYSDSNAME 190

&SYSDSSMS 193

&SYSEXDATE 191

&SYSEXTENTS 191

&SYSKEYLEN 191

&SYSLRECL 191

&SYSMEMBERS 192

&SYSMGMTCLASS 193

&SYSMSGLVL1 192

&SYSMSGLVL2 192

&SYSPASSWORD 192

&SYSPRIMARY 191

&SYSRACFA 192

&SYSREASON 192

&SYSRECFM 191

&SYSREFDATE 191

&SYSSECONDS 191

&SYSSTORCLASS 193

&SYSTRKSCYL 192

&SYSUDIRBLK 192

&SYSUNIT 190

&SYSUNITS 191

&SYSUPDATED 192

&SYSUSED 191

&SYSUSEDPAGES 191

&SYSVOLUME 190

CLOSFILE ステートメント構文 177

使用 112

commands

命名上の制約 5

命名の制約事項 5

COMPRESS CLIST 150

CONTROL ステートメント構文 177

サブプロシージャー内での使用 92

CONTROL ステートメント (続き)

CLIST 診断での使用 127

CONTROL ステートメントの FLUSH オプション 179

CONTROL ステートメントの NOFLUSH オプション179

DDATA PROMPT-ENDDATA シーケンス構文 180

プロンプトに対する応答をコーディングするための使用 99

DATATYPE 62

DATA-ENDDATA シーケンス構文 180

コマンドをステートメントと区別するための使用 88

DBCS (2 バイト文字セット) 20, 66

ストリングに DBCS データが含まれているかの判別、&DATATYPE の使用 62

CLIST サポート 20

CLIST 内で DBCS データを使用する場合の制限一般 20

EDIT コマンドによる 6

&SYSINDEX の使用 73

DBCS ストリングの文字データとしての定義&STR の使用 66

DBCS ストリングを含むストリングの部分的分割&SUBSTR の使用 69

&SYSCSUBSTR の使用 70

DBCS データの EBCDIC への変換、&SYSONEBYTE の使用 74

DBCS データを含む変数の結合 31

DBCS にかかわるエラー・コード 132

EBCDIC データの DBCS への変換、&SYSTWOBYTE の使用 75

&LENGTH による DBCS バイトのカウント 63

&SYSCLENGTH による DBCS 文字のカウント 64

DELETEDS CLIST 136

DFHSM (データ機能階層記憶管理プログラム)

レベルの判別&SYSHSM の使用 43

DFSMS/MVS

CLIST での可用性 47

DO ステートメント構文 180

DO-END シーケンスアテンション・ルーチン内の 117

使用IF-THEN-ELSE シーケンスの 78

DO-UNTIL-END シーケンスループの作成のための使用 83

索引 227

Page 248: TSO/E CLIST

DO-WHILE-END シーケンスループの作成のための使用 82

EEDIT コマンドのもとでの CLIST の作成 6

のもとでの CLIST の実行 7

END コマンド 95

END ステートメント構文 182

END コマンドまたはサブコマンドとの区別 87

EQ (等号) 18

ERROR ステートメント 122

エラーの原因となる命令のリスト 122

構文 182

サブプロシージャー内での使用 92

入力スタックの保護 123

を使用したエラー処置の取り消し 122

EVAL 63

EXIT ステートメント構文 183

戻りコードを指定して CLIST を終了する 95

戻りコードを指定せずに CLIST を終了する 95

EXPAND CLIST 170

GGE (より大きいか等しい記号) 18

GETFILE ステートメント構文 184

使用 113

GLOBAL ステートメント構文 185

GOTO ステートメント構文 186

サブプロシージャー内での使用 92

例 96

GT (より大きい) 18

HHOUSKPNG CLIST 119

IIF-THEN-ELSE シーケンス決定を下すための使用 78

構文 186

ヌルの ELSE 形式 79

ヌルの THEN 形式 79

IF-THEN-ELSE シーケンス (続き)

ネスト 80

標準形式 78

IF-THEN-ELSE シーケンスの標準形式 78

ISPEXEC コマンド、ISPF のCLIST の使用 160

ISPF (対話式システム生産性向上機能)

可用性&SYSISPF による判別 44

コマンド、CLIST 内の 6, 110

ダイアログ作成 159

例 160

パネル、CLIST での使用 159

ALTLIB の使用 10

CLIST に関する規則変数の長さ 22

CLIST のコピー 7

CLIST の作成および編集 6

CLIST の実行 7

TSO/E コマンド出力のトラップ 55

JJCL (ジョブ制御言語)

入出力を実行する場合の特別な考慮事項 115

CLIST 内への組み込み注意 17

例 145

/* を含むものの保護 145

JES

名前の確認 44

ネットワーク・ノード名の確認 46

レベルの確認 44

LLASTCC 56

LE (より小さいか等しい記号) 18

LENGTH 63

LISTALC コマンドコマンド出力の管理 155

LISTDSI ステートメント値を変数に割り当てるための使用 58

構文 187

によって設定される変数 190

戻りコード 194

理由コード 194

CLIST の例 170

LISTER CLIST 136

LOG/LIST パラメーター設定 159, 163

228 z/OS V1R8.0 TSO/E CLIST

Page 249: TSO/E CLIST

LookAt メッセージ検索ツール xiv

LT (より小さい記号) 18

MMAIN オペランド、CONTROL の保護するための使用アテンション・ルーチンのグローバル変数 119

アテンション・ルーチンの入力スタック 119

エラー・ルーチンのグローバル変数 123

エラー・ルーチンの入力スタック 123

MAXCC 57

MVS/DFP

インストールされているレベルの確認 43

NNE (不等号) 18

NG (より大きくない記号) 18

NGLOBAL ステートメント構文 195

サブプロシージャー内での使用 91

NL (より小さくない記号) 18

NOCAPS

CONTROL ステートメント・オペランド 179

NOFLUSH オペランド、CONTROL の入力スタックの保護のための使用エラー・ルーチンの 123

NRSTR 64

OOPENFILE ステートメント 111

構文 196

使用 111

OR

論理演算子 18

SELECT ステートメント内 201

OUTPUT CLIST 142

PPF キー定義設定 159

設定 (1 から 12) 165

設定値 (13 から 24) 167

PHONE CLIST 153

PROC ステートメント構文 197

サブプロシージャー内の 89

によるパラメーターの定義 24

PROC ステートメント (続き)

によるプロンプト 97

による変数への値の割り当て 24

PROFILE CLIST 159, 160

PUTFILE ステートメント構文 198

使用 113

RRACF の可用性

&SYSRACF による判別 47

READ ステートメント構文 199

による変数の定義 24

による変数への値の割り当て 24

プロンプトを出すための使用 102

READDVAL ステートメント構文 199

ファイル入出力の実行時の使用 153

RETURN ステートメント構文 200

サブプロシージャー内の 90

RUNPRICE CLIST 147

SSCRIPTD CLIST 142

SCRIPTDS CLIST 140

SCRIPTNEST CLIST 142

SELECT ステートメント構文 200

セレクションをするための使用 80

RACF SELECT サブコマンドとの区別 82

SET ステートメント構文 202

による変数の定義 23

による変数への値の割り当て 23

SPROC CLIST 155

STR 66

string

入力でのサブストリング化の実行例 145

SUBMIT * コマンド例 145

SUBMITDS CLIST 145

SUBMITFQ CLIST 145

SUBSTR 68

symbol

連結 14

SYS4DATE 39

SYS4JDATE 39

索引 229

Page 250: TSO/E CLIST

SYS4SDATE 39

SYSABNCD 58

SYSABNRC 58

SYSAPPCLU 44

SYSASIS 52

SYSCALL ステートメント構文 203

サブプロシージャーを呼び出すための使用 88

SYSCAPS 70

SYSCLENGTH 64

SYSCLONE 42

SYSCONLIST 51

SYSCPU 42

SYSCSUBSTR 70

SYSDATE 39

SYSDFP 43

SYSDLM 53

SYSDSN 70

SYSDVAL 53

SYSENV 49

SYSFLUSH 52

SYSHSM 43

SYSICMD 50

SYSINDEX 72

SYSISPF 44

SYSJDATE 39

SYSJES 44

SYSLC 70

SYSLIST 52

SYSLRACF 44

SYSLTERM 40

SYSMSG 52

SYSMVS 45

SYSNAME 45

SYSNEST 50

SYSNODE 46

SYSNSUB 73

SYSONEBYTE 74

SYSOPSYS 46

SYSOUTLINE 54

SYSOUTTRAP 54

SYSPCMD 50

SYSPLEX 47

SYSPREF 41

SYSPROC 41

SYSPROMPT 51

SYSRACF 47

SYSREF ステートメント構文 204

サブプロシージャー内の 90

SYSSCAN 49

SYSSCMD 50

SYSSDATE 39

SYSSECLAB 47

SYSSMFID 48

SYSSMS 47

SYSSRV 42

SYSSTIME 40

SYSSYMDEF 48

SYSSYMLIST 51

SYSTERMID 40

SYSTIME 40

SYSTSOE 49

SYSTWOBYTE 75

SYSUID 41

SYSWTERM 40

TTERMIN ステートメント構文 204

引き渡し、端末への制御の 107

TERMING ステートメント構文 204

TEST コマンドのもとでの CLIST の実行 7

TESTDYN CLIST 148

TO 式反復 DO ループ内の 84

TSOEXEC コマンド 58

TSO/E

インストールされているレベルの確認 49

セキュリティー・レベルの確認 47

端末 ID の確認 40

MVS 記号名の確認 48

MVS システム・シンボルの確認 42

MVS/DFP レベルの確認 43

TSO/E コマンドからの出力のトラップ説明 54

例 156

による入力を促すプロンプト 98

CLIST の使用 2, 17

TSO/E サービス機能別の言語からの CLIST の実行のための使用 8

Vvariable

制御反復 DO ループ内の 84

VIO データ・セット作成 150

230 z/OS V1R8.0 TSO/E CLIST

Page 251: TSO/E CLIST

WWHEN 節、SELECT ステートメントの

WHEN コマンドとの区別 82

WRITE ステートメント構文 206

によるプロンプト 24, 98

WRITENR ステートメント構文 206

によるプロンプト 98

Zz/OS 名、バージョンなど確認 46

[特殊文字]&DATATYPE 組み込み関数 62

&EVAL 組み込み関数 63

&LASTCC

参照: CLIST 変数&LASTCC 制御変数 56

&LENGTH 組み込み関数 63

&MAXCC 制御変数 57

&NRSTR 組み込み関数 64

&STR 組み込み関数 66

&SUBSTR 組み込み関数 68

&SYS4DATE 制御変数 39

&SYS4JDATE 制御変数 39

&SYS4SDATE 制御変数 39

&SYSABNCD 制御変数 58

&SYSABNRC 制御変数 58

&SYSADIRBLK

参照: CLIST 変数&SYSALLOC

参照: CLIST 変数&SYSAPPCLU 制御変数 44

&SYSASIS 制御変数 52

&SYSBLKSIZE

参照: CLIST 変数&SYSBLKSTRK

参照: CLIST 変数&SYSCAPS 組み込み関数 70

&SYSCLENGTH 組み込み関数 64

&SYSCLONE 制御変数 42

使用目的 42

&SYSCONLIST 制御変数 51

&SYSCPU 制御変数 42

&SYSCREATE

参照: CLIST 変数&SYSCSUBSTR 組み込み関数 70

&SYSDATACLASS

参照: CLIST 変数&SYSDATE 制御変数 39

&SYSDFP 制御変数 43

&SYSDLM 制御変数 53

&SYSDSN 組み込み関数 70

&SYSDSNAME

参照: CLIST 変数&SYSDSORG

参照: CLIST 変数&SYSDSSMS

参照: CLIST 変数&SYSDVAL 制御変数 53

&SYSENV 制御変数 49

&SYSEXDATE

参照: CLIST 変数&SYSEXTENTS

参照: CLIST 変数&SYSFLUSH 制御変数 52

&SYSHSM 制御プログラム 43

&SYSICMD 制御変数 50

&SYSINDEX 組み込み関数 72

&SYSISPF 制御変数 44

&SYSJDATE 制御変数 39

&SYSJES 制御変数 44

&SYSKEYLEN

参照: CLIST 変数&SYSLC 組み込み関数 70

&SYSLIST 制御変数 52

&SYSLRACF 制御変数 44

&SYSLRECL

参照: CLIST 変数&SYSLTERM 制御変数 40

&SYSMEMBERS

参照: CLIST 変数&SYSMGMTCLASS

参照: CLIST 変数&SYSMSG 制御変数 52

&SYSMSGLVL1

参照: CLIST 変数&SYSMSGLVL2

参照: CLIST 変数&SYSMVS 制御変数 45

&SYSNAME 制御変数 45

使用目的 42

&SYSNEST 制御変数 50

&SYSNODE 制御変数 46

&SYSNSUB 組み込み関数 73

&SYSONEBYTE 組み込み関数 74

&SYSOPSYS 制御変数 46

&SYSOUTLINE 制御変数 54

&SYSOUTTRAP 制御変数 54

索引 231

Page 252: TSO/E CLIST

&SYSPASSWORD

参照: CLIST 変数&SYSPCMD 制御変数 50

&SYSPLEX 制御変数 47

使用目的 42

&SYSPREF 制御変数 41

&SYSPRIMARY

参照: CLIST 変数&SYSPROC 制御変数 41

&SYSPROMPT 制御変数 51

&SYSRACF 制御変数 47

&SYSRACFA

参照: CLIST 変数&SYSREASON

参照: CLIST 変数&SYSRECFM

参照: CLIST 変数&SYSREFDATE

参照: CLIST 変数&SYSSCAN 制御変数 49

&SYSSCMD 制御変数 50

&SYSSDATE 制御変数 39

&SYSSECLAB 制御変数 47

&SYSSECONDS

参照: CLIST 変数&SYSSMFID 制御変数 48

&SYSSMS 制御変数 47

&SYSSRV 制御変数 42

&SYSSTIME 制御変数 40

&SYSSTORCLASS

参照: CLIST 変数&SYSSYMDEF 制御変数 48

&SYSSYMLIST 制御変数 51

&SYSTERMID 制御変数 40

&SYSTIME 制御変数 40

&SYSTRKSCYL

参照: CLIST 変数&SYSTSOE 制御変数 49

&SYSTWOBYTE 組み込み関数 75

&SYSUDIRBLK

参照: CLIST 変数&SYSUID 制御変数 41

&SYSUNIT

参照: CLIST 変数&SYSUNITS

参照: CLIST 変数&SYSUPDATED

参照: CLIST 変数&SYSUSED

参照: CLIST 変数&SYSUSEDPAGES

参照: CLIST 変数

&SYSVOLUME

参照: CLIST 変数&SYSWTERM 制御変数 40

&& (論理 AND 記号) 18

* (乗算記号)

算術演算子として 18

** (指数記号)

算術演算子として 18

+ (正符号)

算術演算子として 18

++

算術演算子として 18

- (負符号) 18

/ (除算記号)

算術演算子として 18

// (剰余記号)

算術演算子として 18

= (等号) 18

> (より大きい記号) 18

>= (より大きいか等しい) 18

< (より小さい記号) 18

<= (より小さいか等しい) 18

| (論理 OR 記号) 18

232 z/OS V1R8.0 TSO/E CLIST

Page 253: TSO/E CLIST
Page 254: TSO/E CLIST

���

プログラム番号: 5694-A01, 5655-G52

Printed in Japan

SA88-8627-04