...

Pathway/iTS SCREEN COBOLリファレンス マニュアル

by user

on
Category: Documents
165

views

Report

Comments

Transcript

Pathway/iTS SCREEN COBOLリファレンス マニュアル
Pathway/iTS SCREEN COBOL
リファレンス マニュアル
概要
このマニュアルでは、オペレータ端末またはインテリジェント・デバ
イスとの通信およびサーバへのデータ送信を行うプログラムを作成す
るために Compaq NonStop™ Pathway/iTS アプリケーション・プログラ
マが 使用する SCREEN COBOL プログラミング言語について説明しま
す。
製品バージョン
Pathway/iTS 1.0
マニュアル番号
426750-001J
発行
2001 年 6 月
コンパックコンピュータ株式会社
426750-001J
-7
本書のプログラムを含むすべての内容は、著作権法上の保護を受けて
おります。著者、発行者の許諾を得ず、無断で複写、複製をすること
は禁じられております。
原 典
Document History
Part Number
Product Version
Published
127341
136664
139453
426750-001
Pathway/TS D42
Pathway/TS D42+
Pathway/TS D42+
Pathway/iTS 1.0
August 1996
October 1997
January 1998
October 2000
New editions incorporate any updates issued since the previous edition.
A plus sign(+) after a release ID indicates that this manual describes function added to the
base release, either by an interim product modification(IPM) or by a new product version on
a .99 site update tape(SUT).
Ordering Information
For manual ordering information: domestic U.S. customers, call 1-800-243-6886;
international customers, contact your local sales representative.
Document Disclaimer
Information contained in a manual is subject to change without notice. Please check with
your authorized Tandem representative to make sure you have the most recent information.
Export Statement
Export of the information contained in this manual may require authorization from the U.S
Department of Commerce.
Examples
Examples and sample programs are for illustration only and may not be suited for your
particular purpose. Tandem does not warrant, guarantee, or make any representations
regarding the use or the results of the use of any examples or sample program in any
documentation. You should verify the applicability of any example or sample program
before placing the software into productive use.
U. S.Government Customers FOR U.S. GOVERNMENT CUSTOMERS REGARDING THIS DOCUMENTATION AND
THE ASSOCIATED SOFTWARE;
These notices shall be marked on any reproduction of this data, in whole or in part.
NOTICE: Notwithstanding any other lease or license that may pertain to, or accompany the
delivery of, this computer software, the rights of the Government regarding its use,
reproduction and disclosure are as set forth in Section 52.227-19 of the FARS Computer
Software-Restricted Rights clause.
RESTRICTED RIGHTS NOTICE: Use, duplication or disclosure by the Government is
subject to the restrictions as set forth in subparagraph(c)(1)(ii) of the Rights in Technical
Data and Computer Software clause at DFARS 52.227-7013.
RESTRICTED RIGHTS LEGEND: Use, duplication or disclosure by the Government is
subject to the restrictions as set forth in paragraph(b)(3)(B) of the Rights in Technical Data
and Computer Software clause at DAR 7-104.9(a). This computer software is submitted
with “restricted rights.” Use, duplication or disclosure is subject to the restrictions as set
forth in NASA FAR SUP 18-52 227-79(April 1985) “Commercial Computer Software Restricted Rights (April 1985).” If the contract contains the Clause at 18-52 227-74 “Rights
in Data General” then the “Alternate III” clause applies.
U. S Government Users Restricted Rights—Use, duplications or disclosure restricted by
GSA ADP Schedule Contract.
Unpublished—All rights reserved under the Copyright Laws of the United States.
-8
426750-001J
目 次
目 次
更新情報 ..............................................................................................................................................ix
マニュアル情報 ......................................................................................................................ix
新規情報と変更内容 ...............................................................................................................ix
このマニュアルについて ...................................................................................................................xi
対象となる読者 ......................................................................................................................xi
関連マニュアル ......................................................................................................................xi
表記規約 .................................................................................................................................xii
第1章
SCREEN COBOL について
1.1
Pathway 環境の概要 .............................................................................................................1-2
1.1.1
1.2
プロセス間通信 ....................................................................................................................1-7
1.3
システム・ツールによるプログラム開発...........................................................................1-8
1.4
第2章
1.3.1
SCREEN COBOL コンパイラによるオブジェクト・ファイルの生成 .............1-8
1.3.2
SCUP によるオブジェクト・ファイルの管理 ..................................................1-10
プログラム・ロジックの設計............................................................................................1-11
1.4.1
SCREEN COBOL プログラム・グループの編成..............................................1-11
1.4.2
プログラム設計に関する一般的な規則 .............................................................1-12
SCREEN COBOL ソース・プログラム
2.1
426750-001J
Pathway システムのコンポーネント....................................................................1-2
プログラムのオペレーティング・モード...........................................................................2-1
2.1.1
ブロック・モードのプログラム ...........................................................................2-2
2.1.2
会話モード・プログラム ......................................................................................2-2
2.1.3
インテリジェント・モードのプログラム ...........................................................2-2
2.2
プログラムの構成 .................................................................................................................2-3
2.3
言語要素 ................................................................................................................................2-3
2.3.1
SCREEN COBOL 文字セット ..............................................................................2-4
2.3.2
編集用文字 (Editing Character) .............................................................................2-5
2.3.3
句読文字 (Punctuation Character) .........................................................................2-5
2.3.4
分離符 (Separator)..................................................................................................2-6
2.3.5
SCREEN COBOL の語 (Word).............................................................................2-6
2.3.6
リテラル (Literal) ..................................................................................................2-7
2.3.7
混合データ項目 (Mixed Data Item) ....................................................................2-10
i
目 次 2.4
2.5
2.6
第4章
2.4.2
ANSI 標準リファレンス・フォーマット .......................................................... 2-11
2.4.3
コメント行 .......................................................................................................... 2-12
2.4.4
継続行 (Continuation Line) ................................................................................. 2-13
2.4.5
コンパイラ・コマンド行 (Compiler Command Line)....................................... 2-13
算術演算 (Arithmetic Operation) ....................................................................................... 2-13
2.5.1
算術式 (Arithmetic Expression) .......................................................................... 2-13
2.5.2
算術演算子 (Arithmetic Operator) ...................................................................... 2-14
2.5.3
算術式の演算順序 ............................................................................................... 2-15
条件式 (Conditional Expression)........................................................................................ 2-18
2.6.1
単純条件 (Simple Condition) .............................................................................. 2-18
2.6.2
複合条件 (Complex Condition)........................................................................... 2-21
2.6.3
条件評価の規則................................................................................................... 2-23
2.8
データの参照 ..................................................................................................................... 2-25
2.8.1
修飾 (Qualification)............................................................................................. 2-25
2.8.2
添字付け (Subscripting) ...................................................................................... 2-26
2.8.3
一意名の使用法................................................................................................... 2-28
2.8.4
条件名の使用法................................................................................................... 2-28
データ表現 ......................................................................................................................... 2-29
2.9.1
標準桁寄せ規則................................................................................................... 2-29
2.9.2
標準外の桁寄せ................................................................................................... 2-29
IDENTIFICATION DIVISION ( 見出し部 )
3.1
PROGRAM-ID 段落 ............................................................................................................ 3-1
3.2
DATE-COMPILED 段落 ..................................................................................................... 3-2
ENVIRONMENT DIVISION ( 環境部 )
4.2
CONFIGURATION SECTION ( 構成節 )........................................................................... 4-1
4.1.1
SOURCE-COMPUTER 段落 ................................................................................ 4-2
4.1.2
OBJECT-COMPUTER 段落 ................................................................................. 4-2
4.1.3
SPECIAL-NAMES 段落 ....................................................................................... 4-6
INPUT-OUTPUT SECTION ( 入出力節 )......................................................................... 4-10
DATA DIVISION ( データ部 )
5.1
ii
タンデム標準リファレンス・フォーマット ..................................................... 2-11
テーブル (Table) ................................................................................................................ 2-24
4.1
第5章
2.4.1
2.7
2.9
第3章
リファレンス・フォーマット ........................................................................................... 2-10
DATA DIVISION の構成 .................................................................................................... 5-2
5.1.1
WORKING-STORAGE SECTION ...................................................................... 5-2
5.1.2
LINKAGE SECTION............................................................................................ 5-3
5.1.3
SCREEN SECTION .............................................................................................. 5-4
5.1.4
MESSAGE SECTION........................................................................................... 5-4
426750-001J
目 次
5.2
5.3
5.4
5.5
5.6
データ構造 ............................................................................................................................5-4
5.2.1
レベル番号 01-49...................................................................................................5-5
5.2.2
レベル番号 66、77、および 88 ............................................................................5-5
データ記述項 ........................................................................................................................5-6
5.3.1
JUSTIFIED 句 ........................................................................................................5-8
5.3.2
OCCURS 句 ...........................................................................................................5-8
5.3.3
PICTURE 句.........................................................................................................5-10
5.3.4
REDEFINES 句 ....................................................................................................5-13
5.3.5
RENAMES 句 ......................................................................................................5-14
5.3.6
SIGN 句 ................................................................................................................5-16
5.3.7
SYNCHRONIZED 句 ..........................................................................................5-16
5.3.8
USAGE 句 ............................................................................................................5-19
5.3.9
VALUE 句 ............................................................................................................5-20
スクリーン記述項 ...............................................................................................................5-22
5.4.1
ベース・スクリーン ............................................................................................5-24
5.4.2
スクリーン・オーバーレイ領域 .........................................................................5-24
5.4.3
オーバーレイ・スクリーン ................................................................................5-25
5.4.4
スクリーン・グループ ........................................................................................5-26
5.4.5
スクリーン・フィールド ....................................................................................5-27
5.4.6
入力制御文字句 ...................................................................................................5-29
5.4.7
フィールド特性句 ...............................................................................................5-33
メッセージ記述項 ...............................................................................................................5-60
5.5.1
FILLER の使用に関する制約 .............................................................................5-61
5.5.2
FILLER の使用法 ................................................................................................5-61
5.5.3
PICTURE 句および TO/FROM/USING 句の使用に関する制約 ......................5-62
5.5.4
USER CONVERSION 句および PRESENT IF 句の使用に関する制約 ...........5-63
5.5.5
メッセージ記述項の使用法 ................................................................................5-63
5.5.6
メッセージ記述項の句 ........................................................................................5-64
特殊レジスタ ......................................................................................................................5-93
5.6.1
DIAGNOSTIC-ALLOWED 特殊レジスタ .........................................................5-93
5.6.2
LOGICAL-TERMINAL-NAME 特殊レジスタ..................................................5-94
5.6.3
NEW-CURSOR 特殊レジスタ ............................................................................5-94
5.6.4
OLD-CURSOR 特殊レジスタ.............................................................................5-94
5.6.5
PW-INPUT-FIELDS-MISSING 特殊レジスタ ..................................................5-94
5.6.6
PW-QUEUE-FKEY-UMP 特殊レジスタ............................................................5-95
5.6.7
PW-QUEUE-FKEY-TIMEOUT 特殊レジスタ ..................................................5-96
5.6.8
PW-TCP-PROCESS-NAME および PW-TCP-SYSTEM-NAME
特殊レジスタ .......................................................................................................5-96
426750-001J
5.6.9
PW-TERMINAL- ERROR-OCCURRED 特殊レジスタ ...................................5-97
5.6.10
PW-UNSOLICITED-MESSAGE-QUEUED 特殊レジスタ ...............................5-97
5.6.11
PW-USE-NEW-CURSOR 特殊レジスタ ...........................................................5-98
iii
目 次 第6章
REDISPLAY 特殊レジスタ ............................................................................... 5-98
5.6.13
RESTART-COUNTER 特殊レジスタ ............................................................. 5-100
5.6.14
STOP-MODE 特殊レジスタ............................................................................. 5-100
5.6.15
TELL-ALLOWED 特殊レジスタ..................................................................... 5-100
5.6.16
TERMINAL-FILENAME 特殊レジスタ ......................................................... 5-101
5.6.17
TERMINAL-PRINTER 特殊レジスタ ............................................................. 5-101
5.6.18
TERMINATION-STATUS 特殊レジスタ ....................................................... 5-101
5.6.19
TERMINATION-SUBSTATUS 特殊レジスタ ............................................... 5-102
5.6.20
TRANSACTION-ID 特殊レジスタ .................................................................. 5-102
PROCEDURE DIVISION ( 手続き部 )
6.1
6.2
iv
5.6.12
PROCEDURE DIVISION の構成 ....................................................................................... 6-1
6.1.1
宣言プロシージャ (DECLARATIVE PROCEDURE) ........................................ 6-2
6.1.2
節 (SECTION)....................................................................................................... 6-2
6.1.3
段落 (PARAGRAPH)............................................................................................ 6-3
6.1.4
センテンス (SENTENCE) およびステートメント (STATEMENT).................. 6-3
6.1.5
プロシージャ (PROCEDURE) ............................................................................. 6-4
PROCEDURE DIVISION ステートメント ........................................................................ 6-4
6.2.1
ABORT-TRANSACTION ステートメント ........................................................ 6-6
6.2.2
ACCEPT ステートメント .................................................................................... 6-6
6.2.3
ACCEPT DATE/DAY/TIME ステートメント .................................................. 6-14
6.2.4
ADD ステートメント ......................................................................................... 6-16
6.2.5
BEGIN-TRANSACTION ステートメント ........................................................ 6-18
6.2.6
CALL ステートメント ....................................................................................... 6-20
6.2.7
CHECKPOINT ステートメント ........................................................................ 6-31
6.2.8
CLEAR ステートメント .................................................................................... 6-31
6.2.9
COMPUTE ステートメント .............................................................................. 6-32
6.2.10
COPY ステートメント ....................................................................................... 6-32
6.2.11
DELAY ステートメント ................................................................................... 6-35
6.2.12
DEVICEINFO ステートメント.......................................................................... 6-36
6.2.13
DISPLAY BASE ステートメント ..................................................................... 6-36
6.2.14
DISPLAY OVERLAY ステートメント............................................................. 6-38
6.2.15
DISPLAY RECOVERY ステートメント .......................................................... 6-39
6.2.16
DISPLAY ステートメント ................................................................................. 6-40
6.2.17
DIVIDE ステートメント .................................................................................... 6-43
6.2.18
END-TRANSACTION ステートメント ............................................................ 6-44
6.2.19
EXIT ステートメント ........................................................................................ 6-45
6.2.20
GO TO ステートメント ..................................................................................... 6-46
6.2.21
IF ステートメント .............................................................................................. 6-47
6.2.22
IF ... DOUBLEBYTE ステートメント .............................................................. 6-48
6.2.23
IF ... WITHIN ステートメント .......................................................................... 6-48
426750-001J
目 次
第7章
MOVE ステートメント.......................................................................................6-49
6.2.25
MULTIPLY ステートメント ..............................................................................6-54
6.2.26
PERFORM ステートメント ................................................................................6-55
6.2.27
PRINT SCREEN ステートメント ......................................................................6-60
6.2.28
RECEIVE UNSOLICITED MESSAGE ステートメント ..................................6-62
6.2.29
RECONNECT MODEM ステートメント ..........................................................6-65
6.2.30
REPLY TO UNSOLICITED MESSAGE ステートメント ................................6-66
6.2.31
RESET ステートメント ......................................................................................6-67
6.2.32
RESTART-TRANSACTION ステートメント ...................................................6-70
6.2.33
SCROLL ステートメント ...................................................................................6-71
6.2.34
SEND ステートメント ........................................................................................6-71
6.2.35
SEND MESSAGE ステートメント ....................................................................6-84
6.2.36
SET ステートメント ...........................................................................................6-91
6.2.37
SET MINIMUM-ATTR ステートメント ...........................................................6-93
6.2.38
SET MINIMUM-COLOR ステートメント ........................................................6-95
6.2.39
STOP RUN ステートメント ...............................................................................6-95
6.2.40
SUBTRACT ステートメント .............................................................................6-96
6.2.41
TERMINALINFO ステートメント ....................................................................6-98
6.2.42
TRANSFORM ステートメント ........................................................................6-100
6.2.43
TURN ステートメント .....................................................................................6-105
6.2.44
IBM 3270 端末での属性の扱い ........................................................................6-108
6.2.45
6500 シリーズ端末での属性の扱い .................................................................6-109
6.2.46
USE FOR SCREEN RECOVERY ステートメント .........................................6-109
6.2.47
USE FOR TERMINAL-ERRORS ステートメント .........................................6-110
コンパイル
7.1
7.2
7.3
426750-001J
6.2.24
SCREEN COBOL コンパイラの実行 ..................................................................................7-1
7.1.1
コンパイラ生成ファイルの使用法 .......................................................................7-3
7.1.2
PARAM SAMECPU コマンドの使用法 ..............................................................7-3
7.1.3
PARAM SWAPVOL の使用法 .............................................................................7-4
コンパイラ・コマンドの使用法 ..........................................................................................7-5
7.2.1
コンパイラ・コマンドの指定 ..............................................................................7-5
7.3.2
コンパイラ・コマンドが有効となる時 ...............................................................7-5
7.2.3
コンパイラ・コマンドのサマリ ...........................................................................7-6
コンパイラ・コマンドの説明..............................................................................................7-7
7.3.1
ANSI コマンド ......................................................................................................7-7
7.3.2
COMPILE コマンド ..............................................................................................7-8
7.3.3
CROSSREF コマンド ............................................................................................7-8
7.3.4
ENDIF コマンド ..................................................................................................7-10
7.3.5
ERRORS コマンド ..............................................................................................7-10
7.3.6
HEADING コマンド............................................................................................7-10
v
目 次 第8章
付録 A
7.3.7
IF コマンド ......................................................................................................... 7-11
7.3.8
IFNOT コマンド ................................................................................................. 7-11
7.3.9
LINES コマンド .................................................................................................. 7-12
7.3.10
LIST コマンド..................................................................................................... 7-12
7.3.11
MAP コマンド .................................................................................................... 7-12
7.3.12
OPTION コマンド .............................................................................................. 7-13
7.3.13
RESETTOG コマンド......................................................................................... 7-14
7.3.14
SECTION コマンド ............................................................................................ 7-14
7.3.15
SETTOG コマンド .............................................................................................. 7-14
7.3.16
SHOWCOPY コマンド....................................................................................... 7-15
7.3.17
SMAP コマンド .................................................................................................. 7-15
7.3.18
SYMBOLS コマンド .......................................................................................... 7-15
7.3.19
SYNTAX コマンド ............................................................................................. 7-16
7.3.20
TANDEM コマンド ............................................................................................ 7-16
7.3.21
WARN コマンド ................................................................................................. 7-16
7.4
コンパイル統計データ ...................................................................................................... 7-17
7.5
コンパイラの停止 .............................................................................................................. 7-18
7.6
ディスク・スペースの節約 ............................................................................................... 7-18
7.7
SCREEN COBOL の制限事項 .......................................................................................... 7-19
Pathway アプリケーションの例
8.1
PATHMON および PATHCOM プロセスの実行 .............................................................. 8-2
8.2
ブロック・モード端末用 SCREEN COBOL プログラム.................................................. 8-3
8.3
会話モード端末用 SCREEN COBOL プログラム ............................................................. 8-7
8.4
COBOL で作成されたサーバ・プログラム ..................................................................... 8-11
ADVISORY メッセージ
4.1 メッセージと記述 .................................................................................................................. A-1
A.2 ADVISORY メッセージ・ルーチンの修正と置換 ............................................................. A-4
付録 B
診断スクリーン
付録 C
SCREEN COBOL コンパイラ診断メッセージ
付録 D
MESSAGE SECTION ステートメントのエラー
付録 E
SCREEN COBOL 予約語 (Reserved Words)
付録 F
データ・タイプの対応と戻り値のサイズ
索引
vi
426750-001J
目 次
例
例 A-1
ADVISORY^MESSAGE ソース・リスティング...........................................................A-6
例 B-1
診断メッセージ生成のための DIAG^FORMAT パラメータ ........................................ B-3
例 B-2
DIAGNOSTIC^MESSAGE ソース・リスティング ....................................................... B-4
図 1-1
SCREEN COBOL プログラムによって実行されるオペレーション .............................1-2
図 1-2
TCP による複数の端末の制御 ..........................................................................................1-5
図 1-3
メッセージ記述の一致 ......................................................................................................1-6
図 1-4
PATHMON 環境でのプロセス間通信 .............................................................................1-8
図 1-5
SCREEN COBOL オブジェクト・ファイルの生成 ........................................................1-9
図 1-6
SCUP による SCREEN COBOL オブジェクト・ファイルの管理 ..............................1-10
図 1-7
プログラムの編成 ...........................................................................................................1-11
図 2-1
タンデム標準リファレンス・フォーマット .................................................................2-11
図 2-2
ANSI 標準リファレンス・フォーマット ......................................................................2-12
表 2-1
SCREEN COBOL 文字セット ..........................................................................................2-4
表 2-2
編集用文字 .........................................................................................................................2-5
表 2-3
句読文字 .............................................................................................................................2-5
表 2-4
分離符 ................................................................................................................................2-6
表 2-5
表意定数 .............................................................................................................................2-9
表 2-6
二項算術演算子 ...............................................................................................................2-14
表 2-7
単項算術演算子 ...............................................................................................................2-14
表 2-8
中間結果として保持される桁数.....................................................................................2-16
表 2-9
論理演算子 .......................................................................................................................2-22
図
表
表 2-10 COMPUTATIONAL データ項目が占める記憶領域 .....................................................2-29
表 4-1
システム名によって指定できるファンクション・キー ................................................4-7
表 4-2
システム名によって指定できる表示属性 .......................................................................4-8
表 5-1
データ記述項目の PICTURE ストリング記号 ..............................................................5-11
表 5-2
COMPUTATIONAL 項目が必要とするバイト数 .........................................................5-19
表 5-3
スクリーン・フィールドの種類と指定可能なフィールド特性句 ...............................5-28
表 5-4
スクリーン・フィールド表示属性での CONTROLLED 句の機能 .............................5-38
表 5-5
スクリーン・データ項目の記述に使用できる PICTURE 記号とその機能 ................5-48
表 5-6
ACCEPT ステートメントの実行時の RETURN および ENTER ビットの値 .............5-54
表 5-7
DISPLAY オペレーションと DYNAMIC 修飾語を指定した
シャドウ・フィールドの機能 ........................................................................................5-54
表 5-8
シャドウ項目の値とビット・パターンの対応 ..............................................................5-55
表 5-9
FIELD STATUS 句のシャドウ・データ項目の値 ........................................................5-67
表 5-10 PRESENT IF と選択状態の関係.....................................................................................5-68
426750-001J
vii
目 次 表 5-11 SEND MESSAGE の処理中に検出される可能性のある編集 ADVISORY
エラー番号 ..................................................................................................................... 5-69
表 5-12 メッセージ・フィールド ( メッセージ・データ項目 ) の記述に使用できる
PICTURE 記号とその機能 ............................................................................................ 5-78
表 5-13 TO/FROM/USING 句とメッセージ・フィールドの一般的タイプ ............................. 5-91
viii
表 6-1
ステートメントの種類 .................................................................................................... 6-5
表 6-2
BEGIN-TRANSACTION ステートメントのエラー番号 ............................................. 6-19
表 6-3
CALL ステートメントのエラー・コード.................................................................... 6-21
表 6-4
MOVE 可能なデータ項目の組合せ .............................................................................. 6-54
表 6-5
PRINT SCREEN ステートメントの TERMINATION-STATUS エラー・コード ..... 6-61
表 6-6
SEND MESSAGE ステートメントのための TERMINATION-SUBSTATUS の値... 6-91
表 6-7
TURN 処理でのスクリーン・フィールドの選択基準 ............................................... 6-107
表 7-1
コンパイラ・オプション・コマンド ............................................................................. 7-6
表 7-2
コンパイラ・クロスリファレンス・コマンド ............................................................... 7-7
表 7-3
コンパイラ・トグル・コマンド ...................................................................................... 7-7
表 F-1
整数型、その 1 ................................................................................................................. F-1
表 F-2
整数型、その 2 ................................................................................................................. F-2
表 F-3
浮動型、固定型、および複素数型 .................................................................................. F-3
表 F-4
文字型 ................................................................................................................................ F-4
表 F-5
構造型、論理型、セット型、およびファイル型 .......................................................... F-4
表 F-6
ポインタ型 ........................................................................................................................ F-5
426750-001J
更新情報
更新情報
マニュアル情報
概要
このマニュアルは、オペレータ端末またはインテリジェント・デバイスとの通信およびサーバへのデー
タ送信を行うプログラムを作成するために Compaq NonStop Pathway/iTS アプリケーション・プログラマが
使用する SCREEN COBOL プログラミング言語について説明します。
製品バージョン
Pathway/iTS 1.0
マニュアル番号
426750-001J
発行
2001 年 6 月
ドキュメント履歴
マニュアル番号
127341
136664
139453
426750-001
製品バージョン
Pathway/TS D42
Pathway/TS D42+
Pathway/TS D42+
Pathway/iTS 1.0
発行日
August 1996
October 1997
January 1998
October 2000
新規情報と変更内容
Compaq NonStop Pathway/iTS 製品は、以前は Pathway/TS と呼ばれていました。Independent Product と
してリリースされる Pathway/iTS 1.0 は、現在の Compaq 製品の命名基準に合わせ、新しいインターネット
(Web クライアント ) 機能を反映するような製品名に変更されました。製品名はマニュアルの各章における
最初の参照以降では、省略した名前 Pathway/iTS が使用されます。
製品の変更
このマニュアルでは、SCREEN COBOL オブジェクト・プログラムを Java コードや HTML ページで構
成される Web クライアントに変換する CONVERT コマンドについての情報が追加されています。この新
規情報を次に示します。
このマニュアルの今回の版では、以下のような Pathway/iTS の変更を反映しています。
□ Pathway/iTS の新しい機能として、SCUP の CONVERT コマンドを介して SCREEN COBOL オブジェ
クト・ファイルを Web クライアントに変換できるようになりました。この機能については、1-10 ペー
ジの「SCUP によるオブジェクト・ファイルの管理」に説明があります。
426750-001J
ix
更新情報 □ SEND MESSAGE ステートメントで ON ERROR 句が使用されたときは、3161 タイムアウト・エラー・
メッセージのフィルタ処理が行われます。これについては、6-85 ページの SEND MESSAGE ステート
メントの「TIMEOUT timeout-value」に説明があります。
マニュアルの改訂
□ pTAL および nld ユーティリティを使用するようになったことを反映して、A-4 ページの「ADVISORY
メッセージ・ルーチンの修正と置換」の内容が変更されました。また、標準 ADVISORY^MESSAGE
ルーチンのメッセージ・テキストを変更したり、それにメッセージを追加する方法が明確になるように
説明が追加されました。
□ 5-33 ページの「フィールド特性句」の罫線で囲んだ構文で、省略時の設定が訂正されました。
□ Compaq の商標および Pathway/iTS 製品名の表示が更新されました。
□ 使用されていない製品の参照が削除されました。
□ 細部にわたって用語が変更され、編集上の訂正が行われました。
□『Pathway SCREEN COBOL リファレンス・マニュアル』では、
「Statement」は「命令」と翻訳していま
したが、本マニュアルでは「ステートメント」としました。
x
426750-001J
このマニュアルについて
このマニュアルについて
このマニュアルでは、SCREEN COBOL プログラミング言語について説明します。SCREEN COBOL プ
ログラミング言語は、PATHMON 環境で稼動するオンライン・トランザクション処理アプリケーションの
ための端末表示またはインテリジェント・デバイスを定義・制御するプログラムを作成するために使用さ
れます。
対象となる読者
このマニュアルは、PATHMON 環境の端末表示またはインテリジェント・デバイスを定義・制御する
SCREEN COBOL プログラムを開発するプログラマを対象にしています。Compaq NonStop システムで、プ
ログラムを作成、コンパイル、および実行した経験があることを前提としています。
関連マニュアル
このマニュアルの他に、Pathway/iTS については以下のマニュアルに説明があります。
426750-001J
NonStop Pathway/iTS
SCUP リファレンス・
マニュアル
SCREEN COBOL ユーティリティ・プログラム (SCUP) を使用して
SCREEN COBOL ライブラリを管理する方法について説明します。
NonStop Pathway/iTS
Web クライアント・
プログラミング・
マニュアル
SCREEN COBOL リクエスタの Web クライアントへの変換する方法、お
よび Web クライアントの構築、配布方法を説明します。また、Java の開
発者および Web デザイナが、変換済みクライアントの Java および HTML
部分を修正、拡張するために必要な情報を提供します。
Compaq NonStop
Pathway/iTS
TCP and Terminal
Programming Guide
Pathway アプリケーションで使用する SCREEN COBOL リクエスタを作成
するプログラマのためのガイドです。
Compaq NonStop
Pathway/iTS
System Management
Manual
Pathway/iTS 製品への対話型管理インタフェースについて説明します。ま
た、Pathway/iTS オブジェクトを管理する方法についても説明します。
Compaq NonStop
Pathway/iTS
Management
Programming Manual
PATHMON 環境における Pathway/iTS オブジェクトの管理プログラミン
グ・インタフェースについて説明します。
Compaq NonStop
Pathway Products
Glossary
このマニュアルおよび Pathway/iTS、NonStop TS/MP、Pathway/XM 製品
に関するマニュアルで使用される技術用語を定義します。
オペレータ・
メッセージ・
マニュアル
イベント管理サービス (EMS) によって配信されるすべてのメッセージに
ついて説明します。また、NonStop TS/MP および Pathway/iTS プロセスが
生成するメッセージについても説明します。
xi
このマニュアルについて 表記規約
構文の表記
ここでは、このマニュアルに示されている構文の表記規約について要約します。
大文字
キーワードと予約語を示します。このアイテムは表記どおりに正確に入力する必要があります。角括弧
で囲まれていないアイテムは必須です。例:
MAXATTACH
斜体の小文字
ユーザ指定の変数アイテムを示します。角括弧で囲まれていないアイテムは必須です。例:
file-name
[ ] 角括弧
オプションの構文アイテムを囲みます。例:
TERM [\system-name.]$terminal-name
INT[ERRUPTS]
角括弧で囲んだアイテムのリストは、そのリストから1つのアイテムを選択するか、何も選択しないで
もよいことを意味します。リスト内のアイテムについては、各アイテムを角括弧で囲んで垂直に並べるか、
リストを角括弧で囲んで各アイテムを縦線で区切って水平に並べています。例:
LIGHTS [ ON
]
[ OFF
]
[ SMOOTH [ num ] ]
K [ X | D ] address-1
{ } 中括弧
中括弧で囲んだアイテムのリストは、選択できるアイテムのリストです。リスト内の1つのアイテムを
選択する必要があります。リスト内のアイテムについては、各アイテムを中括弧で囲んで垂直に並べるか、
リストを中括弧で囲んで各アイテムを縦線で区切って水平に並べています。例:
LISTOPENS PROCESS { $appl-mgr-name }
{ $process-name }
ALLOWSU { ON | OFF }
| 縦線
角括弧、または中括弧で囲んだリスト内で水平に並べた選択肢を区切ります。例:
INSPECT { OFF | ON | SAVEABEND }
xii
426750-001J
このマニュアルについて
... 省略記号
角括弧、または中括弧のすぐ後に省略記号が続いている場合は、囲まれている構文アイテムを何回でも
繰り返すことができます。例:
M address-1 [ , new-value ]...
[ - ] {0|1|2|3|4|5|6|7|8|9}...
単一の構文アイテムのすぐ後に省略記号が続いている場合は、そのアイテムを何回でも繰り返すことが
できます。例:
"s-char..."
区切り記号
括弧、コンマ、セミコロン、およびその他の区切り記号は表記どおりに入力する必要があります。例:
error := NEXTFILENAME ( file-name ) ;
LISTOPENS SU $process-name.#su-name
角括弧や中括弧のような記号を囲む引用符は、その記号を表記どおりに入力する必要があることを示し
ます。例:
"[" repetition-constant-list "]"
アイテム間のスペース
アイテムが括弧やコンマのような区切り記号でない場合、アイテム間に示しているスペースは必要です。
例:
CALL STEPMOM ( process-id ) ;
2つのアイテム間にスペースがない場合、スペースは許可されません。次の例では、ピリオドとその他
のアイテムとの間でスペースは許可されません。
$process-name.#su-name
複数行にまたがる場合
コマンドの構文が長すぎて 1 行に収まらない場合、後続の各行は3つのスペースでインデントし、さら
に各行間には空行が入ります。この空行は、後続の行内のアイテムと、垂直に並んだ選択リスト内のアイ
テムとを区別します。例:
ALTER [ / OUT file-spec / ] CONTROLLER
[ , attribute-spec ]...
426750-001J
xiii
このマニュアルについて メッセージの表記
ここでは、このマニュアル内で示されているメッセージの表記規約について要約します。
非斜体のテキスト
非斜体の文字、数字、および区切り記号は、そのテキストが表記どおりに表示されるか、返されること
を示します。例:
Backup Up.
斜体の小文字
値が表示されるか返される変数アイテムを示します。例:
p-register
process-name
xiv
426750-001J
第 1 章 SCREEN COBOL について
第 1 章 SCREEN COBOL について
SCREEN COBOL は、Compaq NonStop Pathway/iTS トランザクション処理ソフトウェアのコンポーネン
トの 1 つです。Pathway/iTS と基盤となる NonStop Transaction Services/MP (TS/MP) 製品と組み合わせる
ことによって、オンライン・トランザクション処理アプリケーションを開発するために必要なプログラム
およびオペレーティング環境を提供します。
SCREEN COBOL は、リクエスタと呼ばれるプログラムをコーディングするために使用される高級プロ
グラミング言語です。SCREEN COBOL によって作られたプログラムは、ディスプレイ端末を制御したり、
インテリジェント・デバイスを制御する外部プロセス ( つまり、Pathway/iTS の外で稼動するプロセス ) と
通信し、あるいは、Pathway 環境の中にある他のデバイスやプロセスと通信します。Pathway の端末または
デバイスからは通常、オンライン・トランザクションを入力します。
端末リクエスタをインターネット環境にマイグレーションするのを支援するために、SCREEN COBOL
プログラムを Java コードおよび HTML ページの組み合わせで構成される Web クライントに変換するユー
ティリティが提供されます。この変換機能によって、端末と Web クライアントの両方に対してプログラマ
は 1 つの SCREEN COBOL ソース・コードを使用することができます。SCREEN COBOL リクエスタの変
換の詳細については、『NonStop Pathway/iTS Web クライアント・プログラミング・マニュアル』を参照し
て下さい。
典型的なオンライン・トランザクション処理アプリケーションの 1 つである倉庫の在庫管理システムで
は、例えば、端末からデータベース上の在庫情報を検索して特定の品目の手持ち数量を調べます。また、
新しい品目を受領して既存の品目を出荷すると、データベースの更新オペレーションを実行して現在の在
庫を反映させます。
SCREEN COBOL プログラムは、上述のような操作を次に示す機能を実行して処理します。
□ 端末画面へのフォームの表示
□ フォームに入力したデータの受入
□ インテリジェント・デバイスを制御する外部プロセスへのメッセージの送信、および応答の受信
□ データベースを更新する Pathway サーバ・プロセスへのメッセージの送信、および応答の受信
SCREEN COBOL プログラム自身は、データベースにアクセスしません。データベース・アクセスを必
要とする入力が行われると、端末を制御する SCREEN COBOL リクエスタ・プログラムがサーバと呼ばれ
る別のプログラムにメッセージを送信し、サーバが必要なデータベース・オペレーションを実行します。
リクエストされた作業を完了すると、サーバはオペレーションが成功したかどうかを示す応答メッセージ
をリクエスタに返信します。
図 1-1 は、SCREEN COBOL プログラムによって実行されるオペレーションを示しています。
426750-001J
1-1
第 1 章 SCREEN COBOL について
図 1-1 SCREEN COBOL プログラムによって実行されるオペレーション
DISPLAY forms
ACCEPT data
SEND message to server
Receive reply
DISPLAY data
CDT 001.CDD
1.1 Pathway 環境の概要
Pathway トランザクション処理環境の概要を理解いただけるように、この環境の各種のコンポーネント
を示します。併せて、それぞれのコンポーネントが SCREEN COBOL プログラムにどのように影響するか
も示しています。
1.1.1 Pathway システムのコンポーネント
Pathway 環境の主要なコンポーネントは、次のとおりです。
□ Pathway モニタ (PATHMON) プロセス- Pathway 環境における処理を制御するための中央制御プロセス
□ PATHCOM - PATHMON プロセスとのコマンド・インタフェース
□ SCREEN COBOL -ディスプレイ端末 ( または、インテリジェント・デバイスを制御する外部プロセ
ス ) と Pathway サーバとの仲介機能を果たすリクエスタ・プログラムのコーディングに使用される高級
言語
□ 端末制御プロセス (TCP) - SCREEN COBOL オブジェクト・コードを解釈して、トランザクション処
理アプリケーションを実行する端末を制御するプロセス
□ リクエスタ-端末デバイスへのプレゼンテーション・サービスを提供して、サーバ・プロセスと通信す
るプログラム。リクエスタは、( マルチスレッドの ) 端末制御プロセスの中で SCREEN COBOL コード
を実行するタスクであったり、TAL、C、COBOL85、または Pascal で書かれた Pathsend プロセスであ
ることもあります
□ サーバ-リクエスタから受信したメッセージに応じてデータベース・オペレーションを実行し、メッ
セージに応答するプロセス
□ Compaq NonStop トランザクション管理ファシリティ(TMF) - Pathway/iTS と共に使用してデータベー
スの整合性を維持し、データベースの回復のためのツールを提供するデータ管理製品
□ Compaq Inspect - SCREEN COBOL プログラムを検証したり修正するために使用する、対話型のシン
ボリック・プログラム・デバッグ用ツール
1-2
426750-001J
第 1 章 SCREEN COBOL について
Pathway モニタ (PATHMON) プロセス
PATHMON プロセスは、Pathway 環境の中央制御プロセスです。PATHMON プロセスは、PATHMON
環境にあるオブジェクト ( 端末、TCP、サーバ ) についての情報をメンテナンスし、それらのオブジェクト
を制御します。
PATHMON プロセスは、次のようにして、システム・コンフィギュレーションに定義した制限を維持
し、システム・オブジェクトの実行状況を監視します。
□ オブジェクト定義情報を制御ファイルに保持します
□ TCP、サーバ、端末、および SCREEN COBOL プログラムのログ・ファイルにステータス情報を出力
します
□ TCP とサーバの間の通信リンクを許可します
□ Pathway 環境でのシステム・エラーを出力します
□ PATHMON 制御下のオブジェクトを停止して、システムをシャットダウンします
PATHCOM
PATHCOM は、PATHMON プロセスによって制御されるオブジェクトを定義し管理するために使用す
るコマンド・インタフェースです。PATHCOM は、いくつかの種類のオブジェクト関連コマンドを提供し
ます。それらのコマンドには、それぞれの TCP によってどの端末が制御されるかを記述するコマンド、同
時実行できるオブジェクトの最大数を指定することによって PATHMON 環境の容量を記述するコマンド、
オブジェクトの開始と停止のコマンド、ステータスおよび統計情報を表示するコマンドがあります。
SCREEN COBOL
SCREEN COBOL は、端末の表示を定義し、端末で入力されたデータを処理するために使用するプログ
ラミング言語です。この言語は、COBOL に似ています。SCREEN COBOL と COBOL は、プログラム構
造、コーディング規則、および言語要素が同じです。両方の言語の主要部は同一です。
□ IDENTIFICATION DIVISION ( 見出し部 )
□ ENVIRONMENT DIVISION ( 環境部 )
□ DATA DIVISION ( データ部 )
□ PROCEDURE DIVISION ( 手続き部 )
また、SCREEN COBOL の WORKING-STORAGE SECTION ( 作業場所節 ) および LINKAGE SECTION
( 連絡節 ) でのデータ記述のフォーマットも COBOL と同じです。
COBOL とは異なり、SCREEN COBOL にはスクリーン操作機能およびインテリジェント・デバイスと
のメッセージ交換機能が備わっています。インテリジェント・デバイスという用語は、Pathway/iTS の文脈
において使用される場合は、パーソナル・コンピュータ、現金自動受払い機 (ATM)、POS 端末から NSK
オペレーティング環境のプロセスおよび通信回線までの広範囲のエンティティを指していることに留意し
て下さい。SCREEN COBOL では、COBOL の FILE SECTION ( ファイル節 ) の代りに SCREEN SECTION
( スクリーン節 ) または MESSAGE SECTION ( メッセージ節 ) が使用されます。SCREEN SECTION では
426750-001J
1-3
第 1 章 SCREEN COBOL について
端末スクリーンのデータ・フィールドおよびその他の特性を定義し、MESSAGE SECTION ではインテリ
ジェント・デバイス ( または、インテリジェント・デバイスを制御するプロセス ) に送信するメッセージお
よびインテリジェント・デバイスから受信するメッセージを定義します。SCREEN COBOL の動詞を使用
して、端末スクリーン・データを表示および受信したり、インテリジェント・デバイスと通信することが
できます。
SCREEN COBOL のソース・コードは、機械語命令にはコンパイルされません。ソース・コードは擬似
コードと呼ばれるオブジェクト・コードにコンパイルされます。SCREEN COBOL プログラムの擬似コー
ドはライブラリに保存され、端末制御プロセス (TCP) によって実行時に解釈されます。
端末制御プロセス (TCP)
TCP は、SCREEN COBOL プログラムを解釈して実行します。TCP が提供する端末制御によって、プロ
グラミング作業が容易になります。TCP はマルチスレッドのプロセスで、いくつかの異なる SCREEN
COBOL プログラムを同時に実行することができます。TCP は、SCREEN COBOL プログラムに対して、
次に示すオペレーションを実行します。
□ 同じ SCREEN COBOL プログラムの複数の端末における同時実行を制御します。
□ TCP の制御下にあるそれぞれの端末のために独立のデータ領域を確保して、それぞれの端末のための
情報を制御します。
□ 物理的 I/O オペレーションを実行して、端末との間でデータを送受信します。
□ インテリジェント・デバイスとの間でデバイスに依存しない通信方式を提供します。
□ SCREEN COBOL プログラムにある編集記号に基づいてフィールド検証を行います。
□ データを外部表現から内部表現へ、またはその逆に変換します。
□ サーバ・プロセスにメッセージを送信します。
□ サーバ・プロセスからの返信メッセージを該当する端末に送信します。
データの検証および変換のために TCP が使用するインストラクション・コードは、Pathway/iTS 製品と
共に提供されるオブジェクト・ファイルに含まれています。ユーザは、それらのシステム・ルーチンをユー
ザ変換ルーチンと呼ばれるユーザ固有のルーチンに置き換えることができます。
図 1-2 は、複数の端末のために SCREEN COBOL コードを実行する TCP を示しています。この TCP は、
SCREEN COBOL プログラムの単一コピーを使用して複数の端末を制御し、スクリーン表示のためのすべ
ての I/O オペレーションを実行します。
1-4
426750-001J
第 1 章 SCREEN COBOL について
図 1-2 TCP による複数の端末の制御
TCP
SCREEN
COBOL
Library
CDT 002.CDD
Pathway 環境では、端末で SCREEN COBOL コードを実行する TCP によってリクエスタ・プロセスが構
成されます。ただし、このマニュアルでは、リクエスタ / サーバ機能について説明する場合は、SCREEN
COBOL プログラム・ユニットがリクエスタ・プログラムの意味で使用されます。
リクエスタ
リクエスタは通常、端末デバイスのためのプレゼンテーション・サービスを提供し、サーバ・プロセス
と通信します。リクエスタは、( マルチスレッドの ) 端末制御プロセス内部で SCREEN COBOL コードを
実行するタスクであることもあれば、TAL (Transaction Application Language)、C、COBOL85、または
Pascal で書かれた Pathsend プロセスであることもあります。
Pathway/iTS のリクエスタは、SCREEN COBOL プログラムとして記述されます。SCREEN COBOL プ
ログラムは、スクリーン表示を制御し、端末を管理し、インテリジェント・デバイスへのメッセージを管
理し、他の SCREEN COBOL プログラムの呼び出しを実行します。また、SCREEN COBOL プログラムは、
Pathway サーバ・プロセスとの間でデータを送受信します。サーバへのリクエストは、SCREEN COBOL
の SEND ステートメントを実行することによって生成され、端末制御プロセス (TCP) が管理します。
また、リクエスタ・プログラムは TAL (Transaction Application Language)、C、COBOL85、または Pascal
で NSK プロセスとして記述されることもあります。そのようなリクエスタ・プログラムには、NonStop TS/
MP 製品と共に提供される Pathsend プロシージャの呼び出しが含まれます。Pathsend リクエスタの作成の
詳細については、
『NonStop TS/MP Pathsend 及びサーバー・プログラミング・マニュアル』を参照して下さい。
サーバ
サーバは、NSK 環境で C、C++、COBOL85、pTAL、TAL、FORTRAN、または Pascal で記述されたプ
ログラムであり、リクエストに応じてデータベース・オペレーションを実行します。リクストは、プロセ
ス間メッセージの形式で作成されます。SCREEN COBOL のリクエスタ・プログラムを使用する場合は、
SCREEN COBOL プログラムのステートメントにしたがってメッセージが生成されて、TCP によって送信
されます。リクエストを受信したサーバは、データベース I/O 機能を実行して、適切な応答を TCP に返し
ます。
426750-001J
1-5
第 1 章 SCREEN COBOL について
サーバは、特定のサーバ・クラスのメンバとしてコンフィギュレーションされます。サーバ・クラス自
体は、PATHMON のコンフィギュレーションで定義された特性を持っています。あるサーバ・クラス内の
個々のサーバは、同じサーバ・プログラム・コードを使用し、それぞれ別個のデータ領域を使用します。
コンフィギュレーション情報にしたがって、PATHMON が単一のサーバ・プログラム・コードから新しい
サーバを作成します。
SCREEN COBOL プログラムとそれに対応するサーバは、メッセージ記述の内容が一致している必要が
あります。メッセージ記述の内容を一致させるために、SCREEN COBOL プログラムとそれに対応するサー
バが共通のコードを使用して、同一のソース・コード・ライブラリからメッセージ記述を取得することが
できます。
図 1-3 は、SCREEN COBOL のリクエスタと COBOL のサーバとの間のメッセージ記述の一致を示して
います。
図 1-3 メッセージ記述の一致
SCREEN COBOL Source Code
IDENTIFICATION DIVISION.
.
.
.
DATA DIVISION.
WORKING-STORAGE SECTION.
COPY MESSAGE-IN OF COBLIB
.
.
.
COBOL Server Source Code
Data Descriptions
COBLIB
MESSA GE-IN
IDENTIFICATION DIVISION.
.
.
.
DATA DIVISION.
FILE SECTION.
FD F-MESSAGE-IN
LABEL RECORDS ARE OMITTED.
COPY MESSAGE-IN OF COBLIB.
.
.
.
CDT 003.CDD
CDT 003.CDD
トランザクション管理ファシリティ (TMF)
TMF は、データベースの一貫性を維持し、また、データベース回復のためのツールを提供します。TMF
では、監視対象のデータ・ファイルは、オーディットされることを示すフラグが設定されていることが必
要です。TMF は、データ・ファイルの変更前および変更後イメージを保持して、ファイルをオーディット
します。TMF は変更前および変更後イメージを使用して、不完全に終了したトランザクションの影響を取
り消すトランザクション・バックアウト、および重大な障害が発生した後でデータベースを一貫性のある
状態に回復するデータベース・ロールフォワードを実行します。
SCREEN COBOL プログラムは、特定のステートメントを実行して TMF と通信します。BEGINTRANSACTION ステートメントはトランザクションの始まりを示し、このステートメントが実行されると
端末がトランザクション・モードになります。端末は、SCREEN COBOL の END-TRANSACTION ( また
は ABORT-TRANSACTION) ステートメントが実行されるまでトランザクション・モードに留まります。
つまり、これらのステートメントは、TMF によって単一のトランザクションとして扱われる一連のオペ
レーションを開始し、終了します。
Pathway/iTS では、実行中の SCREEN COBOL プログラムのことを端末プログラム・ユニットと呼んで
います。TMF と通信するには、PATHCOM にコマンドを発行して、端末プログラム・ユニットに対して
TMF 用の設定をコンフィギュレーションする必要があります。
1-6
426750-001J
第 1 章 SCREEN COBOL について
Inspect
Inspect は、SCREEN COBOL プログラムの検証や修正のために使用する、対話型のシンボリック・プロ
グラム・デバッグ用ツールです。Inspect は、TCP を経由して Pathway/iTS 端末で実行されている SCREEN
COBOL プログラムと通信する独立したプロセスとして実行されます。Inspect に対してコマンドを発行す
ることによって、実行中のプログラムを制御したり修正することができます。
Inspect を使用するには、予め PATHMON 環境を Inspect と通信できるようにコンフィギュレーションし
ておかなければなりません。また、SCREEN COBOL コンパイラが生成するプログラムのシンボル・テー
ブル・ファイルを TCP が使用できるようになっていなければなりません。
1.2 プロセス間通信
端末で実行中の SCREEN COBOL プログラムは、TCP を経由してプロセス間メッセージを交換すること
によってサーバと通信します。TCP は、メッセージを構築して、サーバ・クラスを指定する SCREEN
COBOL の SEND ステートメントを実行します。TCP は PATHMON プロセスからサーバ・クラスへのリ
ンクを取得して、実際にメッセージを送信します。サーバは、再度 TCP を経由して、該当する端末にプロ
セス間メッセージを送信して応答します。
SCREEN COBOL プログラムが別の PATHMON 環境にあるサーバと通信するときは、プログラムでロ
ケーションを指定する必要があります。そのような場合は、外部サーバを制御している PATHMON プロセ
スの NSK ノード名と PATHMON 名を SCREEN COBOL の SEND ステートメントで指定して、その外部
サーバを示します。ここで、外部サーバとは、リクエストしている SCREEN COBOL プログラムとは別の
PATHMON 環境で稼動しているサーバのことです。
ノード名と PATHMON 名を指定することによって、同一の NSK ノードまたは別の NSK ノードにある
複数の PATHMON 環境間で通信できるようになります。
図 1-4 は、PATHMON 環境でのプロセス間通信によるリクエスタ / サーバの間のメッセージ交換を示し
ています。SCREEN COBOL ライブラリには、TCP が実行するオブジェクト・コードが収容されています。
426750-001J
1-7
第 1 章 SCREEN COBOL について
図 1-4 PATHMON 環境でのプロセス間通信
Pathway Processes
PATHCOM
PATHMON
SCREEN
TCP
COBOL
Library
Server Class
Server
Database
CDT 004.CDD
1.3 システム・ツールによるプログラム開発
ソース・コードを開発し、オブジェクト・ファイルを作成および管理するためのいくつかのツールが
Compaq から提供されます。SCREEN COBOL コンパイラによってオブジェクト・コードが生成され、そ
のオブジェクト・ファイルは SCREEN COBOL ユーティリティ・プログラム (SCUP) によって管理されます。
1.3.1 SCREEN COBOL コンパイラによるオブジェクト・ファイルの生成
SCREEN COBOL オブジェクト・ファイルを生成するには、コンパイラ実行コマンド SCOBOLX を実行
します。実行コマンドおよびソース・コードで指定されたコンパイラ・コマンドにしたがって SCREEN
COBOL コンパイラがオブジェクト・コードを生成します。
SCREEN COBOL コンパイラには、SCOBOLX、SCOBOLX2、および SYMSERV という 3 つの関連プ
ロセスがあります。これらのプロセスがオブジェクト・コードを生成し、選択されたコンパイル・オプショ
ンにしたがってそのオブジェクト・コードが 2 つまたは 3 つのファイルに書きこまれます。SCOBOLX お
よび SCOBOLX2 プロセスは、ディレクトリ・ファイルとコード・ファイルという 2 つのオブジェクト・
ファイルを生成します。3 つ目のプロセス (SYMSERV) はオプションですが、プログラムのシンボル・テー
ブルを作成するときに使用します。
備考: SYMSERV は、Pathway/iTS オブジェクトではありません。SCREEN COBOL プログラムをコンパイルす
るために使用する場合は、SYMSERV は SCOBOLX および SCOBOLX2 と同じボリュームにあることが必
要です。
1-8
426750-001J
第 1 章 SCREEN COBOL について
SCREEN COBOL プログラムを実行するときは、TCP がディレクトリ・ファイルおよびコード・ファイ
ルを使用できるようになっていなければなりません。シンボル・テーブル・ファイルは、Inspect を使用し
てプログラム・デバッグを行うときに必要になります。オブジェクト・コードを生成する以外に、SCREEN
COBOL コンパイラには SCREEN COBOL ライブラリを構築する機能があります。ソース・プログラムの
コンパイルが正常に終了するたびに、コンパイラはコンパイル済みの以前のバージョンに新しいバージョ
ンのオブジェクト・ファイルを追加します。ただし、コンパイラにはオブジェクト・ファイルを管理する
機能はありません。
図 1-5 は、SCREEN COBOL オブジェクト・ファイルの生成過程を示しています。この図では、コンパ
イラの入力としてプログラム・ソース・コードおよびスクリーン・ライブラリ・ファイルからコピーされ
たコードがあります。また、コンパイルの出力として、3 つのオブジェクト・ファイル ( コード、ディレク
トリ、およびシンボル・テーブル ) と、コンパイル・リスト、クロスリファレンス・リスト、およびマッ
プからなるリストがあります。
図 1-5 SCREEN COBOL オブジェクト・ファイルの生成
Library
of screen
definitions
Copies screen
definitions into
program unit
SCREEN
COBOL
Source
SCOBOLX2
SCOBOLX
SCREEN
COBOL
Compiler
SYMSERV
SCREEN
COBOL
Source
Program unit
SCREEN
COBOL
Object Code
Listing
Directory
Symbol
Table
CDT 005.CDD
備考:以前のリリースでは、SCREEN COBOL プログラムを実行する TCP のバージョンは、プログラムをコンパ
イルした SCREEN COBOL コンパイラのバージョン以降のものである必要がありました。D40 以降のリリー
スでは、互換性のない新しい機能を使用していない限り、SCREEN COBOL プログラムを実行する TCP の
バージョンは、プログラムをコンパイルした SCREEN COBOL コンパイラのバージョンより前のものであっ
ても構いません。ただし、互換性のない新しい機能を使用した場合には、使用された最も新しい機能に対応
したバージョンが割り当てられます。例えば、当該の SCREEN COBOL プログラムで互換性のない新しい
機能を使用していなければ、D40 のコンパイラでコンパイルされた SCREEN COBOL プログラムを C31 の
TCP で使用できるようになりました。あるリリースのコンパイラで、新しいデータ・ストラクチャ、新しい
ステートメント、および新しいバージョンのステートメントを生成することがしばしばありますが、こうし
た機能拡張は同じまたはより新しいリリースの TCP でしか実行することができません。
426750-001J
1-9
第 1 章 SCREEN COBOL について
1.3.2 SCUP によるオブジェクト・ファイルの管理
SCUP ユーティリティは、図 1-6 に示すように、SCREEN COBOL オブジェクト・ファイルを管理する
ために次の機能を提供します。
□ オブジェクト・ファイルが持つプログラムについての情報を表示します
□ オブジェクト・ファイルから以前にコンパイルされたプログラム・バージョンを削除します
□ プログラムをある SCREEN COBOL オブジェクト・ファイルから別のオブジェクト・ファイルにコピー
することによって、新しい SCREEN COBOL オブジェクト・ファイルを生成します
□ オブジェクト・ファイルを圧縮して、ファイル・スペースを有効活用します
□ プログラムへのアクセスを制御するアクセス・フラグを設定します
□ SCREEN COBOL ライブラリにあるプログラムのグループを、Java クラスと HTML ページからなる
Web クライアントに変換します
図 1-6 SCUP による SCREEN COBOL オブジェクト・ファイルの管理
Commands:
INFO
ALTER
DELETE
COMPRESS
COPY
...
SCUP
SCREEN
COBOL
Object Code
Directory
Symbol
Table
Command:
CONVERT
SCUP
Java
Source
Code
HTML Pages
with
JavaScript
CDT 006.CDD
1-10
426750-001J
第 1 章 SCREEN COBOL について
SCUP およびその使用法の詳細については、
『NonStop Pathway/iTS SCUP リファレンス・マニュアル』を
参照して下さい。
1.4 プログラム・ロジックの設計
トランザクション処理アプリケーションの設計には、SCREEN COBOL リクエスタ・プログラムとサー
バの設計と、リクエスタとサーバの間での機能分担の設計が含まれます。ここでは、典型的な設計手順に
ついて説明します。
1.4.1 SCREEN COBOL プログラム・グループの編成
SCREEN COBOL プログラム・グループは通常、単純な、関連した機能を持っているプログラムのグルー
プに分けられます。それぞれのプログラムは別個の機能を実行し、Pathway アプリケーションの設計にし
たがってトランザクションを処理するために他のプログラムを呼び出します。図 1-7 は、2 つの代表的なグ
ループ編成の例-メニュー編成とチェイン編成-を示します。
図 1-7 プログラムの編成
Menu Organization
Chain Organization
MENU
PROG-A
PROG-B
PROG-A
PROG-C
PROG-B
PROG-C
CDT 007.CDD
両方の編成とも階層構造になっていて、単一のプログラムを経由してグループ内に入ることができます。
メニュー編成では、メイン・メニュー・スクリーンに操作の選択肢が表示され、いずれかの選択肢を選ぶ
と特定のオペレーションを扱う単純な SCREEN COBOL プログラムが呼び出されます。
426750-001J
1-11
第 1 章 SCREEN COBOL について
チェイン編成ではプログラムが直列に編成されていて、端末オペレータは PROG-A から PROG-B を、さ
らに PROG-B から PROG-C を呼び出すことができます。
1.4.2 プログラム設計に関する一般的な規則
次に示すリストは、標準的な ( スクリーン型 ) SCREEN COBOL リクエスタ・プログラムを設計すると
きに役立つ一般的なガイドラインを表しています。インテリジェント・デバイスの ( メッセージ型 ) リクエ
スタ・プログラムについての概念およびガイドラインについては、
『Compaq NonStop Pathway/iTS TCP and
Terminal Programming Guide』を参照して下さい。
□ スクリーンの設計はできるだけ簡単にします。
□ 作業の終了、エラー、次のステップなどシステムが何を行っているかを常時オペレータに知らせます。
□ 初期値を表示するようにスクリーンを設計し、データのキー入力を減らします。スクリーン・フィール
ドで初期値が宣言されないときは、そのフィールドに関連付けられたデータ名に値を設定することに
よってデフォルト値を設定することができます。このデフォルト値は、オペレータがそのフィールドに
データを入力するか、またはプログラムがそのフィールドに別の値を設定すると、変更されます。
□ 重要なスクリーン・フィールドは保護します。例えば、プライマリ・キー・フィールドはデータが更新
されないように保護します。
□ チェック・ディジットを使用して、重要なスクリーン・フィールドでのエラーを減らします。チェッ
ク・ディジットの処理は、SCREEN COBOL プログラムまたはユーザ変換プロシージャで行うことがで
き ま す。ユ ー ザ 変 換 プ ロ シ ー ジ ャについては、『Compaq NonStop Pathway/iTS TCP and Terminal
Programming Guide』に説明があります。
□ 文脈情報は必ずリクエスタ・プログラムに持たせるようにし、サーバには持たせません。文脈とは、プ
ロセスが直前の環境での処理を再開するときに必要となるあらゆる情報のことです。
□ 保守を容易にするために、プログラムをモジュール設計にします。
1-12
426750-001J
第 2 章 SCREEN COBOL ソース・プログラム
第 2 章 SCREEN COBOL ソース・プログラム
SCREEN COBOL プログラムは、表示端末を制御する処理オペレーションを実行し、インテリジェント・
デバイスを制御する外部プロセスと通信し、Pathway 環境内の他のデバイスやプロセスと通信します。
SCREEN COBOL 手続き言語を使用して、次のことを行うことができます。
□ 端末表示スクリーンの特性を定義します
□ 端末スクリーンでのデータの表示およびデータの入力の方法を制御します
□ インテリジェント・デバイスにメッセージを送信し、応答を受信します
□ データを変換する方法、およびデータに編集チェックを適用する方法を指定します
□ データベースにあるデータにアクセスまたはデータを変更するためにサーバ・プロセスへのメッセージ
を指定して送信します
SCREEN COBOL は、以下のデバイスで使用することができます。
□ 6510、6520、6530、6540、および IBM 3270 端末
□ NSK ファイル・システムに対して会話モード端末として認識される端末
□ パーソナル・コンピュータ、POS 端末、現金自動受払い機 (ATM)、通信回線、または NSK プロセス、
およびパーソナル・コンピュータとして作動する 6540 端末などのインテリジェント・デバイス
SCREEN COBOL プログラムは、いつでも、あたかも単一の端末またはデバイスを制御しているかのよ
うに設計されますが、SCREEN COBOL コンパイラによって生成されたオブジェクト・コードを解釈する
端末制御プロセス (TCP) は、制御している複数の端末またはデバイスに対して同一のコードを同時に実行
することができます。
2.1 プログラムのオペレーティング・モード
一般に、SCREEN COBOL プログラムは、フォーマットされた情報を表示し、端末から入力されたデー
タを受信し、そのデータに基づいて何らかの動作を実行します。SCREEN COBOL を使用することで、ユー
ザは次のいずれかのモードでこれらのオペレーションを実行するプログラムを作成することができます。
□ ブロック・モード ( 全スクリーン単位のオペレーション )
□ 会話モード ( 行単位のオペレーション )
□ インテリジェント・モード ( デバイスに依存しないオペレーション )
SCREEN COBOL のステートメントおよび句のいくつかは、モードにより動作が異なります。
426750-001J
2-1
第 2 章 SCREEN COBOL ソース・プログラム
2.1.1 ブロック・モードのプログラム
ブロック・モードで実行するには、SCREEN COBOL プログラムをブロック・モード端末で実行しなけ
ればなりません。SCREEN COBOL プログラムのスクリーン定義は、プログラムを実行する端末の特性に
よって制限されます。
ブロック・モードで実行される SCREEN COBOL プログラムは、以下の機能を実行します。
□ 端末のタイプを認識します
□ 端末にスクリーン単位で情報を表示します
□ 一度に 1 スクリーン分のデータを端末から受け入れます
□ ファンクション・キーを認識して、特定の機能と関連付けます ( 例えば、F1 ファンクション・キーを
押すと、表示中のスクリーンが終了します )
2.1.2 会話モード・プログラム
会話モード用に作成された SCREEN COBOL プログラムはブロック・モード端末でも、会話モード端末
でも実行することができます。ただし、いったん会話モードと指定されると、そのプログラムが実行され
る端末のタイプとは無関係に、会話モード端末の制限にしたがって機能します。
会話モードで実行される SCREEN COBOL プログラムは、次のように機能します。
□ DISPLAY ステートメントに対して、端末に 1 行単位で情報を表示します
□ 端末から 1 行単位でデータを受け入れます
□ 端末がデータを受入れ可能となったときに、入力制御文字に応答します
□ キーボードの文字、CR ( 復帰 )、および LF ( 改行 ) ( ファンクション・キー以外 ) だけを認識します
□ 使用可能な表示フィールド属性は、BELL および HIDDEN に制限されます
2.1.3 インテリジェント・モードのプログラム
インテリジェント・モードで実行される SCREEN COBOL プログラムは、インテリジェント・デバイス
のデータ表示形式などのデバイスに依存する機能は制御しません。SCREEN COBOL プログラムが送信す
るメッセージを読み取って処理し、プログラムが使用可能なフォーマットで応答するのは、インテリジェ
ント・デバイスの責任です。
インテリジェント・デバイスと通信する SCREEN COBOL プログラムでは、SCREEN SECTION ( スク
リーン節 ) の代りに MESSAGE SECTION ( メッセージ節 ) を使用します。MESSAGE SECTION では、プ
ログラムとインテリジェント・デバイスとの間で送受信されるデータを記述します。プログラムは、
MESSAGE SECTION をバイパスして、ワーキング・ストレージからデータを直接送信することもできます。
2-2
426750-001J
第 2 章 SCREEN COBOL ソース・プログラム
インテリジェント・モードでは、SCREEN COBOL プログラムは次のように機能します。
□ ワーキング・ストレージからインテリジェント・デバイスにデータを直接送信します
□ インテリジェント・デバイスから応答を受信して、ワーキング・ストレージに直接転送します
□ ワーキング・ストレージから MESSAGE SECTION のメッセージ記述項にデータをマッピングします
□ インテリジェント・デバイスに、MESSAGE SECTION のメッセージ記述項として応答を返すようにリ
クエストします
2.2 プログラムの構成
SCREEN COBOL プログラムは、以下の 4 つの DIVISION ( 部 ) で構成されます。これらの DIVISION
は、次に示す順序で指定しなければなりません。
1. IDENTIFICATION DIVISION ( 見出し部 )。IDENTIFICATION DIVISION は、プログラムを識別しま
す。この DIVISION では、プログラマの名前、プログラムの作成日、プログラムの説明などのコメント
を宣言することができます。
2. ENVIRONMENT DIVISION ( 環境部 )。ENVIRONMENT DIVISION は、プログラムの実行環境を指定
します。この DIVISION では、表示エラー属性、処理オプション、コンピュータ装置、端末装置を宣言
することができます。
3. DATA DIVISION ( データ部 )。DATA DIVISION は、プログラムのデータ構造をフォーマットおよび
用途の面から定義します。DATA DIVISION には、次に示す 4 つの SECTION があります。
●
WORKING-STORAGE SECTION ( 作業場所節 )。WORKING-STORAGE SECTION は、プログラム
に固有のデータを記述します。
●
LINKAGE SECTION ( 連絡節 )。LINKAGE SECTION は、別のプログラムから渡されるデータを記
述します。
●
SCREEN SECTION ( スクリーン節 )。SCREEN SECTION は、端末に表示されたり、端末から受け
入れるデータを記述します。
●
MESSAGE SECTION ( メッセージ節 )。MESSAGE SECTION は、インテリジェント・デバイスに
送信するメッセージおよびインテリジェント・デバイスから返される応答を記述します。
4. PROCEDURE DIVISION ( 手続き部 )。PROCEDURE DIVISION は、プログラムの処理ステップを指定
します。
2.3 言語要素
SCREEN COBOL の言語要素は、次に示す 2 つのカテゴリのいずれかに分類することができます。
□ 文字列 - 一連の文字のつながり
□ 分離符 - 1 つの文字列を別の文字列から分離する文字
ここでは、SCREEN COBOL ソース・プログラムを構成する言語について説明します。
426750-001J
2-3
第 2 章 SCREEN COBOL ソース・プログラム
2.3.1 SCREEN COBOL 文字セット
SCREEN COBOL 文字セットは ASCII 文字セットのサブセットで、52 文字で構成されます。表 2-1 に、
これらの文字について示します。
表 2-1 SCREEN COBOL 文字セット
0-9
数字
,
コンマ
A-Z
英文字
;
セミコロン
スペース ( 空白 )
.
ピリオド ( 小数点 )
+
正符号
"
引用符
-
負符号 ( ハイフン )
(
左括弧
*
アスタリスク
)
右括弧
/
斜線 ( スラッシュ )
>
より大きい記号
=
等号
<
より小さい記号
$
ドル記号
@
単価記号
2 バイト文字
ENVIRONMENT DIVISION の OBJECT-COMPUTER 段落で CHARACTER-SET IS KANJI-KATAKANA
句を指定しておけば、2 バイト文字を使用することができます。2 バイト文字セットの詳細については、
『Compaq NonStop Pathway/iTS TCP and Terminal Programming Guide』を参照して下さい。
備考: 2 バイト文字を使用しない既存のプログラムでは、(1 バイトのカタカナを使用している場合でも )
CHARACTER-SET IS KANJI-KATAKANA 句を指定する必要はありません。CHARACTER-SET IS KANJIKATAKANA 句を指定したプログラムでは、端末のタイプに応じて 1 バイトのカタカナ文字セットまたは 2
バイトのカタカナ文字セット ( あるいは両方 ) がサポートされます。ユーザ・アプリケーションでは端末が
サポートしているいずれのカタカナ文字セットでも使用することができますが、漢字文字は CHARACTERSET IS KANJI-KATAKANA 句を指定したプログラムについてだけサポートされます。
SCREEN COBOL 文字セットには、次に示す定義が適用されます。
□ 英字には、英文字 A ~ Z およびスペースが含まれます。
□ 数字には、数字 0 ~ 9 が含まれます。
□ 特殊文字には、英文字 A ~ Z、スペース、および数字 0 ~ 9 を除く、すべての文字が含まれます。
□ コメント ( 注記 ) およびリテラル ( 定数 ) には、すべての ASCII 文字セットを使用することができます。
□ シフト JIS 文字セット (X 0208) に含まれている 2 バイト文字を使用することができます。
□ 英数字文字は、これらすべての文字を含みます。
2-4
426750-001J
第 2 章 SCREEN COBOL ソース・プログラム
備考: 2 バイト文字セットは、特定のデバイスでだけサポートされます。2 バイト文字セットをサポートするデバ
イスのリストについては、タンデム担当者に問い合わせて下さい。
2.3.2 編集用文字 (Editing Character)
編集用文字とは、スクリーン・データをフォーマットするために PICTURE 句で使用することができる
文字のことです。表 2-2 に、編集用文字について示します。
表 2-2 編集用文字
A
英字またはスペース
-
負符号
B
空白挿入
CR
貸方 (Credit)
N
2 バイト文字
+
正符号
P
小数点 ( 位取り用 )
DB
借方 (Debit)
V
小数点 ( 固定 )
*
小切手改変防止
X
ASCII 文字
$
ドル記号
Z
ゼロ抑制
,
コンマ ( 小数点 )
0
ゼロ
.
ピリオド ( 小数点 )
9
数字
/
斜線 ( スラッシュ )
2.3.3 句読文字 (Punctuation Character)
句読文字は、語、文、または特殊な句を区切ったり、演算式の関係を示すために使用することができま
す。表 2-3 に、句読文字について示します。
表 2-3 句読文字
426750-001J
,
コンマ
(
左括弧
;
セミコロン
)
右括弧
.
ピリオド
"
引用符
スペース ( 空白 )
=
等号
2-5
第 2 章 SCREEN COBOL ソース・プログラム
2.3.4 分離符 (Separator)
分離符は、1 つ以上の句読文字のつながりです。分離符の直前または直後には、空白を置いても置かな
くても構いません。表 2-4 に、分離符とその定義を示します。
表 2-4 分離符
, ; .
直後に空白が続くコンマ、セミコロン、またはピリオドは分離符です。ピリオドは、構
文にしたがって見出し、記述項、完結文を終結するときにだけ分離符と見なされます。
コンマまたはセミコロンは、分離符として使用される場合は空白として扱われます。
" "
引用符は、非数字リテラルを囲むために使用されます。リテラルが 2 行以上になるとき
以外は、引用符は一対で使用されます。最初の引用符の直前には空白を入れ、2 つ目の引
用符の後には別の引用符以外の分離符を続ける必要があります。
( )
左右の括弧は、文字列の一部を囲んで、それを前後の項目から分離します。括弧は一対
で指定しなければなりませんが、片方だけでも分離符と見なされます。
スペース
スペース ( 空白 ) は言語要素を分離します。
文字列に句読文字が含まれている場合には、それらの句読文字は分離符として扱われません。ハードウェ
ア・デバイスに対して特別な意味を持っている文字でなければ、ASCII 文字セットのいずれの文字も非数
字リテラルとして使用することができます。
2.3.5 SCREEN COBOL の語 (Word)
SCREEN COBOL の語は予約語 (reserved word)、ユーザ定義語 (user-defined word)、またはシステム名の
いずれかです。1 つの語は、30 文字以内でなければなりません。
予約語 (Reserved Word)
予約語は、コンパイラにとって特別な意味があります。予約語は、データ項目名またはシステム名とし
て使用することができません。予約語には、次のものがあります。
□ キーワード (Keyword)
□ 特殊レジスタ (Special register)
□ 表意定数 (Figurative constant)
予約語は、正しく綴りを入力しなければならず、構文例に示されているとおりにしか使用することがで
きません。
2-6
426750-001J
第 2 章 SCREEN COBOL ソース・プログラム
ユーザ定義語 (User-Defined Word)
ユーザ定義語は、次のいずれかの文字で構成されます。
□ 英文字 A ~ Z
□ 数字 0 ~ 9
□ ハイフン (-)
ユーザ定義語は、先頭が英文字でなければならず、先頭または末尾がハイフンであってはなりません。
また、途中にスペースを含んではいけません。ユーザ定義語は、次に示すタイプの項目に使用することが
できます。
□ 手続き名 (Procedure name)
□ データ名 (Data name)
□ 呼び名 (Mnemonic name)
□ 条件名 (Condition-name)
□ プログラム名 (Program name)
□ ライブラリ名 (Library name)
□ テキスト名 (Text name)
備考:ユーザ定義語に 2 バイト文字を含めることはできません。
システム名 (System Name)
システム名は、NSK オペレーティング環境を表す SCREEN COBOL の語です。システム名は、装置お
よびオペレーティング・システムへのアクセスのために定義されます。システム名は、端末ファンクショ
ン・キーや表示属性などの特定のカテゴリに限定して使用されます。
2.3.6 リテラル (Literal)
リテラルは、文字のセットまたは表意定数を表す予約語のいずれかによって値が示される、文字列です。
リテラルには、数字リテラルと非数字リテラルがあります。
数字リテラル (Numeric Literal)
数字リテラルは 1 つ以上の数字 (0 ~ 9)、正符号または負符号、および小数点 ( オプション ) で構成され
ます。数字リテラルの値は、数字の値です。数字リテラルには、以下の規則が適用されます。
□ 数字リテラルは、最大で 18 桁です。
□ 正負符号は 1 つだけ許され、先頭に指定しなければなりません。符号が指定されていない場合は、その
数字リテラルは正の値を示します。
426750-001J
2-7
第 2 章 SCREEN COBOL ソース・プログラム
□ 数字リテラルには 1 つの小数点を含めることができ、末尾以外のどこにでも記述することができます。
小数点が指定されていない場合は、その数字リテラルは整数と見なされます。
次に、数字リテラルの例を示します。
□ 整数の数字リテラル
+601
-234116
0
15
□ 整数以外の数字リテラル
+601.1
89.6
0.0051
-.1
非数字リテラル (Nonnumeric Literal)
非数字リテラルは、引用符で囲まれた任意の ASCII 文字列です。非数字リテラルの値は、引用符で囲ま
れた文字列そのものです。非数字リテラルには、以下の規則が適用されます。
□ 非数字リテラルは、長さが最大で 120 文字です ( 引用符を除く )。
□ リテラルの中に別の引用符を入れるときは、連続する 2 つの引用符で 1 つの引用符を表します。2 つの
引用符の一方だけが文字数に含まれます。
次に、非数字リテラルの例を示します。
"THIS IS A NONNUMERIC LITERAL"
"12345 THIS IS A NONNUMERIC LITERAL ALSO"
次に示す例では、非数字リテラルの中に引用符が含まれています。
"A "" IS PART OF THIS NONNUMERIC LITERAL"
2-8
426750-001J
第 2 章 SCREEN COBOL ソース・プログラム
表意定数 (Figurative Constant)
表意定数は、SCREEN COBOL コンパイラにとってあらかじめ名前を付けて定義した定数であり、DATA
DIVISION で定義しなくてもソース・プログラムで使用することができます。表意定数は、引用符で囲む
必要がありません。表 2-5 に、表意定数とその定義を示します。単数形と複数形の意味は同じです。
表 2-5 表意定数
ZERO
ZEROS
ZEROES
文脈に応じて、数値ゼロ (0) または 1 つ以上の文字ゼロ (0) を表します。
SPACE
SPACES
1 つ以上の ASCII スペース文字 ( 空白 ) を表します。
HIGH-VALUE
HIGH-VALUES
1 つ以上の 2 進数 255 値を表します。この値は、ワーキング・ストレージの
1 バイトが含むことができる最高位の値です。この表意定数を使用して初期
化することができるのは、英字データまたは英数字データ項目だけです。
LOW-VALUE
LOW-VALUES
1 つ以上の 2 進数 0 値を表します。この値は、ワーキング・ストレージの 1
バイトが含むことができる最低位の値です。この表意定数を使用して初期化
することができるのは、英字データまたは英数字データ項目だけです。
QUOTE
QUOTES
1 つ以上の引用符文字を表します。非数字リテラル文字列を囲む引用符の代
りに使用することはできません。
ALL literal
指定の literal の値を繰り返します。指定可能なリテラルは、非数字リ
テラルまたは ALL literal 以外の表意定数です。ALL は、表意定数を使
用するときに読み易くするために使用します。
表意定数には、以下の規則が適用されます。
□ 表意定数が複数の文字を表現するときは、文字列の長さはコンパイラが決定します。
□ 構文にリテラルがあるところは、どこでも表意定数を使用することができます。ただし、リテラルが数
字リテラルに限定されているときは、ZERO、ZEROS、または ZEROES だけを使用することができます。
□ 表意定数が他のデータ項目に転記されたり、他のデータ項目と比較されたりするときは、表意定数の大
きさがデータ項目の大きさと同じになるまで、表意定数が右側に繰り返されます。このように表意定数
を繰り返す処理は、データ項目に対して JUSTIFIED 句があるかどうかに関わらずに行われます。
□ SPACE または SPACES 以外の表意定数を PIC N フィールドに転記すると、SCOBOLX コンパイラ・エ
ラーとなります。
426750-001J
2-9
第 2 章 SCREEN COBOL ソース・プログラム
2.3.7 混合データ項目 (Mixed Data Item)
PIC X(n) と宣言されたデータ項目には、1 バイト文字と 2 バイト文字を混在させることができます ( こ
こで、n は 1 から 32,000 の範囲の整数を表します )。このようなデータ項目は混合データ項目と呼ばれま
す。混合データ項目を指定するときは、2 バイト文字は 2 バイトの記憶領域が必要であることに注意して
下さい。
備考:端末によっては、混合データ項目を表示するときにシフト・アウト (SO) およびシフト・イン (SI) 文字を必
要とするものがあり、それぞれ 1 バイトの記憶領域を必要とします。2 バイト文字だけを使用するデータ項
目には、SO および SI 文字は必要ありません。
混合データ項目は、WORKING-STORAGE SECTION、LINKAGE SECTION、および SCREEN SECTION
で指定することができます。例えば、PIC X(10) フィールドには次に示す組合せの文字を、切り詰めを行わ
ずに格納することができます。
□ 5 個の 2 バイト文字
□ 4 個の 2 バイト文字と 1 個または 2 個の 1 バイト文字 ( カタカナまたは英数字 )
□ 3 個の 2 バイト文字と 1 ~ 4 個の 1 バイト文字 ( カタカナまたは英数字 )
□ 2 個の 2 バイト文字と 1 ~ 6 個の 1 バイト文字 ( カタカナまたは英数字 )
□ 1 個の 2 バイト文字と 1 ~ 8 個の 1 バイト文字 ( カタカナまたは英数字 )
□ 1 ~ 10 個の 1 バイト文字 ( カタカナまたは英数字 )
文字数が指定可能な文字の最大数に満たない場合は右にスペースが詰められます。
2.4 リファレンス・フォーマット
SCREEN COBOL ソース・プログラムは、タンデム標準リファレンス・フォーマット (Compaq NonStop
システムに固有のフォーマット ) または ANSI 標準リファレンス・フォーマットで記述することができま
す。タンデム標準リファレンス・フォーマットは、シーケンス番号フィールド ( 第1~ 6 カラム ) と識別
フィールド ( 第 73 ~ 80 カラム ) がなく、1 行の最大長は 132 文字です。
SCREEN COBOL コンパイラはタンデム標準リファレンス・フォーマットを前提としていますが、
SCREEN COBOL プログラムはどちらのフォーマットでもコーディングすることができ、両方のフォー
マットを組み合わせてコーディングすることも可能です。フォーマット指定については、7-1 ページの
「SCREEN COBOL コンパイラの実行」に説明されているソース・テキスト・オプションを参照して下さい。
2-10
426750-001J
第 2 章 SCREEN COBOL ソース・プログラム
2.4.1 タンデム標準リファレンス・フォーマット
タンデム標準リファレンス・フォーマットのそれぞれの行は固定長ではなく、132 文字までコーディン
グすることができます。132 文字より長い行は切り詰められます。また、末尾の空白は無視されます。各
ソース行には、前の行のマージン R の位置に関係なく、マージン R が設定され、その行の最後の空白以外
の文字の位置が示されます。
前の行の末尾の空白と継続行の先頭の空白は、無視されます。図 2-1 は、タンデム標準リファレンス・
フォーマットを示しています。
図 2-1 タンデム標準リファレンス・フォーマット
Margin R
1
Indicator
Field
2
3
4
5
6
7
8
9
Area A
10
...
132
Area B
CDT
008.CDD
□ DIVISION ( 部 )、SECTION ( 節 )、および段落の見出しは、領域 A で始めなければなりません。段落
の最初の文は段落の見出しと同一の行で始めることができます。この場合、段落名のピリオドの後に 1
つ以上のスペースが必要です。
□ 一般に、SCREEN COBOL は領域 A と領域 B の区別を無視します。ソース・プログラムの語彙要素
(lexical element) は、マージン A とマージン B の間のどこにでも指定することができます。
□ レベル番号 01 および 77 は、領域 A で始めなければなりません。
□ レベル番号 02 ~ 49、66、および 88 は、領域 A と領域 B のどちらで始めても構いません。
□ 継続行の領域 A は、いつでも空白のままにします。
□ 標識フィールドの「*」または「/」は、コメントを示します。
「-」は継続行を示し、
「?」はコンパイラ・
コマンド行を示します。標識フィールドにこれ以外の文字がある場合は、前の行の最後の文字の後にス
ペースがあると見なされます。
2.4.2 ANSI 標準リファレンス・フォーマット
ANSI 標準リファレンス・フォーマットは、ソース行が 80 文字に固定されています。SCREEN COBOL
コンパイラは、80 文字を超える行は切り詰め、80 文字未満のソース行は空白を入れて 80 文字にします。
リテラル文字列が 2 行になる場合は、最初の行は完全に満たされなければなりません。そうでない場合
は、継続の文字の前にある空白はリテラルの一部に含まれます。
シーケンス番号領域 ( 第 1 ~ 6 カラム ) は、ソース行に番号を割り当てたり、ASCII 文字の組合せでソー
ス行にラベルを付けるために使用します。
426750-001J
2-11
第 2 章 SCREEN COBOL ソース・プログラム
マージン R 以降のカラム ( 第 73 ~ 80 カラム ) は、標識フィールドです。このフィールドには任意の
ASCII 文字を入れることができ、コメントとして使用することができます。このフィールドは、プログラ
ムには何の影響も与えません。
図 2-2 は、ANSI 標準リファレンス・フォーマットを示しています。
図 2-2 ANSI 標準リファレンス・フォーマット
Margin
R
1
2
3
4
Sequence
Number Area
5
6
7
8
Indicator
Field
9
10
Area
A
11
12
13
... 72
Area
B
73
...
80
Identification
Field
CDT 009.CDD
□ DIVISION ( 部 )、SECTION ( 節 )、および段落の見出しは、領域 A で始めなければなりません。段落
の最初の文は段落の見出しと同一の行で始めることができます。この場合、段落名のピリオドの後に 1
つ以上のスペースが必要です。
□ 一般に、SCREEN COBOL は領域 A と領域 B の区別を無視します。ソース・プログラムの語彙要素
(lexical element) は、マージン A とマージン B の間のどこにでも指定することができます。
□ レベル番号 01 および 77 は、領域 A で始めなければなりません。
□ レベル番号 02 ~ 49、66、および 88 は、領域 A と領域 B のどちらで始めても構いません。
□ 標識フィールドの「*」または「/」は、コメントを示します。
「-」は継続行を示し、
「?」はコンパイラ・
コマンド行を示します。標識フィールドにこれ以外の文字がある場合は、前の行の最後の文字の後にス
ペースがあると見なされます。
2.4.3 コメント行
コメント行は、SCREEN COBOL プログラムのどこにでも指定することができます。コメント行は、標
識フィールドにあるアスタリスク (*) または斜線 (/) によって示されます。標識フィールドは、タンデム標
準リファレンス・フォーマットでは第 1 カラム、ANSI 標準リファレンス・フォーマットでは第 7 カラム
に位置します。これらの特殊文字は、行全体がコメントであることを示します。
プログラムのリストがプリントされる場合に、コメント行が斜線 (/) で示されていると、コメント行をプ
リントする前に改ページが行われます。
2-12
426750-001J
第 2 章 SCREEN COBOL ソース・プログラム
2.4.4 継続行 (Continuation Line)
SCREEN COBOL プログラムの語 (Word) またはリテラル (Literal) は、2 行にまたがって指定することが
できます。継続行を示すには、標識フィールドにハイフン (-) を指定します。
前の行が非数字リテラルで、引用符が閉じていない場合は、継続行の領域 B の最初の空白以外の文字は
引用符でなければなりません。実際の継続行は、この引用符の直後から始まります。
2.4.5 コンパイラ・コマンド行 (Compiler Command Line)
コンパイラ・コマンド行は、標識フィールドに疑問符 (?) を指定することによって示されます。この行
は、SCREEN COBOL コンパイラに対する命令になります。
通常、ANSI 標準リファレンス・フォーマットのコンパイラ行は、第 7 カラムの疑問符によって示され
ます。ただし、SCREEN COBOL コンパイラは、ANSI 標準リファレンス・フォーマットが使用されてい
る場合でも、第 1 カラムに疑問符がある行をコンパイラ命令と見なします。このような特殊なケースでは、
シーケンス番号領域を無視して、その行が標識フィールドから始まっていると見なします。コンパイラ・
コマンドの詳細については、「第 7 章 コンパイル」を参照して下さい。
2.5 算術演算 (Arithmetic Operation)
算術演算は、PROCEDURE DIVISION ( 手続き部 ) で ADD、COMPUTE、DIVIDE、MULTIPLY、およ
び SUBTRACT ステートメントによって指定されます。算術演算には、次のような一般規則があります。
□ 各オペランドのデータ記述は、同一でなくても構いません。必要なデータ変換および桁合せは、計算を
通して行われます。
□ オペランドの最大長は、18 桁です。
□ それぞれの算術演算は、中間データ項目を使用して処理されます。演算結果のサイズが中間データ項目
より大きい場合は、演算オーバフローが発生し、SCREEN COBOL プログラムは TCP によって一時中
止されます。中間データ項目の内容は、MOVE ステートメントの規則にしたがって受取り側のデータ
項目に反映されます。
算術ステートメントで送出し側と受取り側の項目が記憶領域の一部を共有している場合は、演算結果は
保証されません。
2.5.1 算術式 (Arithmetic Expression)
算術式は、次のいずれかです。
□ 数字項目
□ 数字リテラル
□ 数字項目および数字リテラルを算術演算子でつないだもの
□ 算術式を括弧で囲んだもの
426750-001J
2-13
第 2 章 SCREEN COBOL ソース・プログラム
算術式に指定されるデータ項目およびリテラルは、算術演算の対象にすることができる数字項目または
数字リテラルでなければなりません。また、算術式の前に正符号または負符号を付けることができます。
2.5.2 算術演算子 (Arithmetic Operator)
算術式では、5 種類の二項算術演算子と 2 種類の単項算術演算子を使用することができます。二項算術
演算子と単項算術演算子は、特別の文字で表され、前後にスペースを入れる必要があります。表 2-6 に二
項算術演算子を、表 2-7 に単項算術演算子を示します。
表 2-6 二項算術演算子
+
加算
-
減算
*
乗算
/
除算
**
べき乗
表 2-7 単項算術演算子
+
+1 による乗算
-
-1 による乗算
正符号または負符号を ( 間にスペースを入れないで ) 数字リテラルの直前に付けると、その符号は数字
リテラルの一部と見なされ、符号付数字リテラルになります。この場合、符号は二項算術演算子でも単項
算術演算子でもありません。例:
X +2 は、X, +2 と同じであり、それぞれ独立した式です。
上記の場合を除いて、正符号はオペランドが前にあるときは二項演算子として扱われ、オペランドが前
にないときは単項演算子として扱われます。例:
X + 2 は、X + + 2 と同じです。
2-14
426750-001J
第 2 章 SCREEN COBOL ソース・プログラム
2.5.3 算術式の演算順序
括弧を使用して、算術式内の演算順序を指定することができます。括弧の中の算術式が先に演算されま
す。
括弧が入れ子になっている場合は、最も内側の算術式を最初に演算して、順次外側を演算します。括弧
がないとき、または括弧の中の式が同じレベルのときは、演算の順序は次のようになります。
1. 単項演算子の + または 2. 乗算および除算
3. 加算および減算
括弧は、論理のあいまいさを排除するため、または演算の順序を変更する必要があるときに通常の順序
を変更して式を演算するために使用されます。演算の順序が括弧で指定されていない場合は、同一レベル
の演算は、左から右に実行されます。次の例は、括弧がない場合の通常の演算順序を示しています。
a + b / c + d * f - g
は、次のように解釈されます。
(a + (b / c)) + (d * f) - g
つまり、最も内側の括弧から外側に演算が行われていきます。SCREEN COBOL では、次のような通常
はあいまいに見られるような式も使用することができます。
a / b * c, a / b / c
この式は、次のように書かれているものと解釈されます。
(a / b) * c, (a / b) / c
算術式内で指定されるデータ項目およびリテラルは、数字データ項目または数字リテラルのいずれかで
なければなりません。
複数の演算結果
ADD、COMPUTE、MULTIPLY および SUBTRACT ステートメントは、複数の演算結果を持つことが
あります。これらのステートメントは、次に示すように記述されているかのように動作します。
1. まず、1 つのステートメントが、1 つの結果に達するまでのすべての必要な算術演算を行い、その結果
を一時的な記憶領域に入れます。
2. 次に、一連のステートメントがこの一時的な記憶領域の値を移動、またはそれぞれの結果と組み合わせ
ます。この一連のステートメントは、複数の結果が示されているのと同じ順序で左から右へ書かれてい
ると見なされます。
例えば、
ADD
a, b, c TO c, d(c), e
というステートメントの結果は、次に示す一連のステートメントの結果と同じです。
426750-001J
2-15
第 2 章 SCREEN COBOL ソース・プログラム
ADD
ADD
ADD
ADD
a, b, c
temp TO
temp TO
temp TO
GIVING temp
c
d(c)
e
ここで、temp は一時的な記憶領域です。
中間結果
中間結果は、算術式の演算中に SCREEN COBOL によって管理されます。中間結果として保持できる最
大桁数は、18 桁です。この制限を超えた場合は、算術オーバフローが発生します。表 2-8 では、中間演算
処理を説明するために、次のような略号を使用しています。
□ IR -中間結果の整数部の桁数
□ DR -中間結果の小数部の桁数
□ OP1 -算術式の最初のオペランド。形式は、9(I1)V9(D1)
●
I1 は、整数部の桁数です。
●
D1 は、小数部の桁数です。
□ OP2 -算術式の 2 番目のオペランド。形式は、9(I2)V9(D2)
●
I2 は、整数部の桁数です。
●
D2 は、小数部の桁数です。
□ OPR -最終結果。形式は、9(IR)V9(DR)
IR は整数部の桁数、DR は小数部の桁数です。
表 2-8 中間結果として保持される桁数
演算
桁数
OP1 + OP2
DR は、D1 または D2 のいずれか大きい方。IR は、(I1 または I2 のいずれか大き
い方 ) または 18-DR のいずれか小さい方。
OP1 - OP2
DR は、D1 または D2 のいずれか大きい方。IR は、(I1 または I2 のいずれか大き
い方 ) または 18-DR のいずれか小さい方。
OP1 * OP2
DR は、D1 + D2。IR は、(I1+I2) または 18-DR のいずれか小さい方。
OP1 / OP2
DR は、D1 または 1 のいずれか大きい方。IR は、(I1+D2) または 18-DR のいずれ
か小さい方。
OP1 **
OP2
OP2 は、整数値に制限されます。OP2 の値は、任意のリテラルまたはデータ項目
です。( 例:DR は D1 に等しい。IR は 18-DR に等しい。)
備考: (I1+D2+DR) が 18 より大きい場合は、商の下位の桁が切り捨てられます。つまり、以下の数よりも小さい商
の部分はすべて切り捨てられます。 10 ** (I1+D2+DR-18)
2-16
426750-001J
第 2 章 SCREEN COBOL ソース・プログラム
次の 3 つの例は、除算を示しています。
例1
通常の除算は、次のように行われます。
03 A1 PIC S9(9)V9(9) VALUE 2.
03 A2 PIC S9(9)V9(8) VALUE 3.
03 AR PIC SV9(9).
:
DIVIDE A1 BY A2 GIVING AR.
ここで、
____________
3.00000000 | 2.000000000
は、次のように計算され、
000000000.666666666
000000003.00000000 | 2.00000000000000000
AR に移される結果は、.666666666 となります。
例2
別の例を示します。
03 A1 PIC S9(2)V9(9) VALUE 2.
03 A2 PIC S9(2)V9(8) VALUE 3.
03 AR PIC SV9(9).
:
DIVIDE A1 BY A2 GIVING AR.
ここで、
____________
3.00000000 | 2.000000000
は、次のように計算され、
000000000.666666666
03.00000000 | 02.0000000000000000
AR に移される結果は、.666666666 となります。
COMPUTE ステートメントまたは関係式に除算が含まれている場合、中間結果は次に示す 2 段階で計算
されます。
1. 実際の除算
2. 以降の計算のために実際の除算の結果を調整する
426750-001J
2-17
第 2 章 SCREEN COBOL ソース・プログラム
例3
次の例について考えてみます。
COMPUTE AX = A1/A2 + A3 * A4.
または
IF A1/A2 + A3 * A4 LESS THAN AX GO TO ...
上のステートメントでは、まず除算が行われます。次に、式にある他のオペランドを調べることによっ
て得られた概念的な PICTURE に適合するように中間結果を調整します。
非互換データ
PROCEDURE DIVISION のステートメントによってデータ項目が参照されたときに、そのデータ項目が
当該のステートメントでは許されない文字を含んでいると、非互換データ状態が発生します。例えば、表
示数字項目のいずれかの桁に英字 A が入っているときに、その項目を ADD ステートメントのオペランド
として使用すると、非互換データ状態が発生します。この参照の結果は、保証されません。
クラス状態テストは、項目に不正なデータが含まれていないかどうかを調べるためもので、この規則の
例外です。
2.6 条件式 (Conditional Expression)
条件式は、制御の経路のいずれかを選択するときにプログラムによってテストされる条件を指定します。
条件式は、IF および PERFORM ステートメントで指定されます。
条件式の条件は、単純条件と複合条件の 2 つのカテゴリに分けることができます。どちらの条件も、任
意の数の括弧で囲むことができ、括弧で囲んでも条件のカテゴリは変わりません。
2.6.1 単純条件 (Simple Condition)
単純条件には、次の 4 種類があります。
□ クラス条件 (Class condition)
□ 条件名条件 (Condition-name condition)
□ 比較条件 (Relation condition)
□ 正負条件 (Sign condition)
単純条件は、真 (true) または偽 (false) の真理値を持ちます。単純条件は括弧で囲むことができ、括弧で
囲んでも真理値は変わりません。
2-18
426750-001J
第 2 章 SCREEN COBOL ソース・プログラム
クラス条件 (Class Condition)
クラス条件は、DISPLAY 項目値が数字であるか、英字であるかを調べるときに使います。
クラス条件の構文は、次のとおりです。
data-name [ IS ] [ NOT ] { NUMERIC
}
{ ALPHABETIC }
NOT を指定すると、テスト条件は反転します。例えば、NOT NUMERIC は数字でない場合に真になり
ます。また、NOT ALPHABETIC は英字でない場合に真になります。
NUMERIC テストは、データ記述項で英字と指定した項目、および符号付き数字項目を含むグループ項
目に使用することはできません。検査対象のデータ項目が符号付きの場合は、その内容が数字で有効な符
号があるときにだけ、真になります。符号付でない場合は、その内容が数字で符号がないときにだけ、真
になります。SIGN IS SEPARATE 句のあるデータ項目の有効な符号は、+ または - です。
ALPHABETIC テストは、データ記述項で数字と指定した項目に対して使用することはできません。
条件名条件 (Condition-Name Condition)
条件名条件は、条件変数 (conditional variable) の値が条件名にあらかじめ定義されている値のいずれかに
等しいかどうか調べるのに使用されます。
条件名条件の構文は、次のとおりです。
condition-name
condition-name は、DATA DIVISION にレベル 88 項目として定義し、値または値の範囲を指定
しなければなりません。
この条件は、条件変数の値が条件名のいずれかに等しいか、あるいは、条件名の値のいずれかの範囲
( 両端の値を含む ) にあるときに、真と判定されます。
426750-001J
2-19
第 2 章 SCREEN COBOL ソース・プログラム
比較条件 (Relation Condition)
比較条件は、2 つの値を比較します。それぞれの値は、データ項目、リテラル、または算術計算の結果
の値であることが可能です。ただし、両方の値をリテラルにすることはできません。比較条件は、指定さ
れた値が指定の関係にあるときに、真と判定されます。
比較条件の構文は、次のとおりです。
value-1 IS { [ NOT ] {
{
{
{
{ [ NOT ] {
{
{
{
{ [ NOT ] {
{
{
LESS [ THAN ] }
<
}
} value-2
}
}
EQUAL [ TO ] }
}
=
}
}
}
GREATER [ THAN ] } }
>
} }
比較演算子 < ( より小さい )、= ( 等しい )、> ( より大きい ) は、比較のモードを決定します。比較演算
子の前後には、スペースを入れなければなりません。NOT を指定した場合は、NOT とその次のキーワー
ドまたは比較記号 (<、=、>) は 1 つの演算子と見なされます。例えば、NOT EQUAL は比較して等しくな
いときに、真と判定されます。また、NOT GREATER は等しいか、より小さいときに、真と判定されます。
比較する値が 2 つとも数字のときは、USAGE 句によって定義される用途に無関係に、それらの値を比
較することができます。ただし、それ以外の場合は、USAGE 句によって定義される用途は同じでなけれ
ばなりません。また、値のいずれかがグループ項目の場合は、非数字比較の規則が適用されます。
数字オペランドの比較
数字オペランドの比較は、オペランドの代数値に基づいて行われます。ですから、リテラルまたは算術
式オペランドの長さ ( 桁数 ) は、比較には関係ありません。ゼロは、符号とは無関係に 1 つの一意の値です。
数字オペランド同士の比較は、用途 (USAGE) の記述と関係なく認められます。符号のない数字オペラ
ンドは、正と見なされます。
非数字オペランドの比較
非数字オペランド同士の比較、あるいは数字オペランドと非数字オペランドの比較は、ASCII 文字の順
序が比較されます。オペランドのサイズは、そのオペランドの文字の総数です。
非整数オペランドは、非数字オペランドと比較することはできません。
数字オペランドと非数字オペランドは、用途 (USAGE) が同じときにだけ比較することができます。次
に示す規則が適用されます。
□ 数字オペランドは、整数データ項目または整数リテラルでなければなりません。
□ 非数字オペランドが基本データ項目または非数字リテラルの場合は、数字オペランドは数字データ項目
と同じ大きさの基本英数字データ項目に転記されたかのように扱われ、その基本英数字データ項目の内
容が非数字オペランドと比較されます。
2-20
426750-001J
第 2 章 SCREEN COBOL ソース・プログラム
□ 非数字オペランドがグループ項目の場合は、数字オペランドは数字データ項目と同じ大きさのグループ
項目に転記されたかのように扱われ、そのグループ項目の内容が非数字オペランドと比較されます。
同じ大きさのオペランドの比較
オペランドの値のサイズが等しいときは、対応する位置の文字が最左端から順に比較されます。この比
較は、等しくない文字が見つかるか、最右端に達するまで行われます。対応する文字がすべて同じ場合に、
両方の値が等しいと見なされます。
最初に見つかった等しくない文字のペアが比較されて、ASCII 文字の順序が判定されます。ASCII 文字
の順序が高位の方が、値が大きいと判定されます。
同じ大きさでないオペランドの比較
オペランドの値のサイズが等しくないときは、短い方のオペランドの右側にスペースを入れて同じサイ
ズにしたものとして比較します。
正負条件 (Sign Condition)
正負条件は、先述式の代数値がゼロより大きいか、小さいか、または等しいかを調べるのに使用します。
正負条件の構文は、次のとおりです。
arithmetic-expression [ IS ] [ NOT ] { POSITIVE }
{ NEGATIVE }
{ ZERO
}
arithmetic-expression は、少なくとも 1 つの変数を持たなければなりません。
NOT を指定した場合は、NOT とその次のキーワードで、真理値を判定する代数テストを定義する 1 つ
の正負条件になります。例えば、NOT ZERO はゼロ以外、つまり正または負の値のときに真と判定されま
す。POSITIVE はゼロより大きいことを、NEGATIVE はゼロより小さいことを、ZERO はゼロに等しいこ
とを意味します。
2.6.2 複合条件 (Complex Condition)
複合条件は、単純条件、組合せ条件、複合条件を論理連結語 ( 論理演算子 AND または OR) で繋いだも
の、あるいはこれらの条件に論理否定 ( 論理演算子 NOT) を付けたものです。複合条件の真理値は、値が
括弧で囲まれているかどうかに関係なく、個々の単純条件の真理値あるいは結合または否定された条件の
中間の真理値を評価し、すべての論理演算子を作用させた結果として求められます。
表 2-9 に、論理演算子とその定義を示します。
426750-001J
2-21
第 2 章 SCREEN COBOL ソース・プログラム
表 2-9 論理演算子
AND
論理積-真理値は、左右の条件が共に真のときにだけ真となり、一方または両方が偽の
とき偽となります。
OR
論理和-真理値は、左右の条件の一方または両方が真のときに真となり、両方の条件が
偽のときに偽となります。
NOT
論理否定または真理値の反転-真理値は、NOT の後の条件が偽のときに真となり、真の
ときに偽となります。
論理演算子の前後には、スペースを入れなければなりません。
否定単純条件 (Negated Simple Condition)
論理演算子 NOT を使用することによって、単純条件は否定されます。否定単純条件の真理値は、単純
条件の場合と逆になります。否定単純条件を括弧で囲んでも、真理値は変わりません。
否定単純条件の構文は、次のとおりです。
NOT simple-condition
組合せ条件 (Combined Condition) と否定組合せ条件
組合せ条件は、論理演算子 AND または OR で条件を結合したものです。結合されるそれぞれの条件は、
単純条件、否定条件、組合せ条件または否定組合せ条件、あるいはそれらの組み合わせたものが可能です。
組合せ条件および否定組合せ条件の構文は、次のとおりです。
condition {
{
{ AND } condition }
{ OR }
}
略記組合せ比較条件 (Abbreviated Combined Relation Condition)
1 つの項目を複数の項目と比較する場合に、その項目を最初に参照した後は、その項目名を省略して、関
係を略記することができます。さらに、比較演算子が直前の演算子と同じときは、演算子も省略すること
ができます。
略記組合せ比較条件の構文は、次のとおりです。
condition { { AND } [ NOT ] [ operator ] object }...
{ { OR }
}
略記した条件の中に NOT を指定して、直後に演算子がないときは、その NOT は条件の一部に対する論
理否定と解釈され、その次の関係には影響しません。次に、略記組合せ比較条件およびそれに対応する省
略されていない条件の例を示します。
2-22
426750-001J
第 2 章 SCREEN COBOL ソース・プログラム
略記組合せ比較条件
省略されていない条件
a > b AND NOT < c OR d
((a > b) AND (a NOT < c))
OR (a NOT < d)
(a NOT EQUAL b) OR (a NOT EQUAL c)
(NOT (a = b)) OR (a = c)
NOT ((a GREATER b) OR (a < c))
NOT ((((a NOT > b)
AND (a NOT > c))
AND (NOT (a NOT > d))))
(a + b - c) > d
AND (a + b - c) NOT < e
OR (a + b - c) NOT < f
a NOT EQUAL b OR c
NOT a = b OR c
NOT (a GREATER b OR < c)
NOT (a NOT > b AND c
AND NOT d)
(a + b - c) > d
AND NOT < e OR f
2.6.3 条件評価の規則
標準の順序を変更する必要があるときは、括弧を使用して個々の条件を評価する順序を変更することが
できます。括弧で囲まれた条件が先に評価されます。入れ子になっている括弧で条件が囲まれているとき
は、最も内側の条件から外側に評価が行われていきます。
括弧が使用されていない場合、または括弧に囲まれた条件が同じレベルの場合は、次に示す順序にした
がって評価が行われて、最終的な真理値が決定されます。
1. 算術式の値を定めます。
2. 次の順序にしたがって、単純条件の真理値を定めます。
a. 比較条件
b. クラス条件
c. 条件名条件
d. 正負条件
3. 否定単純条件の真理値を定めます。
4. 組合せ条件の真理値を定めます。先に論理演算子 AND を作用させ、次に論理演算子 OR を作用させます。
5. 否定組合せ条件の真理値を定めます。
6. 評価の順序が括弧で完全に示されていない場合は、同じ階層レベルにある連続した演算子は左から右に
評価します。
426750-001J
2-23
第 2 章 SCREEN COBOL ソース・プログラム
2.7 テーブル (Table)
テーブル・データの取り扱いは、データ処理に共通の問題です。例えば、あるデータ構造に 20 個の合計
フィールドがあって、Total 1、Total 2、...、Total 20 と 20 個の同様のデータ項目名を付けると、それぞれ
の合計の関係は不明瞭になり、参照し難くなります。テーブル構造にすることによって、このような状況
が単純化されます。
テーブルは、OCCURS 句でデータ記述することによって定義されます。OCCURS 句は、特定の項目を
指定回数だけ繰り返すことを指定します。この項目はテーブルの要素と見なされ、その名前および記述が
繰り返し適用されます。例えば、先に取り上げた 1 次元のテーブルは、次のように定義することができます。
02
total
OCCURS 20 TIMES ...
SCREEN SECTION で は、テ ー ブ ルは基本項目にしなければなりません。WORKING-STORAGE
SECTION および LINKAGE SECTION では、テーブルの要素を従属データ項目のグループにすることがで
きます。さらに、グループのいくつかをテーブルにすることもできます。ですから、前述の例は、次のよ
うにさらに詳細に表すことができます。
02
total-g OCCURS 20 TIMES.
03 total-a ...
03 total-b OCCURS 3 TIMES ...
上の例では、total-a は 1 次元のテーブルとして記述されています。また、total-b は、最初の OCCURS 句
に従属するデータ項目が別の OCCURS 句を持っているため、2 次元のテーブルとして記述されています。
もし、total-b に従属するデータ項目の記述に別の OCCURS 句があれば、その項目は 3 次元のテーブルにな
ります。SCREEN COBOL では、WORKING-STORAGE SECTION および LINKAGE SECTION で最大 3
次元まで認められています。
テーブルは、外部ソースからのデータに加えて、プログラムが必要とする定数値を定義するために
WORKING-STORAGE SECTION に作成されることがよくあります。例えば、月の名前を定義するテーブ
ルは、次のようにコーディングされます。
WORKING-STORAGE SECTION.
01 month-name-table.
05 FILLER
PIC X(9) VALUE "JANUARY".
05 FILLER
PIC X(9) VALUE "FEBRUARY".
05 FILLER
PIC X(9) VALUE "MARCH".
05 FILLER
PIC X(9) VALUE "APRIL".
05 FILLER
PIC X(9) VALUE "MAY".
05 FILLER
PIC X(9) VALUE "JUNE".
05 FILLER
PIC X(9) VALUE "JULY".
05 FILLER
PIC X(9) VALUE "AUGUST".
05 FILLER
PIC X(9) VALUE "SEPTEMBER".
05 FILLER
PIC X(9) VALUE "OCTOBER".
05 FILLER
PIC X(9) VALUE "NOVEMBER".
05 FILLER
PIC X(9) VALUE "DECEMBER".
01 month-name-rtable REDEFINES month-name-table.
05 month-name OCCURS 12 TIMES
PIC X(9).
FILLER は、項目の名前が重要な意味を持っていない場合にデータ名の代わりに指定されるキーワード
です。この例ではテーブル要素のオカレンスが個別の名前を持っていないため、あるオカレンスを参照す
るにはテーブルのデータ名とそのオカレンスの位置番号を指定する必要があります。この位置番号を指定
する方法は添字付け (subscripting) と呼ばれますが、それについてはこの章で後述します。
2-24
426750-001J
第 2 章 SCREEN COBOL ソース・プログラム
2.8 データの参照
すべての項目は、参照できるように名前を付けなければなりません。一意の名前が付けられた項目は問
題なく参照することができますが、多くのプログラムには一意の名前がない項目が含まれています。例え
ば、テーブルのすべての要素は、1 つの名前を共用しています。また、複数のデータ項目に対して同じ名
前を使用することもできるし、PROCEDURE DIVISION の異なる節で同じ段落名を使用することもできま
す。
このような一意でない名前を参照するには、修飾 (qualification) または添字付け (subscripting) すること
によって、名前を一意にする必要があります。
2.8.1 修飾 (Qualification)
すべての名前は、同一の綴り ( ハイフンを含む ) が他に存在しないようにするか、一意の名前に従属さ
せることによって、一意にしなければなりません。後者の場合、従属する項目に 1 つ以上の高位レベルの
名前を付けることによって、一意にしています。名前を一意にするには必要な修飾語を付け加えればよく、
上位レベルの名前をすべて含める必要はありません。
□ データ名については、グループ名を使用して修飾することができます。レベル 01 の名前が最高位の修
飾語で、次にレベル 02、... と続きます。
□ 条件名については、条件変数の名前を使用して修飾することができます。変数は基本項目であっても構
いません。
□ 段落名については、修飾語として使用できるのは SECTION 名 ( 節名 ) だけです。同じ SECTION 内で
段落を参照する場合は、修飾する必要はありません。
□ COPY ステートメントでのコピー・テキストについては、コピー・テキスト名を定義するテキスト・ラ
イブラリがコンパイルでのデフォルトのライブラリでない限り、ライブラリ名で修飾しなければなりま
せん。
□ レベル 01 データ名および SECTION 名は修飾することができないので、必ず一意にしなければなりま
せん。修飾の有無に関係なく、同一のデータ名と手続き名があってはいけません。
項目は、データ名、条件名、段落名、またはコピー・テキスト名の次に OF または IN を置いて、その後
に修飾語からなる 1 つ以上の句を置くことによって修飾されます。IN と OF は、機能的に同じです。
修飾の構文は、次のとおりです。
{ data-name
} [ { OF } qualification-name ] ...
{ condition-name } [ { IN }
]
paragraph-name [ { OF } section-name ]
[ { IN }
]
copy-text [ { OF } library-name ]
[ { IN }
]
426750-001J
2-25
第 2 章 SCREEN COBOL ソース・プログラム
修飾の規則は、次のとおりです。
□ 各修飾語は、修飾する名前と同じ構造体に属し、低位レベルから高位へと順に記述されなければなりま
せん。
□ 同じ名前を同じ構造体の異なるレベルで使用してはなりません。さもないと、その名前は自分自身を修
飾します。
□ データ名や条件名を複数のデータ項目に割り当てたときは、そのデータ名や条件名は、参照するたびに
修飾する必要があります ( ただし、REDEFINES 句は例外で、文脈によっては、修飾は不要です )。
□ 段落名は、同じ節の中で重複してはいけません。同じ節の中で段落を参照するときは、修飾する必要は
ありません。節名を使用して段落を修飾する場合は、SECTION の語は節名の一部ではないので、指定
する必要はありません。
□ データ名を修飾語として使用する場合は、添字を付けることはできません。これは、データ名が
OCCURS 句で記述されていても同様です。
□ 一意の名前を修飾しても構いません。
□ 名前を一意にするための修飾語の組合せが何通りかあるときは、どの組合せを使用しても構いません。
次の例では、「prefix」以外のすべてのデータ名は一意です。いずれかの「prefix」項目を参照す
るためには、修飾が必要です。
01 transaction-data ...
03 item-no ...
05 prefix ...
05 code ...
03 quantity ...
01 master-data ...
03 code-no ...
05 prefix ...
05 suffix ...
03 description ...
この場合、次のどの文を使用しても、transaction-data の prefix から master-data の prefix に転記
することができます。
MOVE
MOVE
MOVE
MOVE
prefix
prefix
prefix
prefix
OF
OF
OF
IN
item-no TO prefix OF code-no.
item-no TO prefix OF master-data.
transaction-data TO prefix IN code-no.
transaction-data TO prefix IN master-data.
2.8.2 添字付け (Subscripting)
添字は、テーブルの要素を参照するために使用されます。テーブルの要素はすべて同じ名前であるため、
添字付けが必要です。
添字は、整数数字リテラル、または数字整数のデータ項目で表します。添字をデータ項目で表す場合は、
そのデータ項目名は修飾することはできますが、添字を付けることはできません。また、添字に符号を付
けることができますが、その場合は正でなければなりません。
添字が取ることができる最小の値は、1 です。この値は、テーブルの最初の要素を指します。添字 2、3、
4、... は、テーブルのそれ以降の要素を指します。テーブルのサイズより大きい添字の値を使用すると、結
果は保証されません。
2-26
426750-001J
第 2 章 SCREEN COBOL ソース・プログラム
添字または添字のセットは、テーブルの要素名の後に括弧で囲んで指定します。複数の添字が必要なと
きは、データ構造の階層の上位のものから順に書きます。
添字の構文は、次のとおりです。
{ data-name
} ( sub-1 [ , sub-2 [ , sub-3 ] ] )
{ condition-name }
複数の添字があるデータ項目では、最初の添字以外のすべての添字の前に空白文字を入れなければなり
ません。
次に、添字の例を示します。
MOVE
MOVE
MOVE
MOVE
total(8) TO report-total-8.
day of date(3) TO print-line-date.
month-name(month-number) TO report-month.
matrix(row, column) TO output-display-line.
PIC X(1) OCCURS n TIMES と再定義されている 2 バイト・データを含む PIC X(n) 句 (n は、1 から 32,000
までの整数 ) によって定義された添字付きデータ項目を参照すると、2 バイト文字の左または右のバイトだ
けを参照することがあります。2 バイト文字の左または右のバイト自体は意味がないので、そのバイトの
内容は保証されません。例:
WORKING-STORAGE SECTION.
:
01 WS-KANJI-DATA
PIC N(05).
01 WS-UNDEFINED-DATA
PIC X.
01 WS-NAME-1
PIC N(05).
01 WS-GROUP-REDEF REDEFINES WS-NAME-1.
02 WS-BYTE-DATA
PIC X OCCURS 10 TIMES.
:
:
PROCEDURE DIVISION.
:
:
MOVE WS-KANJI-DATA TO WS-NAME-1.
MOVE WS-BYTE-DATA(1) TO WS-UNDEFINED-DATA.
2 バイト文字の左または右のバイトには意味がないので、この例で受け取るデータの内容は保証されま
せん。
備考: PIC N 句で定義された配列は、2 バイト単位で参照されます。
426750-001J
2-27
第 2 章 SCREEN COBOL ソース・プログラム
2.8.3 一意名の使用法
一意名とは、いくつかの修飾語、添字、または修飾語と添字を付けることによって一意にされたデータ
名です。添字または修飾語として使用されているデータ名自身に、添字を付けることはできません。
一意名の構文は、次のとおりです。
data-name-1 [ { OF } data-name-2 ] ...
[ { IN }
]
[ ( sub-1 [ , sub-2 [ , sub-3 ] ] ) ]
次に、一意名の指定の例を示します。
unique-identifier
item-1 OF group-a
element OF name-table OF master-data (master-num)
2.8.4 条件名の使用法
項目は、プログラムによって頻繁にテストされます。項目に条件名を割り当てると、項目を参照して値
を決定するのに便利です。
あらゆる条件名は、もともと一意であるか、修飾や添字付けによって一意にされる必要があります。修
飾語を付けて条件名を一意にするときには、条件変数を最初の修飾語として使用することができます。ま
た、条件変数に含まれるデータ名も修飾語として使用することができます。条件変数を参照するのに添字
付けが必要なときは、いずれの条件名にも同じ添字付けをしなければなりません。
次の例は、「restricted-use」と呼ばれる条件名の定義を示しています。
01 inventory.
02 part-number OCCURS 100
03 prefix
03 use-code
88 restricted-use
03 supplier-suffix
TIMES ...
PIC 99.
PIC 9.
VALUE 1.
PIC 99.
条件名「restricted-use」は、次のようにして参照することができます。
IF restricted-use OF use-code IN part-number (30)
NEXT SENTENCE,
ELSE...
2-28
426750-001J
第 2 章 SCREEN COBOL ソース・プログラム
2.9 データ表現
WORKING-STORAGE SECTION および LINKAGE SECTION では、データ項目は特定のバイト数単位
で保管されます。1 バイトは、8 ビットよりなる最小の記憶単位です。2 バイトが一組になって、ワード
(Word) が構成されます。
USAGE 句で定義される用途が DISPLAY のデータ項目は、1 文字当たり 1 バイトを占めます。表 2-10
は、USAGE 句で定義される用途が COMPUTATIONAL のデータ項目が占めるバイト数を示しています。
表 2-10 COMPUTATIONAL データ項目が占める記憶領域
PICTURE サイズ ( 桁数 )
占有するバイト数
1~4
2 バイト
5~9
4 バイト
10 ~ 18
8 バイト
SCREEN SECTION では、データ項目に個々の記憶領域を割り当てません。SCREEN COBOL のプログ
ラミングでは、これらのデータ項目のメモリ領域を考慮する必要はありません。
2.9.1 標準桁寄せ規則
データを基本項目に収める際の桁寄せの標準規則は、受取り側の項目のデータ・タイプによって決まり
ます。規則は、次のとおりです。
□ 受取り側のデータ項目が数字の場合は、送出し側データは小数点位置を合わせて収められます。そのと
き、必要に応じて左右のいずれかの側にゼロを補ったり、下位が切り詰められます。上位の切り詰めは
禁止されていて、上位を切り捨てようとすると、プログラムが中断されます。小数点が指定されていな
い場合、受取り側のデータ項目は、右端の文字の直後に小数点があるものとして扱われます。
□ 受取り側のデータ項目が英数字または英字の場合は、送出し側データは左端の文字位置に桁寄せして収
められます。そのとき、必要に応じて右側にスペースを補ったり、右側が切り詰められます。
2.9.2 標準外の桁寄せ
標準のデータ表現および桁寄せ規則は、いつでも適切であるとは限りません。そして、それを変更する
規定が用意されています。データ記述で JUSTIFIED 句を使用すれば、データはデータ項目内で右詰されま
す。
また、サーバがメッセージ内のデータ項目をワード境界で桁寄せすることが必要になることがあります。
データ項目をワード境界で桁寄せすることを、桁詰め (Synchronization) と呼びます。桁詰めは、通常、項
目 の 境 界 を ワ ー ド 境 界 に 一 致 さ せ る よ う に デ ー タ を 構 成 し て 記 述 す る こ と に よ っ て 行 わ れ ま す。
SYNCHRONIZED 句を使用してデータ項目を本来の境界に桁寄せさせることによって、この操作を自動的
に行うことができます。
426750-001J
2-29
第 2 章 SCREEN COBOL ソース・プログラム
( 空白ページ )
2-30
426750-001J
第 3 章 IDENTIFICATION DIVISION ( 見出し部 )
第 3 章 IDENTIFICATION DIVISION ( 見出し部 )
IDENTIFICATION DIVISION ( 見出し部 ) は、SCREEN COBOL プログラムの見出しとなるものです。
IDENTIFICATION DIVISION は、1 つの必須段落と 5 つのオプションの段落で構成されます。それら以外
の段落があると、コメントと見なされます。
IDENTIFICATION DIVISION の形式は、次のとおりです。
IDENTIFICATION DIVISION.
PROGRAM-ID. program-unit-name.
[ AUTHOR. [ comment-entry ] ]
[ INSTALLATION. [ comment-entry ] ]
[ DATE-WRITTEN. [ comment-entry ] ]
[ DATE-COMPILED. [ comment-entry ] ]
[ SECURITY. [ comment-entry ] ]
IDENTIFICATION DIVISION の見出しは、次のとおりです。
IDENTIFICATION DIVISION.
見出しは、ピリオド分離符で終結しなければなりません。
AUTHOR、INSTALLATION、DATE-WRITTEN、および SECURITY はオプションの段落であり、ド
キュメンテーションの目的で指定することができます。comment-entry パラメータは、SCREEN
COBOL 文字セットから任意の文字を組み合わせて、段落の見出しのテキストを表します。
3.1 PROGRAM-ID 段落
PROGRAM-ID 段落は必須段落であり、SCREEN COBOL プログラムの名前を指定します。PROGRAMID 段落の構文は、次のとおりです。
PROGRAM-ID. program-unit-name.
program-unit-name
ユーザ定義の SCREEN COBOL プログラム名です。この名前は、ユーザ定義名 (「第 2 章 SCREEN
COBOL ソース・プログラム」を参照 ) の規則に一致していなければなりませんが、ソース・コー
ドまたはオブジェクト・ファイルのファイル名と異なっていても構いません。別の SCREEN COBOL
プログラムでこのプログラムを参照するときに、CALL ステートメントでこの名前が使用されます。
また、PATHCOM SET TERM INITIAL および SET PROGRAM TYPE コマンドでも使用されます。
426750-001J
3-1
第 3 章 IDENTIFICATION DIVISION ( 見出し部 )
3.2 DATE-COMPILED 段落
DATE-COMPILED 段落はオプションの段落であり、ソース・リストの対応する行にコンパイルの日付
と時刻を挿入します。DATE-COMPILED 段落の構文は、次のとおりです。
DATE-COMPILED. [ comment-entry ]
comment-entry
SCREEN COBOL 文字セットから任意の文字を組み合わせたものです。
この段落を含めると、コンパイラは現在の日付と時刻を生成して、DATE-COMPILED 行および
comment-entry を次に示す行で置き換えます。
DATE COMPILED. yyyy/mm/dd - hh:mm:ss
yyyy
年。範囲は、0000 から 9999。
mm
月。範囲は、01 から 12。
dd
日付。範囲は、01 から 31。
3-2
426750-001J
第 4 章 ENVIRONMENT DIVISION ( 環境部 )
第 4 章 ENVIRONMENT DIVISION ( 環境部 )
ENVIRONMENT DIVISION ( 環境部 ) はプログラムの処理環境を宣言し、オプションとしてスクリーン
入力オペレーションのためのエラー報告処理を定義します。ENVIRONMENT DIVISION には、2 つの
SECTION ( 節 ) があります。
□ 必須の CONFIGURATION SECTION ( 構成節 )
□ 任意指定の INPUT-OUTPUT SECTION ( 入出力節 )
ENVIRONMENT DIVISION の構文は、次のとおりです。
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. comment-entry
OBJECT-COMPUTER. object-computer-entry
[ SPECIAL-NAMES. special-names-entry ]
[ INPUT-OUTPUT SECTION. input-output-entry ]
ENVIRONMENT DIVISION の見出しは、次のとおりです。
ENVIRONMENT DIVISION.
この見出しは、ピリオド (.) で終結しなければなりません。
4.1 CONFIGURATION SECTION ( 構成節 )
CONFIGURATION SECTION は、必須の節で、プログラムの処理環境を宣言します。この宣言には、端
末タイプの特性およびスクリーン表示属性を指定します。
CONFIGURATION SECTION の見出しは、次のとおりです。
CONFIGURATION SECTION.
この見出しは、領域 A で始めて、ピリオドで終結しなければなりません。
CONFIGURATION SECTIONには、2つの必須段落(SOURCE-COMPUTERおよびOBJECT-COMPUTER)
と 1 つの任意指定の段落 (SPECIAL-NAMES) があります。
426750-001J
4-1
第 4 章 ENVIRONMENT DIVISION ( 環境部 )
4.1.1 SOURCE-COMPUTER 段落
SOURCE-COMPUTER 段落は、必須の段落で、プログラムをコンパイルするコンピュータ・システムを
指定します。SCREEN COBOL コンパイラは、ソース・コンピュータが Compaq NonStop システムである
ものと見なして、指定された名前はコメントとして扱います。
SOURCE-COMPUTER 段落の構文は、次のとおりです。
SOURCE-COMPUTER. comment-entry.
comment-entry
1 つ以上の語です。空白または NULL 文字であってはいけません。
4.1.2 OBJECT-COMPUTER 段落
OBJECT-COMPUTER 段落は、必須の段落で、オブジェクト・プログラムを実行するコンピュータ・シ
ステムを指定します。SCREEN COBOL コンパイラは、オブジェクト・コンピュータが Compaq NonStop
システムであるものと見なして、指定された名前はコメントとして扱います。
OBJECT-COMPUTER 段落の構文は、次のとおりです。
OBJECT-COMPUTER. comment-word,
[ TERMINAL IS { T16-6510
[
{ T16-6520
[
{ T16-6530
[
{ T16-6540
[
{ IBM-3270
[
{ CONVERSATIONAL
[
{ INTELLIGENT-0
[
{ INTELLIGENT-1
[
{ INTELLIGENT-2
[
{ INTELLIGENT
} [ , ] ]
}
]
}
]
}
]
}
]
}
]
}
]
}
]
}
]
}
]
[ CHARACTER-SET IS { USASCII
[
{ FRANCAIS-AZ
[
{ FRANCAIS-QW
[
{ DEUTSCH
[
{ ESPANOL
[
{ UK
[
{ SVENSK-SUOMI
[
{ DANSK-NORSK
[
{ KANJI-KATAKANA
}
}
}
}
}
}
}
}
}
] .
]
]
]
]
]
]
]
]
comment-word
コメント語です。
4-2
426750-001J
第 4 章 ENVIRONMENT DIVISION ( 環境部 )
TERMINAL IS
このプログラムが、端末と通信するスクリーン型リクエスタ・プログラム、またはインテリジェン
ト・デバイスと通信するメッセージ型リクエスタ・プログラムのいずれであるかを示します。
TERMINAL IS 句を省略すると、プログラムはブロック・モードで稼動するスクリーン型リクエス
タ・プログラムと見なされ、以下に示すスクリーン型リクエスタ・プログラム用のブロック・モー
ド端末タイプのいずれでも実行することができます。ただし、TERMINAL IS 句を省略した場合は、
特定の端末に固有の機能は使用することができません。
このプログラムがスクリーン型リクエスタ・プログラムである場合は、TERMINAL IS 句には、リ
クエスタ・プログラムが実行する予定の端末のタイプおよび通信のタイプ ( ブロック・モードまた
は会話モード ) を指定します。
T16-6510
T16-6520
T16-6530
T16-6540
ブロック・モードで稼動する特定の端末を指定します。
□ T16-6520 端末用にコンパイルされたプログラムは、T16-6530 または T16-6540 端末で実
行することができます。
□ T16-6530 端末用にコンパイルされたプログラムは、T16-6540 端末で実行することができ
ます。
□ ある端末タイプ用にコンパイルされ、別の端末タイプで実行されるプログラムは、コン
パイル時に指定された端末タイプの機能しか使用できません。
IBM-3270
ブロック・モードで稼動する IBM 3270 タイプの端末を指定します。
CONVERSATIONAL
会話モードで稼動する次の端末を表します。6510、6520、6530、または 6540 タイプの端末、
IBM 3270 タイプの端末、あるいはオぺレーティング・システムが会話モードで稼動すると
認識するその他のデバイス。
ブロック・モードの端末タイプに固有の機能は、同じ端末タイプであっても会話モードでは
使用できません。
このプログラムがインテリジェント・デバイス・サポート (IDS) を行うメッセージ型リクエスタ・
プログラムであるときは、AM3270、SNAX、TERMPROCESS、AM6520、X25AM、または NSK
オペレーティング環境のプロセスと通信することができます。その場合、TERMINAL IS 句には端
末が会話モードとブロック・モードのどちらで通信するかを指定します。
INTELLIGENT-0
会話モードを指定します。
WRITEREAD I/O プロトコル : 会話モードでデバイスに書き込み、
応答を待機します。
INTELLIGENT-1
ブロック・モードを指定します。WRITE and READ I/O プロトコル : ブロック・モードでデ
バイスに書き込み、デバイスから読み取ります。
426750-001J
4-3
第 4 章 ENVIRONMENT DIVISION ( 環境部 )
INTELLIGENT-2
ブロック・モードを指定します。WRITEREAD I/O プロトコル : ブロック・モードでデバイ
スに書き込み、応答を待機します。
INTELLIGENT
会話モードまたはブロック・モードの指定が、PATHCOM の SET TERM TYPE パラメータ
で行われることを示します。端末タイプとして INTELLIGENT を指定し、PATHCOM の SET
TERM TYPE パラメータを指定しなかったときは、デフォルトにより会話モードになります。
これらの設定を使用可能にする PATHCOM の構文については、
『Compaq NonStop Pathway/iTS
System Management Manual』の SET TERM コマンドの個所に説明があります。
INTELLIGENT-0 は、デバイスが会話モードに設定され、SNAX や X25AM などの NonStop システ
ム用の Compaq アクセス方式でコンフィギュレーションされている場合に、選択するのが適切です。
INTELLIGENT-0 が選択され、TCP が REPLY 指定のない SEND MESSAGE ステートメントを実行
すると、デバイスに対して WRITE だけが発行されます。INTELLIGENT-0 が選択され、TCP がデー
タのない SEND MESSAGE ステートメントを実行すると、書込みカウントがゼロの WRITEREAD
が発行されます。
INTELLIGENT-1 は、ブロック・モードのデバイスが必要であり、SNAX や X25AM などの NonStop
システム用の Compaq アクセス方式で通信するようにデバイスがコンフィギュレーションされてい
る場合に、選択するのが適切です。INTELLIGENT-1 が選択され、TCP が REPLY 指定のない SEND
MESSAGE ステートメントを実行すると、READ は発行されません。INTELLIGENT-1 が選択され、
TCP がデータのない SEND MESSAGE ステートメントを実行すると、WRITE は発行されません。
INTELLIGENT-2 は、ブロック・モードのデバイスが必要であり、他のプロセスが同時にそこから
のデータをリクエストするようにデバイスがコンフィギュレーションされている場合に、選択する
のが適切です。その場合は、WRITEREAD プロトコルによって各応答が適切なリクエスタに返され
ることが保証されます。
INTELLIGENT-2 が選択され、TCP が REPLY 指定のない SEND MESSAGE
ステートメントを実行すると、WRITE が発行されます。INTELLIGENT-2 が選択され、TCP がデー
タのない SEND MESSAGE ステートメントを実行すると、READ が発行されます。
プログラムが NSK ユーザ・プロセスと通信するときは、そのプロセスとの通信を行う WRITEREAD
コールを呼び出すことができるようにするために、INTELLIGENT-0 または INTELLIGENT-2 を指
定する必要があります。
CHARACTER-SET IS
USASCII 以外の文字セットを指定します。この句は、IBM-3270、T16-6530、および T16-6540 端末
タイプを使用する場合にだけ指定することができます。他の端末タイプでは、USASCII 文字セット
と見なされます。指定する場合は、この句は TERMINAL IS 句の直後に指定しなければなりません。
IBM 3270 端末に対しては、KANJI-KATAKANA だけを宣言することができます。
IBM 3270 または 6540 端末で実行されるプログラムで CHARACTER-SET IS 句が省略されると、
USASCII が使用されます。6530 端末でコンパイルされて実行されるプログラムでこの句を省略す
ると、最初の DISPLAY BASE ステートメントが実行されるまで USASCII が使用されます。最初の
DISPLAY BASE ステートメントが実行された後は、端末のコンフィギュレーション・メニューで
指定された文字セットが使用されます。
KANJI-KATAKANA
4-4
426750-001J
第 4 章 ENVIRONMENT DIVISION ( 環境部 )
プログラムのソース・ファイルのデータ・フィールドまたはリテラルに 2 バイト文字が含ま
れている可能性があることを示し、コンパイラに PIC N 句の使用を認めるよう指示します。
1 バイトのカタカナ、2 バイトのカタカナ、および英大文字と英小文字のサポートは、端末
のタイプによって異なるので注意が必要です。
□ 6530 端末では、CHARACTER-SET IS KANJI-KATAKANA を指定すると、1 バイトのカ
タカナ、2 バイトのカタカナ、および英大文字と英小文字がサポートされます。
□ IBM 3270 端末では、英小文字または 1 バイトのカタカナのいずれかがサポートされます。
●
英大文字と英小文字の両方を使用するようにコンフィギュレーションした IBM 3270
端末では、プログラムは 1 バイトのカタカナを使用できません。
●
1 バイトのカタカナを使用するようにコンフィギュレーションした IBM 3270 端末で
は、TCP は送信データ・ストリームに含まれる英小文字を大文字変換 (upshift) しま
す。ですから、そのような端末では 1 バイトのカタカナと英大文字および英小文字を
使用することができます。ただし、そのようにコンフィギュレーションした場合には、
端末は英小文字を生成しないので、受信データには英小文字は含まれません。
備考: 1 バイトの英字だけを使用するアプリケーション・プログラムは、CHARACTER-SET IS KANJI-KATAKANA
句が有効に指定されているあらゆる端末で実行することができます。1 バイトの英字と 1 バイトのカタカナ
を使用するアプリケーション・プログラムは、6530 端末または EBCDIC/ カタカナをサポートするようにコ
ンフィギュレーションされた IBM 3270 端末でだけ実行することができます。
CHARACTER-SET IS 句の指定と端末で設定されている文字セットが異なる場合、または端末の設定が
不明の場合は、プログラムの最初の DISPLAY BASE ステートメントが実行されたときに、端末で文字セッ
ト・タイプに関する警告が出されます。プログラムの実行が終了すると、端末は元の文字セットにリセッ
トされます。
プログラムによる国別文字セット (national-use characters) のサポートの詳細は、次のとおりです。
□ FIELD-CHARACTERISTIC 句で UPSHIFT を指定すると、小文字は大文字に変換 (upshift) されます。
□ クラス条件で ALPHABETIC チェックを指定すると、文字セットの文字がチェックされます。
□ PICTURE 句で記号 A を指定すると、文字セットの文字がチェックされます。
プログラムによる国別文字セットのサポートは、次の機能を対象にしていません。
□ FIELD-CHARACTERISTIC 句の MUST BE は、国別文字の範囲テストはサポートしません。
□ LESS-THAN や GREATER-THAN などの比較処理を伴うテストは、国別文字に対してサポートされま
せん。
426750-001J
4-5
第 4 章 ENVIRONMENT DIVISION ( 環境部 )
4.1.3 SPECIAL-NAMES 段落
SPECIAL-NAMES 段落は、任意指定の段落であり、ユーザが選択した呼び名 (mnemonic-name) を特定
のシステム名に割り当てます。また、この段落は、特定の端末の機能をプログラムで使用される語で参照
できるようにします。この段落を上手に使用すれば、プログラムから端末タイプへの依存性を取り除くこ
とができます。
SPECIAL-NAMES 段落の構文は、次のとおりです。
SPECIAL-NAMES.
[ { mnemonic-name IS { sys-name
} } ,... ]
[ {
{ ( { sys-name } ,... ) } }
]
[ , CURRENCY [ SIGN ] IS literal-1 ]
[ , DECIMAL-POINT IS COMMA ] .
mnemonic-name
sys-name に関連付けるためにユーザが選択した一意名 (identifier) です。呼び名 (mnemonicname) は、sys-name によって示されるファンクション・キーや表示属性を参照するために、後
でプログラムの SCREEN SECTION や PROCEDURE DIVISION で使用することができます。
システム名が組合せ可能な表示属性を指す場合は、システム名のリストは 1 つの
mnemonic-
name にだけ結び付けることによって、1 つの mnemonic-name で表示属性の組合せを指定す
ることができます。ただし、IBM 3270 ファミリの端末以外では、組合せ可能な表示属性は強調表示
属性に限られます。
sys-name
端末で使用できるファンクション・キーまたは表示属性を指定します。表 4-1 に、システム名によっ
て指定できるファンクション・キーを示します。また、表 4-2 に、システム名によって指定できる
表示属性を示します。
4-6
426750-001J
第 4 章 ENVIRONMENT DIVISION ( 環境部 )
表 4-1 システム名によって指定できるファンクション・キー
システム名
6510
6520
6530/6540
F1 ~ F16 ( シフトなし )
x(1)
x
x
SF1 ~ SF16 ( シフトあり )
x
x
x
LINE-INS ( シフトなし )
x
x
LINE-DEL ( シフトあり )
x
x
NEXT-PAGE ( シフトなし )
x
x
S-NEXT-PAGE ( シフトあり )
x
x
PREV-PAGE ( シフトなし )
x
x
S-PREV-PAGE ( シフトあり )
x
x
ROLL-DOWN ( シフトなし )
x
x
S-ROLL-DOWN ( シフトあり )
x
x
ROLL-UP ( シフトなし )
x
x
S-ROLL-UP ( シフトあり )
x
x
RETURN-KEY (2)
3270
x
CLEAR
x
ENTER
x
PA1 ~ PA3
x
PA4 ~ PA10
x
PF1 ~ PF24
x
1.
2.
x は、その端末タイプに対して当該のシステム名が有効であることを示します。
RETURN-KEY は、6530 または 6540 端末で実行する SCREEN COBOL プログラムの SPECIAL-NAMES 段落で定
義することができます。いったん RETURN-KEY を定義すると、RETURN キーを押すたびにファンクション・コー
ドが送出されます。定義しない場合は、RETURN キーを押すと、単にタブが 1 つ進みます。RETURN キーの機能
はプログラム単位で設定されます。プログラムの最初の DISPLAY-BASE ステートメントが、端末における RETURN
キーの動作を実行中のプログラムの設定に合せます。
426750-001J
4-7
第 4 章 ENVIRONMENT DIVISION ( 環境部 )
表 4-2 システム名によって指定できる表示属性 ( 1/2 )
システム名
6510
6530/6540
3270
BLUE
x(1)
RED
x
PINK
x
GREEN
x
[D](2)
TURQUOISE
x
NEUTRAL (3)
x
YELLOW
x
HIDDEN
x
x
x
NOTHIDDEN
x [D]
x [D]
x
PROTECTED
x
x
x
UNPROTECTED
x [D]
x [D]
x
BLINK
x
x
x
NOBLINK
x [D]
x [D]
x
[D]
x [D]
x [D]
x
[D]
x [D]
MDTOFF
[D]
x
x [D]
x [D]
x
[D]
x [D]
x
x
NUMERIC-SHIFT
x
BRIGHT
x
x [D]
CONVERSATIONAL (4)
x
MDTON
NORMAL
x [D]
x
DIM
x
x
x
REVERSE
x
x
x
NOREVERSE
x [D]
x
UNDERLINE (5)
x
x
NOUNDERLINE
x [D]
x
[D]
[D]
x [D]
x [D]
x
[D]
x [D]
BELL
x
x
NOBELL
x [D]
x [D]
TOPLINE
x
LEFTLINE
x
NOTOPLINE
x [D]
1.
2.
3.
4.
5.
4-8
6520
x は、その端末タイプに対して当該のシステム名が有効であることを示します。
[D] は、その端末タイプでのデフォルトの表示属性値を示します。
NEUTRAL というシステム名は、実際に、白い端末文字を生成させます。
OBJECT-COMPUTER 段落で CONVERSATIONAL と指定されたあらゆる端末に適用されます。
BOTTOMLINE と UNDERLINE は、別の表示属性です。
426750-001J
第 4 章 ENVIRONMENT DIVISION ( 環境部 )
表 4-2 システム名によって指定できる表示属性 ( 2/2 )
6510
システム名
6520
6530/6540
3270
NOLEFTLINE
x [D]
RIGHTLINE
x
NORIGHTLINE
x [D]
BOTTOMLINE (5)
x
NOBOTTOMLINE
x [D]
BOXFIELD
x
1.
2.
3.
4.
5.
CONVERSATIONAL (4)
x は、その端末タイプに対して当該のシステム名が有効であることを示します。
[D] は、その端末タイプでのデフォルトの表示属性値を示します。
NEUTRAL というシステム名は、実際に、白い端末文字を生成させます。
OBJECT-COMPUTER 段落で CONVERSATIONAL と指定されたあらゆる端末に適用されます。
BOTTOMLINE と UNDERLINE は、別の表示属性です。
CURRENCY [ SIGN ] IS literal-1
ドル記号 ($) の代りに使用するリテラルを指定します。literal-1 は、1 文字でなければならず、
また、以下の文字であってはいけません。
□ 数字
0~9
□ 文字
A B C D L P R S V X Z スペース
□ 特殊文字
* + - , . ; ( ) " / =
DECIMAL-POINT IS COMMA
プログラムの後続部分で、PICTURE 文字列および数字リテラルでのコンマとピリオドの機能を入
れ換えます。
次に、SPECIAL-NAMES 段落の例を示します。
SPECIAL-NAMES.
ENTER-KEY
IS
EXIT-KEY
IS
INPUT-ATTR IS
SIGNAL-ATTR IS
F1,
F16,
UNDERLINE,
(REVERSE, NOUNDERLINE).
SPECIAL-NAMES 段落で宣言する呼び名の表示属性の組合せには、次のような制限があります。
□ IBM 3270 端末用の拡張フィールド属性のうち、Pathway がサポートするものとサポートしないものを
組み合わせてはいけません。Pathway は、IBM 3270 端末において DIM をサポートしません。
□ 次に示す表示属性同士は、任意に組み合わせることができます。
BRIGHT
HIDDEN
MDTON
NUMERIC-SHIFT
PROTECTED
426750-001J
4-9
第 4 章 ENVIRONMENT DIVISION ( 環境部 )
□ 次に示す強調表示属性は、他の任意の強調表示属性と組み合わせることができます (BRIGHT、
HIDDEN、MDTON、NUMERIC-SHIFT、または PROTECTED)。
□ 次に示すアウトライン表示属性がサポートされている IBM 3270 端末では、それらのアウトライン表示
属性を任意に組み合わせることができ、さらに任意の強調表示属性 (BRIGHT、HIDDEN、MDTON、
NUMERIC-SHIFT、PROTECTED、BLINK、REVERSE、または UNDERLINE) と組み合わせることが
できます。
TOPLINE または NOTOPLINE
LEFTLINE または NOLEFTLINE
RIGHTLINE または NORIGHTLINE
BOTTOMLINE または NOBOTTOMLINE
BOXFIELD
□ アウトライン表示属性は、1 つ以上の強調表示属性と組み合わせることができます。例えば、点滅表示
属性と強調表示属性を組み合わせたフィールドを設定することができます。
(BLINK, TOPLINE, BOTTOMLINE)
(REVERSE, LEFTLINE, RIGHTLINE)
(UNDERLINE, BOTTOMLINE, TOPLINE)
4.2 INPUT-OUTPUT SECTION ( 入出力節 )
INPUT-OUTPUT SECTION は、任意指定の節であり、スクリーン入力オペレーションに関するエラーを
報告します。この節を省略すると、エラー表示属性は、CONFIGURATION SECTION で指定した端末タイ
プによって決定されます。
INPUT-OUTPUT SECTION の見出しは、次のとおりです。
INPUT-OUTPUT SECTION.
この見出しは、領域 A で始めて、ピリオドで終結しなければなりません。
INPUT-OUTPUT SECTION の構文は、次のとおりです。
SCREEN-CONTROL.
ERROR-ENHANCEMENT [ IS ] mnemonic-name [ IN { FIRST } ]
[
{ ALL
} ]
[ WITH [ NO ] AUDIBLE ALARM ] .
ERROR-ENHANCEMENT [ IS ] mnemonic-name
エラーがあったフィールドを指摘するための表示属性を指定します。この呼び名 (mnemonic-
name) は、SPECIAL-NAMES 段落で指定されていなければなりません。
ブロック・モードの端末に対してこの句を省略すると、6510、6520、6530、および 6540 端末につ
いては BLINK 属性が使用され、IBM 3270 については BRIGHT 属性が使用されます。会話モード
の端末に対してこの句を省略すると、フィールド属性によるエラーの指摘は行われません。この場
合、エラーを指摘するには、BELL を指定する必要があります。
4-10
426750-001J
第 4 章 ENVIRONMENT DIVISION ( 環境部 )
IN FIRST
エラーが見つかった最初のフィールドを指摘します。会話モードで稼動している端末では、IN
FIRST だけが有効で、IN ALL を指定してもエラーのある最初のフィールドしか指摘されません。
IN ALL
エラーが見つかったすべてのフィールドを指摘します。IN ALL を指定しない場合は、エラーのあ
る最初のフィールドしか指摘されません。
WITH [ NO ] AUDIBLE ALARM
エラーを見つけたときに警告音を鳴らすかどうかを指定します。
ERROR-ENHANCEMENT オプションによって、検出されたエラーをどのように取り扱うかを指定する
ことができます。例えば、ACCEPT ステートメントを処理するときに、TCP は PICTURE 句の要件と MUST
BE などのフィールド特性句による制約に基づいて入力フィールドの内容をチェックします。ACCEPT 処
理によって、どのフィールドがエラーであるか示されます。
426750-001J
4-11
第 4 章 ENVIRONMENT DIVISION ( 環境部 )
( 空白ページ )
4-12
426750-001J
第 5 章 DATA DIVISION ( データ部 )
第 5 章 DATA DIVISION ( データ部 )
DATA DIVISION は、プログラムが作成したり、入力、操作、出力するデータを記述します。DATA
DIVISION は、次の4つの SECTION で構成されます。
□ WORKING-STORAGE SECTION ( ワーキング・ストレージ節 )
□ LINKAGE SECTION ( リンケージ節 )
□ SCREEN SECTION ( スクリーン節 )
□ MESSAGE SECTION ( メッセージ節 )
これらの SECTION はすべてオプション ( 任意指定 ) であり、その SECTION で定義する種類のデータが
プログラムで使用される場合に DATA DIVISION に定義します。DATA DIVISION で記述されるデータは、
次の 3 つに分類することができます。
□ プログラムで内部的に展開され、WORKING-STORAGE SECTION または LINKAGE SECTION で記述
される一時的エリアに入れられるデータ。
□ 端末で表示されるためにフォーマットされるデータ、または端末から入力として受け取るデータ。この
データは、SCREEN SECTION を介して転送されます。
□ フォーマットされていないデータ。このデータは、特定のデバイス用にフォーマットされていないの
で、デバイスに依存しません。MESSAGE SECTION を介して転送されます。
DATA DIVISION は、次の見出しで始めます。
DATA DIVISION.
この見出しは、ピリオドで終結しなければなりません。
DATA DIVISION の形式は、次のとおりです。
DATA DIVISION.
[ WORKING-STORAGE SECTION.
data-description-entries ]
[ LINKAGE SECTION.
data-description-entries ]
[ SCREEN SECTION.
[ input-control-entries ]
screen-description-entries ]
[ MESSAGE SECTION.
message-description-entries ]
426750-001J
5-1
第 5 章 DATA DIVISION ( データ部 )
5.1 DATA DIVISION の構成
DATA DIVISION の 4 つの SECTION は、それぞれ異なった種類のデータを記述します 。DATA DIVISION
の各 SECTION は、次のように定義されます。
□ WORKING-STORAGE SECTION―この SECTION は、プログラム内で展開されるローカル・データの
構造を記述します。ここで指定されるデータ項目は、プログラムが呼び出されるたびに初期設定されま
す。したがって、プログラム間で値を引き渡すことはできません。
□ LINKAGE SECTION―この SECTION は、CALL ステートメントでサブプログラムに渡されるパラメー
タ・データの構造を記述します。呼び出し側のプログラムで記述した項目は、呼び出されたプログラム
の PROCEDURE DIVISION の見出しの USING 句で参照することができます。
□ SCREEN SECTION―この SECTION は、端末で表示されるスクリーンの各フィールドのタイプおよび
位置を指定します。SCREEN SECTION で記述されるスクリーンは、そのプログラムの PROCEDURE
DIVISION で参照されます。
□ MESSAGE SECTION―この SECTION は、メッセージの各フィールドのデータ・タイプ、サイズ、お
よび相対位置 ( 順序 ) を指定します。また、この SECTION は各フィールドに対して行われる編集およ
び 変 換 を 記 述 し ま す。M E S S A G E S E C T I O N で記述されたメッセージは、 そのプログラ ムの
PROCEDURE DIVISION で参照されます。
プログラムにこれらの 4 つの SECTION を記述するときは、上記の順序で指定する必要があります。各
SECTION 内の項目は、どのような順序で指定しても構いません。
1 つのプログラムに SCREEN SECTION と MESSAGE SECTION の両方を指定することもできますが、
プログラムは両方の SECTION を同時に使用することはできません。つまり、プログラムは、端末のスク
リーン上に データを表示して入力を処理することとインテリジェント・デバイスと通信する処理とを別々
に行わなければならず、同時に行うことはできません。プログラムの PROCEDURE DIVISION で参照する
SECTION が SCREEN SECTION または MESSAGE SECTION のどちらであるかは、OBJECT-COMPUTER
段落の TERMINAL IS 句によって示します。
5.1.1 WORKING-STORAGE SECTION
WORKING-STORAGE SECTION は、内部的に使用されるレコードおよび 諸々のデータ項目を定義しま
す。この SECTION のデータ記述項には、初期値を設定することができます。ローカルのデータ項目また
は中間作業領域が必要でない場合は、この SECTION を省略することができます。
この SECTION は、次の見出しで始めます。
WORKING-STORAGE SECTION.
個々の項目のデータ記述項は、この見出しの次に指定されます。すべての項目名は一意でなければなり
ません。従属データ名は重複しても構いませんが、参照するときには、修飾により一意にしなければなり
ません。
WORKING-STORAGE SECTION には、32,000 バイトまでの基本項目、グループ項目、およびレベル番
号 01 のデータ項目を記述することができます。2 バイト文字だけで構成されるデータ項目であれば、
WORKING-STORAGE SECTION は 1 つの項目で 16,000 文字 (32,000 バイト ) までを記述することができ
ます。
5-2
426750-001J
第 5 章 DATA DIVISION ( データ部 )
レベル番号 01 のデータ項目は、1 つの項目で最大 32,000 バイトまで記述することができます。このデー
タ項目には、基本項目とグループ項目のいずれかまたは両方を含めることが可能です。例:
WORKING-STORAGE SECTION.
01 BIG-01-ITEM
01 BIG-GROUP-ITEM-1.
03 BIG-GROUP.
01 BIG-GROUP-ITEM-2.
03 BIG-GROUP.
05 BIG-ITEM-2-A.
05 BIG-ITEM-2-B.
01 BIG-ELEMENTARY-ITEM-01.
03 BIG-ELEMENTARY-GROUP.
05 BIG-ELEMENTARY-ITEM
PIC X(32000) VALUE SPACES.
PIC X(16000) VALUE SPACES.
PIC X(16000) VALUE SPACES.
PIC X(16000) VALUE SPACES.
PIC X(32000) VALUE SPACES.
備考: Compaq の Inspect デバッグ用ツールを使用して非常に大きなデータ項目を表示すると、データが切り詰め
られる場合があります。
5.1.2 LINKAGE SECTION
LINKAGE SECTION は、呼び出し側のプログラムから LINKAGE SECTION を含む他のプログラム ( 呼
び出されるプログラム ) に渡されるデータを記述します。LINKAGE SECTION は、この SECTION で定義
されたデータ項目を、呼び出し側のプログラムの WORKING-STORAGE SECTION で定義されたデータ項
目に関連付けます。LINKAGE SECTION は、受け渡されるデータが存在しない場合であっても、呼び出さ
れるプログラムに必ず指定しなければなりません。
この SECTION は、次の見出しで始めます。
LINKAGE SECTION.
LINKAGE SECTION でのデータ項目の定義は、呼び出し側のプログラムの WORKING-STORAGE
SECTION の対応するデータ項目と同じサイズにして下さい。この定義が大きい場合は、エラーが返されま
す。また、定義が小さい場合はデータが切り詰められることがありますが、エラーは返されません。
呼び出し側のプログラムは、呼び出されるプログラムに渡されるデータ構造を参照するために、CALL
ステートメントに USING 句を含んでいなければなりません。呼び出されるプログラムは、引き渡される
データ構造を参照するために、PROCEDURE DIVISION の見出しに USING 句を含んでいなければなりま
せん。
LINKAGE SECTION は、呼び出されるプログラムの中に追加のメモリを割り当てるものではありませ
ん。呼び出されるプログラムと呼び出し側のプログラムは、共通のデータ構造になっている呼び出し側の
プログラムのメモリを共用します。
LINKAGE SECTION の構造は、レベル 88 項目以外の項目で VALUE 句が禁止されていることを除けば、
WORKING-STORAGE SECTION の構造と同じです。
LINKAGE SECTION には、32,000 バイトまでの基本項目、グループ項目、およびレベル番号 01 のデー
タ項目を記述することができます。2 バイト文字だけで構成されるデータ項目であれば、LINKAGE
SECTION には、1 つの項目で 16,000 文字 (32,000 バイト ) までを記述することができます。このサイズの
制限に関する詳細については、7-19 ページの「SCREEN COBOL の制限事項」を参照して下さい。
426750-001J
5-3
第 5 章 DATA DIVISION ( データ部 )
レベル番号 01 のデータ項目は、1 つの項目で最大 32,000 バイトまで記述することができます。このデー
タ項目には、基本項目とグループ項目のいずれかまたは両方を含めることが可能です。例:
LINKAGE SECTION.
01 BIG-01-ITEM
01 BIG-GROUP-ITEM-1.
03 BIG-GROUP.
01 BIG-GROUP-ITEM-2.
03 BIG-GROUP.
05 BIG-ITEM-2-A.
05 BIG-ITEM-2-B.
01 BIG-ELEMENTARY-ITEM-01.
03 BIG-ELEMENTARY-GROUP.
05 BIG-ELEMENTARY-ITEM
PIC X(32000).
PIC X(16000).
PIC X(16000).
PIC X(16000).
PIC X(32000).
備考: Inspect を使用して非常に大きなデータ項目を表示するると、データが切り詰められる場合があります。
5.1.3 SCREEN SECTION
SCREEN SECTION は、PROCEDURE DIVISION で参照されるスクリーンを記述します。SCREEN
SECTION の構造は、WORKING-STORAGE SECTION の構造に類似しています。SCREEN SECTION は、
基本とオーバーレイの 2 種類のスクリーンを定義します。
この SECTION は、次の見出しで始めます。
SCREEN SECTION.
5.1.4 MESSAGE SECTION
MESSAGE SECTION は、PROCEDURE DIVISION で参照されるメッセージを記述します。MESSAGE
SECTION の構造は、WORKING-STORAGE SECTION の構造に類似しています。
この SECTION は、次の見出しで始めます。
MESSAGE SECTION.
5.2 データ構造
データは、一連のデータ記述項により定義されます。データ記述項には、データ構造の要素を記述し、
これらの要素の属性および共に構成される項目を記述します。各記述項では、レベル番号の後にデータ名
と独立した一連の句を指定します。レベル番号は、データの構造を示し、データを下のレベルへと細分し
ます。
データ構造で最も下のレベルの要素、つまりこれ以上細分されない要素を基本項目と呼びます。各構造
には、1 つまたは複数の基本項目を含めることができます。
5-4
426750-001J
第 5 章 DATA DIVISION ( データ部 )
一連の基本項目は、グループにして参照することができます。さらに、複数のグループをまとめて大き
なグループを構成することもできます。こうすることにより、基本項目は複数のグループに属することが
できます。
5.2.1 レベル番号 01-49
レベル番号 01 ~ 49 は、データ項目の階層を定義します。各構造体には、レベル番号 01 が割り当てら
れます。
レベル番号は、基本項目とグループ項目の関係を示します。グループを構成するデータ項目には、この
グループ項目のレベル番号よりも大きいレベル番号が割り当てられます。グループ内のレベル番号は連続
番号にする必要はありませんが、階層の低い項目には大きいレベル番号を順番に付けなければなりません。
グループは、そのグループのレベル番号と同一またはより小さいレベル番号を持つ項目が指定されるま
で有効であり、それ以前のグループ項目および基本項目はすべてこのグループに属します。特定のグルー
プ項目に直接に属するすべての項目およびグループは、そのグループ項目のレベル番号より大きいレベル
番号で記述しなければなりません。この場合、同じレベルの従属項目には同じレベル番号を与えなければ
なりません。
次に、レベル番号の付け方の例を示します。
01
01
address-data.
05 office-number.
10 district
10 region
05 office-address.
10 street
10 city
10 state
10 zip-code
personnel-data.
05 office-manager
05 no-of-employees
05 tax-groups.
10 hourly
15 part-time
15 full-time
10 exempt
PIC 99.
PIC 999.
PIC
PIC
PIC
PIC
X(25).
X(15).
X(5).
9(5).
PIC X(35).
PIC 9(4).
PIC
PIC
PIC
PIC
9(3).
99.
99.
9(4).
5.2.2 レベル番号 66、77、および 88
WORKING-STORAGE SECTION および LINKAGE SECTION では、さらに 3 種類のデータ記述項とし
てレベル 66、レベル 77、レベル 88 があります。これらのレベル番号で始まる記述項は、他の項目との階
層を定義しません
これらの記述項は、次のように定義されます。
□ レベル 66― レベル 66 データ項目は、RENAMES 句によって再定義される基本項目またはグループ項
目を指定します。この項目は、連続する基本データ項目を編成し直すために使用します。
□ レベル 77― レベル 77 データ項目は、他のデータ項目の一部ではない独立したデータ項目です。この
データ項目は細分することはできません。
426750-001J
5-5
第 5 章 DATA DIVISION ( データ部 )
□ レベル 88― レベル 88 データ項目は、条件名を定義します。その条件名には、テストされる条件を定義
する値または値の範囲が含まれます。
5.3 データ記述項
データ記述項は、データ項目の特性を定義します。この記述項は、SCREEN COBOL プログラムの
WORKING-STORAGE SECTION または LINKAGE SECTION で使用することができます。
OCCURS 句を含まない WORKING-STORAGE SECTION 内の数字データ基本項目は、プログラムのコ
ンパイル時にゼロに初期設定されます。
データ記述項の書き方は、種々の用途のためにいくつか用意されています。すなわち、データ記述項は、
項目の生成 ( メモリ空間の割り当て )、既存データの再定義、既存データに対する参照位置の指定、条件値
の範囲指定などに使用されます。
次に、データ記述項の構文を示します。
{ WORKING-STORAGE SECTION. }
{ LINKAGE SECTION.
}
書き方 1
level-number { data-name-1 }
{ FILLER
}
[ JUSTIFIED clause ]
[ OCCURS clause ]
[ PICTURE clause ]
[ REDEFINES clause ]
[ SIGN clause ]
[ SYNCHRONIZED clause ]
[ USAGE clause ]
[ VALUE clause ]
備考: VALUE 句は、WORKING-STORAGE SECTION にだけ含めることができます。
書き方 2
[ 66 new-name [ RENAMES clause ] ]
書き方 3
[ 88 condition-name , [ VALUE clause ] ]
5-6
426750-001J
第 5 章 DATA DIVISION ( データ部 )
□ 書き方 1 は、レベル 01 ~ 49 とレベル 77 のデータを定義するために使用されます。data-name-1
は、後続の記述項によって定義される記憶領域の名前です。次に示す例では、
「store-address」は「street」
から「zip-code」までの項目を参照します。
01
sample-record.
05 store-id.
10 store-number
10 store-region
05 store-manager
05 store-address.
10 street
10 city
10 state
10 zip-code
05 FILLER
PIC 999.
PIC X.
PIC X(35).
PIC
PIC
PIC
PIC
PIC
X(25).
X(15).
X(2).
9(5).
X(14).
FILLER ( キーワード ) は、項目を命名する必要がない場合にデータ名の代わりに使用されます。FILLER
項目は通常、エラー・メッセージなどのワーキング・ストレージ・レコードを作成するときに使用され
ます。エラー・メッセージでは、大部分のテキストが定数のグループでできているので、テキストのグ
ループは FILLER で区切ることができます。次に示す例では、FILLER は「first-record」の一部とする
以外はプログラム内で参照することができない記憶領域を定義しています。
01
first-record.
05 record-code
05 record-type
05 FILLER
05 division-code
PIC
PIC
PIC
PIC
99.
XX.
X(30).
999.
レベル 77 項目は、細分することはできません。レベル 77 項目は、レベル 01 ~ 49 項目と同様に、デー
タ名またはキーワード FILLER を続けて指定しなければなりません。例:
01
77
77
first-record.
05 record-code
05 record-type
temp-1
temp-2
PIC
PIC
PIC
PIC
99.
XX.
X(4).
X(3).
レベル 77 の項目の例は、第6章でさらに示します。
□ 書き方 2 は、レベル 66 項目を記述するために使用されます。レベル 66 項目は、1 つまたは連続する複
数の基本項目をリネームします。次の例では、グループ項目「card-codes」を「code」という新しい名
前にリネームしています。
05
66
card-codes.
10 store-code
PIC 9.
10 state-code
PIC 9(4).
code RENAMES card-codes.
□ 書き方 3 は、レベル 88 項目を記述するために使用されます。レベル 88 項目は、条件名の値を割り当て
ます。次の例では、「tax-code」に条件変数範囲の指定のある条件名「tax-range」を定義しています。
05
426750-001J
tax-code
88 tax-range
PIC 99.
VALUES ARE 01 THRU 20.
5-7
第 5 章 DATA DIVISION ( データ部 )
5.3.1 JUSTIFIED 句
JUSTIFIED 句は、受取り側データ項目内における標準以外の桁寄せを指定します。この句は、基本項目
のデータ記述にだけ書くことができます。この句は、数字データ項目に対して使用することはできません。
{ JUST
} RIGHT
{ JUSTIFIED }
JUSTIFIED 句を省略した場合は、標準の桁寄せの規則が適用されます。つまり、左基準で、必要な場合
に右端を切り詰めたり、右端に空白を補います。
受取り側データ項目に JUSTIFIED 句を指定すると、標準の桁寄せの規則は適用されません。送出し側
データ項目が受取り側データ項目に比べて大きい場合は、右基準で、送出し側データ項目の左端が切り詰
められます。また、送出し側データ項目が受取り側データ項目より小さい場合は、左端の余りに空白を補っ
て、右基準で送出し側データ項目を収めます。
右基準の桁寄せでは、送出し側データ項目の後続ブランクは取り除かれません。例えば、WORKING-
STORAGE SECTION に次のような項目が定義されている場合を想定します。
01 WS-FIELD-1
01 WS-FIELD-2
PIC X(12)
PIC X(14)
JUSTIFIED RIGHT.
さらに、SCREEN SECTION では次のようなフィールドが定義されています。
05 SCREEN-FIELD-1
PIC X(10)
USING WS-FIELD-1.
ユーザが、SCREEN-FIELD-1 に「ABCDEFGHIJ」を入力してから有効なファンクション・キーを押し、
ACCEPT ステートメントによって WS-FIELD-1 にデータを移動します。それから、MOVE ステートメン
トを使用して、WS-FIELD-1 から WS-FIELD-2 にデータを移動します。この一連の操作によって、上の 3
つのフィールドは次のようになります。
SCREEN-FIELD-1 = "ABCDEFGHIJ"
(10 バイト )
WS-FIELD-1
= "ABCDEFGHIJ " (12 バイト )
WS-FIELD-2
= " ABCDEFGHIJ " (14 バイト )
右基準の桁寄せおよび先行の空白のパディングは行われますが、入力フィールドの後続の空白は取り除
かれません。英数字入力のユーザ変換ルーチンで ACCEPT ステートメントを実行することによって、スク
リーン入力フィールドの後続空白を取り除くことができます。あるいは、後続の空白を取り除くためのロ
ジックをサーバ・プログラムに含めることができます。
備考: VALUE 句にてリテラルを指定された項目を初期設定する場合は、JUSTIFIED 句は無視されます。
5.3.2 OCCURS 句
OCCURS 句は、同じデータ構造が繰り返される場合、すなわちテーブル (table) を定義する場合に、それ
ぞれのデータ項目をいちいち定義する手間を省くために使用します。
OCCURS 句は固定長のテーブルでも、
可変長 ( 指定範囲内 ) のテーブルでも定義することができます。OCCURS 句 は、レベル 01 では記述する
ことができません。
5-8
426750-001J
第 5 章 DATA DIVISION ( データ部 )
書き方 1 ( 固定長テーブル )
OCCURS max [ TIMES ]
max
テーブル要素の数を表す整数。
書き方 2 ( 可変長テーブル )
OCCURS min TO max [ TIMES ] DEPENDING [ ON ] depend
min
テーブル要素の最小数を表す整数。整数はゼロ以上で max 以下の大きさとします。
max
テーブル要素の最大数を表す整数。
depend
テーブルの大きさを制御する整数データ項目。この
depend 項目の値を変えることで、テーブル
depend
内の要素の数を増減させることができます。テーブルの大きさを小さくすると、新しい
項目で指定した限度を超えるテーブル要素は失われてしまうため、次のステートメントで大きな
テーブルを作成しても、その失われたデータは新しいテーブルにおいて使用することはできません。
したがって、テーブルを大きくしたときは、テーブルを使用する前に新しいテーブル要素に値を割
り当てておかなければなりません。
次に、OCCURS 句の例を示します。
01 table-group.
02 activity-count
02 activity-table
05
activity-entry
PIC 99.
OCCURS 10 TO 20 TIMES
DEPENDING ON activity-count.
PIC 999.
それぞれのデータ項目にアクセスするには、そのテーブル項目を表すデータ名に添字を付けなくてはな
りません。添字なしでこのデータ名を使用できるのは、( 例えば、MOVE ステートメントで ) テーブル全
体を必要としている場合だけです。データ名がグループ項目の場合は、グループに属するいずれの項目も
オペランドとして使用するたびに添字を付けなくてはなりません。REDEFINES 句の対象として使用され
る従属データ名はオペランドと見なされないため、添字を付けることはできません。
OCCURS DEPENDING ON 句の指定のあるデータ記述項 は、そのデータ記述の範囲で、従属項目の記
述だけを続けることができます。言い換えれば、1 つのデータ記述内には可変長のテーブルを 1 つだけ指
定することができ、可変長テーブルに含まれるデータ項目は、そのデータ記述における最後のデータ項目
でなければなりません。
426750-001J
5-9
第 5 章 DATA DIVISION ( データ部 )
OCCURS 句で記述される項目に従属するデータ項目は、それ自体に OCCURS 句を含むことができます。
つまり、テーブルは、従属するテーブルを最大 3 レベルまでの入れ子にして構成することができます。こ
の場合、入れ子の親になる項目は固定長または可変長のいずれの書式の OCCURS 句でも構いませんが、子
になる項目は固定長書式の OCCURS 句でなければなりません。OCCURS DEPENDING 句を持つデータ記
述項は、いずれの書式の OCCURS 句を持つグループ項目に対しても従属させることはできません。
5.3.3 PICTURE 句
PICTURE 句は、基本項目の特性を定義します。
{ PIC
} [ IS ] character-string
{ PICTURE }
character-string
1 個以上の記号。基本項目のタイプを決定し、その項目に割り当てることのできる値に関する制約
を規定します。
character-string の長さは、最大 30 文字まで認められています。同じ PICTURE 記号を繰り返
す場合は、その PICTURE 記号の次に符号なし整数を括弧で囲んで繰り返しの回数を示すことができます。
例:
PIC 9(5) は、PIC 99999. と同じです。
指定できる文字列の長さは最大 30 文字ですが、この繰り返しの技法を使うことにより 30 文字以上の指
定をすることができます。
表 5-1 は、データ項目の記述に使用できる文字列記号を示しています。
5-10
426750-001J
第 5 章 DATA DIVISION ( データ部 )
表 5-1 データ記述項目の PICTURE ストリング記号
記号
機能
A
英字または空白文字のための 1 つの文字位置を表します。この記号は、データ項目の
大きさに数えます。
N
1 つの2バイト文字を表します。この記号は、ENVIRONMENT DIVISION の
OBJECT-COMPUTER 段落の CHARACTER-SET IS 句に KANJI-KATAKANA を指定
したプログラムにおいてのみ有効です。この記号は、データ項目の大きさに数えます。
P
ストアされた数字データに小数点がない場合の位取りを示します。この記号は、数字
項目の桁数 ( 最大 18 桁 ) に数えます。「P」は、PICTURE 句の文字列の左端または右
端に続けて書かなければなりません。「P」は、想定小数点を意味するので、「V」を使
用した場合は不要です。
「P」で記述されたデータ項目を他のデータ形式に内部変換する場合は、「P」の位置に
ゼロが入っているものと見なします。データ項目の大きさには、この桁数を含めます。
S
符号付き数字値を表します。この記号は、SIGN IS SEPARATE 句を使用した場合にだ
け、データ項目の大きさに数えます。
V
非整数数字項目の小数点位置を表します。この記号は、データ項目の大きさに数えま
せん。
X
ASCII 文字セットまたは 2 バイト文字セットのいずれの文字、あるいはその両方を含
めることのできる 1 つの文字位置を表します。この記号は、データ項目の大きさに数
えます。
9
数字のための 1 つの文字位置を表します。この記号は、データ項目の大きさに数えま
す。
項目の大きさ
データ項目の大きさは、PICTURE 記号によって決まります。A、X、および 9 は、それぞれ 1 つの文字
位置と数えます。S は、SIGN IS SEPARATE 句の対象であるときにだけ、1 文字として数えます。
データ項目を USAGE 句で DISPLAY と指定した場合は、そのデータ項目の大きさには PICTURE 記号
を含めますが、USAGE 句で COMPUTATIONAL 項目を指定した場合は、項目の大きさは、USAGE 句の
項で示すように、異なる方法で計算します。
データの種類
PICTURE 句は、4種類のデータ―英字、数字、英数字および2バイト文字―を記述することができま
す。PROCEDURE DIVISION のほとんどのステートメントは、このデータ項目の種類に影響されます。こ
れらのいくつかのステートメントは、オペランドとして特定のデータの種類を必要とします。また、ある
ステートメントは、データ項目の種類によって処理が異なります。
426750-001J
5-11
第 5 章 DATA DIVISION ( データ部 )
以下の説明では、PICTURE ストリング内の 9 および A の記号は、数字または英字/空白を入れる 1 つ
の文字位置を表すものとします。ただし、効率上の理由から、SCREEN COBOL コンパイラは常にこの制
限にしたがうものではありません。すなわち、これ以外の文字でも、対応する送出し側データ項目のグルー
プ位置にあれば、9 または A の位置に移動することができます。SCREEN COBOL はすべてのグループ項
目を英数字と見なすので、グループ項目の操作はすべて PICTURE ストリングを無視します。例えば、グ
ループ項目への移動処理により、この項目のどの位置にも任意の ASCII 文字を含めることができます。
英字データ (Alphabetic Data)
英字データ項目は、PICTURE ストリング内に A だけを指定して表すことができます。英字データ項目
の内容は、外部的には英字 26 文字と空白文字の組み合わせによって表現されます。
次に、英字データの例を示します。
05
05
05
package-code
dept-id
dept-code
PIC AAA.
PIC AA(6)AA.
PIC AA(2)AA.
数字データ (Numeric Data)
数字データ項目は、PICTURE ストリング内に 9、P、S、および V を指定して表すことができます。指
定できる桁数は、1 から 18 桁までです。数字データ項目の内容は、外部的には 0 から 9 の数字の組み合わ
せによって表現されます。
符号付項目の場合は、データがスクリーン項目へ移動するとき、または SIGN IS SEPARATE 句が指定
されるときに、正符号または負符号が含められます。これ以外の場合は、符号は、エンコードされる際に
数字 1 桁とされます。
次に、数字データの例を示します。
05
05
division-total
fraction-amount
PIC S9(10)V99.
PIC PP99.
英数字データ (Alphanumeric Data)
英数字データ項目は、PICTURE ストリング内に A、X、および 9 の組み合わせを指定して表すことがで
きます。ただし、このデータ項目はすべての文字位置に X が指定されているかのように取り扱われます。
英数字データ項目の長さは、1 ~ 32,000 バイトです。英数字データ項目には、ASCII 文字のどのような組
み合わせでも含めることができます。A だけ、または 9 だけで構成された PICTURE ストリングは、英数
字項目ではありません。
次に、英数字データの例を示します
10
10
stock-item-name
zone-id
PIC X(25).
PIC A(4)99.
2バイト・データ
2バイト・データだけで構成される 2 バイト・データ項目は、PICTURE ストリング内に N だけを指定
して表すことができます。
5-12
426750-001J
第 5 章 DATA DIVISION ( データ部 )
WORKING-STORAGE SECTION の PIC N フィールドに VALUE 句を使用して、JIS X 0208 情報変換用
符号系に含まれるシフト JIS 文字セットだけで構成されるデータを、引用符 ("") で囲んで指定することが
できます。
2バイト文字セットで記述したリテラルに関連したレベル 88 データ項目で、THRU/THROUGH 句を指
定することができます。これにより、THRU/THROUGH 句で指定されたすべての項目がバイト単位で比較
されます。THRU/THROUGH 句内の2バイト文字データは、バイト・ストリングとして扱われます。
次に、PICTURE ストリングで2バイト・データを指定する例を示します。
10
10
10
data-id
data-name-1
data-name-2
PIC N.
PIC NNNN.
PIC N(10).
5.3.4 REDEFINES 句
REDEFINES 句によって、ある記憶領域を別の用途のために記述し直す ( 再定義する ) ことができます。
この機能は、レコードの一部が定数で他の部分が変数というような異なるデータ記述が必要とされる入力
データの検査などで役立ちます。また、この機能は、レコードのある部分が一定で、他の部分が変化する
場合に便利です。
REDEFINES data-name-2
data-name-2
再定義されるデータ項目。
REDEFINES 句は、再定義しようとするデータ項目またはそのデータ項目に従属する最後の項目の直後
に指定しなければなりません。REDEFINES 句のレベル番号は、再定義しようとするデータ項目と同じで
なければなりません。
REDEFINES 句には、次の規則が適用されます。
□ レベル 66 およびレベル 88 データ項目は、再定義することはできません。
□ 再定義されるデータ項目には、OCCURS 句または REDEFINES 句があってはなりません。
□ 再定義される項目のデータ名は、添字を付けたり、修飾したりすることができません。
□ 元の定義または再定義のいずれにも、従属項目の OCCURS 句のためにその大きさが可変の項目を含め
ることはできません。
□ VALUE 句を含めることはできません。
□ レベル番号が 01 ではない場合は、再定義は再定義しようとするデータ項目の文字位置 ( バイト ) 以下
でなければなりません。
□ 再定義される項目は、OCCURS 句または REDEFINES 句を持つ項目に従属することができます。
□ REDEFINES 句には従属データ記述項を続けることができます。再定義は、再定義されているデータ名
と同じかまたはそれよりも小さいレベル番号が現れるまで有効です。あるいは、DATA DIVISION の現
在の節が終結するまで有効です。
426750-001J
5-13
第 5 章 DATA DIVISION ( データ部 )
□ REDEFINES 句によって、2バイト・データだけを記述できるように指定された PIC N フィールドを、
英数字データ用の PIC X フィールドとして再定義することができます。これにより、2バイト・データ
項目を英数字データ項目に転記することが可能になります。例:
WORKING-STORAGE SECTION.
:
01 WS-KANJI-ONLY-FIELD
01 WS-KANJI-TO-PIC-X-REDEF
PIC N(10)
REDEFINES WS-KANJI-ONLY
FIELD PIC X(20)
REDEFINES 句は、記憶領域を再定義するものであり、その領域に入れられるデータ項目を再定義する
ものではありません。同一の領域を何回も再定義することができますが、REDEFINES 句には、常にその
領域の元の定義で使用されたデータ名を指定しなければなりません。
次に、REDEFINES 句の例を示します。
WORKING-STORAGE SECTION.
01
01
record-in.
05 record-code
PIC 9.
05 record-detail
PIC X(30).
05 record-subtotal
PIC 9(3)V99.
record-total REDEFINES record-in.
05 total-1
PIC 9(5)V99.
05 total-2
PIC 9(5)V99.
05 total-3
PIC 9(5)V99.
05 total-4
PIC 9(5)V99.
05 total-5
PIC 9(6)V99.
05 total-5-sub REDEFINES total-5 PIC X(8).
5.3.5 RENAMES 句
RENAMES 句は、あるデータ記述に含まれる 1 つまたは一連の基本項目に新しいデータ名を割り当てま
す。RENAMES 句は、新たな記憶スペースの割り当てはしません。この句は、レベル 66 項目でだけ使用
することができます。
66 new-name RENAMES old-name [ { THROUGH } end-name ] .
[ { THRU
}
]
new-name
グループ項目または基本項目の新しい名前。
old-name
新しい名前を割り当てようとするグループ項目、基本項目、または一連の項目の最初の項目の名前。
end-name
新しい名前を割り当てようとする一連の項目の最後の項目の名前。
5-14
426750-001J
第 5 章 DATA DIVISION ( データ部 )
RENAMES 句は、単に既存のデータ項目名を変更するだけで、データ項目の記述を変更するものではあ
りません。したがって、その他の句を使用することはできません。1 つのデータ構造に対しては、複数の
RENAMES 句を書くことができます。この指定はどの順序で行っても構いませんが、構造内の最後のデー
タ記述項の直後に続けなければなりません。
THROUGH オプションを指定しない場合は、単に old-name が new-name に変更されます。また、
old-name がグループ項目の場合にだけ、new-name はグループ項目になります。
THROUGH オプションを指定した場合は、次の規則が適用されます。
□
old-name および end-name は、同一構造内のデータ領域でなければなりません。
□
old-name および end-name は、同一の名前にすることはできませんが、それらの名前は修飾す
ることができます。
□
old-name および end-name は、レベル番号 01、66、77、および 88 のデータ項目であってはな
りません。
□
old-name および end-name は、それらの定義内で OCCURS 句によって記述されたものであって
はなりません。また、OCCURS 句で記述された項目に従属するものであってはなりません。
□
end-name には、old-name で記述された領域より前の文字位置を占める項目を割り当ててはなり
ません。
□
end-name には、old-name に従属する項目を指定することはできません。
□ リネームされる領域内の項目には、OCCURS 句によって記述される項目を含めることはできません。
THROUGH オプションを指定すると、new-name はグループ項目となり、old-name と end-name
で設定された範囲内のすべての基本項目を含みます。このグループ項目の始めと終わりは、次のように定
義されます。
□
old-name が基本項目の場合は、新しいグループ項目は old-name で始まります。
□
old-name がグループ項目の場合は、新しいグループ項目は old-name の最初の基本項目で始ま
ります。
□
end-name が基本項目の場合は、新しいグループ項目は end-name で終わります。
□
end-name がグループ項目の場合は、新しいグループ項目は end-name の最後の基本項目で終わ
ります。
次に、RENAMES 句の例を示します。
05
05
05
66
426750-001J
card-codes.
10 store-code
PIC 9.
10 state-code
PIC 9(4).
account-number
PIC 9(6).
check-digit
PIC 9.
card-number RENAMES card-codes THRU check-digit.
5-15
第 5 章 DATA DIVISION ( データ部 )
5.3.6 SIGN 句
SIGN 句は、数字データ項目の演算符号の位置と表現形式を指定します。SIGN 句は、USAGE 句で
DISPLAY 項目と記述された項目で、PICTURE ストリングに S 記号の指定があるものに対してだけ、使用
することができます。
SIGN [ IS ] { LEADING } [ SEPARATE [ CHARACTER ] ]
{ TRAILING }
LEADING
項目の始めに符号があることを示します。
TRAILING
項目の終わりに符号があることを示します。
SEPARATE [ CHARACTER ]
符号が独立した文字となり、項目の大きさに数えられることを示します。正の場合は +、負の場合
は - が項目値の始めまたは終わりに入れられます。
この句を省略すると、符号は項目の大きさには含められません。LEADING、または TRAILING の
指定にしたがって、符号は項目の始めまたは終わりに入れられます。
次に、SIGN 句の例を示します。
05
WS-subtotal-value
PIC S9(02) SIGN IS TRAILING SEPARATE.
5.3.7 SYNCHRONIZED 句
SYNCHRONIZED ( 桁寄せ ) 句は、最も自然なコンピュータ記憶境界にしたがって基本項目を配置させ
ます。
{ SYNC
} [ RIGHT ]
{ SYNCHRONIZED } [ LEFT ]
RIGHT および LEFT
SCREEN COBOL では意味がありません。
VALUE 句は、SYNCHRONIZED 句の指定のある従属項目を持つグループ項目では指定することができ
ません。
ほ と ん ど の 場 合、コ ン パ イ ラ に よ っ て 自 動 的 に 提 供 さ れ る 割 り 付 け が 最 も 自 然 な の で、
SYNCHRONIZED 句を指定してもしなくても、結果は同じです。ただし、SYNCHRONIZED 句はいくつ
かの特別なケースで影響を及ぼします。データの割り付けに関する考慮事項は、次のとおりです。
□ SCREEN COBOL が暗黙の FILLER データを生成する場合があります。この場合、FILLER データがあ
ることを考慮しなくてなりません。
5-16
426750-001J
第 5 章 DATA DIVISION ( データ部 )
□ DISPLAY 項目は 1 つ以上の文字位置で構成され、1 文字位置が 1 バイト ( 8ビット ) でストアされま
す。バイトは本来の記憶境界ですので、SYNCHRONIZED 句を指定しても、DISPLAY 項目の割り付け
に変わりはありません。
□ COMPUTATIONAL 項目は、偶数バイト単位でストアされます。最も自然な記憶単位は、2バイトで
構成される 16 ビットのワードです。SCREEN COBOL コンパイラは、COMPUTATIONAL 項目を自動
的にワード境界にしたがって配置します。また、これは小さな COMPUTATIONAL 項目 (PICTURE ス
トリングの 9 の指定が 4 桁以下 ) でも本来の境界なので、SYNCHRONIZED 句を指定しても、影響あ
りません。
□ 大きな COMPUTATIONAL 項目 (PICTURE ストリングの 9 の指定が 5 桁以上 ) は、1 つまたは 2 つの
32 ビットの 2 倍長ワードでストアされます。この場合は、SYNCHRONIZED 句を指定すれば、2 倍長
ワード境界にしたがって配置されます。
□ WORKING-STORAGE SECTION および LINKAGE SECTION 内のレベル 01 とレベル 77 の項目は、
SCREEN COBOL コンパイラによってワード境界から始まるように自動的に配置されます。コンパイラ
は、これらの項目をバイト、ワード、2 倍長ワード境界で同時に始まるものとして取り扱います。した
がって、これらの項目は、本来の最も自然な記憶境界にしたがって割り付けられます。
□ ワードは2バイト境界で始まり、2倍長ワードは 4 バイト境界で始まります。以下のケースでは、自動
的にまたは SYNCHRONIZED 句の割り付けによって、暗黙の FILLER データが生成されます。
●
レコード内でワード単位で桁づめされるべき項目の先頭バイトが奇数文字位置となる場合は、コン
パイラは、この項目の前に 1 文字位置 (1 バイト ) 分の FILLER を挿入して前のワードを割り付け済
とします。
●
レコード内で 2 倍長ワード単位で桁づめされるべき項目の先頭バイトが 4 で割り切れない数の文字
位置となる場合は、コンパイラは、1、2、または 3 バイトの FILLER を挿入して前の 2 倍長ワード
を割り付け済とします。この場合、FILLER バイトはデータ項目の一部ではありません。
●
グループ項目に暗黙の FILLER バイトによって分離された 2 つの項目を含んでいる場合は、FILLER
バイトはグループ項目の一部です。ただし、グループ項目はいつでも最初の基本項目の最初の文字
位置から始まり、その項目を正しく桁づめするために生成された暗黙の FILLER バイトは無視され
ます。したがって、グループ項目の最初の文字位置が暗黙の FILLER になることはありません。
□ 割り付ける基本データ項目が OCCURS 句で記述されるか、OCCURS 句で記述されたグループ項目に従
属するか、または両方が適用される場合は、特別の配慮が必要です。このようなケースでは、データ項
目のすべてのオカレンスは同じように配置されます。
●
項目の最初のオカレンスは、必要な記憶領域にしたがって割り付けられます。( 基本項目を含んでい
るテーブルの最初のオカレンスが基本項目で始まる場合は、このテーブルの最初のオカレンスは基
本項目の最初の文字位置で始まるように定義されます。) 項目自体がテーブルの場合は、最初のオ
カレンスは適切な記憶境界 ( バイト、ワード、2 倍長ワード ) で終了し、以降のオカレンスは FILLER
バイトなしで続けられます。
426750-001J
5-17
第 5 章 DATA DIVISION ( データ部 )
●
割り付けられる項目 ( または、割り付けられる項目のテーブル ) が高位のテーブルに従属している場
合は、さらに調整が必要です。基本項目がワード割り付けされ、これを含んでいるグループ・オカ
レンスが奇数の文字位置で構成されている場合は、コンパイラは各グループ・オカレンスの後に 1
バイトの FILLER を挿入します。項目が2倍長ワード割り付けされ、これを含んでいるグループ・
オカレンスの大きさが 4 の倍数バイトでない場合は、コンパイラは各グループ・オカレンスの後に
1、2、または 3 バイトの FILLER を挿入します。すべてのケースで、挿入されるバイトはそれぞれ
のオカレンスの一部ではありません。ただし、テーブル全体を含むグループ項目には含まれます。
高位のテーブルごとに、前述の手順が繰り返されます。
次に、複数の OCCURS 句を使用した場合の例を示します。
01
master.
02 table-1 OCCURS 5 TIMES.
03 table-2 OCCURS 5 TIMES.
04 table-3 OCCURS 5 TIMES.
05 item-a
PIC 999 COMPUTATIONAL.
05 item-b
PIC X.
04 item-3
PIC X.
03 item-2
PIC X.
レコード「master」は、次のバイト数を占有しているように見えます。
(((2+1) * 5+1 ) * 5+1) * 5 = 405 bytes
しかし、実際には COMPUTATIONAL 項目のために、
((2+1+1) * 5+1+1) * 5+1+1) * 5 = 560 bytes
が必要になります。
暗黙の FILLER バイトを考慮しなければならない場合が、いくつかあります。暗黙の FILLER バイトは、
グループ項目のサイズを決定する場合はサイズに含まれます。したがって、データ項目が暗黙の FILLER
バイトを含む場合は、このデータ項目を配置するときに、この FILLER バイトの文字位置を考慮しなけれ
ばなりません。また、暗黙の FILLER バイトは、これを含むグループ項目が REDEFINES 句の対象になる
場合は、再定義される文字位置に数えられます。
(REDEFINES 句を使用した ) 文字位置の再定義によるデータ項目の配置は、前述の規則にしたがいます。
ただし、再定義により配置される最初のデータ項目をワードまたは 2 倍長ワードで割り当てる必要がある
場合は、再定義されるデータ項目は適切な境界上で始めなければなりません。このため、SCREEN COBOL
では、再定義される最初のデータ項目の前に暗黙の FILLER バイトを挿入する必要がある再定義は認めら
れません。その他の場所に挿入される FILLER バイトは有効で、再定義のサイズとして数えられます。
5-18
426750-001J
第 5 章 DATA DIVISION ( データ部 )
5.3.8 USAGE 句
USAGE 句は、データ項目がどのように Compaq NonStop システム内に記憶されるのかを定義します。こ
の定義により、データ項目を記憶するのに使用される文字位置の数が変わります。USAGE 句は、項目を
どのように使用するかを制限するものではありませんが、PROCEDURE DIVISION のある種のステートメ
ントには、そのオペランドとして決まった USAGE 指定を必要とするものがあります。
[ USAGE [ IS ] ] { COMP
}
{ COMPUTATIONAL }
{ DISPLAY
}
COMP または COMPUTATIONAL
計算用の数字データ項目を表します。
DISPLAY
一連の ASCII 文字として標準データ形式で記憶されるデータ項目を表します。省略した場合は、デ
フォルトとして DISPLAY が使用されます。
USAGE 句は、どのレベルの項目においても書くことができます。グループ・レベルで指定された USAGE
句はそのグループ内の各基本項目に適用されます。基本項目の用途は、これが属するグループの USAGE
句に合わせる必要があります。ただし、SCREEN COBOL では、グループ項目は常に英数字と見なされる
ので、グループ項目の USAGE 句がその基本項目の処理に適用されるとは限りません。
COMPUTATIONAL 項目は、計算に適した値を表すもので、数字でなければなりません。この項目の
PICTURE ストリングには、9、S、V、および P だけを使用することができます。表 5-2 に示すように、
COMPUTATIONAL 項目の大きさは PICTURE ストリング内の 9 の数に応じて、2 バイトから 8 バイトに
設定することができます。
表 5-2 COMPUTATIONAL 項目が必要とするバイト数
9 の数
データ項目の大きさ
1~4
2 バイト
5~9
4 バイト
10 ~ 18
8 バイト
グループ項目を COMPUTATIONAL と宣言すると、グループ内のすべての項目は COMPUTATIONAL
であると見なされます。グループ項目自体は、計算に使用することはできません。
DISPLAY 項目は、一連の ASCII 文字として標準データ形式で記憶される値を表すものです。この項目
の特性は、PICTURE ストリングで指定されます。
数字項目の PICTURE ストリングが S を含む場合は、その項目は演算符号付きになります。SIGN IS
SEPARATE 句が指定されていない場合は、演算符号は先頭または末尾の数字の一部として取り扱われま
す。したがって、その文字位置には、非数字の ASCII 文字が入ることになります。
426750-001J
5-19
第 5 章 DATA DIVISION ( データ部 )
5.3.9 VALUE 句
VALUE 句は、ワーキング・ストレージ項目の初期値またはレベル 88 条件名の値を指定します。
書き方 1 ( データの初期設定 )
VALUE [ IS ] literal
literal
データ項目に割り当てられる初期値。この値は表意定数 (figurative constant) にすることができます。
書き方 2 ( 条件名指定 )
88 condition-name , { VALUE [ IS ]
}
{ VALUES [ ARE ] }
{ value-1 [ { THROUGH } value-2 ] } , ...
{
[ { THRU
}
] }
condition-name
条件値の名前。
value-1
条件によってテストされる 1 つのリテラル値またはリテラル値範囲の始めの値。
value-2
条件によってテストされるリテラル値範囲の終わりの値。この値は、value-1 より大きくなけれ
ばなりません。
データの初期設定のための VALUE 句
VALUE 句の書き方 1 は、プログラムが起動された時点でワーキング・ストレージ項目に初期値を設定
するために使用します。VALUE 句は、指定の項目のデータ記述内の他の句またはその階層内の他の項目
のデータ記述と矛盾があってはなりません。次の規則が適用されます。
□ VALUE 句を省略すると、コンパイラは、WORKING-STORAGE SECTION 内で OCCURS 句の指定さ
れていない基本数字データ項目をゼロに初期設定します。
□ 項目が数字の場合、VALUE 句のすべてのリテラルは、数字で、かつ PICTURE ストリングで設定され
る範囲内になければなりません。ゼロでない桁の切り詰めは認められていません。符号付き数字リテラ
ルは、符号付き数字 PICTURE ストリングに対してだけ指定することができます。初期設定は、標準の
桁寄せの規則にしたがいます。
□ 項目が数字以外の場合、VALUE 句のすべてのリテラルは、非数字で、かつ PICTURE ストリングのサ
イズ以内でなければなりません。JUSTIFIED 句は、無視されます。
5-20
426750-001J
第 5 章 DATA DIVISION ( データ部 )
□ 以下の基準に適合するデータ記述項では、JUSTIFIED 句を指定することができません。
●
OCCURS または REDEFINES 句を含む記述項
●
OCCURS または REDEFINES 句を含む記述項に従属する記述項
●
従属項目の OCCURS 句のために項目の大きさが可変する記述項
□ VALUE 句がグループ・レベルでの初期設定のために使用される場合は、リテラルは表意定数か、また
は非数字リテラルでなければなりません。グループ領域には、そのグループ内の個々の基本項目や他の
グループ項目に関係なく、初期値が設定されます。そのため、この場合、グループ内の項目に JUSTIFIED
または USAGE IS COMPUTATIONAL 句を指定することはできません。また、VALUE 句はグループ
内の従属レベルで指定することはできません。
次に、データの初期設定のために使用する VALUE 句の例を示します。
WORKING-STORAGE SECTION.
01 main-heading.
05 FILLER
PIC
05 FILLER
PIC
05 FILLER
PIC
05 FILLER
PIC
:
01 counters.
05 no-of-reads
PIC
05 no-of-writes PIC
XX
X(8)
XX
X(6)
VALUE
VALUE
VALUE
VALUE
SPACES.
"DIVISION".
SPACES.
"REGION".
9(5)
9(5)
VALUE ZEROS.
VALUE ZEROS.
条件名指定のための VALUE 句
VALUE 句の書き方 2 は、条件名記述項で使用されます。条件名は、DATA DIVISION でレベル 88 デー
タ項目を使って定義されるデータ項目です。その項目の下に 88 が現れるのは、条件変数です。その条件変
数の中で、条件名に対する 1 つの値または値範囲を定義して、テストすることができます。条件変数の下
に書かれる各記述項には、条件名に対する 1 つの値または値範囲を指定する VALUE 句を持つ条件名を含
めます。
条件変数に対するすべての条件名記述項は、この変数の記述項の直後に続けなければなりません。条件
名は、FILLER として指定されていたとしても、以下の例外を除いて、いずれのデータ記述項とも関連付
けることができます。
□ 条件名は、レベル 66 または 77 項目に関連付けることはできません。
□ 条件名は、JUSTIFIED 句または USAGE IS COMPUTATIONAL 句の指定のあるグループ項目に関連付
けることはできません。
条件名記述項には、単一の値、複数の値、または値範囲を割り当てることができます。
426750-001J
5-21
第 5 章 DATA DIVISION ( データ部 )
次の例では、条件名に対してそれぞれ単一の値を割り当てています。
05
return-code
PIC 99.
88 end-of-file
88 error-on-read
88 permanent-error
88 error-on-write
VALUE
VALUE
VALUE
VALUE
01.
02.
03.
04.
}
}
}
}
ここで、return-code は条件変数であり、end-of-file、error-on-read、permanent-error、および error-on-write
は条件名です。
これらの条件名の 1 つを使ったステートメントは、例えば、次のようになります。
IF end-of-file,
PERFORM end-up-routine.
次の例では、条件名に対して値範囲を割り当てています。
05
tax-code
88 tax-range
PIC 99.
VALUES ARE 00, 03, 07 THROUGH 11.
次のステートメントでは、tax-code の値が 00、03、07、08、09、10、または 11 に該当するどうかを調
べて、tax-error-routine を実行しています。
IF NOT tax-range
PERFORM tax-error-routine.
5.4 スクリーン記述項
スクリーン記述項は、スクリーン・フォーマットの特性を宣言するもので、SCREEN COBOL プログラ
ムの SCREEN SECTION に指定されます。
スクリーンは、リテラル・フィールド、入力フィールド、出力フィールド、入出力フィールド、および
オーバーレイ領域の組み合わせで構成されます。これらの項目は、論理的に関係のあるグループにまとめ
ることができます。グループ宣言は、関連フィールドの参照を容易にしますが、必須ではありません。
スクリーンには、ベース・スクリーン (Base Screen) とオーバーレイ・スクリーン (overlay Screen) とい
う 2 種類のスクリーンがあります。
□ ベース・スクリーン―ベース・スクリーンは、それだけを独立して表示させることができます。ベー
ス・スクリーンには、オーバーレイ・スクリーンを表示するためのオーバーレイ領域を含めることがで
きます。
□ オーバーレイ・スクリーン―オーバーレイ・スクリーンは、ベース・スクリーンのオーバーレイ領域に
表示されます。これにより、例えば、固定した見出し等をベース・スクリーンとし、それに種々のオー
バーレイ・スクリーンを付けて、表示させることができます。
スクリーン記述項の構造は、データ記述項と類似しています。スクリーン記述項は一連の宣言文から成
り、各宣言文は階層を表すレベル番号で始まります。レベル番号が前の項目より大きい場合は、この項目
が前の項目に従属していることを示します。レベル 01 は、その段落で最高位のステートメントであること
を示します。従属レベルとして、02 から 49 までを使用することができます。
5-22
426750-001J
第 5 章 DATA DIVISION ( データ部 )
スクリーン記述項の基本形式は、次のとおりです。
SCREEN SECTION.
01 base-screen-name [ BASE ] [ SIZE clause ]
[ input-control-character clauses ]
[ field-characteristic clauses ] ... .
{ screen group } ...
{ screen field }
[ screen overlay area ]
[ 01 overlay-screen-name OVERLAY SIZE clause
[
[
[ field-characteristic clauses ] ... .
[
[
{ screen group } ...
[
{ screen field }
]
]
]
]
]
]
レベル 01 でスクリーン記述項は始まります。このレベルは、スクリーンの名前 ( この名前によって、プ
ログラム内でそのスクリーンが識別されます ) と大きさを定義し、このスクリーンがベース・スクリーン
か、またはオーバーレイ・スクリーンかを示します。中間レベルは、項目のグループを定義します。最高
位の番号のレベルがスクリーン・フィールドの特性を定義します。
スクリーン記述は、スクリーン名、スクリーン・オーバーレイ領域、スクリーン・グループ、およびス
クリーン・フィールドの記述で構成されます。これらの記述によって、スクリーンの属性が定義されます。
次に、スクリーン記述項の例を示します。
SCREEN SECTION.
01 ENTER-AMT BASE SIZE 12, 80.
05 FILLER
AT 1, 12 VALUE "ORDER DETAIL ENTRY".
05 FILLER
AT 2, 1
VALUE "CUSTOMER".
05 FILLER
AT 4, 1
VALUE "ITEM".
05 FILLER
AT 4, 10 VALUE "QUANTITY".
05 LINE1-HEADER
AT 5, 1
VALUE "MENU LIST".
05 OVER1 AREA
AT 6, 1
SIZE 10,80.
01 OVER1-SCREEN OVERLAY SIZE 10,80.
05 LINE1-OVERLAY AT 2, 10 VALUE
"1 DISPLAY PREVIOUS ORDER".
入力制御文字句は、会話モードの端末で使用することができます。この句は、ACCEPT ステートメント
の実行時に使用される入力制御文字を定義します。詳細については、この章で後述します。
スクリーン・フィールドの特性を定義するために種々のフィールド特性句を利用することができます。
詳細については、この章で後述します。
426750-001J
5-23
第 5 章 DATA DIVISION ( データ部 )
5.4.1 ベース・スクリーン
ベース・スクリーンは、端末上に最初に表示されるスクリーンで、各プログラム・ユニットに対応する
カレント・スクリーンを設定するのに使用されます。ベース・スクリーンのオーバーレイ領域に表示され
るオーバーレイ・スクリーンとは異なり、ベース・スクリーンはそれ自体単独で表示させることができます。
01 screen-name [ BASE ] [ SIZE lines , cols ]
[ field-characteristic-clause ] ...
screen-name
このベース・スクリーンに与えられる名前です。
SIZE lines, cols
スクリーンの大きさを示します。行数およびカラム数は、それぞれ 1 ~ 255 の範囲です。大きさは、
端末の物理的な画面の大きさを越えてはなりません。
何も指定しない場合は、デフォルトとして 24 行、80 カラムが使用されます。
field-characteristic-clause
このスクリーンのすべてのフィールドのデフォルトの特性を定義する 1 つ以上の句で構成されます。
個々のグループまたはフィールドに対して明文指定がない限り、このデフォルトのフィールド特性
が適用されます。指定できる句は、次のとおりです。
FILL
呼び名 (mnemonic-name)
UPSHIFT
USER CONVERSION
WHEN ABSENT
WHEN BLANK
WHEN FULL
5.4.2 スクリーン・オーバーレイ領域
スクリーン・オーバーレイ領域は、オーバーレイ・スクリーンが表示されるベース・スクリーン内の領
域を定義します。オーバーレイ・スクリーンをプログラムで使用する場合、スクリーン・オーバーレイ領
域をベース・スクリーン記述項の一部として指定しなければなりません。
level-num area-name AREA AT line, col SIZE lines, cols
level-num
階層を示す数字リテラルです。指定できる値は、2 ~ 49 の範囲です。従属記述項目を指定すること
はできません。
area-name
このスクリーン・オーバーレイ領域に与えられる名前です。
5-24
426750-001J
第 5 章 DATA DIVISION ( データ部 )
AREA AT line, col
この領域の左上端の位置を、ベース・スクリーンの相対行/カラム番号で示します。
SIZE lines, cols
この領域の大きさを、行数とカラム数で示します。この領域が、ベース・スクリーンの境界を越え
ないように、また他のフィールドと重複しないようにします。
T16-6510 端末では、cols の値は、ベース・スクリーンで宣言されたカラムの数と同じでなければ
なりません。
5.4.3 オーバーレイ・スクリーン
オーバーレイ・スクリーンは、ベース・スクリーンのオーバーレイ領域に表示されます。
01 screen-name
OVERLAY
SIZE lines, cols
[ field-characteristic-clause ] ...
screen-name
オーバーレイ・スクリーンに与えられる名前です。
SIZE lines, cols
オーバーレイ・スクリーンの大きさを示します。この大きさは、このオーバーレイ・スクリーンが
入るオーバーレイ領域の大きさ以下でなければなりません。T16-6510 端末では、幅はベース・スク
リーンと同じでなければなりません。
field-characteristic-clause
このスクリーンのすべてのフィールドのデフォルトの特性を定義します。個々のグループまたは
フィールドに対して明文指定がない限り、このデフォルトのフィールド特性が適用されます。指定
できる項目は、次のとおりです。
FILL
呼び名 (mnemonic-name)
UPSHIFT
USER CONVERSION
WHEN ABSENT
WHEN BLANK
WHEN FULL
426750-001J
5-25
第 5 章 DATA DIVISION ( データ部 )
5.4.4 スクリーン・グループ
スクリーン・グループは、ひとまとめにしたフィールドの組み合わせです。これにより、従属フィール
ドに対して総称参照を行い、また、従属フィールドに共通の特性を指定することができます。スクリーン・
グループには、さらに下位の従属グループを含めることができます。
level-num { group-name } [ [ AT ] line, column ]
{ FILLER
}
[ field-characteristic clause ] ...
{ screen-field } ...
{ screen-group }
level-num
階層を示す数字リテラルです。指定できる値は、2 ~ 48 の範囲です。
group-name
このスクリーン・グループに与えられる名前です。
FILLER
group-name の代わりとなる語句 ( キーワード ) です。
AT line, column
このグループのホーム位置をベース・スクリーン画面の相対行/カラム番号で示します。ベース・
スクリーン画面に含まれない行/カラム番号を指定することはできません。従属フィールドの位置
は、このホーム位置に対する相対位置として指定することができ、グループを容易に移動して指定
し直すことができます。
この指定を省略すると、このグループでは、グループ相対アドレッシングを行うことはできません。
field-characteristic clause
このグループに従属するすべてのフィールドのデフォルトの特性を定義します。個々のフィールド
に対して明文指定がない限り、このデフォルトのフィールド特性が適用されます。指定できる句は、
次のとおりです。
FILL
呼び名 (mnemonic-name)
UPSHIFT
USER CONVERSION
WHEN ABSENT
WHEN BLANK
WHEN FULL
5-26
426750-001J
第 5 章 DATA DIVISION ( データ部 )
5.4.5 スクリーン・フィールド
スクリーン・フィールドは、1 つの基本項目で構成されます。
level-num { field-name }
{ FILLER
}
[ field-characteristic-clause ] ... .
level-num
階層を示す数字リテラルです。指定できる値は、2 ~ 49 の範囲です。
field-name
このフィールドに与えられる名前です。
FILLER
field-name の代わりに使用する語句 ( キーワード ) です。FILLER は、リテラル・フィールド
の代わりに使用されます。
field-characteristic-clause
このフィールドの特性を定義します。指定できる句は、フィールドの種類によって異なります。
スクリーン・フィールドは、データ関連句の TO、FROM、および USING がどのように使用されている
かによって、4 種類に分類することができます。表 5-3 に、スクリーン・フィールドの種類とそれぞれで使
用できるフィールド特性句を示します。
備考:T16-6520、T16-6530、および T16-6540 についての留意事項: 連続する 2 つのリテラルの属性が同じ場
合、分離は必要ありません。それ以外の場合は、1 つ以上の空白で分離しなければなりません。
426750-001J
5-27
第 5 章 DATA DIVISION ( データ部 )
表 5-3 スクリーン・フィールドの種類と指定可能なフィールド特性句
5-28
フィールドの種類
識別句
必須句
オプション句
リテラル
TO、FROM、USING
句なし
AT
VALUE
呼び名
(mnemonic-name)
入力
TO 句のみ
AT または REDEFINES
と PICTURE
FILL
LENGTH
呼び名
MUST BE
OCCURS
RECEIVE
SHADOWED
UPSHIFT
USER CONVERSION
VALUE
WHEN ABSENT
WHEN BLANK
WHEN FULL
出力
FROM 句のみ
AT または REDEFINES
と PICTURE
ADVISORY
FILL
呼び名
OCCURS
SHADOWED
UPSHIFT
USER CONVERSION
VALUE
入出力
USING 句または
TO 句と FROM 句
AT または REDEFINES
と PICTURE
ADVISORY
FILL
LENGTH
呼び名
MUST BE
OCCURS
RECEIVE
SHADOWED
UPSHIFT
USER CONVERSION
VALUE
WHEN ABSENT
WHEN BLANK
WHEN FULL
426750-001J
第 5 章 DATA DIVISION ( データ部 )
5.4.6 入力制御文字句
入力制御文字句は、会話モードで動作する端末のために、ACCEPT ステートメントの実行時に次の機能
を行う文字を定義します。
□ スクリーン・フィールドまたは OCCURS 句で記述されたスクリーン・フィールドのグループを区切る。
□ ACCEPT ステートメントの処理を終了、または中断する。
□ ACCEPT ステートメントの処理をリスタートする。
入力制御文字は、会話モードで実行される端末でだけ使用されます。入力制御文字の構文は、次のとお
りです。
01 screen-name { [ BASE ] [ SIZE clause ] }
{ OVERLAY SIZE clause
}
[ ABORT-INPUT [ IS ] { "nonnumeric-literal"
[
{ numeric-literal
[
{
[, numeric-literal ]
[
{ OFF
}
}
}
}
]
]
]
]
[ END-OF-INPUT [ IS ] { "nonnumeric-literal"
[
{ numeric-literal
[
{
[, numeric-literal ]
[
{ OFF
}
}
}
}
]
]
]
]
[ FIELD-SEPARATOR [ IS ] { "nonnumeric-literal" } ]
[
{ numeric-literal
} ]
[
{ OFF
} ]
[ GROUP-SEPARATOR [ IS ] { "nonnumeric-literal" } ]
[
{ numeric-literal
} ]
[
{ OFF
} ]
[ RESTART-INPUT [ IS ] { "nonnumeric-literal"
}
[
{ numeric-literal
}
[
{
[, numeric-literal ] }
[
{ OFF
}
]
]
]
]
備考:2バイト・データを使用するプログラムであっても、入力制御文字句は必ず1バイト (ASCII) 文字だけで定
義しなければなりません。
次に、入力制御文字の例を示します。
SCREEN SECTION.
01 CUSTOMER-REC-SCREEN
426750-001J
BASE
SIZE 24, 80
FIELD-SEPARATOR
GROUP-SEPARATOR
ABORT-INPUT
END-OF-INPUT
RESTART-INPUT
","
OFF
"AI"
64, 64
"2" .
(1)
(2)
(3)
(4)
5-29
第 5 章 DATA DIVISION ( データ部 )
(1) デフォルトの FIELD-SEPARATOR 文字を定義します。
(2) キーボードから入力する ABORT-INPUT 文字を AI と定義します。
(3) キーボードから入力する END-OF-INPUT 文字を @@ と定義します。
(ASCII コードの 64 は、@ を表します。)
(4) キーボードから入力する RESTART-INPUT を 2 と定義します。
次に、入力制御文字句をアルファベット順に説明します。
ABORT-INPUT 句
ABORT-INPUT 句は、現在行われている ACCEPT ステートメントの実行を ABORT 状態で終了させる
文字を定義します。ABORT-INPUT 句は、会話モードで動作している端末だけが認識します。
ABORT-INPUT [ IS ] { "nonnumeric-literal"
}
{ numeric-literal [,numeric-literal ] }
{ OFF
}
"nonnumeric-literal"
引用符で囲まれた 1 つまたは 2 つの英数字です。
numeric-literal
0 ~ 255 の範囲の 1 つまたは 2 つの整数です。8 ビットの2進数を 10 進値で表したものです。
端末の代わりにプロセスが応答する場合は、SCREEN COBOL が 8 ビット・パターン (2 つの数字リ
テラルは 16 ビット・パターンに変換 ) を非キーボード文字として解釈します。
OFF
ABORT-INPUT が現在のスクリーンでは利用できないことを示します。
この句を省略すると、ABORT-INPUT 文字は @@ です。
ABORT-INPUT を使用する場合は、01 のスクリーン・レベルで指定しなければなりません。ABORTINPUT として定義した文字を別の入力制御文字として指定することはできません。
ABORT-INPUT 文字を ACCEPT ステートメントで入力した場合は、WORKING-STORAGE SECTION
内のいずれの値もこの ACCEPT ステートメントによって変更されません。
5-30
426750-001J
第 5 章 DATA DIVISION ( データ部 )
END-OF-INPUT 句
END-OF-INPUT 句は、現在の ACCEPT ステートメントのために最後の入力フィールドの終わりを示す
文字を定義します。END-OF-INPUT 句は、会話モードで動作している端末だけが認識します。
END-OF-INPUT [ IS ] { "nonnumeric-literal"
}
{ numeric-literal [, numeric-literal ] }
{ OFF
}
"nonnumeric-literal"
引用符で囲まれた1つまたは2つの英数字です。
numeric-literal
0 ~ 255 の範囲の 1 つまたは2つの整数です。8 ビットの 2 進数を 10 進値で表したものです。
端末の代わりにプロセスが応答する場合は、SCREEN COBOL が 8 ビット・パターン (2 つの数字リ
テラルは 16 ビット・パターンに変換 ) を非キーボード文字として解釈します。
OFF
END-OF-INPUT がカレント・スクリーンでは利用できないことを示します。
この句を省略すると、END-OF-INPUT 文字は // です。
END-OF-INPUT 句を使用する場合は、01 のスクリーン・レベルで指定しなければなりません。ENDOF-INPUT として定義した文字を別の入力制御文字として指定することはできません。
FIELD-SEPARATOR 句
FIELD-SEPARATOR 句は、ACCEPT ステートメント内でスクリーン・フィールドを区切る文字を定義
します。スクリーン・フィールド記述に OCCURS 句がある場合は、各オカレンスが 1 つのフィールドとし
て取り扱われます。FIELD-SEPARATOR 句は、会話モードで動作している端末だけが認識します。
FIELD-SEPARATOR [ IS ] { "nonnumeric-literal" }
{ numeric-literal
}
{ OFF
}
"nonnumeric-literal"
引用符で囲まれた1つの英数字です。
numeric-literal
0 ~ 255 の範囲の 1 つの整数です。8 ビットの 2 進数を 10 進値で表したものです。
端末の代わりにプロセスが応答する場合は、SCREEN COBOL が 8 ビット・パターン (2 つの数字リ
テラルは 16 ビット・パターンに変換 ) を非キーボード文字として解釈します。
426750-001J
5-31
第 5 章 DATA DIVISION ( データ部 )
OFF
FIELD-SEPARATOR がカレント・スクリーンでは利用できないことを示します。
この句を省略すると、FIELD-SEPARATOR 文字はコンマ (,) です。
FIELD-SEPARATOR 句を使用する場合は、01 のスクリーン・レベルで指定しなければなりません。
FIELD-SEPARATOR として定義した文字を別の入力制御文字として指定することはできません。次の例で
は、キーボードから入力することができる S が FIELD-SEPARATOR 文字として定義されています。
SCREEN SECTION.
01 EMP-RECORD-SCREEN
BASE
SIZE 24, 80
FIELD-SEPARATOR IS "S" .
GROUP-SEPARATOR 句
GROUP-SEPARATOR 句は、ACCEPT ステートメント内で次のものを示す文字を定義します。
□ OCCURS 句の最後の項目
□ フィールドの終わり (GROUP-SEPARATOR 文字で区切られたフィールドに複数のオカレンスがない場
合。)
GROUP-SEPARATOR 句は、会話モードで動作している端末だけが認識します。
GROUP-SEPARATOR [ IS ] { "nonnumeric-literal" }
{ numeric-literal
}
{ OFF
}
"nonnumeric-literal"
引用符で囲まれた1つの英数字です。
numeric-literal
0 ~ 255 の範囲の 1 つの整数です。8 ビットの 2 進数を 10 進値で表したものです。
端末の代わりにプロセスが応答する場合は、SCREEN COBOL が 8 ビット・パターンを非キーボー
ド文字として解釈します。
OFF
GROUP-SEPARATOR がカレント・スクリーンでは利用できないことを示します。
この句を省略すると、GROUP-SEPARATOR 文字はセミコロン (;) です。
GROUP-SEPARATOR 句を使用する場合は、01 のスクリーン・レベルで指定しなければなりません。
GROUP-SEPARATOR として定義した文字を別の入力制御文字として指定することはできません。
5-32
426750-001J
第 5 章 DATA DIVISION ( データ部 )
RESTART-INPUT 句
RESTART-INPUT 句は、現在の ACCEPT ステートメント内で入力処理をリスタートさせる文字を定義
します。RESTART-INPUT 句は、会話モードで動作している端末だけが認識します。
RESTART-INPUT [ IS ] { "nonnumeric-literal"
}
{ numeric-literal [,numeric-literal] }
{ OFF
}
"nonnumeric-literal"
引用符で囲まれた1つまたは2つの英数字です。
numeric-literal
0 ~ 255 の範囲の 1 つまたは 2 つの整数です。8 ビットの 2 進数を 10 進値で表したものです。
端末の代わりにプロセスが応答する場合は、SCREEN COBOL が 8 ビット・パターン (2 つの数字リ
テラルは 16 ビット・パターンに変換 ) を非キーボード文字として解釈します。
OFF
RESTART-INPUT がカレント・スクリーンでは利用できないことを示します。
この句を省略すると、RESTART-INPUT 文字は !! です。
RESTART-INPUT 句を使用する場合は、01 のスクリーン・レベルで指定しなければなりません。
RESTART-INPUT として定義した文字を別の入力制御文字として指定することはできません。現在の
ACCEPT ステートメントが RESTART-INPUT 文字によってリスタートされた場合は、この RESTARTINPUT 文字の前に入力されたデータによって WORKING-STORAGE SECTION 内の関連データ項目の値
が変更されることはありません。また、RESTART-INPUT 文字の後の同一行にデータを入力しても、その
データは無視されます。
5.4.7 フィールド特性句
フィールド特性句は、スクリーン・フィールドの種々の特性を指定します。次に、フィールド特性句の
形式をまとめ、その後で、各句をアルファベット順に説明します。
426750-001J
5-33
第 5 章 DATA DIVISION ( データ部 )
level-num { field-name } { [ AT ] line-spec, column-spec }
{ FILLER
} { REDEFINES field-name-2
}
[ ADVISORY ]
[ CONTROLLED [ BY ] data-name-1 ]
[ CONVERT BLANKS ]
[ FILL nonnumeric-literal ]
[ LENGTH [ MUST BE ]
]
[
]
[
{ literal-1 [ { THROUGH } literal-2 ] } ... ]
[
{
[ { THRU
}
] }
]
[ mnemonic-name ] ...
[ MUST [BE] { literal-1 [ { THROUGH } literal-2 ] } ... ]
[
{
[ { THRU
}
] }
]
[ OCCURS { lines-phrase [ columns-phrase ] } ]
[
{ columns-phrase [ lines-phrase ] } ]
[
]
[
[ DEPENDING [ ON ] data-name-1 ]
]
[ { PIC
} [ IS ] character-string ]
[ { PICTURE }
]
[ PROMPT screen-field ]
[ RECEIVE [ FROM ] { ALTERNATE
[
{ ALTERNATE OR TERMINAL
[
{ TERMINAL
[
{ TERMINAL OR ALTERNATE
}
}
}
}
]
]
]
]
[ SHADOWED [ BY ] data-name-1 ]
[ { TO
} data-name-1 ]
[ { FROM }
]
[ { USING }
]
[ UPSHIFT [ INPUT
[
[ OUTPUT
[
[ I-O
[
[ INPUT-OUTPUT
]
]
]
]
]
]
]
]
[ USER [ CONVERSION ] numeric-literal ]
[ VALUE nonnumeric-literal ]
( つづく )
5-34
426750-001J
第 5 章 DATA DIVISION ( データ部 )
[ WHEN { ABSENT } { CLEAR } ]
[
{ BLANK } { SKIP } ]
[ [ WHEN ] FULL { TAB } ]
[
{ LOCK } ]
ADVISORY 句
ADVISORY 句は、TCP によって生成される情報やエラー・メッセージのために使用される単一の出力
フィールドまたは入出力フィールドを指定します。
ADVISORY
ベース・スクリーンはすべて、ADVISORY フィールドを持ちます。このフィールドは英数字フィール
ドで、少なくとも 35 文字の長さにしなければなりません。このフィールドに表示されるエラー・メッセー
ジについては、付録 A に説明があります。
オーバーレイ・スクリーンには、ADVISORY フィールドを含めることはできません。
ADVISORY 句は、2 バイト・データだけが認められるフィールドと関係付けることはできません。
会話モードの端末では、必ず ADVISORY フィールドを 1 つ定義しなければなりません。定義していな
い場合、標準の ADVISORY メッセージはその端末に表示されません。
AT 句
AT 句は、スクリーン・フィールドの位置を指定します。
AT line-spec, column-spec
line-spec
フィールドが開始される行を指定します。
column-spec
フィールドが開始されるカラムを指定します。
line-spec および column-spec は、次の形式で記述することができます。
numeric-literal
スクリーンの始めからの相対位置として行とカラムを指定します。
* [ { + | - } numeric-literal ]
カレント位置からの相対位置で表します。カレント位置は、行番号 1 /カラム番号 1 で始まります。
1 つのフィールドが宣言されると、そのフィールドの次の最初に利用できる位置に進みます。
426750-001J
5-35
第 5 章 DATA DIVISION ( データ部 )
@ [ { + | - } numeric-literal ]
このフィールド宣言を含むグループのホーム位置からの相対位置で表します。グループのホーム位
置は、このフィールドの最初のデータ文字であり、このグループを定義する際の AT 句で指定され
ます。
各スクリーン・フィールド宣言には、少なくとも、AT 句または REDEFINES 句のいずれかを含めなけ
ればなりません。スクリーン・フィールド宣言に両方の句を指定した場合は、両方とも全く同一の位置を
参照するようにしなければなりません。
CONTROLLED 句
CONTROLLED 句は、スクリーン・フィールドの表示属性のラン・タイム制御をサポートすることが可
能な構造を表す、WORKING-STORAGE SECTIONまたはLINKAGE SECTIONのデータ項目を指定します。
CONTROLLED 句、DYNAMIC 参照子、および SHADOWED 句を適切に組み合わせて使用すれば、
DISPLAY BASE と DISPLAY OVERLAY、または TURN と DISPLAY のオペレーションを 1 つのオペレー
ションに結合することができます。
CONTROLLED [ BY ]
data-name-1
data-name-1
現在定義されているすべての Pathway スクリーン・フィールド属性をサポートすることができる、
グループ・データ項目ストラクチャの名前です。
制御ストラクチャでのデータ項目の指定
特定の属性定義のための制御ストラクチャは、レイアウトおよびデータ・タイプにしたがわなければな
りません。そうでない場合は、コンパイル時エラーが発生します。
属性制御要素 (attrib-TOKEN) は、属性一意名 (attrib-ID) と属性の値 (attrib-VALUE) で構成される 1 つの
トークンです。制御ストラクチャ内にある attrib-TOKEN 項目の数は、MAX-TOKEN-PAIRS によって定義
される最大値の範囲で、その制御ストラクチャの TOKEN-COUNT データ項目を介して制御されます ( な
お、MAX-TOKEN-PAIRS の最大値は 15 です )。スクリーン・フィールドの属性を同じに変更することを
サポートするためには ( 例えば、TURN オペレーションで )、適切な数の attrib-TOKEN 項目を定義しなけ
ればなりません。値は、次の表で定義されます。
5-36
426750-001J
第 5 章 DATA DIVISION ( データ部 )
データ項目
attrib-ID の値
特殊な値
フィールド属性
1 ~ 14、次のとおり。
-1 = フィールド制御停止、IGNORE
1 = 高輝度
2 = 非表示
3 = Mdton
4 = 数字シフト
5 = 保護
6 = 明滅
7 = 反転
8 = 下線
9 = ベル
10 = トップライン
11 = レフトライン
12 = ライトライン
13 = ボトムライン
14 = ボックスフィールド
0 = フィールド制御稼動、属性 OFF
カラー属性
(COLOR-ID)
15 = カラー
0 ~ 7、次のとおり。
フィールド属性
16 = SOSI-DISABLED
1 = フィールド制御稼動、属性 ON
0 = カラー・デフォルト
1=青
2=赤
3 = ピンク
4=緑
5 = 青緑
6=黄
7 = 無色
0 = 1 バイト文字と 2 バイト文字の両方を
入力できる
1 = 2 バイト文字だけを入力できる
備考: CHARACTER-SET が KANJI-KATAKANA に指定されている場合は、PIC A または PIC 9 フィールドには、
SOSI は認められません。
制御ストラクチャの使用法
スクリーン・フィールドで CONTROLLED 句を指定すると、そのスクリーン・フィールド自体が
WORKING-STORAGE または LINKAGE SECTION データ項目 (data-name-1) と関連付けられ、この
データ項目によって実行時制御がサポートされ、スクリーン・フィールドの表示属性が定義されます。関
連付けられた制御ストラクチャは、DISPLAY BASE DYNAMIC、DISPLAY OVERLAY DYNAMIC、およ
び TURN DYNAMIC OPERATIONS 句が呼び出されたときにだけ効力を発生します。表 5-4 は、これらの
オペレーションの際にスクリーン・フィールド属性のフォーメーションでの CONTROLLED 句の機能を示
しています。
426750-001J
5-37
第 5 章 DATA DIVISION ( データ部 )
表 5-4 スクリーン・フィールド表示属性での CONTROLLED 句の機能
TURN、DISPLAY BASE、および
DISPLAY OVERLAY オペレーションが
スクリーン・フィールド表示属性を変更するタイミング
スクリーン・フィールド制御
DYNAMIC 参照子がないとき
DYNAMIC 参照子があるとき
フィールド制御なし
コンパイル時
コンパイル時
フィールド制御あり: 非アクティブ、値 = -1
コンパイル時
コンパイル時
フィールド制御あり: アクティブ、値 = 0 (OFF)
コンパイル時
実行時
フィールド制御あり: アクティブ、値 = 1 (ON)
コンパイル時
実行時
備考:実行時に不正な構造の data-name-1 が見つかると、エラー 3072 (RUN-TIME DYNAMIC ATTRIBUTE
SETTING INVALID) が返されます。コンパイラは、構文エラー、宣言されていない一意名、および WORKINGSTORAGE SECTION に data-name-1 があるかどうかだけを検知します。このエラーは、IBM 3270 端
末で BLINK、REVERSE、UNDERLINE 属性を 2 つ以上組み合わせて指定したときにだけ発生します。
備考: 65XX 端末では、BRIGHT と BLINK を指定されたフィールドは明滅だけになり、REVERSE と BRIGHT を
指定されたフィールドは反転だけになります。また、HIDDEN と BRIGHT を指定されたフィールドは非表
示になり、HIDDEN と BLINK を指定されたフィールドも非表示になります。
制御ストラクチャはワーキング・ストレージ・データ項目であるため、あるスクリーン・フィールドの
制御ストラクチャを他のスクリーン・フィールドで共用することに、何も制約はありません。
OCCURS 句の機能
CONTROLLED 句を指定したスクリーン・フィールドに OCCURS 句があるときは、data-name-1
ストラクチャのオカレンスの最大数は WORKING-STORAGE SECTION で定義した数と同じでなければな
りません。
次に示す制御ストラクチャは、ワーキング・ストレージ・グループ・データ項目 (data-name-1 ) に
必要な最小限の情報を提供します。
01 DATA-NAME-1.
05 TOKEN-COUNT
05 attrib-TOKEN.
10 attrib-ID
10 attrib-VALUE
77
77
77
77
77
5-38
BRIGHT-ID
HIDDEN-ID
MDTON-ID
NUMERIC-SHIFT-ID
PROTECTED-ID
PIC S99
COMP.
PIC S99
PIC S99
COMP.
COMP.
PIC
PIC
PIC
PIC
PIC
S99,
S99,
S99,
S99,
S99,
VALUE
VALUE
VALUE
VALUE
VALUE
1.
2.
3.
4.
5.
426750-001J
第 5 章 DATA DIVISION ( データ部 )
77
77
77
77
77
77
77
77
77
77
BLINK-ID
REVERSE-ID
UNDERLINE-ID
BELL-ID
TOPLINE-ID
LEFTLINE-ID
RIGHTLINE-ID
BOTTOMLINE-ID
BOXFIELD-ID
COLOR-ID
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
77 MAX-TOKEN-PAIRS
PIC S99, VALUE
15.
77
77
77
77
77
77
77
77
77
77
77
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
-1.
0.
1.
0.
1.
2.
3.
4.
5.
6.
7.
ATTRIB-IGNORE
ATTRIB-OFF
ATTRIB-ON
COLOR-DEFAULT
COLOR-BLUE
COLOR-RED
COLOR-PINK
COLOR-GREEN
COLOR-TURQUOISE
COLOR-YELLOW
COLOR-NEUTRAL
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
S99,
S99,
S99,
S99,
S99,
S99,
S99,
S99,
S99,
S99,
S99,
S99,
S99,
S99,
S99,
S99,
S99,
S99,
S99,
S99,
S99,
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
次に示すストラクチャの例は、スクリーン・フィールドの BLINK および REVERSE 属性の設定を制御
します。このストラクチャは、関連付けられたスクリーン・フィールドを反転の明滅表示にします。
01 CONTROL-ITEM-1.
05 TOKEN-COUNT
05 ATTRIB-TOKEN-BLINK.
10 ATTRIB-ID
10 ATTRIB-VALUE
05 ATTRIB-TOKEN-REVERSE.
10 ATTRIB-ID
10 ATTRIB-VALUE
PIC S99
COMP, VALUE 2.
PIC S99
PIC S99
COMP, VALUE 6.
COMP, VALUE 1.
PIC S99
PIC S99
COMP, VALUE 7.
COMP, VALUE 1.
次に示すストラクチャの例は、スクリーン・フィールドの COLOR および REVERSE 属性の設定を制御
します。このストラクチャは、関連付けられたスクリーン・フィールドを反転の赤色表示にします。
01 CONTROL-ITEM-2.
05 TOKEN-COUNT
05 ATTRIB-TOKEN-COLOR.
10 ATTRIB-ID
10 ATTRIB-VALUE
05 ATTRIB-TOKEN-REVERSE.
10 ATTRIB-ID
10 ATTRIB-VALUE
426750-001J
PIC S99
COMP, VALUE 2.
PIC S99
PIC S99
COMP, VALUE 15.
COMP, VALUE 2.
PIC S99
PIC S99
COMP, VALUE 7.
COMP, VALUE 1.
5-39
第 5 章 DATA DIVISION ( データ部 )
CONVERT BLANKS 句
CONVERT BLANKS 句を指定すると、空白または FILL 文字が入力されたときに USER CONVERSION
句を呼び出すことができます。
CONVERT BLANKS
備考: Tab キーを押してフィールドを飛び越すと、MDT (modified data tag) は設定されません ( つまり、オフにな
ります )。そのようなときは、WHEN ABSENT CLEAR 句と共に CONVERT BLANKS 句を使用すれば、
フィールドを強制的に空白にすることができます。こうしておけば、USER CONVERSION 句を呼び出すこ
とができます。
次の例では、空白または FILL 文字以外のデータが入力されたときに FIELD1 の変換プロシージャが呼
び出されます。また、データ、空白、または FILL 文字が入力されたときには、FIELD2 の変換プロシー
ジャが呼び出されます。さらに、データ、空白、または FILL 文字が入力されるか、そのフィールドがス
キップされると、FIELD3 の変換プロシージャが呼び出されます。
SCREEN SECTION
01 MENU1
05 FIELD1
PIC X(20)
AT 4, 45
TO WS-1
USER CONVERSION 1.
05
FIELD2
PIC X(20)
AT 5, 45
TO WS-2
CONVERT BLANKS
USER CONVERSION 1.
05
FIELD3
PIC X(20)
AT 6, 45
TO WS-3
WHEN ABSENT CLEAR
CONVERT BLANKS
USER CONVERSION 1.
FILL 句
FILL 句は、フィールドの充填文字 (FILL 文字 ) を指定します。このフィールドへの出力が指定のフィー
ルド長よりも短い場合に、このフィールドの右側に FILL 文字が詰め込まれます。
FILL nonnumeric-literal
nonnumeric-literal
充填文字です。2 バイト・データだけが許されるフィールド (PIC N) で FILL 句を使用するときは、
FILL 文字も 2 バイト文字でなければなりません。PIC X または PIC A フィールドで FILL 句を使う
ときは、FILL 文字は有効な 1 バイト (ASCII) 文字でなければなりません。
5-40
426750-001J
第 5 章 DATA DIVISION ( データ部 )
FILL 句を省略すると、デフォルトの FILL 文字として空白が使用されます。ただし、IBM 3270 端
末では、デフォルトの充填文字は NULL となります。IBM 3270 端末では、データの長さがフィー
ルド長よりも短い場合も、NULL 文字が充填されます。
FILL 句によって末尾に付けられた FILL 文字は、入力のエラー・チェックおよびデータ変換の前に入力
ストリングから取り除かれます。TO 句が指定された数字フィールドの場合は、先頭と末尾の FILL 文字は
入力を処理する前に取り除かれます。ただし、フィールド内に埋め込まれた FILL 文字は取り除かれません。
1 つのフィールドで FILL 句と OCCURS 句の両方が使用されると、DEPENDING ON 句での dataname-1 の設定とは無関係に、出力時にそのフィールドのすべてのオカレンスに FILL 句が適用されます。
LENGTH 句
LENGTH 句は、スクリーン入力フィールドで受け入れることのできる入力文字の数を指定します。入力
した文字の数は、データ変換前に、FILL 文字が取り除かれてから決定されます。
LENGTH [ MUST BE ] {literal-1[ { THROUGH }literal-2 ] }, ...
{
[ { THRU
}
] }
literal-1 および literal-2
0 からフィールドの大きさまでの整数値。literal-2 を指定するときは、literal-1 より大
きい値を指定しなければなりません。
コンパイラが認める最大値は 255 です。
LENGTH 句を省略すると、PICTURE 指定の制限内であれば、文字は何字でも入力することができ
ます。
LENGTH 句を 2 バイト・フィールドで使うときは、LENGTH 句に指定する値は、オペレータが入力す
べきタイプの文字の数を示します。例:
LENGTH MUST BE 6
は、次のいずれかの意味を持っています。
□ PIC X(10) フィールドに 6 個の表示可能な 1 バイト (ASCII) 文字が必要。
□ PIC A(50) フィールドに 6 個の 1 バイト (ASCII) 文字が必要。
□ PIC N(30) フィールドに 6 個の 2 バイト文字 ( 合計 12 バイト ) が必要。
混合データ・フィールドを使用するときは、LENGTH MUST BE 句にはオペレータが入力すべきデータ
のバイト長を絶対数で指定します。例えば、PIC A(10)N(5)X(5) フィールドと共に LENGTH MUST BE 6
句が指定されていれば、オペレータは 6 個の英字を入力しなければなりません。この場合、例えば LENGTH
MUST BE 11 句を指定することは無意味です。最初の 10 バイトに 10 の英字を入力することができても、
11 番目の 1 バイトには、2 バイト文字の片側だけを入力することになるからです。
426750-001J
5-41
第 5 章 DATA DIVISION ( データ部 )
次に、LENGTH 句の例を 2 つ示します。最初の例では、FLD1 は任意入力のフィールド ( 長さがゼロで
も可 ) であり、入力する場合は 5 文字にしなければならないことを示しています。また、2 番目の例では、
FLD2 は必須入力のフィールドであり、入力は 1 ~ 5 文字を入力できることを示しています。
04
04
FLD1
FLD2
AT 1, 1
AT 2, 1
TO X
TO Y
PIC A9999
PIC ZZZZ9
LENGTH
LENGTH
0, 5.
1 THRU 5.
フィールドが任意入力になっている場合で、そのフィールドに文字を何も入力しないときは、そのフィー
ルドに関連付けられたデータ項目の値は、WHEN ABSENT/BLANK フィールド特性句にしたがって、
ACCEPT ステートメントによって変更されます。
呼び名 (mnemonic-name) 句
呼び名句を使用すると、スクリーン・フィールドに対して表示属性を指定することができます。呼び名
は、ENVIRONMENT DIVISION の SPECIAL-NAMES 段落に宣言することによって、フィールドの表示属
性と関連付けられます。
mnemonic-name
表示属性を指定しなかった場合は、デフォルト値による表示属性によってこのフィールドが最初に表示
されるときの表示属性が決まります。表示属性は、RESET ステートメントによってスクリーン定義で宣言
した状態に戻すことができます。これについては、
「第 6 章 PROCEDURE DIVISION」に説明があります。
PROTECT 属性のデフォルト値は、スクリーン・フィールドの種類によって異なります。入力または入
出力フィールドの PROTECT 属性のデフォルト値は、UNPROTECTED です。出力フィールドのデフォル
ト値は、PROTECTED です。
mnemonic-name は、表 4-1 および表 4-2 に示す表示属性システム固有名と関連付けることができま
す。
MUST BE 句
MUST BE 句は、入力スクリーン・フィールドの値として受け入れることができる値を指定します。
MUST [ BE ] { literal-1 [ { THROUGH } literal-2 ] } , ...
{
[ { THRU
}
] }
literal-1 および literal-2
数字項目には数字リテラル、英数字項目には非数字リテラルを指定します。
ALL 以外であれば、任意の表意定数を指定することができます。
MUST BE 句で使用されるリテラルは、スクリーン・フィールドとそのスクリーン・フィールドに関連
付けられたデータ項目で一致していなければなりません。一致していないと、エラーが報告されます。例
えば、スクリーン・フィールドが英数字データを受ける場合は、そのデータは非数字 PICTURE 句で定義
された項目に入れる必要があります。数字項目は、数字として比較されます。これに対して、英数字項目
は、ASCII 文字セットにしたがって、左から右に比較されます。例えば、PICTURE が数字の場合は、入力
文字「9」は「10」より小さくなり、PICTURE が非数字の場合は、入力文字「9」は「10」より大きくな
ります ( 最初に「9」と「1」が比較されます )。
5-42
426750-001J
第 5 章 DATA DIVISION ( データ部 )
MUST BE 句を処理するとき、数字リテラルは、関連付けられたデータ項目のために定義した PICTURE
句に合うように桁合わせされます。例えば、SCREEN SECTION でデータ項目が PICTURE 999.99 および
MUST BE 句が MUST BE 100 と定義されていると、MUST BE 句は桁合わせされてそのデータ項目には
100.00 として記憶されます。MUST BE 句では、特に希望がなければ、小数部の桁数を指定する必要はあ
りません。
MUST BE 句を指定しただけでは、スクリーン・フィールドは必須フィールドになりません。必須フィー
ルドにするには、LENGTH 句、MUST BE 句、および MDTON 句を次のように指定する必要があります。
□ LENGTH 句―1 以上の数を指定します。(LENGTH 句が指定されていないと、TCP は、MUST BE 句の
有無をチェックしません )。
□ MUST BE 句―スクリーン・フィールドが存在する場合、入力値として認めることのできる値を指定し
ます。
□ MDTON 属性―MDTON (Modified Data Tag On) 属性は、フィールド値が変更されない場合でも、デー
タの妥当性検証が行われることを指定します。
THROUGH/THRU 句は、2 バイト文字セットで記述したリテラルに関連付けられたレベル 88 データ項
目と共に指定することができます。このとき、THROUGH/THRU 句で指定したすべての項目がバイト単位
で比較されます。THROUGH/THRU 句内の 2 バイト文字セット・データは、バイト・ストリングとして扱
われます。
OCCURS 句
OCCURS 句は、スクリーン・フィールドの反復を指定します。この句により、テーブル構造のカラムと
行を定義することができます。OCCURS 句で指定したスクリーン・フィールドの各オカレンスの定義内容
は、位置を除いて同一です。これらのオカレンスは、OCCURS 句を持つワーキング・ストレージ・データ
項目の OCCURS 句に関連付けられています。
OCCURS { lines-phrase [ columns-phrase ] }
{ columns-phrase [ lines-phrase ] }
[ DEPENDING [ ON ] data-name-1 ]
columns-phrase の書き方
IN literal-1 COLUMNS { OFFSET
} { literal-k } ,...
{ SKIPPING }
lines-phrase の書き方
ON literal-2 LINES [ SKIPPING literal-3 ]
IN...COLUMNS, ON...LINES
フィールド反復 ( オカレンス ) 回数、各フィールド・オカレンスの位置、およびフィールド・オカ
レンスの並べ方を示します。
426750-001J
5-43
第 5 章 DATA DIVISION ( データ部 )
literal-1
1行でのフィールド反復回数を指定する数字リテラルです。
literal-k
水平方向のフィールド・オカレンス間の空白を指定する数字リテラルです。
OFFSET を指定した場合は、literal-k は、フィールド・オカレンスの最初のカラム (literal1) と次のフィールド・オカレンスの最初のカラム (literal-1 +1) との間の空白の数を指定し
ます。
SKIPPING を指定した場合は、literal-k は、フィールド・オカレンスの最初のカラム (column
k) と次のフィールド・オカレンスの最初のカラム (column k+1) との間の空白の数を示します。
literal-k は、(literal-1) -1 個まで複数個指定することができます。オカレンスの数よ
りも literal-k の数が少ない場合は、最後の literal-k が繰り返し使用されます。最後の
リテラルの後には、空白は必要ありません。
literal-2
オカレンスが何行にわたるかを指定する数字リテラルです。
literal-3
フィールド・オカレンスを含む各行の間に何行行空けするかを指定する数字リテラルです。
DEPENDING
オカレンスの数が可変であることを示します。
data-name-1
現在のオカレンス数を定義する基本数字項目です。添字付きの名前は、使用できません。この項目
は、WORKING-STORAGE SECTION または LINKAGE SECTION のいずれかに定義されていなけ
ればなりません。この項目は入力時 (ACCEPT ステートメントの実行時 ) に設定され、出力時
(DISPLAY ステートメントの実行時 ) に、出力される値の数を決めるために使用されます。1 つの
フィールドで FILL 句と OCCURS 句の両方が使用されると、DEPENDING ON 句での data-name1 の設定とは無関係に、出力時にそのフィールドのすべてのオカレンスに FILL 句が適用されます。
OCCURS 句には、次の規則が適用されます。
□ IN...COLUMNS 指定 が省略された場合は、各行当たり 1 つのオカレンスとなります。
□ IN...COLUMNS 指定と ON...LINES 指定の順番によって、オカレンス番号の割り当て順序は、次のよう
に変わります。
5-44
●
ON...LINES を先に指定した場合は、オカレンスは、縦方向に番号が順番に付けられます。
●
IN...COLUMNS を先に指定した場合は、オカレンスは、横方向に番号が順番に付けられます。
426750-001J
第 5 章 DATA DIVISION ( データ部 )
□ OCCURS 句を記述したスクリーン・フィールドが、TO、FROM、または USING 句によってデータ項
目に関連付けられる場合は、最大のオカレンス数は、関連付けられているデータ項目の OCCURS 句と
同じでなければなりません。次の例では、スクリーン・フィールドがワーキング・ストレージ・データ
項目に関連付けられています。
WORKING-STORAGE SECTION.
01 GAME-SCHE-REC.
:
05 TABLE-A
PIC X(8) OCCURS 4 TIMES.
:
SCREEN SECTION.
:
05 FIELD-A
AT 6, 10 PIC X(8) USING TABLE-A
OCCURS IN 4 COLUMNS
SKIPPING 1.
□ TO、FROM、または USING 句で指定されたデータ項目が、従属項目を持ち、複数の OCCURS 句を含
んでいる場合は、各 OCCURS 句の最大のオカレンス数は、対応するスクリーン・フィールド記述で指
定した最大のオカレンス数と一致しなければなりません。
□ 1 つのスクリーン記述に、可変長のテーブルをいくつでも指定することができます。(WORKING-
STORAGE SECTION や LINKAGE SECTION に適用される、各ストラクチャごとに1つという制限は、
適用されません。)
□ OCCURS 句は、スクリーン・グループを定義することはできませんが、スクリーン・グループ内のス
クリーン・フィールドであれば定義することができます。次に、スクリーン・グループ内のスクリー
ン・フィールドを定義した OCCURS 句の例を示します。
SCREEN SECTION.
:
03 DATA-OUT.
05 JOB-ENTRY.
07 JOB-NR
07
JOB-STATE
AT 6,16 PIC Z(4)
FROM JOB-NR OF SCREEN-TEMP
OCCURS ON 10 LINES
SKIPPING 1.
AT 6,22 PIC X(5)
FROM JOB-STATE OF SCREEN-TEMP
OCCURS ON 10 LINES
SKIPPING 1.
□ OCCURS 句を記述したスクリーン・フィールドが、ACCEPT ステートメントでスクリーン一意名の 1
つとして使用されている場合は、添字なしで参照しなければなりません。他のステートメントでスク
リーン一意名を使用している場合は、OCCURS 句を記述したスクリーン・フィールドへの参照には、
添字があってもなくても構いません。添字なしで参照した場合は、テーブルのすべてのオカレンスを参
照します。添字を付けて参照した場合は、添字値によって選ばれたオカレンスだけを参照します。
□ DEPENDING 指定のあるスクリーン・フィールドが ACCEPT ステートメントで参照される場合は、TCP
が行う入力処理の一環として、テーブルの大きさ ( つまり、data-name-1 に記憶される値 ) が決め
られます。このフィールドのオカレンスはすべて調べられ、TCP は最後に入力されたオカレンスのオ
カレンス番号に data-name-1 を設定します。このフィールドが必須のフィールドである場合は、こ
のフィールドに先行するすべてのオカレンスも入力されなければなりません。これに反すると、エラー・
メッセージ「PREVIOUS FIELD MISSING」が端末に表示されます。
426750-001J
5-45
第 5 章 DATA DIVISION ( データ部 )
□ 同一スクリーンにいくつかのテーブルを含める場合は、DEPENDING には同じ data-name-1 を指
定することが可能です。これらのテーブルが同一の ACCEPT ステートメントで参照される場合は、
data-name-1 の値は各テーブルを別々に考えた場合に算出された最大値に設定します。この
data-name-1 の値が当該のテーブルの最高位のオカレンスよりも大きい場合には、入力はエラーに
なり、エラー・メッセージ「REQUIRED FIELD MISSING」または「EARLIER FIELD MISSING」が
端末に表示されます。( どちらのエラー・メッセージが表示されるかは、フィールドの順序により決ま
ります。)
□ DEPENDING の指定のあるフィールドが ACCEPT ステートメント以外のステートメントで添字なしで
参照される場合は、data-name-1 で指定されたテーブルの現在の大きさ以内のすべてのオカレンス
が参照されます。
□ DEPENDING 指定の
data-name-1 の値を減少させて、DISPLAY ステートメントでスクリーン・
フィールド値のテーブルを表示させると、DEPENDING で定義されている現在のオカレンス数を超え
る旧表示フィールドが画面に残ります。旧表示フィールドが画面に残らないようにするには、次のいず
れかの操作を行います。
●
現在のテーブルを表示させる DISPLAY ステートメントの前に、DISPLAY BASE または DISPLAY
RECOVERY ステートメントを指定する。
●
DEPENDING 指定を使用しないで、テーブルは最大限の大きさで定義し、常に、フィールド値の正
しく設定されたテーブル全体を表示させる。
□ DEPENDING は、実行の際にプログラムが参照することができるスクリーン・テーブルの最大の大き
さを指定します。スクリーン・テーブルの最大の大きさは、次のいずれか小さいほうの値になります。
●
関連付けされたワーキング・ストレージ・テーブルの OCCURS 句に指定されたリテラルの値
●
スクリーン・テーブルの行とカラムを指定された OCCURS 句内の IN ... COLUMNS または ON ...
LINES に指定されたリテラルの値
通常、上記の2つの値が同じであることを確かめる必要があります。スクリーン・テーブルに許容され
る最大サイズを超える値の添字が指定されたスクリーン・テーブル項目を参照すると、TCP は端末を
サスペンドしてエラー・メッセージを表示します。
□ スクリーン・テーブルの定義に DEPENDING 句を含めることによって、スクリーン・テーブルの大き
さを、data-name-1 の値に基づいて可変とすることができます。この場合、data-name-1 で
指定したスクリーン・テーブルの現在の大きさによって、そのテーブルの添字がとり得る値の最大値、
および添字の値が指定されなかったときに作用するスクリーン・テーブル項目の最大数が決まります。
●
スクリーン・テーブルの現在の大きさを超える値の添字が指定されたスクリーン・テーブル項目を
参照すると、TCP は端末をサスペンドして、エラー・メッセージを表示します。
●
スクリーン・テーブルの現在の大きさがスクリーン・テーブルに許される最大サイズを超えている
ときに添字を用いてスクリーン・テーブル項目を参照すると、TCP は端末をサスペンドしてエラー・
メッセージを表示します。
●
スクリーン・テーブルの現在の大きさがスクリーン・テーブルに許される最大サイズを超えている
ときに添字なしでスクリーン・テーブル項目を参照すると、TCP は、現在スクリーン・テーブルの
大きさがゼロになっているものとしてステートメントを実行します。この場合、TCP はエラーを示
すフラグを設定しないで、項目数がゼロになっているスクリーン・テーブルに対してオペレーショ
ンが実行されます。
5-46
426750-001J
第 5 章 DATA DIVISION ( データ部 )
次に、OCCURS 句の例を示します。
05
FLD-A
AT 6, 10 PIC X(8) FROM TBL-A
OCCURS IN 4 COLUMNS OFFSET 10.
次の OCCURS 句は、上の OCCURS 句と機能的に同じです。
OCCURS IN 4 COLUMNS SKIPPING 2.
PICTURE 句
PICTURE 句は、端末スクリーンに表示されるデータのフォーマットを定義します。
{ PIC
} [ IS ] character-string
{ PICTURE }
character-string
次の事項を除いて、データ記述項で説明した形式と同じです。
□ S は指定できない。
□ 数字編集形式および英数字編集形式が可能である。
コンパイラで許されている文字列の最大長は、255 バイトです。
一般に、スクリーン・フィールドから入力されたデータは、PICTURE 句で暗黙的に指定される通
常の編集機能とは反対の方法で編集されます。入力編集は、常に入力および出力のために同一の
PICTURE 句を使って、値を正しく再変換します。
入力編集処理は、次に示すように、入力項目のクラスによって異なります。
□ 英数字入力―PICTURE 内の文字は、入力データ内の文字に対して左基準で一致しなければなり
ません。入力文字数が少なくて、PICTURE 内に残りの部分がある場合は、その部分は無視され
ます。
□ 数字入力―先頭および末尾の空白および FILL ( 充填 ) 文字は最初に、入力データ・ストリング
から取り除かれます。入力ストリングに空白だけがある場合 ( 端末オペレータが Tab キーを押し
てフィールドを移動したときに、このようになります ) は、そのストリングは値 0 を示している
ものと見なされます。こうしてから、PICTURE 内の各文字と入力データ内の文字が右基準で照
合されます。不一致がある場合は、データにエラーがあると見なされます。
PICTURE 記号の内、Z、コンマ、複数の正/負符号、CR、DB、および複数の通貨記号は特殊であ
り、入力データ・ストリングでは省略してもよい場合があります。つまり、PICTURE 句で指定さ
れるこれらの PICTURE 記号が入力文字と一致しない場合、または、入力データ・ストリング内の
該当する場所に空白を受け入れることができる場合は、データはエラーとされず、その入力文字を
空白に置き換え、その次の PICTURE 記号と入力文字が照合されます。表 5-5 は、そのような文字
ストリング記号を示しています。
426750-001J
5-47
第 5 章 DATA DIVISION ( データ部 )
表 5-5 スクリーン・データ項目の記述に使用できる PICTURE 記号とその機能 ( 1 / 2 )
5-48
記号
機能
A
英字または空白文字のための文字位置を表します。英字または空白文字以外の場合は、エ
ラーのフラグが設定されます。
B
入力ストリング内に空白を挿入すべき文字位置を表します。この空白は、関連付けされた
データ項目への変換の際に削除されます。末尾の空白は変換の前に取り除かれてしまうた
め、この記号は数字 PICTURE の最右端の文字として使用してはなりません。
N
1 つの 2 バイト文字を表します。この記号は、ENVIRONMENT DIVISION の OBJECTCOMPUTER 段落の CHARACTER-SET 句に KANJI-KATAKANA を指定したプログラム
でだけ有効です。
P
暗黙の小数点を示し ( 値はゼロ )、小数点を数字結果に割り当てるときに使用します。次の
V 記号の説明を参照して下さい。
V
明示的に小数点が入力されなかった場合の数字項目の小数点位置を示します。桁寄せは、
そのフィールドに最後に入力された文字から行われます。可変長データが入力されると、
希望の桁寄せが行われない場合があるので、この記号は注意して使用する必要があります。
桁寄せが正しく行われるようにするために、暗黙の小数点や Z 記号等の潜在的不在位置を
持つ PICTURE を使用するときは、LENGTH 句を使って項目の全長を入力するように要求
することをお勧めします。
X
ASCII 文字セットのどの文字でも入れることのできる文字位置を表します。
Z
数字にすべき文字位置、またはこの記号の左側に数字がない場合には空白にすべき文字位
置を表します。一連の Z 記号の 1 つである場合にだけ、この記号は編集の際に空白に置き
換えられます。変換の目的では、空白はゼロと同じに扱われます。
9
数字にすべき文字位置を表します。
0
ゼロを表示すべき文字位置を表します。このゼロは、関連付けされたデータ項目への変換
の際に削除されます。
/
スラッシュ (/) を表示すべき文字位置を表します。この記号は、関連付けされたデータ項目
への変換の際に削除されます。
,
この記号の左側に数字がある場合は、コンマ (,) を表示すべき文字位置を表します。数字が
ない場合は、空白または他の浮動挿入文字に置き換えられます。このコンマは、関連付け
されたデータ項目への変換の際に削除されます。
.
小数点として使用されるピリオドを表示すべき文字位置を表します。この記号は、関連付
けされたデータ項目への変換の際に削除されます。
+
正符号または負符号を表示すべき文字位置を表します。複数の正符号は、左側に空白、次
に 1 つの正符号または負符号、そして数字を入れるべき文字位置を示します。この記号は、
複数の正符号の内の 1 つである場合にだけ、編集の際に空白に置き換えられます。
-
空白または負符号を表示すべき文字位置を表します。複数の負符号は、左側に空白、次に
1 つのオプションの負符号、そして数字を入れるべき文字位置を示します。この記号は、
複数の負符号の内の 1 つである場合にだけ、編集の際に空白に置き換えられます。
426750-001J
第 5 章 DATA DIVISION ( データ部 )
表 5-5 スクリーン・データ項目の記述に使用できる PICTURE 記号とその機能 ( 2 / 2 )
記号
機能
CR
文字 CR または空白を入れるべき 2 つの文字位置を表します。値が負でない場合は、CR
は編集の際に空白に置き換えられます。
DB
文字 DB または空白を入れるべき 2 つの文字位置を表します。値が負でない場合は、DB
は編集の際に空白に置き換えられます。
*
数字またアスタリスク (*) を入れるべき文字位置を表します。その位置が数字の場合は、
左側の桁はすべてアスタリスクに置き換えられます。
$
ドル記号を表示すべき文字位置を表します。複数のドル記号は、左側に空白、次に 1 つの
ドル記号、そして数字を入れるべき文字位置を示します。複数のドル記号の内の 1 つであ
る場合にだけ、この記号は編集の際に空白に置き換えられます。
項目の大きさ
データ項目の大きさは、PICTURE 句の文字列に指定された記号 (PICTURE 記号 ) によって決まります。
PICTURE 記号の内、DB および CR は、それぞれ 2 文字位置と数えます。V および P は、文字位置には数
えません。他のすべての PICTURE 記号は、1 文字位置と数えます。
PROMPT 句
PROMPT 句は、出力用の名前付きスクリーン項目を入力用スクリーン・フィールドに関連付けます。
ACCEPT ステートメントの処理中に、( 入力を助けるために ) スクリーン入力を読み取る前に、指定のスク
リーン項目の内容が表示されます。PROMPT 句は、会話モードで動作する端末でのみ有効です。
PROMPT screen-field
screen-field
定義済みのスクリーン・フィールドの名前です。
screen-field の内容は、VALUE 句で SCREEN
SECTION に記述することができます。あるいは、ワーキング・ストレージ・データ項目で記述し、
FROM 句で出力することもできます。screen-field の内容が、PROMPT 句で指定したスク
リーン・フィールドのためのプロンプト ( 入力指示 ) として使用されます。
426750-001J
5-49
第 5 章 DATA DIVISION ( データ部 )
会話モードで動作する端末では、screen-field は入力指示として使用されます。この場合、
SCREEN SECTION の同一のスクリーン記述内で PROMPT 句の前に PROMPT 句で指定されるスクリーン・
フィールドの記述を含める必要があります。
ACCEPT ステートメントの実行中に、PROMPT 句で指定したスクリーン・フィールドの値が表示され、
端末が入力を受け入れることができる状態になったことを示します。プロンプトの値は、常にスクリーン
行の最初のカラムに表示されます。
次の例では、SCREEN SECTION で VALUE 句を記述した screen-field を指定した PROMPT 句
が示されています。関連の ACCEPT ステートメントが実行されると、VALUE 句で指定した LAST NAME
がスクリーン上に表示され、次に括弧とカーソルが現れます。
SCREEN SECTION .
01 ADDCUST-SCREEN BASE SIZE 24, 80 .
05 NAME1-PROMPT
AT 3,2 VALUE "LAST NAME: " .
05 LAST-NAME-FIELD AT 3,13 PIC X(10) USING CUST-LAST-NAME
LENGTH MUST BE 1 THRU 10
PROMPT NAME1-PROMPT .
次の例では、WORKING-STORAGE SECTION で記述して、FROM 句で出力する screen-field を
指定した PROMPT 句が示されています。
WORKING-STORAGE SECTION.
O1 NEWCUST-REC.
05 NEW-LAST-NAME
PIC X(10) VALUE SPACES.
:
01 WS-PROMPT-VALUE
PIC X(11) VALUE "LAST NAME: ".
:
SCREEN SECTION.
01 NEWCUST-SCREEN.
05 LAST-NAME-PROMPT AT 3,2 PIC X(11) FROM WS-PROMPT-VALUE.
05 LAST-NAME-FIELD AT 3,13 PIC X(10) USING NEW-LAST-NAME
LENGTH MUST BE 1 THRU 10
PROMPT LAST-NAME-PROMPT.
スクリーン・フィールドの値は、スクリーン・フィールドがどのように定義されているかにより、括弧
有り、あるいは、括弧なしで表示されます。
□ PROMPT 句が FROM または USING と一緒に定義されている場合は、これに関連付けされているワー
キング・ストレージ・データ項目に記憶されている値が、プロンプトに続いて括弧で囲まれて表示され
ます。例えば LAST NAME (Brown) が表示された場合は、最後の ACCEPT ステートメントでこのフィー
ルドに対して Brown と入力されたことを示しています。
□ スクリーン・フィールドが TO で定義されている場合、PROMPT 句は括弧を表示しません。
5-50
426750-001J
第 5 章 DATA DIVISION ( データ部 )
RECEIVE 句
RECEIVE 句は、スクリーン・フィールドのデータをどこから受け入れるかを指定します。端末、他の
デバイス、またはその両方を指定することができます。この任意指定の句は、バージョン C00 以降のマイ
クロコードと 6AI ( バージョン A00) ファームウェアを搭載した T16-6530 端末で稼働するアプリケーショ
ンでだけサポートされます。RECEIVE 句を省略すると、端末キーボードからだけデータを受け入れること
ができます。
RECEIVE [ FROM ] {
{
{
{
ALTERNATE
ALTERNATE OR TERMINAL
TERMINAL
TERMINAL OR ALTERNATE
}
}
}
}
ALTERNATE
端末以外のデバイスからデータを受け入れることを示します。Pathway がサポートする端末以外の
デバイスには、次のものがあります。
□ OCR リーダ
□ 光学式バー・コード・リーダ
□ 磁気カード/バッジ・リーダ
ALTERNATE OR TERMINAL
上記の代替デバイスのいずれか 1 つと端末キーボードからデータを受け入れることを示します。
TERMINAL
端末キーボードからだけデータを受け入れることを示します。
TERMINAL OR ALTERNATE
上記の代替デバイスのいずれか 1 つと端末キーボードからデータを受け入れることを示します。
RECEIVE 句に ALTERNATE オプションを指定すると、端末キーボードからそのスクリーン・フィール
ドにデータを入力できないようにすることができます。このように指定したフィールドに対しては、T166530 端末に接続された代替デバイスだけからデータを受け入れます。
この属性は、SCREEN COBOL の TURN ステートメントで、先に定義したオプションに変更することが
できます。
次に、RECEIVE 句の例を示します。
SCREEN SECTION.
01 INVENTORY-REC-SCREEN
BASE SIZE 24, 80.
:
05 PROD-FIELD
AT 5, 28 PIC X(10) RECEIVE FROM ALTERNATE
USING WS-PROD-ID.
05 COUNT-FIELD AT 7, 28 PIC X(10) RECEIVE FROM
ALTERNATE OR TERMINAL
TO WS-PROD-COUNT.
426750-001J
5-51
第 5 章 DATA DIVISION ( データ部 )
REDEFINES 句
REDEFINES 句は、既に定義されているフィールドを再定義します。
REDEFINES
field-name-2
field-name-2
既に定義されているフィールドの名前です。
フィールドの再定義は、以前の定義と同じ大きさ、同じ表示属性で行わなければなりません。
REDEFINES 句によって、異なる形式のデータを受け入れる場合でも、1 つの物理フィールドで済むよ
うにすることができます。例えば、米国と英国の郵便番号を次のように 1 つの物理フィールドを使って定
義することができます。
05
ZIP-US AT 10, 10
05
ZIP-UK REDEFINES ZIP-US
PIC 999999
LENGTH 0, 5
TO ZIP-US-WS.
PIC XXXXXX
LENGTH 0, 6
TO ZIP-UK-WS.
各スクリーン・フィールド宣言には、必ず、REDEFINES 句または AT 句を含めなければなりません。両
方の句を含めた場合は、両方とも全く同じ位置を参照するように指定しなければなりません。
SHADOWED 句
SHADOWED 句は、非リテラルのスクリーン・フィールドに補助ワーキング・ストレージ・データ項目
( シャドウ項目 ) を関連付けます。シャドウ項目は、関連付けられたスクリーン・フィールドのための入力
データを受けたかどうかを調べるほか、出力ステートメントのためにそのスクリーン・フィールドを選択
するか否かを決めるのに使用されます。
シャドウ項目は、DISPLAY、RESET、SET NEW-CURSOR、および TURN ステートメントに含まれる
SHADOWED 修飾語と関連付けられて使用されます。SHADOWED 修飾語を含むこれらのステートメント
のいずれかが実行されると、そのステートメントで参照されるシャドウ項目が自動的に調べられます。そ
の結果どのような処理が行われるかは、シャドウ項目の値によって決まります。
SHADOWED [ BY ] data-name-1
data-name-1
非リテラルのスクリーン・フィールドに関連付けられる補助ワーキング・ストレージ・データ項目
( シャドウ項目 ) の名前です。data-name-1 は、WORKING-STORAGE SECTION で、大きさ
が 1 バイトの PIC X、PIC 9、または PIC 9 COMP として記述しなければなりません。
5-52
426750-001J
第 5 章 DATA DIVISION ( データ部 )
1 つのスクリーン・フィールドは、主項目とシャドウ項目という少なくとも 2 つのワーキング・ストレー
ジ・データ項目に関連付けられます。次に示す例では、USING 句 (TO 句が使用されることもある ) が主
ワーキング・ストレージ・データ項目をスクリーン・フィールドに関連付けており、SHADOWED 句が補
助ワーキング・ストレージ・データ項目 ( シャドウ項目 ) を同じスクリーン・フィールドに関連付けています。
SCREEN SECTION
WORKING-STORAGE SECTION
05 SCREEN-ITEMA ...
PIC X(10)
USING WS-ITEMA
SHADOWED BY WS-A-SHADOW
:
:
01 WS-ITEMA
01 WS-A-SHADOW
PIC X(10).
PIC 9 COMP.
SHADOWED 句 で 定 義 さ れ たスクリーン・フィールドに OCCURS 句が含まれている場合は、
SHADOWED 句で指定するシャドウ項目 (data-name-1) にも、SCREEN SECTION の対応するフィー
ルドの OCCURS 句と同じ最大のオカレンス数を指定した OCCURS 句が含まれていなければなりません。
シャドウ項目には、RETURN、ENTER、SELECT という 3 つの情報サブフィールド ( ビット ) が含まれ
ています。下図は、シャドウ項目を構成するビットを示しています。
bit 0
...
bit 5
bit 6
RETURN
ENTER
bit 7
SELECT
not used
CDT 010.CDD
シャドウ項目の最右端にあるビットは、スクリーン・フィールドのための SELECT ビットです。この
ビットは、SHADOWED 修飾語を含む DISPLAY、TURN、RESET、および SET NEW-CURSOR ステート
メントによってチェックされます。これらのいずれかのステートメントに SHADOWED 修飾語が使用され
ている場合は、そのステートメントで指定されたフィールドは、シャドウ項目の SELECT ビットが 1 に設
定されない限り、そのステートメントでは処理されません。SELECT ビットは、SCREEN COBOL プログ
ラムがシャドウ項目に値を設定 (MOVE) することによって設定されます。
SELECT ビットの左側には、ENTER ビットと RETURN ビットがあります。これらのビットは、シャド
ウ項目に関連付けられたスクリーン・フィールドが ACCEPT ステートメントで指定されている場合に、1
または 0 にセットされます。これらのビットが 1 または 0 のどちらにセットされるかは、スクリーン・
フィールド ( 端末 ) から受け取る情報によって決まります。表 5-6 に、スクリーン・フィールドから受け取
る情報と RETURN ビットおよび ENTER ビットの値との対応を示します。ACCEPT ステートメントが実
行されたときに MDT (Modified Data Tag) がオン (MDTON 状態 ) に設定されると、RETURN ビットは常
に 1 にセットされます。
426750-001J
5-53
第 5 章 DATA DIVISION ( データ部 )
表 5-6 ACCEPT ステートメントの実行時の RETURN および ENTER ビットの値
スクリーン・フィールドから受け取る情報の内容
RETURN *
ENTER
Tab による移動 ( 何も含まれていない )
0
0
FILL 文字または空白
1
0
通常のデータ
1
1
ACCEPT ステートメントの実行時の MDTON 属性 :
―FILL 文字または空白
―通常のデータ
1
1
0
1
* T16-6510 端末が使用されると、RETURN ビットは常に 1 にセットされます。
ESCAPE 句の機能
ACCEPT ステートメントの中で ESCAPE 句が実行された場合 ( 例えば、ABORT-INPUT が会話モード
端末で指定された場合 ) は、RETURN ビットおよび ENTER ビットの設定は保証されません。
DYNAMIC 修飾語を指定した DISPLAY オペレーションでの SHADOWED 句の使用法
SHADOWED 句で定義されたスクリーン・フィールドに SELECT ビットが 1 にセットされたワーキン
グ・ストレージ・データ項目が関連付けられており、DISPLAY DYNAMIC オペレーションが実行される
と、そのスクリーン・フィールドは FROM または USING で指定されたワーキング・ストレージ・データ
項目から初期スクリーンの内容を取得します。そうでない場合は、初期スクリーンの内容は、コンパイル
時のリテラル値またはデフォルトの初期値から取得されます。表 5-7 に、スクリーン・フィールド属性で
DYNAMIC 修飾語を伴う DISPLAY オペレーションを指定したときの機能を示します。
表 5-7 DISPLAY オペレーションと DYNAMIC 修飾語を指定したシャドウ・フィールドの機能
フィールド値を取得する特性を持つスクリーン・フィールド
FROM (出力)またはUSING (入出力) DISPLAY BASE
または DISPLAY
OVERLAY オペレー
ション
TO ( 入力 )
SHADOWED:
YES,
SELECT=1
SHADOWED:
YES,
SELECT=0
SHADOWED:
NO
DYNAMIC 指定あり
FROM または
USING で指定さ
れたワーキン
グ・ストレー
ジ・データ項目
リテラル *
リテラル *
リテラル *
DYNAMIC 指定なし
リテラル *
リテラル *
リテラル *
リテラル *
* コンパイル時のリテラルまたはデフォルトの初期値。
5-54
426750-001J
第 5 章 DATA DIVISION ( データ部 )
SHADOWED 句の使用法
シャドウ項目を使用すると、通常、次のオペレーションが行われます。
□ プログラムがシャドウ項目をチェックして、ENTER ビットと RETURN ビットの設定値を調べます。こ
れらのビットは、入力されたデータに基づいて、ACCEPT ステートメントが自動的に設定します。
□ プログラムは、値をシャドウ項目に設定 (MOVE) することによって、SELECT ビットを希望の値に設
定します。
表 5-8 に、シャドウ項目に指定することができる値とそれに対応するビット・パターンを示します。数
字 (PIC 9 または PIC 9 COMP) または英数字 (PIC X) のいずれとして定義されているかに応じて、シャドウ
項目には異なる値が設定されます。
表 5-8 シャドウ項目の値とビット・パターンの対応
ビット・パターン *
シャドウ項目
PIC 9
シャドウ項目
PIC X
RETURN
ENTER
SELECT
0
空白
0
0
0
1
!
0
0
1
2
"
0
1
0
3
#
0
1
1
4
$
1
0
0
5
%
1
0
1
6
&
1
1
0
7
’
1
1
1
* 0= オフ
1= オン
例えば、数字シャドウ項目が 4 になっていれば、そのシャドウ項目に関連付けられているスクリーン・
フィールドには、ACCEPT ステートメントによって FILL 文字または空白が入っています。この場合、プ
ログラムは、SELECT ビットを 1 にセットすることにより、スクリーン・フィールドを再度表示させるこ
とができます。プログラムがシャドウ項目に 5 を記入すると、RETURN ビットと ENTER ビットの値はそ
のままで、SELECT ビットが 1 にセットされます。
次に、SHADOWED 句の例を示します。
SCREEN SECTION.
01 LOCATION-REC-SCREEN BASE SIZE 24, 80.
05 STATE-FIELD AT 5, 28 PIC X(2)
USING WS-STATE SHADOWED BY
WS-STATE-SHAD.
(1)
WORKING-STORAGE SECTION.
05 WS-STATE-SHAD PIC 9 COMP.
(2)
426750-001J
5-55
第 5 章 DATA DIVISION ( データ部 )
PROCEDURE DIVISION.
MOVE 0 TO WS-STATE-SHAD.
(3)
ACCEPT LOCATION-REC-SCREEN
(4)
IF WS-STATE-SHAD EQUAL 4
MOVE 5 TO WS-STATE-SHAD
(5)
(6)
DISPLAY LOCATION-REC-SCREEN SHADOWED. (7)
(1) シャドウ項目を指定します。
(2) シャドウ項目を宣言します。
(3) シャドウ項目に 0 を設定します。
(4) ACCEPT ステートメントが RETURN ビットと ENTER ビットを 0 または 1 にセットします。
(5) シャドウ項目を調べます。
(6) シャドウ項目に 5 を設定して、SELECT ビットを 1 にセットします。
(7) 参照されたスクリーン・フィールドの内、SELECT ビットが 1 にセットされているシャドウ項目に対応
したスクリーン・フィールドだけを表示させます。
TO/FROM/USING 句
TO/FROM/USING 句は、総称して、データ関連付け句 (Data Association Clauses) と呼ばれます。これら
の句は、スクリーン・フィールドに WORKING-STORAGE SECTION または LINKAGE SECTION のデー
タ項目を関連付けて、そのスクリーン・フィールドとデータ項目との間でデータを移動させます。フィー
ルドの一般的タイプは、これらの句によって決まります。
{ TO
} data-name-1
{ FROM }
{ USING }
TO
データをスクリーン・フィールドから
data-name-1 の領域へ移動することを示します。これ
は、入力関連付けです。
FROM
データを
data-name-1 の領域からスクリーン・フィールドへ移動することを示します。これ
は、出力関連付けです。
USING
同じデータ名に対して TO と FROM の両方を指定したのと同じです。
data-name-1
スクリーン基本フィールドと関連付けられるワーキング・ストレージ・データ項目 ( 添字付き項目
は不可 ) です。
5-56
426750-001J
第 5 章 DATA DIVISION ( データ部 )
TO/FROM/USING 句には、次の規則が適用されます。
□ TO/FROM/USING 句は、スクリーン基本フィールドでだけ指定することができます。
□ 1 つのスクリーン・フィールドに対して TO 句と FROM 句の両方を指定することができます。この場
合、異なるデータ名を使うことができます。
□ フィールドにデータ関連付け句を指定する場合は、そのフィールドには PICTURE も指定しなければな
りません。
□ スクリーン・フィールドのタイプは、WORKING-STORAGE SECTION または LINKAGE SECTION 内
の関連付けされるデータ項目と同じでなければなりません。例えば、数字編集フィールドは、数字デー
タ項目に関連付けします。また、英字編集フィールドは、英字または英数字データ項目に関連付けしま
す。
データの移動は、DISPLAY ステートメントまたは ACCEPT ステートメントの実行に伴って行われます。
すなわち、これらのステートメントが、データ関連付けを含むスクリーン・フィールドを明示的にまたは
暗黙的に指名します。
UPSHIFT 句
UPSHIFT 句は、入出力のために英小文字が英大文字に変換されることを示します。
UPSHIFT [
[
[
[
INPUT
OUTPUT
INPUT-OUTPUT
I-O
]
]
]
]
UPSHIFT だけを指定すると、INPUT-OUTPUT オプションが指定されたものと見なされます。この句を
省略すると、英小文字は小文字のまま処理されます。UPSHIFT 句は、PIC N フィールドに有効なスクリー
ン・フィールド属性ですが、この句が役に立つのは、混合データ・フィールド ( 例えば、PIC N(10)A(10)
など ) の場合だけです。
備考: UPSHIFT 句および USER CONVERSION 句で英数字フィールドが宣言されたときは、TCP は、ユーザ変
換プロシージャを呼び出す前と後の両時点で、そのフィールドを大文字に変換します。
USER CONVERSION 句
USER CONVERSION 句は、当該のフィールドと一緒に変換プロシージャに渡されるユーザ定義番号を
指定します。
USER [ CONVERSION ] numeric-literal
USER CONVERSION 句は、アプリケーションがユーザ変換プロシージャを使用する場合にだけ指定し
ます。
入力スクリーン・フィールドに空白または FILL 文字だけが含まれている場合は、CONVERT BLANKS
を指定して USER CONVERSION 句を呼び出すことができるようにして下さい。
426750-001J
5-57
第 5 章 DATA DIVISION ( データ部 )
ユーザが Tab キーを 2 回押してフィールドを飛び越えたときは、MDT (modified data tag) はセットされ
ません。その場合は、WHEN ABSENT CLEAR 句を指定してフィールドに空白を強制適用して下さい。
WHEN ABSENT CLEAR 句は、CONVERT BLANKS 句と共に機能して、USER CONVERSION 句を呼び
出すことができるようにします。
ユー ザ 変 換 プ ロ シ ー ジ ャ の 詳 細については、『Compaq NonStop Pathway/iTS TCP and Terminal
Programming Guide』を参照して下さい。
VALUE 句
VALUE 句は、スクリーン・フィールドの初期値を指定します。初期値は、DISPLAY BASE または
DISPLAY OVERLAY ステートメントの実行の際、RESET DATA ステートメントの実行の際、あるいは、
スクリーン・リカバリの際に表示されます。リテラル・スクリーン・フィールドには、VALUE 句を必ず
指定しなければなりません。
VALUE nonnumeric-literal
nonnumeric-literal
スクリーン・フィールドの初期値を非数字リテラルで表します。nonnumeric-literal の長
さは、PICTURE 句で指定したそのフィールドの大きさを超えてはいけません。PICTURE 句で指定
したフィールドの大きさより短いときは、nonnumeric-literal は左寄せにされ、FILL 文
字が詰められます。
この初期値は、入力フィールドの変換および検証の制約にしたがった有効な値である必要はありません。
ただし、ACCEPT ステートメントの処理中に有効でない値が端末で入力された場合には、そのフィールド
はエラーになります。
VALUE 句は、OCCURS 句を使用しているフィールドでは使用することができません。
2 バイト・データだけが認められるフィールドで VALUE 句を使用した場合は、提供されるリテラル・
ストリングは、ワーキング・ストレージの PIC N フィールドに関連付けられた VALUE 句と同じ規則にし
たがわなければなりません。
次に、VALUE 句の例を示します。
SCREEN SECTION.
01 ORD-DETAIL-SCRN SIZE 12, 40.
05 FILLER AT 1, 12 VALUE "ORDER DETAIL ENTRY".
05 FILLER AT 2, 1
VALUE "CUSTOMER".
05 ENTRY-GROUP AT 5, 4.
10 FILLER AT
@,
@ VALUE "ITEM".
10 FILLER AT
@, @ + 9 VALUE "QUANT".
WHEN ABSENT/BLANK 句
WHEN ABSENT/BLANK 句は、入力がデータ不在または空白であったときに、TO 句または USING 句
によって関連付けされたワーキング・ストレージ・データ項目の処置を指定します。
5-58
426750-001J
第 5 章 DATA DIVISION ( データ部 )
WHEN ABSENT/BLANK 句を省略した場合は、デフォルトとして WHEN ABSENT SKIP ( データ不在
フィールドをスキップ ) および WHEN BLANK CLEAR( 空白フィールドをクリア ) が使用されます。
WHEN { ABSENT } { CLEAR }
{ BLANK } { SKIP }
ABSENT
データ不在フィールド ( 端末からデータが入ってこないフィールド ) に対して処置を行うことを示
します。
BLANK
空白フィールド ( 空白文字または FILL 文字で満たされたフィールド ) に対して処置を行うことを示
します。あるいは、スクリーン・フィールド属性 MDT (Modified Data Tag) がセットされている
BLANK フィールドをスキップすることを示します。
CLEAR
当該のワーキング・ストレージ・データ項目が数字項目の場合は、そのデータ項目をゼロにクリア
し、英字項目または英数字項目の場合は、そのデータ項目を空白にクリアすることを示します。
SKIP
当該のワーキング・ストレージ・データ項目を、クリアしないで、そのままにしておくことを示します
ユーザが Tab キーを 2 回押してフィールドを飛び越えたときは、MDT (modified data tag) はセットされ
ません。その場合は、WHEN ABSENT CLEAR 句を指定してフィールドに空白を強制適用して下さい。
WHEN ABSENT CLEAR 句は、CONVERT BLANKS 句と共に機能して、USER CONVERSION 句を呼び
出すことができるようにします。
WHEN FULL 句
WHEN FULL 句は、入力スクリーン・フィールドの最後の桁に文字が入力された後に、さらに続きの文
字が端末からキー入力された場合の処置を指定します。
[ WHEN ] FULL { TAB }
{ LOCK }
TAB
カーソルを次の入力フィールドまで進めます。
LOCK
端末のキーボードをロックします。
この句を省略すると、デフォルトとして LOCK が使用されます。
WHEN FULL 句は、入力スクリーン・フィールドが一杯になったときに複数の処置をサポートする端末
でのみ有効です。この端末としては、現在、T16-6520、T16-6530、T16-6540、および IBM3270 があります。
426750-001J
5-59
第 5 章 DATA DIVISION ( データ部 )
5.5 メッセージ記述項
メッセージ記述項は、メッセージ・フォーマットの特性を宣言します。この記述項は、SCREEN COBOL
プログラムの MESSAGE SECTION で使用されます。
MESSAGE SECTION では、複数のメッセージ・フォーマットを定義することができます。メッセージ・
フォーマットの開始は、レベル 01 で示されます。従属グループと基本項目を定義することができます。
メッセージ・フォーマット内の連続するフィールドは、グループおよび基本項目として、下位のレベル番
号によって定義されます。
メッセージ記述項の構成は、データ記述項の構成に似ています。メッセージ記述項は、階層関係を示す
レベル番号で始まる一連の宣言文 (Declarative Sentense) の集まりです。レベル番号は、値が大きくなるほ
ど、階層レベルが下がります。1 つの段落では、レベル 01 が最高のレベル番号であり、それに従属するレ
ベルには 02 から 49 までの任意の番号を指定することができます。
次に、メッセージ記述項の基本形式を示します。
MESSAGE SECTION.
01 message-name [ 01-clause... ].
[ level-number {group-name} [ group-clause... ].
[
[ [ level-number {field-name} [ field-clause... ].
[
{FILLER
}
]
]
]... ]
]
message-name
ユーザ定義名です。これについては、「第 2 章 SCREEN COBOL ソース・プログラム」に説明が
あります。
01-clause
メッセージの特性を定義します。使用できる句は、次のとおりです。
FIELD-DELIMITER 句
MESSAGE-DELIMITER 句
MESSAGE FORMAT 句
PICTURE 句
RESULTING COUNT 句
TO/FROM/USING 句
USER CONVERSION 句
group-clause
グループ項目の特性を定義します。使用できる句は、次のとおりです。
OCCURS 句
OCCURS DEPENDING ON 句
PRESENT IF 句
USER CONVERSION 句
5-60
426750-001J
第 5 章 DATA DIVISION ( データ部 )
field-clause
フィールド項目の特性を定義します。使用できる句は、次のとおりです。
FIELD STATUS 句
OCCURS 句
OCCURS DEPENDING ON 句
PICTURE 句
PRESENT IF 句
RESULTING COUNT 句
TO/FROM/USING 句
USER CONVERSION 句
5.5.1 FILLER の使用に関する制約
FILLER はどのレベルでも使用することができますが、使用に際しては次の制約があるので、注意して
下さい。
□ レベル 01 で FILLER が指定されたメッセージは、MESSAGE SECTION をアクセスする PROCEDURE
DIVISION のステートメントで処理することができません。
□ レベルに関係なく、FILLER 項目は、FROM/TO/USING 句によってワーキング・ストレージ・データ
項目に関連付けることはできません。FILLER として定義されたフィールドは、一定の場所を占有する
だけであり、データを読み取ったり、データをストアさせるために、ワーキング・ストレージに対する
参照を行うことはできません。
5.5.2 FILLER の使用法
入力データ・ストリームに一致させたり、希望する出力データ・ストリームを生成するために、必要な
FILLER フィールドを MESSAGE SECTION で定義することができます。
1. 入力に関しては、FILLER として宣言されたフィールドは処理されません。TCP は、FILLER フィール
ドを無視して、その次のフィールドを処理します。
2. 出力に関しては、FILLER として宣言されたフィールドは、FILL 文字で置き換えられます。非数字
フィールドは空白で充填されます。
3. 数字フィールドは、ゼロ (COMP の場合は 2 進数、他の場合は ASCII) で充填されます。PIC 1 フィール
ドは、ビット0で充填されます。
MESSAGE SECTION の FILLER フィールドは、データのフォーマットを定義します。MESSAGE
SECTION と対になっている WORKING-STORAGE SECTION で FILLER フィールドを指定するかどうか
は、ユーザの自由に任されています。
MESSAGE SECTION の FILLER 項目は、単に場所を占有する働きしかありません。WORKINGSTORAGE SECTION の FILLER 項目は、実際に一定のワーキング・ストレージ ( 作業用記憶領域 ) を確保
する働きがあります。
WORKING-STORAGE SECTION に FILLER 項目を指定しておけば、将来の用途やドキュメンテーショ
ンのためにワーキング・ストレージを確保しておくことができます。
WORKING-STORAGE SECTION に FILLER 項目は、個別に参照することはできません。ただし、FILLER
項目を含むグループ項目は、参照することができます。
426750-001J
5-61
第 5 章 DATA DIVISION ( データ部 )
次に MESSAGE SECTION と WORKING-STORAGE SECTION を対にしたコーディングの例を 2 つ示し
ます。いずれの例も、データ構造に問題はありません。
WORKING-STORAGE SECTION.
01 WS-MSG
05 WS-A
PIC X
05 WS-B
PIC X
05 WS-C
PIC X
05 WS-D
PIC X
MESSAGE SECTION.
01 MS-MSG
05 MS-A
PIC X
05 MS-B
PIC X
05 FILLER PIC X
05 MS-C
PIC X
05 MS-D
PIC X
FROM WS-A
FROM WS-B
FROM WS-C
FROM WS-D
WORKING-STORAGE SECTION.
01 WS-MSG
05 WS-A
PIC X
05 WS-B
PIC X
05 FILLER PIC X
05 WS-C
PIC X
05 WS-D
PIC X
MESSAGE SECTION.
01 MS-MSG
05 MS-A
PIC X
05 MS-B
PIC X
05 FILLER PIC X
05 MS-C
PIC X
05 MS-D
PIC X
FROM WS-A
FROM WS-B
FROM WS-C
FROM WS-D
5.5.3 PICTURE 句および TO/FROM/USING 句の使用に関する制約
単一のフィールドでメッセージを構成するときは、PICTURE 句および TO、FROM、または USING 句
を指定しなければなりません。例:
WORKING-STORAGE SECTION.
01 WS-MSG
PIC X(10).
MESSAGE SECTION.
01 MSG
PIC X(10) USING WS-MSG.
複数のフィールドでメッセージを構成するときは、PICTURE 句および TO/FROM/USING 句の使用に関
して次の制約が適用されます。
□ レベル 01 の項目には、PICTURE 句あるいは TO、FROM または USING 句を含めることはできません。
□ グループ・レベルの項目には、PICTURE 句あるいは TO、FROM または USING 句を含めることはで
きません。
5-62
426750-001J
第 5 章 DATA DIVISION ( データ部 )
□ FILLER 項目を除くフィールド・レベルの各項目には、PICTURE 句および TO、FROM または USING
句を含めなければなりません。
次に、複数のフィールドで構成されるメッセージに PICTURE 句および FROM 句を使用する例を示しま
す。
WORKING-STORAGE SECTION.
01 WS-MSG.
05 WS-GROUP.
10 WS-FLD1
PIC X(10).
10 WS-FLD2
PIC X(10).
MESSAGE SECTION.
01 MS-MSG.
05 MS-GROUP.
10 MS-FLD1
10 MS-FLD2
PIC X(10)
PIC X(10)
FROM WS-FLD1.
FROM WS-FLD2.
5.5.4 USER CONVERSION 句および PRESENT IF 句の使用に関する制約
USER CONVERSION 句は、レベル 01 の項目、グループ・レベルの項目およびフィールド・レベルの項
目で使用することができます。USER CONVERSION 句をレベル 01 の項目またはグループ・レベルの項目
で使用すると、その USER CONVERSION 句は、それよりも下位のレベルの項目にも適用されます。ただ
し、この場合、下位レベルの項目に USER CONVERSION 句が使用されていると、上位レベルの USER
CONVERSION 句は無効になり、下位レベルの USER CONVERSION 句が適用されてしまうので注意して
下さい。
USER CONVERSION 句と同様に、PRESENT IF 句も、上位レベルの項目における指定が下位レベルの
項目に適用されます。また、下位レベルの項目で PRESENT IF 句が使用されると、上位レベルの PRESENT
IF 句は無効になり、下位レベルの PRESENT IF 句が適用されます。
5.5.5 メッセージ記述項の使用法
メッセージ記述項によって定義されたメッセージ・フォーマットは、一種のテンプレートであり、対に
なった WORKING-STORAGE SECTION と MESSAGE SECTION の PICTURE 句の間でデータが移動する
ときに、そのデータは、このテンプレートを介してマッピングされます。このテンプレートを介してデー
タがマッピングされるとき、データの整列、フォーマッティングおよび変換が行われます。また、入力と
出力の両方に同じメッセージ記述を使用することができます。
次に、対になった WORKING-STORAGE SECTION のデータ記述項と MESSAGE SECTION のメッセー
ジ記述項の例を示します。
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-MSG
05 WS-MSG-FLD1
PIC
05 WS-MSG-FLD2
PIC
05 WS-MSG-FLD3
PIC
05 WS-MSG-FLD4
PIC
426750-001J
X(10)
X(10)
X(5)
9(5)
VALUE
VALUE
VALUE
COMP
IS 10.
IS 20.
IS 30.
VALUE IS 12345.
5-63
第 5 章 DATA DIVISION ( データ部 )
MESSAGE SECTION.
01 MSG
05 MSG-FLD1
05 MSG-FLD2
05 MSG-FLD3
05 MSG-FLD4
MESSAGE FORMAT IS
PIC X(10)
FROM
PIC X(5)
FROM
PIC X(10)
FROM
PIC 99,999 FROM
FIXED.
WS-MSG-FLD2.
WS-MSG-FLD3.
WS-MSG-FLD1.
WS-MSG-FLD4.
データの整列、フォーマッティングおよび変換のためにメッセージ記述項を定義する方法の詳細につい
ては、『Compaq NonStop Pathway/iTS TCP and Terminal Programming Guide』を参照して下さい。
5.5.6 メッセージ記述項の句
FIELD-DELIMITER 句
FIELD-DELIMITER 句は、メッセージ内のフィールドを区切るために使用される文字 ( フィールド・デ
リミタ ) を定義します。FIELD-DELIMITER 句を使用することによって、該当するメッセージ・フォーマッ
ト・プロトコルで指定されたフィールド・デリミタに対応するフィールド・デリミタを定義することがで
きます。この句を省略すると、デフォルトとして、フィールド・デリミタにはコンマ (,) が使用されます。
FIELD-DELIMITER 句には、フィールド・デリミタの処理を無効 (OFF) にする機能もあります。デー
タ・ストリーム全体を 1 つのメッセージとして処理するときには、OFF を指定しなければなりません。
FIELD-DELIMITER [ IS ] {
{
{
{
"character"
decimal-value
ON
OFF
}
}
}
}
"character"
引用符で囲まれた任意の 1 個の ASCII 文字です。文字コードを指定しなかったときは、デフォルト
として、フィールド・デリミタにはコンマ (,) が使用されます。
decimal-value
0 ~ 255 の範囲の 1 つの整数です。この数は、ASCII 文字または EBCDIC 文字の 10 進表現としま
す。例えば、80 は、ASCII 文字の P、または EBCDIC 文字の & を表します。
ON
フィールド・レベルでのデリミタの処理を有効にします。
OFF
フィールド・レベルでのデリミタの処理を無効にします。
FIELD-DELIMITER 句に関しては、次の規則が適用されます。
□ フィールド・デリミタを使用するときは、MESSAGE FORMAT 句で FIXED-DELIMITED または
DELIMITED を指定しなければなりません。
5-64
426750-001J
第 5 章 DATA DIVISION ( データ部 )
□ FIELD-DELIMITER 句を省略し、MESSAGE FORMAT 句で FIXED-DELIMITED または DELIMITED
を指定しても、フィールド・デリミタの処理は行われますが、フィールド・デリミタはデフォルトとし
てコンマ (,) が使用されます。
□ フィールド単位でメッセージを処理するときは、FIELD-DELIMITER 句と共に RESULTING COUNT
句を使用することができます。詳細については、RESULTING COUNT 句の説明を参照して下さい。
FIELD STATUS 句
FIELD STATUS 句 は、MESSAGE SECTION のフィールドに関するステータス情報を受け取る
WORKING-STORAGE SECTION のデータ・グループまたはデータ項目を指定します。データが、ワーキ
ング・ストレージへ、または、ワーキング・ストレージから移動するときに、対応する MESSAGE SECTION
のフィールドを介してデータがマッピングされ、FIELD STATUS 句で指定した WORKING-STORAGE
SECTION のデータ項目が更新されます。ワーキング・ストレージとの間でデータを移動するステートメン
トに は、SEND MESSAGE、TRANSFORM、RECEIVE UNSOLICITED MESSAGE、および REPLY TO
UNSOLICITED MESSAGE があります。
FIELD STATUS [IS] data-item-1
data-item-1
WORKING-STORAGE SECTION のグループ項目または基本項目です。data-item-1 の大きさ
は 4 バイト以上でなければなりません。data-item-1 が 4 バイトより小さいと、コンパイラが
エラー・コード 369 を報告します。FIELD STATUS 句には、次の規則が適用されます。
□
data-item-1 の最初の 2 バイトには、フィールド・ステータス情報のシャドウ部分を含み
ます。このシャドウ部分は、PRESENT IF 句と共に使用されると、ある条件が成立したときに存
在するフィールドが存在しているかどうかを判定することができます。
□
data-item-1 の次の 2 バイトは、フィールド・ステータス情報のフィールド・エラー部分
を含みます。このフィールド・エラー部分を使用することにより、編集が指定されたフィールド
において発生する編集エラーに関する情報を取得することができます。
□
data-item-1 は、次のフォーマットにすることをお勧めします。このフォーマットを使用
することによって、シャドウ部分とフィールド・エラー部分にアクセス可能な変数名を付けるこ
とができます。
02
FIELD-STATUS-AREA.
03
SHADOW-INFO
03
FIELD-ERROR
PIC 9(4) COMP.
PIC 9(4) COMP.
□ TCP がシャドウ部分とフィールド・エラー部分に移動するシャドウ値とエラー番号は 2 進表現
であり、data-item-1 は COMP データとして定義しなければなりません。
□
data-item-1 は、関連付けされた MESSAGE SECTION のフィールドを介してデータがマッ
ピングされると、常に更新されます。ある条件が成立したときに存在するフィールドが存在して
いるかどうかを判定するために FIELD STATUS を使用するときは、そのフィールド・ステータ
ス情報に基づいてフィールドの編集エラーも検出することができます。
426750-001J
5-65
第 5 章 DATA DIVISION ( データ部 )
シャドウ・データ項目
FIELD STATUS 句を PRESENT IF 句と共に使用する場合は、FIELD STATUS 句で指定したワーキング・
ストレージ・グループ項目のシャドウ部分 ( シャドウ・データ項目 ) を調べて、ある条件が成立したときに
存在するフィールドが存在しているかどうかを判定することができます。
シャドウ・データ項目の解釈は、シャドウ・データ項目の値に基づいて行われます。シャドウ・データ
項目の値は、ある条件が成立したときに存在するフィールドの状態の他に、データが入力と出力のいずれ
であるかによって決まります。このフィールドの状態には、次の 3 つがあります。
□ 入力状態―このフィールドは、入力中に受け取られ、かつ、データ・ストリーム内に存在する。
□ ストア状態―入力または生成されたこのフィールドは、指定された WORKING-STORAGE SECTION
または LINKAGE SECTION のデータ項目にストア ( 記憶 ) された。
□ 選択状態―このフィールドは、指定された WORKING-STORAGE SECTION または LINKAGE
SECTION のデータ項目から出力できるように、選択されなければならない。
入力状態およびストア状態は、入力処理中に何が行われているかを示します。TCP は、シャドウ・デー
タ項目の値を更新して、入力状態およびストア状態が正しく反映されるようにします。
選択状態は、出力処理が行われているときだけ可能な状態です。選択状態は、SCREEN COBOL プログ
ラムの制御下にあります。つまり、SCREEN COBOL プログラムによってシャドウ・データ項目に選択状
態 (0 または 1) が設定されると、その状態は、プログラムによってリセットされるまで続きます。
TCP は、入力処理中に、常にシャドウ・データ項目の値を更新して、入力状態またはストア状態が正し
く反映されるようにします。これにより、あるフィールドに対して行われた最後の入力オペレーションの
ステータスを正確に知ることができます。このシャドウ情報は、ある条件が成立したときに存在するフィー
ルドを処理するときに重要な情報となります。
入力処理が行われるとき、シャドウ・データ項目は、2、3、4、5、6、または 7 の値を取ることができます。
□ シャドウ・データ項目 = 2―フィールドは、入力されて存在しているが、編集処理が失敗したため、ス
トアさていない。
□ シャドウ・データ項目 = 4―フィールドはストアされたが、データは物理的に入力されたものではない。
TCP がパッド・データを生成して、このフィールドにストアした。
□ シャドウ・データ項目 = 6―フィールドは、入力され、編集処理が終了し、ストアされた。
入力オペレーションが終了した後におけるシャドウ・データ項目の値は、入力オペレーション時の値に
選択状態の値 (0 または 1) を加えた値になります。表 5-9 に、選択状態の値が 0 の場合と 1 の場合に分け
て、シャドウ・データ項目がそれぞれの状態で取り得る値を示します。
5-66
426750-001J
第 5 章 DATA DIVISION ( データ部 )
表 5-9 FIELD STATUS 句のシャドウ・データ項目の値
シャドウ・データ項目の値
( 選択状態 = 0)
シャドウ・データ項目の値
( 選択状態 = 1)
状態
入力時
出力時
入力時
出力時
入力
2
該当なし
3
該当なし
生成およびストア
4
該当なし
5
該当なし
入力およびストア
6
該当なし
7
該当なし
選択
該当なし
0
該当なし
1
フィールドは入力されなかったが、フィールドを物理的にストアする必要があるときは ( シャドウ・デー
タ項目の値 = 4 または 5)、TCP がパッド・データを生成します。これにより、そのフィールドに以前スト
アされていた値をアプリケーションが参照できないようにします。
対象となるワーキング・ストレージ・データ項目にストアするために生成されるパッド・データは、デー
タ項目が非数字項目のときは空白で、データ項目が数字項目のときはゼロ (COMP データの場合は 2 進数、
他の場合は ASCII) です。
TCP は、次の場合にフィールドが入力されなかったと判断し、パッド・データを生成します。
□ 条件が成立したときに存在するフィールドであることがメッセージで指定されていたが、その条件が成
立しなかったため、TCP がそのフィールドは存在していないと判断した場合
□ メッセージ・デリミタの使用が指定されている、いないにかかわらずフィールド・デリミタの使用が
メッセージによって指定されていたときに、TCP が次のように使用されているデリミタを発見した場合
●
2 個のデリミタが連続している (2 個のフィールド・デリミタが連続しているかまたはフィールド・
デリミタの後にメッセージ・デリミタが続いている )
●
フィールド・デリミタがメッセージの最後の文字として使用されており、しかも、対応するフィー
ルドがメッセージの最後のフィールドになっている
選択状態は、フィールドに出力を行うときにだけ効力がある状態です。選択状態にすることによって、
そのフィールドに対する PRESENT IF 処理の結果を無効にすることができます。この操作は、例外的な操
作であり、PRESENT IF 処理の結果、フィールドが存在しないことがわかっているにもかかわらず、フィー
ルドを出力する必要があるときに使用します。
選択状態には、1 または 0 の値が可能です。
□ 選択状態 = 1―TCP は、無条件に、フィールドを出力します。つまり、フィールドは、そのフィールド
に対する PRESENT IF 処理の結果とは無関係に、出力されます。
□ 選択状態 = 0―フィールドを出力するかどうかは、そのフィールドに対する PRESENT IF 処理の結果に
よって決められます。
表 5-10 は、PRESENT IF データ項目の値とシャドウ・データ項目 (FIELD STATUS 句で指定 ) に示され
る選択状態の値の論理関係を示しています。
426750-001J
5-67
第 5 章 DATA DIVISION ( データ部 )
表 5-10 PRESENT IF と選択状態の関係
PRESENT IF および FIELD STATUS
値
意味
TCP の処理
PRESENT IF data-item
1
フィールドが存在する
フィールドを出力する
FIELD STATUS shadow-data-
1
フィールドを選択して、
出力する
PRESENT IF data-item
0
フィールドは存在しない
FIELD STATUS shadow-data-
1
フィールドを選択して、
出力する
PRESENT IF data-item
1
フィールドが存在する
FIELD STATUS shadow-data-
0
選択状態は意味を持たな
い
PRESENT IF data-item
0
フィールドは存在しない
FIELD STATUS shadow-data-
0
選択状態は意味を持たな
い
item
item
item
item
フィールドを出力する
フィールドを出力する
フィールドを出力しない
FIELD STATUS 句の data-item-1 のフィールド・エラー部分 ( フィールド・エラー・データ項目 )
は、指定された MESSAGE SECTION フィールドの編集エラーを TCP が報告することを可能にします。こ
こでは、エラー処理について、フィールド・エラー・データ項目を処理する方法を説明します。
ワーキング・ストレージに対するメッセージの入力オペレーションまたは出力オペレーションで発生す
るすべてのエラーを検出するには、ON ERROR 句を使用します。また、特定の編集エラーを検出するに
は、FIELD STATUS 句を使用します。
メッセージの入力オペレーションまたは出力オペレーションでエラーが検出されると、ON ERROR 句が
実 行 さ れ ま す。RECEIVE UNSOLICITED MESSAGE ステートメント、REPLY TO UNSOLICITED
MESSAGE ステートメント、SEND MESSAGE ステートメント、および TRANSFORM ステートメントで
の ON ERROR 句の処理は、CALL ステートメントおよび SEND ステートメントでの ON ERROR 句の処
理と同じです。
ON ERROR 句の処理の一環として、TERMINATION-STATUS 特殊レジスタが 5 または 15 になってい
ないかをチェックし、編集エラーが発生したかどうかを調べる必要があります (5 は入力フェーズを示し、
15 は出力フェーズを示します )。TERMINATION-STATUS 特殊レジスタが 5 または 15 になっているとき
は、フィールド・エラー・データ項目を処理して、どのフィールドで編集エラーが発生したかを判定する
ことができます。
フィールド・エラー・データ項目がどのメッセージ・テンプレートに関連しているかを知る方法は、そ
のメッセージが入力メッセージであるか出力メッセージであるかによって異なります。
入力メッセージの場合は、エラーが発生したときに YIELDS リストのどのメッセージ・テンプレートが
処理中であったかを知る必要があります。
YIELDS リストでのメッセージ・テンプレートの相対位置は、TERMINATION-SUBSTATUS 特殊レジ
スタに返されます。
YIELDS リストにおけるメッセージ・テンプレートの相対位置が、TERMINATION-STATUS 特殊レジ
スタではなく、TERMINATION-SUBSTATUS 特殊レジスタに返されるのは、ON ERROR によるエラー処
理が行われているため、TERMINATION-STATUS 特殊レジスタにはエラー番号が入るからです。正常の
場合、( つまり、ON ERROR によるエラー処理が行われていない場合 ) には、YIELDS リストでのメッセー
ジ・テンプレートの相対位置は、TERMINATION-STATUS 特殊レジスタに返されます。
5-68
426750-001J
第 5 章 DATA DIVISION ( データ部 )
次の SEND MESSAGE ステートメントの例では、編集エラーのために ON ERROR 句が実行された場合
の、入力メッセージの相対位置を決める YIELDS 句が示されています。
SEND MESSAGE MSG-3-OUT-M-1
REPLY CODE FIELD IS WS-MSG-4-IN-FROM-MSG-4-IN-CODE
CODE 1 YIELDS MSG-3-IN,
CODE 2 YIELDS MSG-4-IN,
CODE 3 YIELDS MSG-3-IN,
CODE 4 YIELDS MSG-4-IN,
ON ERROR PERFORM IDS-SERVER-SEND-ERROR.
次の PERFORM ステートメントの例では、TERMINATION- SUBSTATUS 特殊レジスタをどのように使
用すれば、処理するべきメッセージ・テンプレートを知ることができるかが示されています。
IDS-SERVER-SEND-ERROR.
PERFORM ONE OF
PROC-MSG-3-IN-EDIT-STATUS,
PROC-MSG-4-IN-EDIT-STATUS,
PROC-MSG-3-IN-EDIT-STATUS,
PROC-MSG-4-IN-EDIT-STATUS,
DEPENDING ON TERMINATION-SUBSTATUS.
次の表は、どの入力メッセージがどの TERMINATION-SUBSTATUS に対応しているかを示しています。
メッセージ・テンプレート
TERMINATION-SUBSTATUS
YIELDS MSG-3-IN
1
YIELDS MSG-4-IN
2
YIELDS MSG-3-IN
3
YIELDS MSG-4-IN
4
出力メッセージでは、1 つのメッセージ・テンプレートしか指定することができないので、FIELD
STATUS データ項目のどのセットが使用されているかは、知ることができます。
表 5-11 に、フィールド・エラー・データ項目で発見される可能性のあるエラー番号を示します。
表 5-11 SEND MESSAGE の処理中に検出される可能性のある編集 ADVISORY
エラー番号 ( 1 / 2 )
426750-001J
エラー番号
意味
インプット
アウトプット
4
メッセージが短かすぎる
○
×
6
メッセージがフィールドより長い
○
×
7
英数字の編集に挿入文字が必要であった
○
×
8
英数字の編集に数字が必要であった
○
×
9
英数字の編集に空白または英字が必要であった
○
×
10
数字ソースが PICTURE に一致しない
○
○
11
変換中に数値がオーバフローした
○
○
5-69
第 5 章 DATA DIVISION ( データ部 )
表 5-11 SEND MESSAGE の処理中に検出される可能性のある編集 ADVISORY
エラー番号 ( 2 / 2 )
エラー番号
意味
インプット
アウトプット
16
フィールドが存在しない
○
×
MESSAGE-DELIMITER 句
MESSAGE-DELIMITER 句は、メッセージの終了を識別するために使用される文字 ( メッセージ・デリ
ミタ ) を定義します。MESSAGE-DELIMITER 句を使用することによって、ユーザのプログラムで使用す
るメッセージ・デリミタを定義することができます。この句の指定を省略すると、デフォルトとしてメッ
セージ・デリミタには二重スラッシュ (//) が使用されます。
MESSAGE-DELIMITER 句には、メッセージ・デリミタの処理を無効 (OFF) にする機能もあります。メッ
セージ・フォーマットの中でメッセージ・デリミタの使用が予定されていないときは、メッセージ・デリ
ミタの処理を OFF にすることができます。
MESSAGE-DELIMITER [ IS ] { char-code [ , char-code ] }
{ OFF
}
char-code
引用符で囲まれた任意の 1 個の ASCII 文字または 0 ~ 255 の範囲の 1 つの整数です。この数は、
ASCII 文字または EBCDIC 文字の 10 進表現とします。例えば、80 は、ASCII 文字の P、または
EBCDIC 文字の & を表します。
OFF
メッセージ・レベルでのデリミタの処理を無効にします。MESSAGE-DELIMITER 句に関しては、
次の規則が適用されます。
□ メッセージ・デリミタを使用するときは、MESSAGE FORMAT 句で FIXED-DELIMITED また
は DELIMITED を指定しなければなりません。
□ MESSAGE-DELIMITER 句を省略してもメッセージ・デリミタの処理は有効であり、デフォル
トとしてメッセージ・デリミタには二重スラッシュ (//) が使用されます。
□ メッセージ・レベルでデータ・ストリームを処理するときは、MESSAGE-DELIMITER 句と共
に RESULTING COUNT 句を指定することができます。詳細については、RESULTING COUNT
句の説明を参照して下さい。
5-70
426750-001J
第 5 章 DATA DIVISION ( データ部 )
MESSAGE FORMAT 句
MESSAGE FORMAT 句は、メッセージ・レコード全体にわたるデータのフォーマットを定義します。
MESSAGE FORMAT 句は、レベル 01 で指定しなければなりません。
MESSAGE FORMAT [ IS ] {
{
{
{
{
FIXED
DELIMITED
FIXED-DELIMITED
VARYING1
VARYING2
}
}
}
}
}
FIXED
メッセージが固定長であることを示します。これは、デフォルトのフォーマットです。
DELIMITED
メッセージを可変長フィールドで構成し、各フィールドの終わりに指定されたデリミタを置くこと
を示します。
FIXED-DELIMITED
メッセージを固定長フィールドで構成し、各フィールドの終わりに指定されたデリミタを置くこと
を示します。
VARYING1
メッセージを可変長とし、メッセージを実際に構成する文字 ( バイト ) の数を 1 バイトのカウント・
フィールドで指定することを示します。文字数としてゼロを指定すると、メッセージは空になりま
す。VARYING1 で指定できるメッセージの最大数は、255 バイトです。
VARYING2
メッセージを可変長とし、メッセージを実際に構成する文字 ( バイト ) の数を 2 バイトのカウント・
フィールドで指定することを示します。文字数としてゼロを指定すると、メッセージは空になりま
す。
MESSAGE FORMAT 句に関しては、次の規則が適用されます。
□ MESSAGE FORMAT 句を省略すると、メッセージ・フォーマットは FIXED になります。
□ 選択すべきフォーマットの種類は、インテリジェント・デバイスの種類によって決まります。例えば、
固定長メッセージしか使えないパーソナル・コンピュータもあれば、可変長メッセージしか使えないデ
バイスもあります。
□ 可変長メッセージの場合、メッセージの最大長をそのメッセージの PICTURE 句で指定しなければなり
ません。
●
単一フィールドのメッセージでは、レベル 01 のデータ項目だけが存在します。この場合、レベル 01
のデータ項目の PICTURE 句にメッセージの最大長を指定します。
●
複数フィールドで構成されるメッセージでは、各フィールドに PICTURE 句が記述されます。メッ
セージの最大長は、各フィールドの長さの合計になります。複数フィールドで構成されるメッセー
ジの場合、レベル 01 のデータ項目に PICTURE 句を記述することはできません。
426750-001J
5-71
第 5 章 DATA DIVISION ( データ部 )
□ FIXED または FIXED-DELIMITED フォーマットでは、メッセージの各フィールドは宣言された長さに
固定されるので、メッセージ全体も固定長になります。メッセージ長は、次のようになります。
●
FIXED フォーマットでは、メッセージ長は個々のフィールドの長さの合計になります。
●
FIXED-DELIMITED では、メッセージ長は個々のフィールドの長さの合計に下記のデリミタの長さ
を加えた長さになります。
●
そのメッセージの FIELD-DELIMITER 句が OFF ではないときは、フィールド・デリミタ 1 個につき
1 バイト
●
そのメッセージの MESSAGE-DELIMITER 句が OFF ではないときは、デリミッタの大きさに応じ
て、メッセージ・デリミタ 1 個につき 1 バイトまたは 2 バイト
□ VARYING1 または VARYING2 フォーマットでは、TCP はメッセージを実際に構成するデータ文字の
数を記録するカウントを維持します。
●
入力メッセージでは、TCP はメッセージの前に 1 バイトまたは 2 バイトのカウント・フィールドが
存在していると考え、そのフィールドを取り去ります。
●
出力メッセージでは、TCP はメッセージの前に 1 バイトまたは 2 バイトのカウント・フィールドを
付加します。末尾の空白は切り詰めされます。
□ DELIMITED フォーマットでは、各フィールドの長さは、ゼロから宣言された長さまでの範囲で変化し
ます。FIELD-DELIMITER 句で OFF が指定されていないときは、各フィールドは 1 文字のフィールド・
デリミタで分離されます。MESSAGE-DELIMITER 句が OFF で指定されていないときは、オプション
としてメッセージの終わりに 1 文字または 2 文字のメッセージ・デリミタが置かれます。
●
入力メッセージでは、FIELD-DELIMITER 句および MESSAGE-DELIMITER 句での宣言に基づい
て、TCP がメッセージを分解します。
●
メッセージの最後のフィールドを除いて、フィールドの境界は、フィールド・デリミタによって
(FIELD-DELIMITER 句が OFF のときは、フィールドの宣言された長さによって ) 示されます。
●
メッセージの最後のフィールドは、メッセージ・デリミタによって (MESSAGE-DELIMITER 句が
OFF のときは、メッセージの物理的な終わりによって ) 示されます。
●
出力メッセージでは、TCP は、メッセージの宣言されたフィールドからメッセージを組み立てます。
フ ィ ー ル ド の 実 際 の 長 さ は、R E S U L T I N G C O U N T 句によって指定することができま す。
RESULTING COUNT 句が省略されると、TCP は、フィールドの宣言された長さを使用します。末
尾の空白は切り詰められます。
●
FIELD-DELIMITER 句と MESSAGE-DELIMITER 句で無効 (OFF) になっていないときは、TCP は
フィールドの境界をフィールド・デリミタで示し、メッセージの終わりをメッセージ・デリミタで
示します。
□ DELIMITED または FIXED-DELIMITED メッセージ・フォーマットでは、FIELD-DELIMITERS が OFF
のときにだけ PIC 1 データ・タイプが認められます。この制限に違反しても、SCREEN COBOL はエ
ラーとして報告しません。
5-72
426750-001J
第 5 章 DATA DIVISION ( データ部 )
例1
メッセージ MSG1 は、2 文字の固定長になります。
01
MSG1 PIC X(2) MESSAGE FORMAT IS FIXED ...
このコーディング例は、次のように書くこともできます。
01
MSG1 PIC X(2) ...
MESSAGE FORMAT 句を省略すると、デフォルトとして固定長フォーマットが使用されます。
例2
メッセージ MSG2 は、5 文字以内のデータで構成されます。このメッセージが実際には何バイトで構成
されているかは、1 バイトのカウント・フィールドに示されます。カウント・フィールドは、PICTURE 句
で指定されたメッセージの長さには含まれません。
01
MSG2
PIC X(5) MESSAGE FORMAT IS VARYING1 ...
例3
メッセージ MSG3 は、8 文字以内のデータで構成されます。このメッセージが実際には何バイトで構成
されているかは、2 バイトのカウント・フィールドに示されます。カウント・フィールドは、PICTURE 句
で指定されたメッセージの長さには含まれません。
01
MSG3
PIC X(8) MESSAGE FORMAT IS VARYING2 ...
例4
次に、メッセージ・フォーマットを DELIMITED とし、メッセージ処理にフィールド・デリミタを使用
する例を示します。
WORKING-STORAGE SECTION.
01 WS-MSG4-RECORD-1.
02 WS-LENGTH-1
PIC 9(4) COMP.
02 WS-RECORD-1-GROUP.
03 WS-RECORD-1
PIC X(1)
OCCURS 1 TO 16 TIMES
DEPENDING ON WS-LENGTH-1.
01 WS-MSG4-RECORD-2.
02 WS-LENGTH-2
PIC 9(4) COMP.
02 WS-RECORD-2-GROUP.
03 WS-RECORD-2
PIC X(1)
OCCURS 1 TO 16 TIMES
DEPENDING ON WS-LENGTH-2.
MESSAGE SECTION.
01 MSG4 MESSAGE FORMAT IS DELIMITED
MESSAGE-DELIMITER IS OFF
FIELD-DELIMITER IS ":".
05 MS-RECORD-1
PIC X(16) USING WS-RECORD-1
RESULTING COUNT IS WS-LENGTH-1.
05 MS-RECORD-2
PIC X(16) USING WS-RECORD-2
RESULTING COUNT IS WS-LENGTH-2.
426750-001J
5-73
第 5 章 DATA DIVISION ( データ部 )
メッセージ MSG4 は 2 つのフィールドで構成され、それぞれのフィールドには 16 文字以内のデータを
収容することができます。各フィールドの実際の長さは、バイト単位でそれぞれワーキング・ストレージ
上のロケーション WS-LENGTH-1 および WS-LENGTH-2 にストア ( 記憶 ) されます。フィールド・デリミ
タは、ワーキング・ストレージのターゲット・ロケーション WS-RECORD-1 にも WS-RECORD-2 にもス
トアされません。フィールド・デリミタは、RESULTING COUNT 句の値に影響を与えません。
例5
次に、メッセージ・フォーマットを DELIMITED としていますが、デリミタを意識しないでメッセージ
全体を入力する例を示します。
WORKING-STORAGE SECTION.
01 WS-MSG5.
05 WS-RECORD-LENGTH
05 WS-DATA-GROUP.
10 WS-DATA
PIC 9(4) COMP.
PIC X(1)
OCCURS 1 TO 1000 TIMES
DEPENDING ON WS-RECORD-LENGTH.
MESSAGE SECTION.
01 MSG5
MESSAGE FORMAT IS DELIMITED
MESSAGE-DELIMITER OFF
FIELD-DELIMITER OFF.
05 MS-RECORD
PIC X(1000) USING WS-DATA
RESULTING COUNT IS WS-RECORD-LENGTH.
メッセージ MSG5 は、1000 文字以内のデータで構成されます。フィールドの実際の長さは、バイト単
位でワーキング・ストレージ上のロケーション WS-RECORD-LENGTH に記憶されます。
PROCEDURE DIVISION においては、オカレンスの実際の数として WS-RECORD-LENGTH の値を使用
して、WS-DATA-OCCURS を参照します。
OCCURS 句および OCCURS DEPENDING ON 句
OCCURS 句および OCCURS DEPENDING ON 句は、メッセージにおける固定長フィールドまたは可変
長フィールドの反復を指定します。OCCURS 句および OCCURS DEPENDING ON 句は、グループ項目ま
たはフィールド・レベルで指定することができます。
OCCURS 句は、3 レベルまで入れ子 ( ネスト ) にすることができます。OCCURS DEPENDING ON 句は
入れ子にすることはできませんが、OCCURS DEPENDING ON 句の中に OCCURS 句を入れ子にすること
ができます。
1 つのメッセージ内で OCCURS 句および OCCURS DEPENDING ON 句の使用回数に制限はありません。
OCCURS { num-lit-1 TIMES
{
{ num-lit-2 TO num-lit-3 TIMES
{
DEPENDING [ON] num-name-1
5-74
}
}
}
}
426750-001J
第 5 章 DATA DIVISION ( データ部 )
num-lit-1
オカレンスの数を示します。num-lit-1 は、1 以上の正の整数リテラルです。
num-lit-2
オカレンスの最小数を示します。num-lit-2 は、0 以上の正の整数リテラルです。
num-lit-3
オカレンスの最大数を示します。num-lit-3 は、num-lit-2 より大きい正の整数リテラルで
す。
num-name-1
num-name-1 は、WORKING-STORAGE SECTION または LINKAGE SECTION で指定された基
本数字データ項目であり、グループまたはフィールドを構成するデータ項目の反復 ( オカレンス ) 回
数を指定します。
OCCURS 句および OCCURS DEPENDING ON 句には、次の規則が適用されます。
□ メッセージ・フィールドを処理するときには、コンパイラは最小境界チェックを行いません。
□ 特定のフィールドを可変の回数だけ反復するメッセージを処理するときは、そのオカレンスの数 ( 反復
回数 ) が前もってプログラムで指定されていなければなりません。したがって、以下の条件に適合する
場合にだけ、OCCURS DEPENDING ON 句を MESSAGE SECTION に使用することができます。
●
OCCURS DEPENDING ON 句は、メッセージを出力するための MESSAGE SECTION でだけ使用す
ることができます。メッセージを入力するための MESSAGE SECTION で使用することはできませ
ん。
●
メッセージは、MESSAGE SECTION で MESSAGE FORMAT IS DELIMITED を指定して定義しな
ければなりません。
●
出力させたいフィールドのオカレンスの数を WORKING-STORAGE SECTION の基本データ項目、
つまり num-name-1 で宣言しておかなければなりません。例:
WORKING-STORAGE SECTION.
01 WS-Message-Out
05 WS-Message-Length
05 WS-Message-Data
PIC 9(4) COMP.
PIC X OCCURS 1 TO 1024 TIMES
DEPENDING ON WS-Message-Length.
MESSAGE SECTION.
01 Message-Out
426750-001J
PIC X
FROM WS-Message-Data
OCCURS 1 TO 1024 TIMES
DEPENDING ON WS-Message-Length.
5-75
第 5 章 DATA DIVISION ( データ部 )
備考:可変長メッセージの送信は、RESULTING COUNT 句を使用して行うこともできます。この句を使用する方
が処理時間が短くなります。次に示す例は、上記の例と同じ処理を行いますが、実行速度は上記の例の 3 倍
です。
WORKING-STORAGE SECTION.
01 WS-Message-Length
01 WS-Message-Out
05 WS-Message-Data
PIC 9(4) COMP.
PIC X OCCURS 1 TO 1024 TIMES
DEPENDING ON WS-Message-Length.
MESSAGE SECTION.
01 Message-Out
05 Message-Data
MESSAGE FORMAT IS DELIMITED
MESSAGE DELIMITER IS OFF
FIELD DELIMITER IS OFF.
PIC X(1024)
RESULTING COUNT IS
WS-Message-Length
FROM WS-Message-Out.
□ OCCURS 句を記述した MESSAGE SECTION の項目が、TO、FROM、または USING 句によって、
WORKING-STORAGE SECTION の項目に関連付けられているときには、その WORKING-STORAGE
SECTION の項目にも、以下の条件にしたがって OCCURS 句または OCCURS DEPENDING ON 句を指
定しなければなりません。
●
WORKING-STORAGE SECTION 項目の OCCURS 句または OCCURS DEPENDING ON 句で指定す
るオカレンスの数は、MESSAGE SECTION の OCCURS 句または OCCURS DEPENDING ON 句で
指定するオカレンスの数以上でなければなりません。
●
MESSAGE SECTION で OCCURS 句が入れ子にされているときは、WORKING-STORAGE
SECTION でも、同じ構造で OCCURS 句を入れ子にしなければなりません。
□ WORKING-STORAGE SECTION でグループ項目またはフィールド項目を定義するために OCCURS
DEPENDING ON 句を記述した場合は、そのグループ項目またはフィールド項目はレコードの最後に置
かなければなりません。
□ MESSAGE SECTION のメッセージ記述項が複数の OCCURS DEPENDING ON 句を含むときは、その
メッセージ記述項は、
それぞれが 1 つの OCCURS DEPENDING ON 句を含んでいる複数の WORKING-
STORAGE SECTION のレベル 01 レコードに関連付けされていなければなりません。例:
WORKING-STORAGE SECTION.
01 WS-Msg4-Record-1.
05 WS-Length-1
05 WS-Record-1
01 WS-Msg4-Record-2.
05 WS-Length-2
05 WS-Record-2
5-76
PIC 9(4) COMP.
PIC X
OCCURS 1 TO 10 TIMES
DEPENDING ON WS-Length-1.
PIC 9(4) COMP.
PIC X
OCCURS 1 TO 10 TIMES
DEPENDING ON WS-Length-2.
426750-001J
第 5 章 DATA DIVISION ( データ部 )
MESSAGE SECTION.
01 Msg4-Out.
05 MS-Record-1
05
MS-Record-2
PIC X
FROM WS-Record-1
OCCURS 1 TO 10 TIMES
DEPENDING ON WS-Length-1.
PIC X
FROM WS-Record-2
OCCURS 1 TO 10 TIMES
DEPENDING ON WS-Length-2.
PICTURE 句
PICTURE 句は、メッセージ・フィールドの長さ、データ・タイプおよび編集フォーマットを定義します。
{ PIC
} [ IS ] character-string
{ PICTURE }
character-string
フィールドのカテゴリを決定し、そのフィールドに割り当てることのできる値に関する制約を定め、
編集オペレーションを定義する記号です。
character-string は、「データ記述項」の項で説明した形式と同じです。ただし、以下の例
外があります。
□ 数字編集形式および英数字編集形式が可能です。
□ ビット・フィールドが可能です。
メッセージの大きさは、最大 32,000 バイトまで設定することができます。
備考:各メッセージ・フィールドの記述には、必ず PICTURE 句を含めなければなりません。
PICTURE 句に関しては、次の規則が適用されます。
□
character-string には、最大 30 個の記号まで認められます。同じ PICTURE 記号を繰り返すと
きは、その PICTURE 記号の次に括弧で囲んだ符号なしの整数を書いて、繰り返しの回数を示すことが
できます。例えば、次に示す 2 つの PICTURE 句は、同じ意味を持っています。
PIC 9(5)
PIC 99999.
□
character-string には最大 30 文字というの長さ制限がありますが、この繰り返し技法を使う
と、30 文字より長い項目を定義することができます。
□ 表 5-12 は、メッセージ・フィールドの記述に使用することができる PICTURE 記号を示しています。
426750-001J
5-77
第 5 章 DATA DIVISION ( データ部 )
表 5-12 メッセージ・フィールド ( メッセージ・データ項目 ) の記述に使用できる PICTURE
記号とその機能 ( 1 / 2 )
5-78
記号
機能
A
英字または空白文字のための文字位置を表します。英字または空白あるいは PIC 1 からの
データ・ビット以外の文字の場合は、エラーのフラグが設定されます。
B
入力ストリング内の空白を挿入すべき文字位置を表します。この空白は、関連付けされた
データ項目へ変換されるときに削除されます。末尾の空白は変換の前に取り除かれてしま
うため、この記号を数字 PICTURE の最右端の文字として使用してはいけません。
P
暗黙的な小数点 ( 値はゼロ ) を示し、数字結果に小数点を割り当てるときに使用します。
次の V 記号の説明を参照して下さい。
V
非整数項目の想定した小数点位置を示します。1つの PICTURE ストリングでは、1 つの
V だけを使用することができます。また、同じ PICTURE ストリングで、明示的な小数点
と共に V を使用することはできません。この記号は、データ項目の大きさにカウントされ
ません。
X
数値表現で 0 から 255 までの範囲の任意の ASCII 文字を表します。文字列にある各 X は、
メッセージの大きさを計算するときに、1 文字としてカウントされます。
Z
数字にすべき文字位置、あるいはこの記号の左側に数字がない場合には空白にすべき文字
位置を表します。一連の Z 記号の 1 つである場合にだけ、この記号は編集の際に空白に置
き換えられます。変換の目的では、空白はゼロと同じに扱われます。
1
この記号 1 つで 1 つのビットを表します。反復係数 n と共に使用した場合は、このフィー
ルドは n ビットで構成されます。
9
数字にすべき文字位置を表します。
0
ゼロを表示すべき文字位置を表します。このゼロは、関連付けされたデータ項目への変換
の際に削除されます。
/
スラッシュ (/) を表示すべき文字位置を表します。このスラッシュは、関連付けされたデー
タ項目への変換の際に削除されます。
,
この記号の左側に数字があるときに、コンマ (,) を表示すべき文字位置を表します。この記
号の左側に数字がない場合は、空白または他の浮動挿入文字に置き換えられます。このコ
ンマは、関連付けされたデータ項目への変換の際に削除されます。
.
小数点として使用されるピリオドを表示すべき文字位置を表します。この記号は、関連付
けされたデータ項目への変換の際に削除されます。
+
正符号または負符号を表示すべき文字位置を表します。複数の正符号は、左側に空白、次
に 1 つの正符号または負符号、そして数字を入れるべき文字位置を示します。この記号は、
複数の正符号の内の 1 つである場合に限り、編集の際に空白に置き換えられます。
-
空白または負符号を表示すべき文字位置を表します。複数の負符号は、左側に空白、次に
1 つのオプションの負符号、そして数字を入れるべき文字位置を示します。この記号は、
複数の負符号の内の 1 つである場合に限り、編集の際に空白に置き換えられます。
426750-001J
第 5 章 DATA DIVISION ( データ部 )
表 5-12 メッセージ・フィールド ( メッセージ・データ項目 ) の記述に使用できる PICTURE
記号とその機能 ( 2 / 2 )
記号
機能
CR
文字 CR または空白を入れるべき 2 つの文字位置を表します。値が負でない場合は、CR
は編集の際に空白に置き換えられます。
DB
文字 DB または空白を入れるべき 2 つの文字位置を表します。値が負でなければ、DB は
編集の際に空白に置き換えられます。
*
数字またはアスタリスク (*) を入れるべき文字位置を表します。数字を入れる場合は、す
べてのアスタリスクの左に書かなければなりません。
$
ドル記号を表示すべき文字位置を表します。複数のドル記号は、左側に空白、次に 1 つの
ドル記号、そして数字を入れるべき文字位置を示します。この記号は、複数のドル記号の
内の 1 つである場合に限り、編集の際に空白に置き換えられます。
PIC 1 フォーマットを使用すると、1 ビット・フィールドを指定することができるほか、1 バイト以外の
文字長を必要とするコードによるデータ処理が可能になります。例えば、4 ビットの文字長を必要とする
パック 10 進コード、6 ビットの文字長を必要とする 2 進化 10 進コード (BCD) があります。次に、PIC 1
フォーマットの例を示します。
PIC
PIC
PIC
PIC
1.
1(6).
1(8).
1(64).
1 つの 2 進数 (1 ビット・フィールド )
合計で 6 ビット (BCD 文字 )
合計で 8 ビット (1 バイト・フィールド )
64 ビット (8 バイト ) で 1 つのフィールドを形成
このフォーマットを使用すると、メッセージ・データ・ストリームをビット単位に分解することができ
るので、メッセージ内でビット・マップを処理するときに役に立ちます。
PIC 1 フィールドを指定すると、フル・バイトの整数倍以外のフィールド長の指定が可能になるため、
データのバイト境界合わせが必要になってきます。
PIC 1 フィールドを使用するときには、MESSAGE SECTION をバイト型構造にしておくことをお勧めし
ます。例:
MESSAGE SECTION.
01
426750-001J
MS-ATM-Record
05 MS-Bit-Map.
10 MS-Bit-1-Savings
PIC 1(1)
USING WS-Bit-1.
10 MS-Bit-2-Checking
PIC 1(1)
USING WS-Bit-2.
10 MS-Bit-3-Credit-Card
PIC 1(1)
USING WS-Bit-3.
10 FILLER
PIC 1(5).
05 MS-Savings.
10 Savings-Data
PIC X(15)
TO WS-Savings-Data
PRESENT IF MS-Bit-1-Savings
FIELD STATUS IS WS-Field-Status-Savings.
5-79
第 5 章 DATA DIVISION ( データ部 )
また、バイト・サイズ・フィールドの直前にバイト・サイズ以外のサイズを持つフィールドを指定する
ことも可能です。例:
MESSAGE SECTION.
01 MS-Message.
05 Field-1
05 Field-2
PIC 1.
PIC X.
上記のメッセージの論理長は 16 ビットではなく、9 ビットです。これは、1 ビット・フィールドと後続
のバイト・フィールドの間に充填文字の詰め込み (padding) が行われないからです。ただし、メッセージの
物理長 ( メッセージの実際の長さ ) は、データ通信プロトコルによってバイト境界に合わせられます。TCP
は 2 個のバイトを受け取りますが、最初の 9 ビットだけを処理します。したがって、メッセージ・フィー
ルドを次のように宣言する必要があります。
MESSAGE SECTION.
01 MS-Message.
05 Field-1
05 Field-2
05 FILLER
PIC 1.
PIC X.
PIC 1(7).
上記の 7 ビットはメッセージの実際の長さを 16 ビットにするための詰め込みビットです。これらのビッ
トは、処理の対象とはなりませんが、必要であるため、FILLER として宣言してあります。
項目の大きさ
メッセージ・フィールドの大きさは、PICTURE 句の文字列に指定された記号 (PICTURE 記号 ) によっ
て決まります。PICTURE 記号の内、DB および CR は、それぞれ 2 文字位置と数えます。V および P は、
文字位置としてはカウントされません。PICTURE 記号 1 は、1 ビットを表します。他のすべての PICTURE
記号は、1 文字位置とカウントされます。
数字データおよび英数字データの入力編集規則
入力編集処理は、次に説明するように、入力項目のクラスによって異なります。
1. 英数字入力―PICTURE 句で指定された文字は、入力データ内の文字に対して左基準で一致しなければ
なりません。入力文字数が少なくて、PICTURE 内に残りの部分がある場合は、その部分は無視されます。
2. 数字入力―先頭および末尾の空白および充填 (FILL) 文字は、最初に入力データ・ストリングから取り
除かれます。こうしてから、PICTURE 内の文字が右基準で照合されます。不一致がある場合は、デー
タはエラーとされます。
PICTURE 記号の内、Z、コンマ、複数の正/負符号、CR、DB、および複数のドル記号は、特殊であり、
入力データ・ストリングでは、省略しても良い場合があります。PICTURE 句で指定されるこれらの
PICTURE 記号が入力文字と一致しない場合、または、入力データ・ストリング内の該当する場所が空白で
ある場合は、データはエラーとされずに、その PICTURE 記号は空白に置き換えられ、その次の PICTURE
記号と入力文字が照合されます。
5-80
426750-001J
第 5 章 DATA DIVISION ( データ部 )
PIC 1(n) フィールド ( ビット・フィールド ) のフォーマット変換規則
MESSAGE SECTION で定義された PIC 1(n) フィールド ( ビット・フィールド ) に対して入力または出
力オペレーションを行うときには、次のフォーマット変換規則が適用されます。
どのようなフォーマット変換が行われるかは、その PIC フィールドに関連付けされた WORKINGSTORAGE SECTION の項目のタイプによって異なります。
入力オペレーション時のフォーマット変換
□ MESSAGE SECTION の項目が送出し側になり、WORKING-STORAGE SECTION の項目 ( ワーキン
グ・ストレージ項目 ) が受取り側になります。
□ ワーキング・ストレージ項目で PIC 9 COMP が指定されていれば、MESSAGE SECTION の PIC 1(n) の
データ・ビットは、ワーキング・ストレージ項目の下位ビット位置に転記されます。上位ビット位置
は、必要に応じて、ゼロが充填されるか、切り詰められます。
□ ワーキング・ストレージ項目で PIC 9 が指定されていれば、MESSAGE SECTION の PIC 1(n) フィール
ドの 2 進数は 10 進表現の ASCII 文字に変換されます。ワーキング・ストレージ項目に変換後の数値を
収容できないときは、オーバフローのエラーが発生し、それと共に、リクエスタ・ブロックがサスペン
ドされるか、または、ON ERROR が起動されます。
□ ワーキング・ストレージ項目で PIC X が指定されていれば、MESSAGE SECTION の PIC 1(n) のデー
タ・ビットは、ワーキング・ストレージ項目の上位ビット位置に転記されます。下位ビット位置は、必
要に応じて、ゼロが充填されるか、切り詰められます。
□ ワーキング・ストレージ項目で PIC A が指定されていれば、コンパイラはエラーを検出して、フラグを
設定します。PIC A フィールドは、ASCII 文字の A ~ Z、a ~ z、または空白を入れるように定義され
たフィールドです。
□ 入力オペレーション時の切り詰め規則
●
切り詰め処理は、受取り側が送出し側よりも短い場合に行われます。
●
受取り側のワーキング・ストレージ項目で PIC X が指定されているときは、そのワーキング・スト
レージ項目の下位ビットから切り詰められます。切り詰めが行われたことは、アプリケーション・
プログラムには通知されません。
●
受取り側のワーキング・ストレージ項目でPIC 9 COMPが指定され、その項目がMESSAGE SECTION
の項目より短い場合は、TCP がリクエスタ・プログラムをサスペンドするか、または ON ERROR
処理を起動することによって、オーバフローが発生したことを示します。
□ 入力オペレーション時の充填処理規則
●
充填処理は、受取り側が送出し側よりも長い場合に行われます。
●
受取り側のワーキング・ストレージ項目で PIC X が指定されているときは、そのフィールドは、下
位ビットに NULL (2 進数ゼロ ) が充填されます。
●
受取り側のワーキング・ストレージ項目で PIC 9 が指定されているときは、そのフィールドは、上
位ビットに NULL (2 進数ゼロ ) が充填されます。
426750-001J
5-81
第 5 章 DATA DIVISION ( データ部 )
出力オペレーション時のフォーマット変換規則
□ ワーキング・ストレージ項目が送出し側、MESSAGE SECTION の項目が受取り側になります。
□ 送出しフィールドが数字フィールドか非数字フィールドかに応じて、送出しフィールドの下位部分また
は上位部分からデータが検索されます。
□ ワーキング・ストレージ項目で PIC 9 が指定されていれば、そのワーキング・ストレージ項目の下位部
分からデータ・ビットが検索され、MESSAGE SECTION の項目に転記されます。このとき、処理は、
送出し側においても、受取り側においても、右から左に行われ、最下位ビット同士の対応がとられます。
□ ワーキング・ストレージ項目で PIC A または PIC X が指定されていれば、そのワーキング・ストレー
ジ項目の上位部分からデータ・ビットが検索され、MESSAGE SECTION の項目に転記されます。この
とき、処理は、送出し側においても、受取り側においても、左から右に行われ、最上位ビット同士の対
応がとられます。
□ 出力オペレーション時の切り詰め規則
●
切り詰め処理は、受取り側が送出し側より短い場合に行われます。
●
送出し側のワーキング・ストレージ項目で PIC X または PIC A ( 非数字データ ) が指定されていると
きは、そのワーキング・ストレージ項目の下位ビットから切り詰められます。切り詰めが行われた
ことは、アプリケーション・プログラムには通知されません。
●
送出し側のワーキング・ストレージ項目で PIC 9 または PIC 9 COMP ( 数字データ ) が指定されてい
るときは、データの消失は許されないので、TCP が、リクエスタ・プログラムをサスペンドするか、
または ON ERROR 処理を起動することによって、オーバフローが発生したことを通知します。
□ 出力オペレーション時の充填処理規則
●
充填処理は、受取り側が送出し側よりも長い場合に行われます。
●
送出し側のワーキング・ストレージ項目で PIC X が指定されているとき、MESSAGE SECTION の
項目は、下位ビットに NULL (2 進数ゼロ ) が充填されます。
●
受取り側のワーキング・ストレージ項目で PIC 9 が指定されているときは、MESSAGE SECTION の
項目は、上位ビットに NULL (2 進数ゼロ ) が充填されます。
例
入力オペレーションにおいて、MESSAGE SECTION の PIC 1(9) 項目をワーキング・ストレージの PIC
X(2) 項目または PIC 9(2) 項目に転記すると、転記後のデータは、以下のようになります。
PIC X(2) 項目のビット位置
転記後のデータ PIC 9(2) 項目のビット位置
転記後のデータ 0 1 2 3 4 5 6 7
x x x x x x x x
0 1 2 3 4 5 6 7
x 0 0 0 0 0 0 0
0 1 2 3 4 5 6 7
0 0 0 0 0 0 0 x
0 1 2 3 4 5 6 7
x x x x x x x x
x は MESSAGE SECTION の項目から送られてきたデータ・ビットを表し、0 は FILL ビット (2 進数ゼ
ロ ) を表します。
5-82
426750-001J
第 5 章 DATA DIVISION ( データ部 )
出力オペレーション時のデータの移動を上の例における「転記後のデータ」を使って説明すると、x で
示されたデータ・ビットが MESSAGE SECTION の項目に送られます。この場合 PIC X(n) 項目のデータは
左から右に処理され、PIC 9(n) 項目のデータは右から左に処理されます。
PRESENT IF 句
PRESENT IF 句は、制御フィールドの値に基づいて条件付きで存在するメッセージ内のフィールドを定
義します。
□ 制御フィールドとその制御フィールドの値に基づいて条件付きで存在するフィールドは、レベル 01 で
定義される同一のメッセージ構造に含めなければなりません。
□ 制御フィールドは、その制御フィールドの値に基づいて条件付きで存在するフィールドの前に定義しな
ければなりません。条件付きで存在するフィールドが存在するかしないかは、制御フィールドの値に基
づいて決まるからです。
PRESENT IF 句は、メッセージ内のあるフィールドがその前に処理された特定のフィールドの値に基づ
いて条件付きで存在することの許されるメッセージ・フォーマットでのみ使用することができます。
PRESENT IF 句を使用すると、実際に存在するデータだけを送信または受信することができるので、送
受信する必要のあるデータの量を減らすことができます。
PRESENT IF [ NOT ] control-field
control-field
関 連 付 け さ れ た 条 件 付 き で 存在するフィールドの存在または不存在を記述する MESSAGE
SECTION のフィールドです。
真―
control-field が、ゼロ以外の数値を含む数字データ項目のとき、または、空白以外の文字
を含む非数字データ項目のときには、真状態が生成されます。control-field が真のときは、
条件付きで存在するフィールドは存在していると見なされます。
偽―
control-field が、ゼロのみを含む数字データ項目のとき、または、空白のみを含む非数字
データ項目のときには、偽状態が生成されます。control-field が偽のときは、条件付きで
存在するフィールドは存在していないと見なされます。
NOT
control-field の真理値の補数を生成します。
PRESENT IF 句に関しては、次の規則が適用されます。
□ PRESENT IF 句は、DELIMITED メッセージでだけ使用することができます。他のメッセージ・フォー
マットで PRESENT IF 句を指定すると、構文エラーになります。DELIMITED メッセージ・フォーマッ
トでは、データは可変長フィールドで処理されるので、この点からも、データ転送量の削減に役立ちま
す。
□ PRESENT IF 句は、MESSAGE SECTION のグループ・レベルでも、フィールド・レベルでも指定する
ことができます。PRESENT IF 句をグループ・レベルで指定すると、その PRESENT IF 句の条件は、そ
のグループ・レベルに従属するすべてのフィールドに及びます。グループ内のフィールドにも別に
PRESENT IF 句を指定することができます。その場合、フィールド・レベルの PRESENT IF 句がグルー
プ・レベルの PRESENT IF 句に優先します。
426750-001J
5-83
第 5 章 DATA DIVISION ( データ部 )
□ PRESENT IF 句の処理は、入力と出力の両オペレーションで同じです。
□ PRESENT IF 句は、論理的には、任意のレベルまで入れ子にすることができます。PRESENT IF 句を入
れ子にした場合は、最初の条件付きで存在するフィールドは 2 番目の条件付きで存在するフィールドが
存在するときにのみ存在し、2 番目の条件付きで存在するフィールドは、3 番目の条件付きで存在する
フィールドが存在するときにのみ存在します ( 以下同様 )。
□ 最初のレベルは、2 番目のレベルを使用する前に存在しなければならず、2 番目のレベルは、3 番目の
レベルを使用する前に存在しなければなりません ( 以下同様 )。
□ 条件付きで存在するフィールドに FIELD STATUS 句を指定しておけば、FIELD STATUS 構成のシャド
ウ・データ項目を調べることによって、条件付きで存在するフィールドが存在しているかどうかを容易
に確認することができます。詳細については、FIELD STATUS 句の説明を参照して下さい。
□ 条件付きで存在するフィールドが存在しているかどうかを容易に確認する方法としては、PRESENT IF
句の制御フィールドに関連付けしたワーキング・ストレージ・データ項目の論理値を明示的に参照する
方法もありますが、この方法は好ましくありません。
□ DELIMITED メッセージ・フォーマットで PRESENT IF 句を使用するデータ構造を設定するときは、特
に慎重さが必要とされます。TCP による意図しない置き換えが検出されずに、入力メッセージ内の 1 つ
のデータ・フィールドを他のデータ・フィールドで置き換えてしまう可能性があります。
次に、データ・フィールドが置き換わる例を示します。
WORKING-STORAGE SECTION.
01 WS-MSG.
02 WS-PIF-1
PIC
02 WS-PIF-2
PIC
02 WS-F1
PIC
02 WS-F2
PIC
9(1) COMP.
9(1) COMP.
X(8).
X(8).
MESSAGE SECTION.
01 MSG
MESSAGE FORMAT IS DELIMITED
FIELD-DELIMITER IS OFF.
02 PIF-1
PIC 1(1)
TO WS-PIF-1.
02 PIF-2
PIC 1(1)
TO WS-PIF-2.
02 F1
PIC X(8)
PRESENT IF PIF-1
TO WS-F1.
02 F2
PIC X(8)
PRESENT IF PIF-2
TO WS-F2.
5-84
426750-001J
第 5 章 DATA DIVISION ( データ部 )
入力レコードが次の値になると、値 F2 はフィールド WS-F2 にストアされます。
0
1
F2
CDT 011.CDD
□ 0 は、WS-PIF-1 にストアされます。
□ 1 は、WS-PIF-2 にストアされます。
□ F2 は、WS-F2 にストアされます。
入力レコードで 0 と 1 が故意ではなしに入れ換ったとします。
1
0
F2
CDT 012.CDD
□ 1 は、WS-PIF-1 にストアされます。
□ 0 は、WS-PIF-2 にストアされます。
□ F2 は、WS-F1 にストアされます。
このケースでは、F2 はフィールド WS-F1 にストアされますが、データが入れ換ったことは TCP によっ
て報告されません。さらに、いずれのケースとも TCP の処理規則には違反していないので、報告する方法
がありません。
PRESENT IF 句の使用例
自動預け払い機 (ATM) から送られてくるデータの処理に PRESENT IF 句を使う場合を例にとって、
PRESENT IF 句の使用法を考えてみます。ATM のデータは、ビット・マップ・メッセージ・フォーマット
で送られてくるものとします。
ATM からは、ATM のボタンが押されたときにデータが送られて来るものとします。
ある顧客が、自分の預金口座にお金を預けようとしています。また、その人は、自分の小切手口座から
クレジット・カード口座にお金を振り込もうとしています。
このときデータは、ビット・マップに続くデータ・ストリームで表され、通信回線を 1 と 0 のビット流
れになって運ばれます。1 つのビットまたは一群のビットによって、1 つの意味あるデータが表されます。
次に、クレジット・カード番号、預金口座番号、および小切手口座番号を表すビット・マップの例を示します。
426750-001J
5-85
第 5 章 DATA DIVISION ( データ部 )
ビット・マップ
0
1
1
(1)
(2)
(3)
1
1
0
1
| 第 1 データ
| バイト
|
1 | 10110110
| 第 2 データ
| バイト
|
| 01101111
| 第 3 データ
| バイト
|
| ...
(1) 小切手口座番号
(2) 預金口座番号
(3) クレジット・カード番号
トランザクションを開始するために顧客が ATM のボタンを押すと、そのボタンに対応するビット・マッ
プ中のビットは 1 になり、押されなかったボタンに対応するビットは 0 になって、データが送信されます。
預金口座にお金を預け入れる場合は、上の例の最初の 3 ビットは次のようになります。
0 1 0
この場合、ビット・マップに続く第 1 データ項目は、預金口座番号になります ( 小切手口座番号はあり
ません )。小切手口座からクレジット・カード口座にお金を振り込む場合は、ビット・マップの最初の 3
ビットは、次のようになります。
1 0 1
この場合、ビット・マップに続く第 1 データ項目は小切手口座番号になり、第 2 データ項目はクレジッ
ト・カード番号になります。
すべてのデータは、メッセージ・フォーマットを意識することなく、ATM からワーキング・ストレージ
に読み込まれます。そして、データは、TRANSFORM ステートメントで MESSAGE SECTION をテンプ
レートとしてマッピングされ、フォーマットが与えられます。ATM からのメッセージはデータの前にビッ
ト・マップが先行するフォーマットになっていますが、このメッセージ・フォーマットが一致するように、
MESSAGE SECTION を 設 計 し て おきます。メッセージ内の条件付きで存在するフィールドごとに
PRESENT IF 句と FIELD STATUS 句を指定しておきます 。FIELD STATUS 句を指定しておくと、条件付
きで存在するフィールドが存在しているのか、存在していないのかを確認することができます。ビット・
マップ内のビットがオン (1) になっていると、それに対応するフィールドがメッセージ・テンプレートを通
じてマッピングされます。ビット・マップ内のビットがオフ (0) になっていると、それに対応するフィール
ドは存在しないので、テンプレート内の次のフィールドが検査されます。
前ページのデータ処理を実現するための WORKING-STORAGE SECTION および MESSAGE SECTION
のコーディングは、次のとおりです。
WORKING-STORAGE SECTION.
01
5-86
WS-Input-Output-Record.
05 WS-Record-Length
05 WS-Record
PIC 9(4) COMP.
PIC X(1)
OCCURS 1 TO 100 TIMES
DEPENDING ON
WS-Record-Length.
426750-001J
第 5 章 DATA DIVISION ( データ部 )
01
01
01
01
01
WS-ATM-Record.
05 WS-Bit-Map.
10 WS-Bit-1
10 WS-Bit-2
10 WS-Bit-3
WS-Savings-Acct.
05 WS-Savings-Length
05 WS-Savings-Data
WS-Checking-Acct.
05 WS-Checking-Length
05 WS-Checking-Data
WS-Credit-Card.
05 WS-Creditc-Length
05 WS-Creditc-Data
WS-Field-Status-Items.
05 WS-Field-Status-Savings.
10 FS-Shadow-Savings
10 FS-Error-Savings
05
05
PIC 9(1) COMP.
PIC 9(1) COMP.
PIC 9(1) COMP.
PIC 9(2) COMP.
PIC X(1)
OCCURS 1 TO 15 TIMES
DEPENDING ON
WS-Savings-Length.
PIC 9(2) COMP.
PIC X(1)
OCCURS 1 TO 15 TIMES
DEPENDING ON
WS-Checking-Length.
PIC 9(2) COMP.
PIC X(1)
OCCURS 1 TO 15 TIMES
DEPENDING ON
WS-Creditc-Length.
PIC 9(4) COMP.
PIC 9(4) COMP.
WS-Field-Status-Checking.
10 FS-Shadow-Checking
PIC 9(4) COMP.
10 FS-Error-Checking
PIC 9(4) COMP.
WS-Field-Status-Credit-Card.
10 FS-Shadow-Credit-Card
PIC 9(4) COMP.
10 FS-Error-Credit-Card
PIC 9(4) COMP.
MESSAGE SECTION.
426750-001J
01
MS-Input-Output-Record.
MESSAGE FORMAT IS DELIMITED
FIELD-DELIMITER IS OFF.
05 MS-Record-Length
PIC X(100)
USING WS-Record
RESULTING COUNT IS
WS-Record-Length.
01
MS-ATM-Record
MESSAGE FORMAT IS DELIMITED
FIELD-DELIMITER IS OFF.
05 MS-Bit-Map.
10 MS-Bit1-Savings
PIC 1(1)
USING WS-Bit-1.
10 MS-Bit2-Checking
PIC 1(1)
USING WS-Bit-2.
10 MS-Bit3-Credit-Card PIC 1(1)
USING WS-Bit-3.
10 FILLER
PIC 1(5).
5-87
第 5 章 DATA DIVISION ( データ部 )
05 MS-Savings.
10 Savings-Data
PIC X(15)
PRESENT IF MS-Bit1-Savings
FIELD STATUS IS WS-Field-Status-Savings
USING WS-Savings-Data
RESULTING COUNT IS WS-Savings-Length.
05 MS-Checking.
10 Checking-Data
PIC X(15)
PRESENT IF MS-Bit2-Checking
FIELD STATUS IS WS-Field-Status-Checking
USING WS-Checking-Data
RESULTING COUNT IS WS-Checking-Length.
05 MS-Credit-Card.
10 Credit-Card-Data
PIC X(15)
PRESENT IF MS-Bit3-Checking
FIELD STATUS IS WS-Field-Status-Credit-Card
USING WS-Creditc-Data
RESULTING COUNT IS WS-Creditc-Length.
RESULTING COUNT 句
入力オペレーションに RESULTING COUNT 句を使用すると、フィールドまたはメッセージの長さをバ
イト単位で取得することができます。入力データについては、どのメッセージ・フォーマットでも
RESULTING COUNT 句を使用することができます。
出力オペレーションに RESULTING COUNT 句を使用すると、宣言された長さ以下の可変長フィールド
または可変長メッセージを生成することができます。出力データについては、DELIMITED、VARYING1、
または VARYING2 メッセージ・フォーマットでのみ RESULTING COUNT 句を使用することができます。
RESULTING COUNT 句は、FIELD-DELIMITER 句または MESSAGE-DELIMITER 句と共に使用しなけ
ればなりません。
[ RESULTING ] COUNT [ IS ] numeric-data-1
numeric-data-1
WORKING-STORAGE SECTION または LINKAGE SECTION のいずれかで定義されている基本数
字項目です。
FIELD DELIMITER 句と共に使用する場合
入力オペレーションにおいて RESULTING COUNT 句をフィールド・デリミタで区切られるフィールド
と共に使用すると、そのフィールドの実際の長さが RESULTING COUNT 句で指定された numericdata-1 にストアされます。長さが判明したメッセージ・フィールドの内容は、関連付けされたワーキン
グ・ストレージ・データ項目にストアされます。ワーキング・ストレージ項目が実際のメッセージ・フィー
ルドより長いときは、ワーキング・ストレージ項目は FILL 文字で充填されます。フィールド・デリミタ
は、関連付けされたワーキング・ストレージ項目にはストアされません。フィールド・デリミタは、フィー
ルドの長さ (RESULTING COUNT 長 ) にはカウントされません。
5-88
426750-001J
第 5 章 DATA DIVISION ( データ部 )
出力オペレーションにおいて RESULTING COUNT 句をフィールド・デリミタで区切られるフィールド
と共に使用すると、各フィールドの長さが宣言されたフィールド長以下であることが認められます。フィー
ルド・デリミタが無効 ( オフ ) になっていない限り、RESULTING COUNT 句で判明した長さ (RESULTING
COUNT 長 ) どおりにフィールド・デリミタで区切られたフィールドが生成されます。デバイスに出力され
る DELIMITED メッセージ・フォーマット設定時にフィールドごとに RESULTING COUNT 句を指定すれ
ば、メッセージ全体の長さを調整することができます。
フィールド・デリミタで区切られるフィールドの MESSAGE SECTION の記述で、フィールド・デリミ
タの位置を予約しておく必要はありません。
フィールド・デリミタで区切られたフィールドを出力する場合、TCP は FROM/USING 句で指定された
ワーキング・ストレージ・データ項目から RESULTING COUNT 長で指定されたバイト数を取り出して
フィールドを組み立て、メッセージ内に配置し、必要に応じてフィールド・デリミタをそのフィールドに
付加します。RESULTING COUNT 長が 0 のときは、メッセージにはフィールド・デリミタだけが出力さ
れます。RESULTING COUNT 長がそのフィールドに定義されている最大のバイト数を超えると、ON
ERROR 句が実行されます。
最小オカレンスの検出は行われません。つまり、x > 0 のとき、処理されたデータ項目の数が x に達する
前にデリミタが検出されても、エラーは生成されません。
MESSAGE DELIMITER 句と共に使用する場合
入力オペレーションにおいて RESULTING COUNT 句を MESSAGE-DELIMITER 句と共に使用すると、
可変長メッセージの長さを判定することができます。これは通知のみで、メッセージの長さを制御するこ
とはできません。
入力オペレーションでは、メッセージ・レベルの RESULTING COUNT 長にはフィールド・デリミタが
含まれます。
出力オペレーションでは、RESULTING COUNT 句は単一フィールドで構成されたメッセージを送信す
るときにだけ使用することができます。単一フィールドで構成されたメッセージで RESULTING COUNT
句を使用すると、パッド・データを取り除いた実際の長さのメッセージだけを送信することができます。
複数のフィールドで構成された出力メッセージで RESULTING COUNT 句を使用するときは、RESULTING
COUNT 句をフィールドごとに使用して下さい。そうすれば、このメッセージはフィールド単位で短縮さ
れます。
フィールド・レベルでの RESULTING COUNT 句の使用例
入力データ・ストリームが 1 ~ 101 文字で構成されていると想定します。フィールドの最後の文字は、
フィールド・デリミタとして使用されるセミコロン (;) です。つまり、このデータ・ストリームは、100 以
内のデータ文字と 1 つの区切り文字で構成されています。
次のコーディング例は、入力オペレーションでのデータの流れを示しています。
WORKING-STORAGE SECTION.
01
WS-Name-Record.
05 WS-Name-Length
05 WS-Name
426750-001J
PIC 9(4) COMP.
PIC X(1)
OCCURS 1 TO 100 TIMES
DEPENDING ON WS-Name-Length.
5-89
第 5 章 DATA DIVISION ( データ部 )
MESSAGE SECTION.
01
MSG-Name-Record
FORMAT IS DELIMITED
FIELD-DELIMITER IS ";".
05
MS-Name PIC X(100)
USING WS-Name
RESULTING COUNT IS WS-Name-Length.
送られてきたネーム・フィールドに、次のデータが入っていたとします。
SMITH John X.;
↑
フィールドの初め
ワーキング・ストレージの WS-Name フィールドには、次のデータが入ります。
SMITH John X.
↑
フィールドの初め
ワーキング・ストレージの WS-Name-Length フィールドに入る値は 13 です。
TO/FROM/USING 句
TO/FROM/USING 句 は、MESSAGE SECTION の項目に WORKING-STORAGE SECTION ま たは
LINKAGE SECTION のデータ項目を関連付けます。この関連付けが行われると、SEND MESSAGE、
TRANSFORM、RECEIVE UNSOLICITED MESSAGE、または REPLY TO UNSOLICITED MESSAGE な
どのステートメントによってデータがワーキング・ストレージへ、またはワーキング・ストレージから移
動されるときに、MESSAGE SECTION を介してデータがマッピングされます。
{ TO
} data-name-1
{ FROM }
{ USING }
data-name-1
メッセージ・データの移動先、または移動元の WORKING-STORAGE SECTION または LINKAGE
SECTION のデータ項目を指定します。data-name-1 で指定されるデータ項目は、英数字項目
(PIC X) または 2 進数項目 (PIC 9 COMP または PIC S9 COMP) のいずれかとして記述しておかなけ
ればなりません。数字項目 (PIC 9) として記述することはできません。
TO
データをメッセージ・フィールドから data-name-1 で指定される領域へ移動することを示しま
す。
FROM
データを data-name-1 で指定される領域からメッセージ・フィールドへ移動することを示しま
す。
USING
データをメッセージ・フィールドから data-name-1 で指定される領域へ移動する、または ataname-1 で指定される領域からメッセージ・フィールドへ移動する、あるいはその両方を行うこと
を示します。
5-90
426750-001J
第 5 章 DATA DIVISION ( データ部 )
1 つのメッセージ・フィールドに TO 句と FROM 句の両方を指定することができます。この場合、それ
ぞれの句に異なるデータ名を使用することができます。表 5-13 に示すように、TO/FROM/USING 句のそ
れぞれの句は、メッセージ・フィールドの一般的タイプ ( 入力、出力、または入出力 ) を決定します。
表 5-13 TO/FROM/USING 句とメッセージ・フィールドの一般的タイプ
TO/FROM/USING 句
メッセージ・フィールドのタイプ
TO 句のみ
入力
FROM 句のみ
出力
USING 句
入出力
TO 句と FROM 句
入出力
WORKING-STORAGE SECTION と MESSAGE SECTION を、次のようにコーディングしたものと想定
します。
WORKING-STORAGE SECTION.
01
W-FLD1
PIC X(2).
01
W-FLD2
PIC X(2).
01
W-FLD3
PIC 9(18)
01
W-FLD4
PIC X(4).
MESSAGE SECTION.
01
MSG1
01
MSG2
01
MSG3
01
MSG4
PIC
PIC
PIC
PIC
X(2)
X(5)
X(8)
X(4)
COMP.
TO W-FLD1.
FROM W-FLD2 MESSAGE FORMAT IS VARYING1.
USING W-FLD3 MESSAGE FORMAT IS VARYING2.
FROM W-FLD1 TO W-FLD4
MESSAGE FORMAT IS VARYING1.
注意:W-FLD3 には 8 文字含まれていますが、これは、大きさ 9(10) から 9(18) の範囲の COMP フィー
ルドが必要とする文字数です。
1. メッセージ・フォーマットとして FIXED を指定されたフィールド MSG1 は、2つの文字 ( 例えば、AB)
を受け取り、それを W-FLD1 に送ります。
MSG1
A
W-FLD1
B
,
A
B
CDT 013.CDD
426750-001J
5-91
第 5 章 DATA DIVISION ( データ部 )
2. メッセージ・フォーマットとして VARYING を指定されたフィールド MSG2 には、W-FLD2 からの
メッセージが入ります。MSG2 の最初の 1 バイトには、そのメッセージを構成するデータ文字の数 ( カ
ウント ) が示されます。
W-FLD2
A
MSG2
,
B
2
A
count
B
value
CDT 014.CDD
3. メッセージ・フォーマットとして VARYING2 を指定されたフィールド MSG3 は、メッセージを受け取
り、それを W-FLD3 に送ります。MSG3 の最初の 2 バイトには、そのメッセージを構成するデータ文
字の数 ( カウント ) が示されます。
MSG3
W-FLD3
0
2
3
count
249
,
0
0
0
0
0
0
3
249
value
CDT 015.CDD
W-FLD3 フィールドは 8 バイトの 2 進数項目なので、メッセージはフィールド内で右寄せされ、余白に
はゼロが詰められます。
4. メッセージ・フォーマットとして VARYING1 を指定されたフィールド MSG4 は、W-FLD1 から 2 文
字を含むメッセージを受け取ります。
W-FLD1
A
MSG4
,
B
2
A
B
CDT 016.CDD
MSG4 は 3 文字の応答を受け取り、それを W-FLD4 に送ります。
MSG4
3
W-FLD4
C
D
E
C
D
E
CDT 017.CDD
W-FLD4 フィールドは英数字項目なので、その応答はフィールド内で左寄せにされ、余白には空白が詰
められます。
5-92
426750-001J
第 5 章 DATA DIVISION ( データ部 )
USER CONVERSION 句
USER CONVERSION 句は、当該のフィールドと一緒にユーザ変換プロシージャに渡されるユーザ定義
番号を指定します。
USER [ CONVERSION ] numeric-literal
numeric-literal
ユーザ変換ルーチン番号を指定します。
USER CONVERSION 句は、アプリケーションがユーザ変換プロシージャを使用する場合にだけ指定し
ま す。ユ ー ザ 変 換 プ ロ シ ー ジ ャ の 詳細については、『Compaq NonStop Pathway/iTS TCP and Terminal
Programming Guide』を参照して下さい。
ユーザ変換プロシージャには、入力変換プロシージャと出力変換プロシージャがあります。入力変換プ
ロシージャは入力データを変換し、出力変換プロシージャは出力データを変換します。TCP は、インテリ
ジェント・デバイスと MESSAGE SECTION のメッセージ・フィールドとの間で受け渡しされるデータに
対し標準の変換を行いません。
5.6 特殊レジスタ
特殊レジスタは、プログラムではなく SCREEN COBOL コンパイラによって自動的に定義されるデータ
項目です。各特殊レジスタにはそれぞれ固有の用途があり、以下の説明にしたがった方法でのみ使用され
ます。
5.6.1 DIAGNOSTIC-ALLOWED 特殊レジスタ
DIAGNOSTIC-ALLOWED 特殊レジスタは、エラーまたは異常終了状態が発生した場合にその事態を知
らせる診断スクリーンを表示するかどうかを示します。このレジスタは、各プログラムに対して 1 つずつ
設定されます。
このレジスタは、プログラムが呼び出されるたびに PATHCOM の SET TERM コマンドの DIAGNOSTIC
パラメータによって指定された値に初期設定されます。SET TERM コマンドで DIAGNOSTIC パラメータ
が指定されていない場合は、デフォルト値として YES が使用され、診断スクリーンの表示が有効になりま
す。プログラムでこのレジスタに NO を設定すれば、診断スクリーンの表示を無効にすることができます。
このレジスタには、次に示す暗黙的な宣言が行われています。
01
DIAGNOSTIC-ALLOWED
PIC AAA.
診断スクリーンの使用法の詳細については、「第 6 章 PROCEDURE DIVISION」および「付録 A
ADVISORY メッセージ」を参照して下さい。
426750-001J
5-93
第 5 章 DATA DIVISION ( データ部 )
5.6.2 LOGICAL-TERMINAL-NAME 特殊レジスタ
LOGICAL-TERMINAL-NAME 特殊レジスタには、プログラムを実行している端末の名前が入ります。
端末の名前は、PATHCOM の ADD TERM コマンドによって PATHCOM に定義されます。このレジスタ
は 1 つだけ設定され、当該の端末で実行されるすべてのプログラムに対して共通です。このレジスタは、
端末が始動されるときに初期設定されます。
このレジスタには、次に示す暗黙的な宣言が行われています。
01
LOGICAL-TERMINAL-NAME
PIC X(16).
5.6.3 NEW-CURSOR 特殊レジスタ
NEW-CURSOR 特殊レジスタは、後続の ACCEPT 処理でのカーソルの位置を制御します。このレジス
タは 1 つだけ設定され、当該の端末で実行されるすべてのプログラムに対して共通です。
ACCEPT 処理が開始された時点でこのレジスタの値が有効なスクリーン位置でない場合は、カーソルは
ACCEPT ステートメントの最初のフィールドに位置付けられます。ACCEPT 処理が終了すると、このレジ
スタはゼロにセットされます。これによって、後続の ACCEPT 処理のためのカーソルのデフォルト位置が
ACCEPT ステートメントの最初のフィールドに設定されることになります。
このレジスタには、次に示す暗黙的な宣言が行われています。
01
NEW-CURSOR.
02 NEW-CURSOR-ROW
02 NEW-CURSOR-COL
PIC 9999 COMP.
PIC 9999 COMP.
5.6.4 OLD-CURSOR 特殊レジスタ
OLD-CURSOR 特殊レジスタは、最後の ACCEPT 処理でカーソルが配置された位置 ( 行とカラム ) を示
します。このレジスタは 1 つだけ設定され、当該の端末で実行されるすべてのプログラムに対して共通で
す。このレジスタは、プログラムで実行される各 ACCEPT ステートメントによってセットされます。この
レジスタは、いったんセットされると、そのプログラムでアクセスすることができます。
このレジスタには、次に示す暗黙的な宣言が行われています。
01
OLD-CURSOR.
02 OLD-CURSOR-ROW
02 OLD-CURSOR-COL
PIC 9999 COMP.
PIC 9999 COMP.
5.6.5 PW-INPUT-FIELDS-MISSING 特殊レジスタ
PW-INPUT-FIELDS-MISSING 特殊レジスタは、入力時に MESSAGE SECTION を介してフィールドが
マッピングされるときにフィールドのデータが存在していないことを TCP が発見するかどうかを指示しま
す。このレジスタを使用すると、フィールドが存在しなかったときの特殊処理をいつ行うかを決定するこ
とができます。
デリミタの指定されたメッセージまたは PRESENT IF 句の指定されたメッセージを処理するときに、
フィールドの存在・不在が問題になります。TCP は、以下の場合にフィールドが存在していないと判断し
ます。
5-94
426750-001J
第 5 章 DATA DIVISION ( データ部 )
□ フィールド・デリミタおよびメッセージ・デリミタが指定されているメッセージの場合
●
2 つのフィールド・デリミタが連続しているとき、または、フィールド・デリミタの次にメッセー
ジ・デリミタが続いているとき
●
フィールド・デリミタがそのメッセージの最後の文字になっていて、関連付けられたフィールドが
そのメッセージの最後のフィールドになっているとき
□ PRESENT IF 句が指定されているメッセージで、条件が成立しないとき
このレジスタは、RECEIVE UNSOLICITED MESSAGE ステートメント、SEND MESSAGE ステートメ
ント、TRANSFORM ステートメントなど、入力データに関して MESSAGE SECTION を使用するすべて
のステートメントに関係します。このレジスタは、1 つ以上のフィールドが存在しない場合には YES を含
み、それ以外の場合には NO を含みます。このレジスタは、プログラムの開始時に NO に初期設定され、
存在しないフィールドを含む入力メッセージが入力されると YES に変わります。このレジスタの値はプロ
グラム内のどこででも調べることができますが、レジスタの値を変える可能性があるオペレーションの後
で調べるのが最も効果的です。
このレジスタは、読取り専用のレジスタです。ですから、プログラムでこのレジスタの値を変更しよう
とすると、コンパイル時に次のエラー・メッセージが出されます。
** ERROR 454 ** READ-ONLY SPECIAL REGISTER;
MAY NOT BE ALTERED
このレジスタには、次に示す暗黙的な宣言が行われています。
01
PW-INPUT-FIELDS-MISSING
PIC AAA.
5.6.6 PW-QUEUE-FKEY-UMP 特殊レジスタ
PW-QUEUE-FKEY-UMP 特殊レジスタは、ACCEPT...ESCAPE ON UNSOLICITED MESSAGE ステート
メントの動作を制御します。このレジスタは、SCREEN COBOL アプリケーションによって自由に変更す
ることができ、すべてのプログラムに対して共通です。
このレジスタには、次に示す暗黙的な宣言が行われています。
01
PW-QUEUE-FKEY-UMP
PIC AAA.
このレジスタの値は YES または NO のいずれかで、デフォルト値は YES です。
PW-QUEUE-FKEY-UMP 特殊レジスタが YES で、ACCEPT...ESCAPE ON UNSOLICITED MESSAGE
ステートメントの実行中に非請求メッセージを受け取ると、その非請求メッセージのロジックの実行中は
キーボードはロックされないままになります。6530 端末では、この間にオペレータがファンクション・キー
を押すと、ファンクション・キーの値は内部的にキュー ( 待ち行列 ) に入れられ、次の ACCEPT ステート
メントの実行時に読み取られます。
PW-QUEUE-FKEY-UMP 特殊レジスタが NO で、ACCEPT...ESCAPE ON UNSOLICITED MESSAGE ス
テートメントの実行中に非請求メッセージを受け取ると、TCP は、その非請求メッセージのロジックを実
行する前に、キーボードをロックするコマンドを端末に発行します。キーボードは、次の ACCEPT ステー
トメントの時点でロック解除されます。この動作によって、非請求メッセージのロジックの実行を開始し
てから次の ACCEPT ステートメントまでの間にオペレータが押したファンクション・キーを 6530 端末が
内部的にキューに入れるのが防止されます。
426750-001J
5-95
第 5 章 DATA DIVISION ( データ部 )
5.6.7 PW-QUEUE-FKEY-TIMEOUT 特殊レジスタ
PW-QUEUE-FKEY-TIMEOUT 特殊レジスタは、ACCEPT...ESCAPE ON TIMEOUT ステートメントの動
作を制御します。このレジスタは、SCREEN COBOL アプリケーションによって自由に変更することがで
き、すべてのプログラムに対して共通です。
このレジスタには、次に示す暗黙的な宣言が行われています。
01
PW-QUEUE-FKEY-TIMEOUT
PIC AAA.
このレジスタの値は YES または NO のいずれかで、デフォルト値は YES です。
PW-QUEUE-FKEY-TIMEOUT 特殊レジスタが YES で、ACCEPT...ESCAPE ON TIMEOUT ステートメ
ントの実行中にタイムアウトが発生すると、そのタイムアウトのロジックの実行中はキーボードはロック
されないままになります。6530 端末では、この間にオペレータがファンクション・キーを押すと、ファン
クション・キーの値は内部的にキュー ( 待ち行列 ) に入れられ、次の ACCEPT ステートメントの実行時に
読み取られます。
PW-QUEUE-FKEY-TIMEOUT 特殊レジスタが NO で、ACCEPT...ESCAPE ON TIMEOUT ステートメン
トの実行中にタイムアウトが発生すると、TCP は、そのタイムアウトのロジックを実行する前に、キーボー
ドをロックするコマンドを端末に発行します。キーボードは、次の ACCEPT ステートメントの時点でロッ
ク解除されます。この動作によって、タイムアウトのロジックの実行を開始してから次の ACCEPT ステー
トメントまでの間にオペレータが押したファンクション・キーを 6530 端末が内部的にキューに入れるのが
防止されます。
5.6.8 PW-TCP-PROCESS-NAME および PW-TCP-SYSTEM-NAME 特殊レジスタ
PW-TCP-PROCESS-NAME および PW-TCP-SYSTEM-NAME 特殊レジスタには、それぞれ TCP の NSK
プロセス名とホスト・システム名が入れられます。
SCREEN COBOL プログラムは、TERMINAL-FILENAME 特殊レジスタと共にこれらのレジスタを使用
することによって、自らを別の NSK プロセス ( アクティブになっている Pathway サーバ・クラスのメンバ
でなければなりません ) に識別させることができます。
この場合、SCREEN COBOL プログラムは、NSK プロセスに TCP プロセス名とシステム名、および
SCREEN COBOL プログラム名を送信して自らを識別させます。NSK プロセスは、UMP ヘッダの値を使
用したり、識別した SCREEN COBOL プログラムと通信することが可能となります。
このレジスタは、読取り専用のレジスタです。ですから、プログラムでこのレジスタの値を変更しよう
とすると、コンパイル時に次のエラー・メッセージが出されます。
** ERROR 454 **
5-96
READ-ONLY SPECIAL REGISTER;
MAY NOT BE ALTERED
426750-001J
第 5 章 DATA DIVISION ( データ部 )
PW-TCP-PROCESS-NAME および PW-TCP-SYSTEM-NAME 特殊レジスタには、次に示す暗黙的な宣
言が行われています。ただし、VALUE 句は説明のために示したもので、必ずしも指定する必要はありませ
ん。
01
01
PW-TCP-SYSTEM-NAME
PW-TCP-PROCESS-NAME
PIC X(8) VALUE "\STLOUIS".
PIC X(6) VALUE "$SWTCP".
5.6.9 PW-TERMINAL- ERROR-OCCURRED 特殊レジスタ
PW-TERMINAL- ERROR-OCCURRED 特殊レジスタには、回復不能な端末 I/O エラーが発生し、SCREEN
COBOL プログラムが USE FOR TERMINAL-ERRORS ステートメントを含んでいる場合に、エラー番号が
入ります。
このレジスタには、次に示す暗黙的な宣言が行われています。
01
PW-TERMINAL-ERROR-OCCURRED
PIC 9999 COMP.
5.6.10 PW-UNSOLICITED-MESSAGE-QUEUED 特殊レジスタ
PW-UNSOLICITED-MESSAGE-QUEUED 特殊レジスタは、SCREEN COBOL プログラムによる処理を
待っている非請求メッセージが存在するかどうかを示します。
SCREEN COBOL プログラムは、実行中いつでも、このレジスタの値を調べたり、このレジスタの値を
別のフィールドに転記することができます。このレジスタの値を定期的に調べることによって、ESCAPE
句を指定した ACCEPT または SEND MESSAGE ステートメントを発行せずに、処理待ちの非請求メッセー
ジがあるかどうかがわかります。
このレジスタの値は、YES または NO のいずれかです。
このレジスタには、次に示す暗黙的な宣言が行われています。
01 PW-UNSOLICITED-MESSAGE-QUEUED
PIC AAA.
このレジスタは、読取り専用のレジスタです。ですから、プログラムでこのレジスタの値を変更しよう
とすると、コンパイル時に次のエラー・メッセージが出されます。
** ERROR 454 **
READ-ONLY SPECIAL REGISTER;
MAY NOT BE ALTERED
次に、このレジスタの使用例を示します。
IF PW-UNSOLICITED-MESSAGE-QUEUED EQUALS "YES"
PERFORM process-message
UNTIL PW-UNSOLICITED-MESSAGE-QUEUED EQUALS "NO".
426750-001J
5-97
第 5 章 DATA DIVISION ( データ部 )
5.6.11 PW-USE-NEW-CURSOR 特殊レジスタ
PW-USE-NEW-CURSOR 特殊レジスタは、非請求メッセージの処理が終わった後で、カーソルを NEWCURSOR 特殊レジスタで示されるカレント・ポジションに移動させます。
ブロック・モードで ACCEPT ステートメントの処理を行っているときに非請求メッセージが割り込むの
は、通常は、ユーザが現在のスクリーンにデータをキー入力しているときです。SCREEN COBOL プログ
ラムは、ACCEPT ステートメントの処理をサスペンドして非請求メッセージを処理し、非請求メッセージ
の処理が終わった時点で、サスペンドされていた ACCEPT ステートメントを再発行します。
SCREEN COBOL プログラムが ACCEPT ステートメントを再発行する前に PW-USE-NEW-CURSOR 特
殊レジスタに YES を入れてあるときは、ACCEPT ステートメントが再発行された後に、カーソルは NEWCURSOR 特殊レジスタで示される位置に移動します。
SCREEN COBOL プログラムが ACCEPT ステートメントを再発行する前に PW-USE-NEW-CURSOR 特
殊レジスタに NO を入れてあるときは、ACCEPT ステートメントを再発行した後もカーソルはユーザに
よって指示されていた位置に留まります。こうすることによって、端末 I/O がないまたは端末出力だけを
引き起こす非請求メッセージの処理が行われた後にカーソル位置を移動し直す手間を省くことができま
す。
ACCEPT、DISPLAY BASE、または CALL ステートメントが終了すると、PW-USE-NEW-CURSOR 特
殊レジスタはデフォルト値の YES にリセットされます。
このレジスタには、次に示す暗黙的な宣言が行われています。
01
PW-USE-NEW-CURSOR
PIC A(3) VALUE "YES".
5.6.12 REDISPLAY 特殊レジスタ
REDISPLAY 特殊レジスタは、スクリーン・フィールドのデータを不必要に端末のメモリに送信するこ
とを防止します。このレジスタは、DISPLAY ステートメントの実行中にスクリーン・フィールドのデータ
を端末に送信するか、それとも、既に端末のメモリに入っているデータを再表示させるかを TCP に指示し
ます。REDISPLAY 特殊レジスタは、DISPLAY ステートメントのためのデータ送信、およびベース・スク
リーンで定義された領域についてだけ適用され、オーバーレイ領域については適用されません。
REDISPLAY 特殊レジスタは、ブロック・モードで作動する T16-6520、T16-6530、および T16-6540 端
末をサポートします。このレジスタは、他のタイプの端末や会話モードで作動する端末、およびインテリ
ジェント・デバイスはサポートしません。
このレジスタは 1 つだけ設定され、当該の端末で実行されるすべての SCREEN COBOL プログラムに対
して共通です。端末の始動時点で、このレジスタは NO ( 再表示しない ) にセットされます。その後、
SCREEN
COBOL プログラムが必要に応じて DISPLAY ステートメントのために YES ( 再表示を要求する ) をこのレ
ジスタに入れることができます。
DISPLAY ステートメントの実行において再表示が行われるようにするには、以下の要件が満たされな
ければなりません。
□ カレント・ベース・スクリーンを定義する DISPLAY BASE ステートメントが実行される時点で、
REDISPLAY 特殊レジスタが YES にセットされていなければなりません。そうすることによって、そ
のスクリーンに対する再表示処理が有効になります。
□ 再表示処理が行われる DISPLAY ステートメントが実行される時点で、REDISPLAY 特殊レジスタが
YES にセットされていなければなりません。
5-98
426750-001J
第 5 章 DATA DIVISION ( データ部 )
□ DISPLAY ステートメントで参照されるスクリーン・フィールド項目が、オーバーレイ領域ではなく、
ベース・スクリーンで定義されていなければなりません。
REDISPLAY 特殊レジスタが NO ( デフォルト設定 ) にセットされているときに DISPLAY ステートメン
トが実行されると、次のようになります。
□ TCP は、関連付けられたワーキング・ストレージ項目からスクリーン・フィールド値を取得して、
その値を端末のメモリに送信します。
□ TCP は、すべてのスクリーン・フィールドの MDT (modified data tag) をリセットします。
REDISPLAY 特殊レジスタが YES にセットされ、その画面について再表示が有効であるときに DISPLAY
ステートメントが実行されると、次のようになります。
□ 端末のメモリに保持されているスクリーン・フィールド・データが再表示されます。(TCP は、ワーキ
ング・ストレージ項目からスクリーン・フィールド値を端末のメモリに送信しません。)
□ TCP は、すべてのスクリーン・フィールドの MDT(modified data tag) をリセットします。
DISPLAY BASE ステートメントの後で最初に DISPLAY ステートメントが実行されたときには、端末の
メモリにはスクリーン・フィールドの値が入っていません。このときに REDISPLAY 特殊レジスタが YES
にセットされていると、次のようになります。
□ TCP は、関連付けられているワーキング・ストレージ項目からスクリーン・フィールド値を取得して、
その値を端末のメモリに送信します。
□ TCP は、すべてのスクリーン・フィールドの MDT(modified data tag) をリセットします。
このレジスタには、次に示す暗黙的な宣言が行われています。
01
REDISPLAY
PIC AAA.
次に、REDISPLAY 特殊レジスタの使用例を示します。
PROCEDURE DIVISION.
:
MOVE "YES" TO REDISPLAY.
DISPLAY BASE EMPLOYEE-REC-SCREEN.
DISPLAY
EMPLOYEE-REC-SCREEN.
:
この例では、DISPLAY BASE ステートメントが実行される前に、そのスクリーンに対する REDISPLAY
を有効にするために、REDISPLAY 特殊レジスタが YES にセットされます。DISPLAY BASE ステートメ
ントが実行された後では、後続の DISPLAY ステートメントの必要に応じて、REDISPLAY 特殊レジスタ
をリセットすることができます。
426750-001J
5-99
第 5 章 DATA DIVISION ( データ部 )
5.6.13 RESTART-COUNTER 特殊レジスタ
RESTART-COUNTER 特殊レジスタは、トランザクションがトランザクション・モードでリスタートさ
れた回数を記録します。BEGIN-TRANSACTION ステートメントが最初に実行された時点で、このレジス
タはゼロにセットされます。それ以降、BEGIN-TRANSACTION ステートメントが実行されるたびに1ず
つ加算されます。
このレジスタには、次に示す暗黙的な宣言が行われています。
01
RESTART-COUNTER
PIC 9999 COMP.
5.6.14 STOP-MODE 特殊レジスタ
STOP-MODE 特殊レジスタは、トランザクション処理中の割り込みを防止します。このレジスタは 1 つ
だけ設定され、当該の端末で実行されるすべてのプログラムに対して共通です。
このレジスタは端末の始動時にリセットされ、それ以降はプログラムによって管理されます。ほとんど
のプログラムでは、値をゼロのままにして処理を進めます。
このレジスタの値がゼロ以外にセットされていると、いくつかの PATHCOM コマンドが影響を受けま
す。つまり、STOP TERM、SUSPEND TERM、および FREEZE SERVER コマンドは、このレジスタの値
がゼロに戻るまで実行されません。ただし、SUSPEND および FREEZE コマンドは、このレジスタの値を
無視して実行するようにすることもできます。
このレジスタには、次に示す暗黙的な宣言が行われています。
01
STOP-MODE
PIC 9999 COMP.
5.6.15 TELL-ALLOWED 特殊レジスタ
TELL-ALLOWED 特殊レジスタは、ACCEPT ステートメントの実行中に通知メッセージ (TELL メッセー
ジ ) を端末に出すか出さないかを制御するために、プログラムによってセットします。このレジスタは、イ
ンテリジェント・デバイスと通信するプログラムには、意味がありません。
このレジスタは、各プログラムに対して 1 つずつ設定されます。このレジスタは、プログラムが呼び出
されるたびに、YES に初期設定されます。プログラムでは、それ以降の ACCEPT オペレーションで通知
メッセージが表示されないようにするために、このレジスタに NO を設定することができます。
このレジスタが YES にセットされていて、通知メッセージの出力処理が待機しているときは、次のよう
になります。
□ ACCEPT オペレーションを完了するときに、TCP は MESSAGE という語を先頭に付けた通知メッセー
ジを ADVISORY フィールドに表示します。
□ TCP は端末オペレータがいずれかのファンクション・キーを押すのを待って、フィールドをリセット
し、ACCEPT オペレーションを完了します。
このレジスタが NO にセットされていると、通知メッセージの表示は延期されます。
このレジスタには、次に示す暗黙的な宣言が行われています。
01
5-100
TELL-ALLOWED
PIC AAA.
426750-001J
第 5 章 DATA DIVISION ( データ部 )
5.6.16 TERMINAL-FILENAME 特殊レジスタ
TERMINAL-FILENAME 特殊レジスタは、プログラムを実行している端末のファイル名を内部形式で持
ちます。端末のファイル名は、PATHCOM の SET TERM FILE パラメータによって定義されます。
このレジスタは 1 つだけ設定され、当該の端末で実行されるすべてのプログラムに対して共通です。こ
のレジスタは、端末の始動時に初期設定されます。
このレジスタには、次に示す暗黙的な宣言が行われています。
01
TERMINAL-FILENAME
PIC X(24).
備考: TERMINAL-FILENAME 特殊レジスタは内部形式であるため、端末のスクリーンに内容を表示させるときは、
サーバによって外部形式に変換しておかなければなりません。TERMINAL-FILENAME 特殊レジスタの内容
を端末のスクリーンに直接表示させると、予想できない結果となって、端末から I/O エラーが返されること
があります。
5.6.17 TERMINAL-PRINTER 特殊レジスタ
TERMINAL-PRINTER 特殊レジスタには、プログラムを実行している端末に関連付けられたプリンタの
ファイル名が外部形式で入れられます。PATHCOM でその端末に対するプリンタが定義されていないとき
は、このレジスタには空白が入ります。このレジスタは 1 つだけ設定され、当該の端末で実行されるすべ
てのプログラムに対して共通です。このレジスタは、端末の始動時に初期設定されます。
このレジスタには、次に示す暗黙的な宣言が行われています。
01
TERMINAL-PRINTER
PIC X(36).
5.6.18 TERMINATION-STATUS 特殊レジスタ
TERMINATION-STATUS 特殊レジスタは、ACCEPT 、BEGIN-TRANSACTION 、RECEIVE
UNSOLICITED MESSAGE、SEND、または SEND MESSAGE ステートメントの終了時のステータスを通
知します。このレジスタは、各プログラムに対して 1 つずつ設定されます。このレジスタは、プログラム
が呼び出されるたびに、ゼロに初期設定されます。
また、この特殊レジスタは、CALL、RECEIVE UNSOLICITED MESSAGE、REPLY TO UNSOLICITED
MESSAGE、SEND、SEND MESSAGE、または TRANSFORM ステートメントのいずれかで ON ERROR
によるエラー処理が行われたときに、エラー番号を知らせるためにも使用されます。
このレジスタには、次に示す暗黙的な宣言が行われています。
01
426750-001J
TERMINATION-STATUS
PIC 9999 COMP.
5-101
第 5 章 DATA DIVISION ( データ部 )
5.6.19 TERMINATION-SUBSTATUS 特殊レジスタ
TERMINATION-SUBSTATUS 特殊レジスタは、CALL、RECEIVE UNSOLICITED MESSAGE、REPLY
TO UNSOLICITED MESSAGE、SEND、SEND MESSAGE、または TRANSFORM ステートメントのいず
れかで ON ERROR によるエラー処理が行われたときに、TERMINATION-STATUS 特殊レジスタで通知さ
れるエラーをより詳細に記述するためのエラー番号を含みます。このレジスタは、各プログラムに対して
1 つずつ設定されます。
このレジスタには、次に示す暗黙的な宣言が行われています。
01
TERMINATION-SUBSTATUS
PIC 9(5) COMP.
5.6.20 TRANSACTION-ID 特殊レジスタ
TRANSACTION-ID 特殊レジスタには、BEGIN-TRANSACTION ステートメントが実行された時点で
Compaq トランザクション管理ファシリティ (TMF) が割り当てたトランザクション ID が入れられます。
TMF は、新規のトランザクションまたはリスタートされたトランザクションごとに、このレジスタに一意
の ID を割り当てます。END-TRANSACTION ステートメントまたは ABORT-TRANSACTION ステートメ
ントのいずれかが実行されると、このレジスタは SPACES にセットされます。
一般に、関連付けられているデータ項目は 2 進数データであるため、この特殊レジスタの内容を端末の
スクリーンに表示してはいけません。このレジスタは、トランザクションを一意に識別するために使用さ
れます。
このレジスタには、次に示す暗黙的な宣言が行われています。
01
5-102
TRANSACTION-ID
PIC X(8).
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
第 6 章 PROCEDURE DIVISION ( 手続き部 )
PROCEDURE DIVISION ( 手続き部 ) には、プログラムの処理ステップがすべて入っています。各ステッ
プは SCREEN COBOL ステートメント (statement) およびセンテンス (sentence) で構成され、段落 (paragraph)、
プロシージャ (procedure)、節 (section) を組み立てます。
PROCEDURE DIVISION の形式は、次のとおりです。
PROCEDURE DIVISION [ USING data-name [, data-name ]...] .
[ DECLARATIVES.
{ [ section-name SECTION . ]
[ paragraph-name . [ sentence ] ... ] ... } ...
{ paragraph-name . [ sentence ] ... } ...
END DECLARATIVES. ]
{ [ section-name SECTION . ]
[ paragraph-name . [ sentence ] ... ] ... } ...
{ paragraph-name . [ sentence ] ... } ...
6.1 PROCEDURE DIVISION の構成
PROCEDURE DIVISION は、次の見出しで始めます。
PROCEDURE DIVISION [ USING data-name [, data-name ]...] .
この見出しは、ピリオドで終結しなければなりません。
USING 指定は、対応する USING 指定がある CALL ステートメントの制御下で実行されるサブプログラ
ムにだけ適用することができます。USING で指定される一意名は、CALL ステートメントの USING で指
定された一意名と構造も一意名の数も一致していなければなりません。ただし、USING で指定された一意
名の数が CALL ステートメントの USING で指定された一意名の数を超えた場合にだけ、TCP によってエ
ラーが表示されます。
処理の実行は、PROCEDURE DIVISION 見出し以降の最初の実行可能なステートメントから始まり ( た
だし、宣言プロシージャは除く )、論理順にしたがって進みます。PROCEDURE DIVISION 見出しの直後
には、キーワード DECLARATIVES と宣言プロシージャを続けるか、あるいは、段落名または節名を続け
なければなりません。
426750-001J
6-1
第 6 章 PROCEDURE DIVISION ( 手続き部 )
実行中に制御が段落に渡るのはその段落の始めだけで、GO TO ステートメントがない限り、制御は直前
のセンテンスから次のセンテンスに渡されます。段落の終わりに達すると、次の段落の最初の節に制御が
渡されます。唯一の例外は、段落の終わりに達したときに、その段落が現在実行されている PERFORM 処
理の最後の部分に当たる場合です。
次の例は、PROCEDURE DIVISION の構成を示しています。
PROCEDURE DIVISION.
initialization SECTION.
get-started.
sentence
statement
statement.
sentence
statement
:
finish-up-init.
sentence
:
main-processing SECTION.
begin-it.
sentence
:
process-input-data.
:
end-of-job.
EXIT PROGRAM.
6.1.1 宣言プロシージャ (DECLARATIVE PROCEDURE)
PROCEDURE DIVISION には、宣言プロシージャ (DECLARATIVE PROCEDURE) のために確保された
特別な部分があります。宣言プロシージャは、USE ステートメントによって指定されるスクリーン・リカ
バリ・ルーチンです。このルーチンを使用する場合は、PROCEDURE DIVISION の見出しの直後にコー
ディングしなければなりません。この部分は、キーワード DECLARATIVES で始めて、キーワード END
DECLARATIVES で終わらなければなりません。次に、宣言プロシージャの例を示します。
PROCEDURE DIVISION.
DECLARATIVES.
RECOV-SECT-1 SECTION.
USE FOR RECOVERY ...
:
END DECLARATIVES.
MAIN SECTION.
begin-my-program.
:
6.1.2 節 (SECTION)
節は、任意に指定することができ、処理ステップを組み立てるために関連のある段落を 1 つにまとめる
のに使用されます。例えば、PERFORM ステートメントで指定された節名を参照すると、PERFORM の実
行範囲であるその節の中にあるすべての段落が参照されます。
6-2
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
節は、次の見出しで始めます。
section-name SECTION.
節の終わりは、次の節の見出し、キーワード END DECLARATIVES、または PROCEDURE DIVISION
の終わりによって示されます。
6.1.3 段落 (PARAGRAPH)
段落は、関連するセンテンスまたはステートメントを 1 つにまとめるのに使用されます。段落には、通
常は少なくとも 1 つのセンテンスが含まれていますが、必ずしもセンテンスを含んでいる必要はありませ
ん。例:
get-all-input.
get-the-first-record.
ACCEPT my-screen...
段落名を参照することによって、あるコード領域から別のコード領域へ制御を移すことができます。
段落は、領域 A に指定される段落名で始まります。段落の終わりは、次の段落名または節名、あるいは
PROCEDURE DIVISION の終わりによって示されます。
6.1.4 センテンス (SENTENCE) およびステートメント (STATEMENT)
センテンス (SENTENCE) は、1 つ以上のステートメント (STATEMENT) で構成されるストリングで、ピ
リオドで終結されます。ステートメントは、SCREEN COBOL の動詞で始まる語 (word) および記号 (symbol)
を組み合わせたものです。例:
chk-report-yy.
IF current-yy IS LESS THAN 0 OR GREATER THAN 99
DISPLAY "REPORT YEAR IS NOT BETWEEN 00 AND 99, RE-ENTER "
"YEAR" IN msg-1
ACCEPT current-yy UNTIL my-file1
GO TO chk-report-yy.
センテンスは、機能的に次の 3 つに分類することができます。
□ 無条件文 (Imperative)―無条件で処理が行われます。
□ 条件文 (Conditional)―条件に基づいて処理が行われます。
□ コンパイラ指示文 (Compiler directing)―コンパイラ指示動詞 COPY または USE を使用します。
無条件センテンスは、1 つ以上のステートメントで構成され、ピリオドで終結されます。無条件センテ
ンスには、GO TO ステートメントまたは EXIT PROGRAM ステートメントを入れることができます。EXIT
PROGRAM ステートメントを指定する場合は、センテンスの一番最後に指定しなければなりません。
426750-001J
6-3
第 6 章 PROCEDURE DIVISION ( 手続き部 )
次に、無条件センテンスの例を示します。
ADD a1 TO b1 GIVING c1, d1, e1.
ADD 25 TO x2,
GO TO next-image.
条件センテンスは、条件項目や値の大小関係を調べて、次にとるべき処理を決めます。
次に、条件センテンスの例を示します。
IF last-tax IS LESS THAN current-tax
PERFORM higher-tax
ELSE PERFORM lower-tax.
6.1.5 プロシージャ (PROCEDURE)
プロシージャ (PROCEDURE) は、段落、一連の段落、節、または一連の節で構成されます。プロシー
ジャ名は、段落名または節名で、この名前は修飾することもできます。
6.2 PROCEDURE DIVISION ステートメント
PROCEDURE DIVISION で使用されるステートメントは、10 種類に分類することができます。表 6-1
に、それぞれのステートメントと種類を示します。
備考: Pathway のインテリジェント・デバイス・サポート (IDS) を使う SCREEN COBOL リクエスタ・プログラ
ムは、現金預払い機 (ATM)、航空機座席予約端末、およびパーソナル・コンピュータなどといったインテリ
ジェント・デバイスを制御する外部プロセス (Pathway システムの外で作動するプロセス ) と通信します。こ
のリクエスタ・プログラムは、メッセージ型であり、SEND MESSAGE ステートメントとそれに対する
REPLY を使って、メッセージを交換します。
次に示すステートメントは、IDS リクエスタ・プログラムの中で使用することができません。
ACCEPT
CLEAR
DISPLAY BASE
DISPLAY OVERLAY
DISPLAY RECOVERY
DISPLAY
PRINT SCREEN
RESET
SCROLL
SET
TURN
USE FOR SCREEN RECOVERY
USE FOR TERMINAL-ERRORS
次ページ以降に、SCREEN COBOL のすべてのステートメントをアルファベット順に説明します。
6-4
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
表 6-1 ステートメントの種類
426750-001J
演算
ADD
COMPUTE
DIVIDE
MULTIPLY
SUBTRACT
条件
BEGIN-TRANSACTION ... ON ERROR
CALL ... ON ERROR
IF
SEND...ON ERROR
データ移動
ACCEPT DATE/DAY/TIME
MOVE
SET
端末 I/O
ACCEPT
CLEAR
DELAY
DISPLAY
DISPLAY BASE
DISPLAY OVERLAY
DISPLAY RECOVERY
PRINT SCREEN
RECONNECT MODEM
RESET
SCROLL
SEND
TURN
インテリジェント・デバイス・サポート (IDS)
SEND MESSAGE
TRANSFORM
非請求メッセージ処理 (UMP)
RECEIVE UNSOLICITED MESSAGE
REPLY TO UNSOLICITED MESSAGE
プログラム間通信
CALL
CHECKPOINT
EXIT PROGRAM
プログラム制御
EXIT
GO TO
PERFORM
STOP RUN
コンパイラ指示
COPY
USE
トランザクション管理
ABORT-TRANSACTION
BEGIN-TRANSACTION
END-TRANSACTION
RESTART-TRANSACTION
6-5
第 6 章 PROCEDURE DIVISION ( 手続き部 )
6.2.1 ABORT-TRANSACTION ステートメント
ABORT-TRANSACTION ステートメントは、トランザクション・モードで動作している端末のトランザ
クションを中断します。トランザクション・モードは、Compaq トランザクション管理ファシリティ (TMF)
の下で実行するようにコンフィギュレーションした Pathway サーバのオペレーション・モードです。トラ
ンザクション・モードでは、Pathway サーバはオーディット対象ファイルをロックしたり、更新したりす
ることができます。ABORT-TRANSACTION ステートメントが実行されると、そのトランザクションの実
行中にオーディット対象ファイルに行われたすべてのデータベース更新がバックアウト ( 取り消し ) され、
そのトランザクションはリスタートされません。
ABORT-TRANSACTION
このステートメントを実行すると、端末はトランザクション・モードを抜けて、TRANSACTION-ID 特
殊レジスタに SPACES がセットされます。
端末がトランザクション・モードではないときにこのステートメントが実行されると、端末は異常終了
処理のためにサスペンドされます。
トランザクションを打ち切っている際に致命的なエラーが発生し、しかも実行しようとしている BEGINTRANSACTION ステートメントに ON ERROR 指定がない場合には、端末は異常終了処理のためにサスペ
ンドされます。当該トランザクションはバックアウトされます。BEGIN-TRANSACTION ステートメント
に ON ERROR 指定がある場合には、指定の分岐先に制御が移って、端末はサスペンドされません。
TMFのプログラミングの詳細については、
『Compaq NonStop Pathway/iTS TCP and Terminal Programming
Guide』を参照して下さい。
6.2.2 ACCEPT ステートメント
ACCEPT ステートメントの処理は、ブロック・モードで動作している端末と会話モードで動作している
端末とでは異なります。また、ACCEPT ステートメントは、インテリジェント・デバイスとの通信には使
用できません。
SCREEN COBOL プログラムに割り当てられている端末がブロック・モードになっているときは、
ACCEPT ステートメントは次のように機能します。
□ 端末からの応答を待機します。
□ 端末からデータを受け取ります。
□ DATA DIVISION の SCREEN SECTION の定義に基づいてデータの有効性を判定して、有効なデータ
だけをプログラムに返します。
□ ADVISORY フィールドがベース・スクリーンに定義されていて、無効なデータが入力された場合は、エ
ラー・メッセージを表示すると共に、エラーのあるフィールドをハイライトで示して、データを訂正ま
たは再入力できるようにします。
SCREEN COBOL プログラムに割り当てられている端末が会話モードになっているときは、ACCEPT ス
テートメントは次のように機能します。
□ PROMPT 句を指定された最初のスクリーン・フィールドに対して定義されたプロンプト値を表示しま
す。このプロンプト値は、常にスクリーン行のカラム 1 に表示されます。
□ 端末からの応答を待機します。TIMEOUT 句が指定されている場合は、ACCEPT は TIMEOUT 句で指
定された制限時間まで待機します。
6-6
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
□ 端末からの入力を受け取り、そのデータをプログラム・データ領域の関連のワーキング・ストレージ項
目にストアします。入力は、端末から 1 回に 1 スクリーン・フィールドずつ、1 行当たり1フィールド
ずつ受け入れることができます。ただし、TYPEAHEAD という機能を使用すれば、同一行にある複数
のフィールドにデータを入力することができます。
□ DATA DIVISION の SCREEN SECTION の定義に基づいてデータの有効性を判定して、有効なデータ
だけをプログラムに返します。
□ ADVISORY フィールドがベース・スクリーンに定義されていて、無効なデータが入力された場合は、エ
ラー・メッセージを表示すると共に、エラーのあるフィールドに対してプロンプトを再表示して、デー
タを再入力できるようにします。ADVISORY フィールドが定義されていない場合は、プロンプトは再
表示されますが、エラー・メッセージは表示されません。
ACCEPT [ screen-identifier ] ...
{ UNTIL { [(] { comp-condition-1 }... [)] ESCAPE [ ON ] } }
{
{
{ [(] { comp-condition-2 }... [)] }
} }
{
{
} }
{
{ [(] { comp-condition-1 }... [)]
} }
{
}
{ ESCAPE [ ON ] { [(] { comp-condition-2 }... [)] }
}
screen-identifier
データを受け入れるスクリーン・フィールドを指定します。ACCEPT ステートメントは、最大 127
のスクリーン・フィールドを持つことができます。各 screen-identifier には、スクリー
ン全体、スクリーン・グループ ( グループ項目 )、あるいは現在表示されているベース・スクリーン
ま た は オ ー バ ー レ イ・ス ク リ ー ン の 基 本 入 力 項 目 を 指 定 す る こ と が で き ま す。sc r e e n identifier がグループ項目の場合は、そのグループに従属する基本項目の内、TO または USING
句が指定されているすべての項目が参照範囲に含まれます。Screen-identifier は、添字付
き項目にすることはできません。
ベース・スクリーンとオーバーレイ・スクリーンの両方に対して定義されたフィールドからデータ
を受け入れようとする場合は、screen-identifier リストには、オーバーレイ・スクリーン
の一意名またはオーバーレイ宣言に含まれている項目の一意名を指定しなければなりません。オー
バーレイ・スクリーン指定がないベース・スクリーンを指定しただけでは不十分です。
screen-identifier リストに指定された順番にしたがって、フィールドがチェックされ、変
換されます。
このパラメータが省略された場合は、UNTIL または ESCAPE 句のいずれかで指定された終了条件
に基づいてこのステートメントがいつ終了するかが決められます。その場合は、スクリーンからデー
タは受け入れられず、ワーキング・ストレージ項目も変更されません。
ブロック・モードでは、スクリーンが FILLER 項目だけを含んでいて、スクリーン一意名が指定さ
れていない ACCEPT ステートメントの後に DISPLAY ステートメントがある場合は、ファンクショ
ン・キーによって ACCEPT ステートメントを終了するまで、スクリーンはそのまま残っています。
一意名を省略する一般的な例としては、ヘルプ・スクリーンを表示する場合があります。
426750-001J
6-7
第 6 章 PROCEDURE DIVISION ( 手続き部 )
UNTIL および ESCAPE
ステートメントが終了する条件を指定します。ブロック・モードでは、この条件として、通常は使
用できるファンクション・キーを指定します。終了条件には、UNTIL または ESCAPE 句の少なく
ともいずれか一方を指定しなければなりません。両方の句を指定した場合は、2 つの句の一方に終
了条件が現れるだけで十分です。
comp-condition-1
データが入力されたときにステートメントが終了することを指定します。
comp-condition-2
データ入力なしにステートメントが終了することを指定します。
終了条件 (comp-condition-1 または
comp-condition-2) に指定することができる言
語要素は、次のとおりです。
ABORT
ABORT-INPUT 文字によって ACCEPT ステートメントを終了することを示します。この句
が有効なのは、会話モードの端末だけです。第 5 章の「入力制御文字句」の説明を参照して
下さい。
ABORT は、ESCAPE 句でだけ認められます。ABORT 句が実行されても、ワーキング・ス
トレージ内のデータ項目は変更されません。
Pathway システム・コンフィギュレーション・コマンド (PATHCOM SET PROGRAM TYPE
コマンドまたは SET TERM コマンドのいずれか ) によって Break キーが有効になっている
プログラム、またはそのプログラムが実行されている端末で、Break キーが作動するように
するには ABORT 句を指定しなければなりません。
端末がブロック・モードの場合は、ABORT はコメントとして扱われます。
INPUT
有効なスクリーン入力によって ACCEPT ステートメントを終了することを示します。この
指定は、会話モードの端末でのみ有効です。
端末がブロック・モードの場合は、INPUT はコメントとして扱われます。
TIMEOUT timeout-value
データ入力が終了するまでの制限時間を秒単位で指定します。timeout-value には、数
字リテラルまたは数字データ項目を指定することができ、有効な範囲は 0 ~ 32,767 秒です。
指定された秒数以内に入力されないと、TERMINATION-SUBSTATUS が 40 にセットされ、
ACCEPT 処理はキャンセルされます。TIMEOUT は、ESCAPE 句でだけ指定することができ
ます。最大値は、32 ビット・フィールドに入れることができる最大の値です。
TIMEOUT を省略すると、データ入力の制限時間は設定されません。
6-8
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
PW-QUEUE-FKEY-TIMEOUT 特殊レジスタを使用すれば、TIMEOUT ロジックを処理する
前にキーボードをロックすることができます。詳細については、5-93 ページの「特殊レジス
タ」を参照して下さい。
備考: TIMEOUT 値としてワーキング・ストレージ項目を使用し、その項目が指標付きでない場合には、TIMEOUT
句の後のファンクション・キー範囲は括弧で囲まないで下さい。括弧で囲んだ場合は、SCREEN COBOL コ
ンパイル・エラーが発生します。
UNSOLICITED [ MESSAGE ]
非請求メッセージを受け取ると ACCEPT ステートメントを直ちに中断することを示します。
非請求メッセージを受け取ったかどうかの判定は、ACCEPT ステートメントの終了後に
TERMINATION-STATUS 内の該当する条件コード値をチェックすることによって行いま
す。UNSOLICITED MESSAGE は、ESCAPE 句でだけ指定することができます。
PW-QUEUE-FKEY-UMP 特殊レジスタを使用すれば、非請求メッセージのロジックを処理す
る前にキーボードをロックすることができます。詳細については、5-93 ページの「特殊レジ
スタ」を参照して下さい。
備考:会話モードでは、ABORT、INPUT、TIMEOUT、および UNSOLICITED MESSAGE 以外のすべての終了条
件は、無視されます。
mnemonic-name
所定のファンクション・キーが押されると ACCEPT 処理が終了することを示します。ただし、
ENVIRONMENT DIVISION の SPECIAL-NAMES 段落で IS 指定によって、端末ファンクション・
キーがこの mnemonic-name に関連付けられていなければなりません。キーによっては、端末
の特性のため、ESCAPE 句でしか使用できないものがあります。表 4-1 に、ESCAPE 句でしか使用
できないファンクション・キーのシステム名を示します。
mnemonic-name-1 THROUGH mnemonic-name-2
一連のファンクション・キーを 1 つの条件として示します。mnemonic-name-1 と mnemonic-
name-2 は、同じ範囲 ( シフトあり、またはシフトなし ) のファンクション・キーと関連付けられ
ていなければなりません ( 例えば、F2 THROUGH F15)。
SPECIAL-NAMES 段落のファンクション・キーのマッピングを変更した場合は、このオプションを
使用すると想定外の結果になることがあります。ファンクション・キーをマッピングし直して、
THROUGH または THRU オプションを使用しない UNTIL 句または ESCAPE 句に含まれるすべて
のキーの呼び名 (mnemonic name) をリストして下さい。
ブロック・モードでの ACCEPT 処理
ACCEPT ステートメントは端末キーボードを使用可能にして、端末からの入力を待機します。端末から
有効な制御キー・コードを受け取ると、キーボードは使用できなくなり、RESET TEMP が自動的に実行さ
れます。これによって、一時的なフィールド属性やデータが表示から取り除かれます。これは、プログラ
ムによって明示的に表示されたものであるか、ACCEPT ステートメントによって暗黙的に表示されたもの
であるかに無関係に行われます。ESCAPE 句で指定された終了条件による場合は、ACCEPT ステートメン
トはその時点で終了します。
426750-001J
6-9
第 6 章 PROCEDURE DIVISION ( 手続き部 )
プロンプトが使用され、PROMPT 句で指定されたフィールドが出力フィールドである場合は、ACCEPT
ステートメントは端末から入力されるデータを読み取る前にその出力フィールドの現在の値を表示しま
す。PROMPT 句で指定する出力フィールドは、FILLER として定義されるか、FROM または USING 句で
定義しておく必要があります。
端末から入力されたデータは、DATA DIVISION の SCREEN SECTION で定義された要件に基づいて
チェックされます。TCP は、ACCEPT ステートメントで指定されたスクリーン一意名によって参照される
フィールドだけをチェックします。
データのチェック中にエラーが見つかった場合は、ブロック・モードの端末では、次のようになります。
□ ADVISORY 句が指定されたフィールドがカレント・スクリーンで定義されている場合は、ADVISORY
フィールドの DISPLAY TEMPORARY が自動的に実行され、最初に見つかったエラーに対する標準の
エラー・メッセージが表示されます。
□ 端末に警報アラームが装着されている場合は、ENVIRONMENT DIVISION の SCREEN-CONTROL 段
落で使用禁止にしない限り、アラームが鳴ります。
□ エラーのある最初のフィールドは、SCREEN-CONTROL 段落で宣言されている標準の ERROR-
ENHANCEMENT で、表示属性が一時的に変更されます。この場合、エラーのあるすべてのフィール
ドがハイライト表示されるように、プログラムで指定することができます ( 第 4 章の「INPUT-OUTPUT
SECTION ( 入出力節 )」を参照して下さい )。
□ ACCEPT ステートメントは、上記の表示処理の後でリスタートされます。
データ・エラーが見つからない場合には、次のようになります。
□ 検証されたスクリーン・フィールド・データはすべて変換され、スクリーン・フィールドに関連付けら
れたワーキング・ストレージ内の TO または USING データ項目に転記 ( 移動 ) されます。
□ スクリーン入力フィールドにデータが入力されなかった場合は、WHEN ABSENT フィールド特性句で
指定されない限り、それに対応するワーキング・ストレージ・データ項目は変更されません。
□ ACCEPT ステートメントの入力フィールドに関連付けられたすべてのシャドウ項目の ENTER および
RETURN ビットが適正に設定されます。
ESCAPE 句を通して ACCEPT ステートメントが終了する場合は、TO または USING データ項目はいず
れも影響を受けません。データ変数はそのままの値にされ、SHADOWED ENTER および RETURN ビット
は未定義になります。
ACCEPT 処理の終わりの時点では、NEW-CURSOR 特殊レジスタはゼロ ( 行 0、カラム 0) にセットされ
ます。これによって、次の ACCEPT 処理のカーソルの位置を制御し、デフォルト位置を現在の ACCEPT
ステートメントの最初のフィールドにセットします。
ACCEPT ステートメントは、TERMINATION-STATUS 特殊レジスタに条件コード値をストアして、終
了を引き起こした条件を示します。それぞれの終了条件には、UNTIL または ESCAPE 句内での位置にし
たがってコード値が割り当てられます。そのコードは、UNTIL および ESCAPE 句の条件を 1 つのリスト
と見なして割り当てられ、各条件にはそのリストでの位置に対応するコード値を割り当てます。いくつか
の条件が括弧で囲まれてグループ化されている場合は、それらの条件にはすべて同じコード値が割り当て
られ、そのグループの次の条件には、グループのコード値より 1 だけ大きいコード値が割り当てられます。
6-10
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
次に示す例では、TERMINATION-STATUS の値は、Enter キーが押された場合は 1 に、CLEAR または
PA1 キーが押された場合は 2 に、PF1 キーが押された場合は 3 になります。
ACCEPT CUSTOMER-SCREEN UNTIL ENTER
ESCAPE ON (CLEAR, PA1), PF1
次の例では、TERMINATION-STATUS の値は、F1 キーが押された場合は 1 に、Shift-F16 キーが押され
た場合は 2 に、タイムアウトがあった場合は 3 に、非請求メッセージを受け取った場合は 4 になります。
GET-OPER-INPUT.
ACCEPT my-screen
UNTIL f1-key
sf16-key
ESCAPE ON
TIMEOUT 300
UNSOLICITED MESSAGE.
PERFORM ONE OF f1-key-action
sf16-key-action
timed-out
unsol-msg-arrival
DEPENDING ON TERMINATION-STATUS.
GO TO get-oper-input.
会話モードでの ACCEPT 処理
ACCEPT ステートメントは、PROMPT 句で記述された最初のスクリーン・フィールドに対するプロン
プト値を表示し、端末キーボードを使用可能にして、端末からの入力を待機します。( どのスクリーン・
フィールドの記述にも PROMPT 句がない場合は、ACCEPT ステートメントはスクリーンの最初のカラム
から実行されます。) ESCAPE 句で指定された終了条件によって終了した場合は、ワーキング・ストレー
ジ・データ項目を変更することなく ACCEPT ステートメントはその時点で終了します。ACCEPT ステー
トメントは、常にプロンプト値をスクリーン行のカラム 1 に表示し、カーソルをプロンプト・フィールド
の終わりに位置付けます。カーソル位置は、スクリーン記述で指定されたフィールドの位置には依存しま
せん。
端末が入力可能になると、データは 1 回につき 1 行 1 入力フィールドずつ受け入れられるか、同一行の
複数のフィールドで受け入れられます。先行入力機能が使用された場合は、フィールド・セパレータまた
はグループ・セパレータがスクリーン・フィールドを区切って、複数のデータ・フィールドを 1 つのバッ
ファに受け入れられるようにします。この場合、最初のフィールドのプロンプト値だけが表示され、それ
以降は、CR ( 復帰 ) または入力制御文字のいずれかによって入力の終わりが示されるまで、プロンプトは
表示されません。
ACCEPT ステートメントは、入力データを端末から受け取った順番に処理します。入力データは、
SCREEN SECTION で定義された順序でスクリーン・フィールドに関連付けられます。それ以上入力がな
くなるか、ABORT-INPUT 文字が入力されるか、エラーが見つかるまで、データが受け入れられます。ス
クリーン一意名が処理される順序は、次に説明するように、上から下、左から右になります。
1. 小さな列 ( 行 ) 番号を持つスクリーン・フィールドは、それよりも大きな列 ( 行 ) 番号を持つスクリー
ン・フィールドより先に処理されます。
426750-001J
6-11
第 6 章 PROCEDURE DIVISION ( 手続き部 )
2. 同一列 ( 行 ) では、小さなカラム番号を持つスクリーン・フィールドが、それよりも大きなカラム番号
を持つスクリーン・フィールドより先に処理されます。
入力データは、SCREEN SECTION のフィールド定義で指定された要件に基づいてチェックされます。
なお、スクリーン一意名リストで参照されるフィールドだけがチェックされます。ACCEPT ステートメン
トを処理する際に、入力データはスキャンされて、入力フィールドを識別する入力制御文字や中断、入力
の終了、またはリスタートを示す入力制御文字があるかどうか調べられます。BELL および HIDDEN 以外
の呼び名 (mnemonic name) は、会話モードでは認識されません。ですから、会話モードでは、ファンクショ
ン・キーは効力を持ちません。
エラーは、エラーがあったフィールドについてのみ影響があります。エラーが検出される前に入力され
たデータを含むフィールドは、有効です。エラーが検出された後に入力されたデータを含むフィールドは、
無視されます。
データのチェック中にエラーが見つかった場合は、次のようになります。
□ エラーがある最初のフィールドだけが検出され、ERROR-ENHANCEMENT によって指定された表示属
性で示されます。会話モードでは、BELL 属性だけが認識されます。
□ 現在のスクリーンで ADVISORY 句のあるフィールドが定義されている場合は、エラーのある行の次の
行に ADVISORY フィールドが表示されます。
□ ACCEPT 処理は、エラー表示の後にリスタートされます。エラーがあるフィールドのプロンプトが再
表示され、正しい入力を受け入れるためにカーソルが位置付けられます。
すべてのエラーが入力後直ちに検出されるわけではありません。後続のスクリーン・フィールドを入力
して処理した後に前のフィールドでエラーが検出されると、エラー・メッセージが表示され、ACCEPT ス
テートメントは初めからリスタートされます。これは、RESTART-INPUT 文字が処理される場合と同じ動
作です。
データのチェック中にエラーが見つからない場合は、次のようになります。
□ 各スクリーン・フィールドからの有効なデータは、端末からフィールドを受け取るたびに変換されて、
そのスクリーン・フィールドに関連付けられたワーキング・ストレージ内の TO または USING データ
項目に転記 ( 移動 ) されます。PICTURE、UPSHIFT などのスクリーン・フィールド特性は、変換され
た値に適用されます。
□ スクリーン入力フィールドにデータが入力されなかった場合は、WHEN ABSENT フィールド特性句で
指定されない限り、それに対応するワーキング・ストレージ・データ項目は変更されません。
□ ACCEPT ステートメントの入力フィールドに関連付けられたすべてのシャドウ項目の ENTER および
RETURN ビットが適正に設定されます。比較ステートメントでこれらのビットがチェックされる場合
は、ENTER および RETURN ビットは一緒にチェックされます。
ACCEPT ステートメントは、TERMINATION-STATUS 特殊レジスタに条件コードをストアします。先
にブロック・モードで説明したのと同じ方法で、それぞれの終了条件にコード値が割り当てられます。
会話モードの端末では、Break キーを使用して ACCEPT 処理を中断することができます。Break キーを
有効にするには、Pathway システム・コンフィギュレーションで PATHCOM コマンドの SET TERM また
は SET PROGRAM TYPE を使用します。また、Break キーで ACCEPT 処理を終了できるようにするには、
SCREEN COBOL プログラムで ACCEPT ステートメントに ESCAPE ON ABORT 句を指定する必要があり
ます。Break キーが有効になっていて ACCEPT ステートメントの処理中に押されると、ABORT-INPUT 文
字を入力したのと同じ効果があります。
6-12
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
次の例は、会話モードでの ACCEPT ステートメントを示しています。この例では、TERMINATION-
STATUS の値は、有効な入力の場合は 1 に、ABORT または TIMEOUT の場合は 2 になります。
ACCEPT EMPLOYEE-SCREEN UNTIL INPUT
ESCAPE ON (ABORT, TIMEOUT 180).
PERFORM ONE OF
300-CHECK-NULL-NAME
200-EXIT-ROUTINE
DEPENDING ON TERMINATION-STATUS.
MDT (Modified Data Tag)
それぞれの非リテラル・スクリーン・フィールドには、MDT (modified data tag) が関連付けられていま
す。MDT は 1 ビットのフィールドで、スクリーン・フィールドのデータが変更されたかどうかを示しま
す。したがって、ACCEPT ステートメントの終了時に TCP に必ず送信されます。端末は、MDT がオンに
セットされたフィールドのデータだけ送信します。スクリーン・フィールドが変更されていない場合は、
MDT はセットされず、そのスクリーン・フィールドのデータは TCP に送信されません。
MDT のビットは、プログラムによって操作することができます。SCREEN COBOL では、フィールド
属性 MDTON および MDTOFF でも、フィールド・データの送信を制御することができます。アプリケー
ション・プログラマは、スクリーン・フィールドのデータを次のいずれの環境で送信するかを選択するこ
とができます。
□ すべての ACCEPT ステートメントについて無条件に (MDTON)
□ スクリーン・フィールドが変更された場合 (MDTOFF)
ACCEPT 処理の終了後、そのフィールドの MDT ビットはリセットされません。いったん MDT ビット
がセットされると、次の DISPLAY BASE、TURN、RESET、または CLEAR INPUT 処理までセットされ
たままになります。上記の処理を行わずに ACCEPT ステートメントを繰り返すと、先に送ったデータが再
送信されます。アプリケーションによってはデータの再送信が必要なこともありますが、必要に応じて、
プログラムで再送信を避けるようにすることもできます。
次の例は、端末データを再送信したくない場合に、推奨される CLEAR INPUT 動詞の使用法を示してい
ます。
START-PROGRAM.
DISPLAY BASE screen-id.
LOOP.
DISPLAY screen-id.
ACCEPT screen-id UNTIL F1-KEY
ESCAPE ON SF16-KEY.
.
.
.
CLEAR INPUT.
GO TO LOOP.
426750-001J
6-13
第 6 章 PROCEDURE DIVISION ( 手続き部 )
CLEAR INPUT ステートメントは MDT ビットをリセットして、現在表示されているスクリーンの保護
されていないすべてのフィールドに NULL 値を表示します。入力フィールドを空白にする必要がない場合
は、代りに RESET ATTR または TURN MDTOFF を使用することができます。
MDT の別の作用についても考慮する必要があります。次のような場合に、TCP はフィールドの MDT
ビットをオンにします。
□ TURN TEMP ステートメントが表示属性を変更する入力フィールドを選択した場合は、MDT ビットは
常にセットされます。
□ RESET TEMP ステートメントが表示属性をリセットする入力フィールドを選択した場合は、その
フィールドの MDT 属性の初期値とは無関係に、MDT ビットはセットされます。
これらの 2 つの例外は、TEMP 参照子を指定した TURN ステートメントおよび RESET ステートメント
についてだけ適用されます。
このような MDT の作用を利用すれば、エラーがあるフィールドを正しく取り扱うことができます。あ
るフィールドでエラーが検出されると、通常はそのフィールドで、プログラムによって明示的に、または
ACCEPT ステートメントの動作によって暗黙的に、表示属性の TURN TEMP が実行されます。前述の規則
で示したように、MDT がセットされ、したがって次の読取り操作でフィールドからのデータは端末から再
度送信されることが保証されます。次の読取り操作の後で、RESET TEMP 処理が実行されます。これに
よって、フラグが立てられて表示属性が削除され、MDT ビットは再びオンに切り換えられます。別のフィー
ルドでエラーが検出されると、同じデータを後からまた読み取ることがあるので、後者の MDT のセット
は必要であり、RESET 処理されたそのフィールドのデータを正しく受け入れるために再度送信しなければ
なりません。
6.2.3 ACCEPT DATE/DAY/TIME ステートメント
ACCEPT DATE/DAY/TIME ステートメントは、オペレーティング・システムの現在の日時を TCP に提
供し、それをユーザ・プログラムのデータ領域に返します。
ACCEPT accept-name FROM { DATE [YYYYMMDD] | DAY [YYYYDDD] |
TIME }
accept-name
DATE、DAY、または TIME がストアされるデータ項目の一意名です。DATE、DAY、および TIME、
通常は次のように定義されます。
DATE YYYYMMDD
DATE
DAY YYYYDDD
DAY
TIME
PIC
PIC
PIC
PIC
PIC
9(8)
9(6)
9(7)
9(5)
9(8)
DATE YYYYMMDD
8 桁の数字 yyyymmdd で表現される現在の日付を示します。yyyy は年、mm は月、dd は日を表
します。例えば、2002 年 11 月 25 日は、20021125 になります。
6-14
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
DATE
6 桁の数字 yymmdd で表現される現在の日付を示します。yy は年、mm は月、dd は日を表します。
例えば、1997 年 11 月 25 日は、971125 になります。
DAY YYYYDDD
7 桁の数字 yyyyddd で表現される現在のユリウス暦日付を示します。yyyy は年、ddd はその
年における第何日目であるかを表します。例えば、2001 年 2 月 25 日は、2001056 になります。
DAY
5 桁の数字 yyddd で表現される現在のユリウス暦日付を示します。yy は年、ddd はその年にお
ける第何日目であるかを表します。例えば、1998 年 3 月 3 日は、98062 になります。
TIME
8 桁の数字 hhmmsscc で表現される現在の 24 時間制の時刻を示します。hh は時、mm は分、ss
は秒、cc は百分の 1 秒を表します。例えば、午後 2 時 41 分は、14410000 になります。値の範囲
は、00000000 から 23595999 までです。
次の例では、現在の日付 (yymmdd) を todays-date に、ユリウス暦日付 (yyddd) を juliandate に、そして現在の時刻 (hhmmsscc) を time-right-now にストアします。
WORKING-STORAGE SECTION.
01
date-and-time-fields.
05 todays-date-full PIC 9(8) VALUE ZERO.
05 todays-date
PIC 9(6) VALUE ZERO.
05 julian-date-full PIC 9(7) VALUE ZERO.
05 julian-date
PIC 9(5) VALUE ZERO.
05 time-right-now
PIC 9(8) VALUE ZERO.
:
PROCEDURE DIVISION.
:
ACCEPT todays-date-full FROM DATE YYYYMMDD
ACCEPT todays-date FROM DATE
ACCEPT julian-date-full FROM DAY YYYYDDD
ACCEPT julian-date FROM DAY
ACCEPT time-right-now FROM TIME
426750-001J
6-15
第 6 章 PROCEDURE DIVISION ( 手続き部 )
6.2.4 ADD ステートメント
ADD ステートメントは、数字値を合計して、その結果を 1 つ以上のデータ項目にストアします。合計を
入れるフィールドを定義するときには、フィールドの大きさを考慮する必要があります。受取り側のフィー
ルドを結果を入れるのに十分なだけ大きくして、ゼロ以外の桁が切り詰められるのを避けなければなりま
せん。ADD ステートメントには、次の 3 つの形式があります。
ADD TO
ADD GIVING
ADD CORRESPONDING
次に、それぞれの形式について説明します。
ADD TO ステートメント
ADD TO ステートメントは、指定されたすべての値を合計して、その結果を指定された各データ項目の
現在の値に加算します。
ADD { value } ,... TO { result } ,...
value
数字リテラル、または基本数字データ項目の一意名です。
result
value、または value の合計が加算される数字データ項目の一意名です。
ADD GIVING ステートメント
ADD GIVING ステートメントは、指定されたすべての値を合計して、指定された各データ項目の現在の
値をその結果で置き換えます。
ADD { value } ,... GIVING { result } ,...
value
数字リテラル、または基本数字データ項目の一意名です。
result
value の合計がストアされる数字データ項目の一意名です。
ADD CORRESPONDING ステートメント
ADD CORRESPONDING ステートメントは、あるグループ内の基本項目と別のグループ内の対応する項
目を合計して、その結果を 2 番目のグループの基本項目にストアします。ADD CORRESPONDING ステー
トメントで指定された名前および修飾語 ( グループ名を除く ) が同じであるときに、それぞれの項目は対応
します。
6-16
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
ADD { CORR
} group-1 TO group-2
{ CORRESPONDING }
group-1 および group-2
一部またはすべての基本項目が数字であるグループ項目の一意名です。
合計は、group-2 項目に入れられます。
CORRESPONDING 指定で使用されるデータ項目には、次の規則が適用されます。
□ REDEFINES 句または OCCURS 句は、どのデータ項目のデータ記述項にも指定することができます。
□ データ項目は、REDEFINES 句または OCCURS 句が指定されているデータ記述項に従属することがで
きます。
□ データ項目は、レベル番号 66、77、または 88 で定義することはできません。
2 つの異なるグループ内の従属データ項目は、次の規則にしたがって対応します。
□ 両データ項目は、データ名が同一でなければなりません。
□ 足す側データ項目のすべての修飾子 ( グループ名を除く ) は、足される側データ項目のすべての修飾子
( 受け取ったグループ名を除く ) と同一でなければなりません。
□ 基本数字データ項目だけが考慮されます。
□ 対応が適正でないデータ項目に従属するデータ項目は、すべて無視されます。
□ FILLER データ項目は、無視されます。
次の例では、staples および paper 以外の項目名はすべて対応しています。この 2 つの項目は、ADD
CORRESPONDING 処理から除外されます。項目の対応は項目 ( および、最上位以外の修飾子 ) の名前に
よるもので、項目の物理的な順番によるものではないことに注意して下さい。
WORKING-STORAGE SECTION.
01 cabinet-supplies.
05 writing-tools.
10 pencils
10 pens
10 erasers
05 paper-clips
05 staples
426750-001J
PIC
PIC
PIC
PIC
PIC
99.
99.
99.
99.
99.
6-17
第 6 章 PROCEDURE DIVISION ( 手続き部 )
01
stockroom-supplies.
05 writing-tools.
10 pencils
PIC 99.
10 erasers
PIC 99.
10 pens
PIC 99.
05 paper-clips
PIC 99.
05 paper
PIC 99.
:
PROCEDURE DIVISION.
:
ADD CORRESPONDING cabinet-supplies TO stockroom-supplies.
次の例では、グループの間で 1 つの項目 (6-12-years) だけが対応します。
01
test-group-1.
05 children.
10 1-5-years
10 6-12-years
05 teen-agers.
10 13-15-years
10 16-19-years
05 adults
10 women
10 men
01
test-group-2.
05 children.
10 1-3-years
10 4-5-years
10 6-12-years
05 teen-agers
すべての項目が数字であるとすれば、次のステートメントは、test-group-1 の children の 6-12-years を test-
group-2 の children の 6-12-years に加算します。
ADD CORRESPONDING test-group-1 TO test-group-2
6.2.5 BEGIN-TRANSACTION ステートメント
BEGIN-TRANSACTION ステートメントは、1 つのトランザクションとして取り扱う一連の処理の始ま
りを表します。このステートメントが実行されると、端末はトランザクション・モードに入ります。トラ
ンザクション・モードでは、トランザクション管理ファシリティ (TMF) の下で実行するようにコンフィ
ギュレーションされた Pathway サーバは、オーディット対象ファイルをロックしたり、更新したりするこ
とができます。
新しいトランザクションを開始すると、TMF は端末にトランザクション ID 番号を割り当てます。この
番号は、特殊レジスタ TRANSACTION-ID に入れられます。その他に、2 つの特殊レジスタがセットされ
ます。RESTART-COUNTER が 0 にセットされて、トランザクションが初めて開始されることを示します。
また、TERMINATION-STATUS が 1 にセットされて、トランザクションが開始されたことを示します。
BEGIN-TRANSACTION [ ON ERROR imperative-statement ]
ON ERROR
エラーを検出した場合の制御ポイントを指定します。トランザクション・リスタート・リミットに
対するチェックは行われません。トランザクションはリスタートされ、ON ERROR で指定された処
理が実行されます。
6-18
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
imperative-statement
エラーが発生した場合、またはトランザクションがリスタートされた場合に実行されるステートメ
ントです。ON ERROR 指定が省略された場合は、リスタートの回数がトランザクション・リスター
ト・リミットに達すると、端末はサスペンドされますがリスタートすることができます。
端末がトランザクション・モードになっているときに何らかの理由でトランザクションが障害を起こす
と、TMF は現在のトランザクションで行ったデータベースの更新をすべてバックアウト ( 取消し ) します。
ABORT-TRANSACTION ステートメントを実行して故意にトランザクションを中断させた場合を除いて、
次の条件が満たされれば、端末の実行は BEGIN- TRANSACTION ステートメントの時点からリスタートさ
れます。
□ ON ERROR 句が指定されていること。
□ ON ERROR 句は指定されていないが、リスタートの回数がトランザクション・リスタート・リミット
を越えていないこと。1 つの論理トランザクションが自動的にリスタートされる回数の最大値は、
PATHCOM の SET PATHWAY コマンドの MAXTMFRESTARTS パラメータで指定されます。
トランザクションがリスタートされると、TMF は端末に新しいトランザクション ID 番号を割り当てま
す。TCP は、スクリーン・リカバリのために当該のスクリーンにマークを付け、特殊レジスタ RESTART-
COUNTER を 1 だけ加算します。特殊レジスタ TERMINATION-STATUS は 1 ( トランザクションが開始
またはリスタートされたことを示す ) のまま変わりません。ワーキング・ストレージ項目は、BEGIN-
TRANSACTION ステートメントの実行時の値に戻ります。ON ERROR が指定されている場合は、指定さ
れた無条件ステートメントが実行されます。
端末がトランザクション・モードにあるときに BEGIN-TRANSACTION ステートメントが実行される
と、現在のトランザクションはバックアウトされ、端末は異常終了処理のためにサスペンドされます。端
末の実行を再開することはできません。
BEGIN-TRANSACTION ステートメントが実行されると、実行の結果を示すために特殊レジスタ
TERMINATION-STATUS がセットされます。表 6-2 に、TERMINATION-STATUS の値を示します。
表 6-2 BEGIN-TRANSACTION ステートメントのエラー番号
426750-001J
TERMINATION-STATUS
説明
1
トランザクションが開始またはリスタートされた。
2
TMF がインストールされていない。ON ERROR が指定されていな
い場合は、異常終了処理のためにサスペンドされる。
3
TMF が作動していない。ON ERROR が指定されていない場合は、
端末はサスペンドされるが、リスタートすることができる。
4
トランザクションを開始しようとしたときに致命的なエラーが発生
した。ON ERROR が指定されていない場合は、異常終了処理のため
にサスペンドされる。
6-19
第 6 章 PROCEDURE DIVISION ( 手続き部 )
6.2.6 CALL ステートメント
CALL ステートメントは、ある SCREEN COBOL プログラムから別の SCREEN COBOL プログラムに
制御を渡します。
CALL { data-name
} [ USING { identifier } ,... ]
{ program-unit-name }
[ ON ERROR imperative-statement ]
data-name
WORKING-STORAGE SECTION または LINKAGE SECTION の非数字項目です。このデータ項目
の値に、呼び出される SCREEN COBOL プログラムの IDENTIFICATION DIVISION に指定されて
いる PROGRAM-ID を指定します。data-name の指定によって、呼び出されるプログラムの
PROGRAM-ID を動的に指定することができます。
program-unit-name
呼び出される SCREEN COBOL の IDENTIFICATION DIVISION に指定されている PROGRAM-ID
を指定する非数字リテラルまたは非数字リテラルの一意名です。SCREEN COBOL 言語では、非数
字リテラルは引用符で囲まれて定義されます。ただし、プログラムの名前の検索では、引用符で囲
まれていないプログラム名であっても見つけることができます。このプログラムは、いずれの端末
タイプに対してもコンパイルすることができます。詳細については、6-30 ページの「呼び出される
プログラムとの適合性」を参照して下さい。
呼び出されるプログラムを指定するリテラルが呼び出すプログラムの SECTION の名前と同じであ
る場合は、コンパイル時にエラーになります。呼び出されるプログラムに、リテラルではなく非数
字リテラルのワーキング・ストレージ一意名を指定することによって、こうした事態を避けること
ができます。
USING
呼 び出 さ れる プロ グラ ムに 渡すデータ ( 引数 ) を指定します。呼び出されるプログラムの
PROCEDURE DIVISION 見出しには、対応する USING 指定を入れなければなりません。CALL ス
テートメント内の USING 指定の一意名の数は、呼び出されるプログラムにある USING 指定の数と
同じまたはそれより多くなければなりません。
identifier
呼び出されるプログラムに渡される引数の名前です。この
identifier は、呼出し側のプログ
ラムの WORKING-STORAGE SECTION または LINKAGE SECTION 内のレベル 01 または 77 の
デ ー タ 項 目 で な け れ ば な ら ず、また 1 2 , 2 8 8
バイトを超えてはなりません。さらに、この
identifier は、呼び出されるプログラムの PROCEDURE DIVISION 見出しの USING で指定
された一意名と同数で構造も同じでなければなりません。この対応は、USING リストでの位置に
よって成立します。LINKAGE SECTION と CALL ステートメントとの対応の詳細については、5-3
ページの「LINKAGE SECTION」の説明を参照して下さい。
6-20
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
ON ERROR
呼び出されたプログラムでエラーが発生した場合の制御ポイントを指定します。
端末のサスペンドを生ずるようなエラーが発生した場合は、ON ERROR 句を含む CALL ステート
メントを持つ 1 つ上のレベルのプログラムに制御が返されます。( 端末のサスペンドを生ずるよう
なエラー条件とは、CALL...ON ERROR 機能を使用しなければ端末をサスペンドさせてしまう条件
です。) ON ERROR 句を含むプログラムが存在しない場合は、端末はエラーを起こしたステートメ
ントでサスペンドされたままになります。また、端末のサスペンドを生ずるようなエラーが発生し
たときに、端末がトランザクション・モードで、CALL...ON ERROR の制御ポイントが現在のトラ
ンザクションの範囲を超えている場合は、その現在のトランザクションは中断されます。
CALL ステートメントに ON ERROR 句が指定され、そのステートメントが実行されているときは、
Pathway ログ・ファイルにはエラー・メッセージは書き込まれません。
imperative-statement
エラーが発生した場合に実行されるステートメント。
プログラムのデータ領域はそのプログラムが呼び出されるたびに初期設定されるので、プログラム間で
呼び出しが行われるときには変数の値は保持されません。
ON ERROR 句による分岐が行われた場合は、特殊レジスタ TERMINATION-STATUS にエラーを記述す
るエラー・コードが入れられ、さらに特殊レジスタ TERMINATION-SUBSTATUS にはそのエラーを詳細
に記述するエラー・コードが入れられます。表 6-3 に、TERMINATION-STATUS およびそれに対応する
TERMINATION-SUBSTATUS エラー・コードを示します。TERMINATION-SUBSTATUS のエラー・コー
ドは、エラーによって異なります。
表 6-3 CALL ステートメントのエラー・コード ( 1 / 9 )
TERMINATION-STATUS
426750-001J
0001
INVALID PSEUDOCODE DETECTED
( 無効な擬似コードが検出された )
0002
DEPENDING VARIABLE VALUE TOO BIG
(DEPENDING 変数の値が大き過ぎる )
0003
INVALID SUBSCRIPT VALUE
( 添字の値が無効である )
0004
SCREEN RECOVERY EXECUTED ILLEGAL INSTRUCTION
( スクリーン・リカバリ時に不正な命令が実行された )
0005
CALL: ACTUAL NUMBER OF PARAMETERS MISMATCHES FORMAL
(CALL: パラメータの実際の数字が正規のパラメータと一致しない )
0006
CALL: ACTUAL PARAMETER SIZE MISMATCHES FORMAL
(CALL: 実際のパラメータのサイズが正規のサイズと一致しない )
0007
SCREEN OPERATION DONE WITHOUT BASE DISPLAYED
( ベース・スクリーンを表示せずに、スクリーン・オペレーションを実行し
た)
TERMINATIONSUBSTATUS
(%p-reg)
6-21
第 6 章 PROCEDURE DIVISION ( 手続き部 )
表 6-3 CALL ステートメントのエラー・コード ( 2 / 9 )
TERMINATION-STATUS
6-22
TERMINATIONSUBSTATUS
0010
INTERNAL ERROR IN TERMINAL FORMAT ROUTINES
( 端末フォーマット・ルーチンで内部エラーが発生した )
(%p-reg)
0011
ILLEGAL TERMINAL TYPE SPECIFIED
( 不正な端末タイプが指定された )
(%p-reg)
0012
SCREEN REFERENCED BUT NOT DISPLAYED
( スクリーンが参照されたが、表示されなかった )
(screennumber)
0013
OVERLAY SCREEN DISPLAYED IN TWO AREAS
( オーバーレイ・スクリーンが 2 つの領域に表示された )
0014
ILLEGAL TERMINAL IO PROTOCOL WORD
( 不正な端末 IO プロトコル語があった )
0015
ARITHMETIC OVERFLOW
( 算術オーバフローが発生した )
0016
TERMINAL STACK SPACE OVERFLOW
( 端末スタック・スペースでオーバフローが発生した )
(bytes)
0017
ERROR DURING TERMINAL OPEN
( 端末を開く際にエラーが発生した )
(errnum)
0018
ERROR DURING TERMINAL IO
( 端末 IO の際にエラーが発生した )
(errnum)
0019
WRONG TRANSFER COUNT IN TERMINAL IO
( 端末 IO 時のトランスファ・カウントが誤っていた )
0020
CALLED PROGRAM UNIT NOT FOUND
( 呼び出されたプログラムが見つからない )
0021
TRANSACTION MESSAGE SEND FAILURE
( トランザクション・メッセージを送信できなかった )
0022
SEND: SERVER CLASS NAME INVALID
(SEND: サーバ・クラス名が無効である )
0023
PSEUDOCODE SIZE TOO BIG
( 擬似コードのサイズが大き過ぎる )
0024
TCLPROG DIRECTORY ENTRY IS BAD
(TCLPROG ディレクトリに誤ったエントリがある )
0025
TERMINAL INPUT DATA STREAM INVALID
( 端末の入力データ・ストリームが無効である )
0027
TRANSACTION MODE VIOLATION
( トランザクション・モードに違反した )
0028
TRANSACTION I/O ERROR
( トランザクション I/O エラー )
(errnum)
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
表 6-3 CALL ステートメントのエラー・コード ( 3 / 9 )
TERMINATION-STATUS
426750-001J
TERMINATIONSUBSTATUS
0029
TRANSACTION RESTART LIMIT REACHED
( トランザクションのリスタート・リミットに達した )
0030
TMF NOT CONFIGURED
(TMF がコンフィギュレーションされていない )
0031
TMF NOT RUNNING
(TMF が実行されていない )
0032
TMF TFILE OPEN FAILURE
(TMF TFILE を開く際にエラーが発生した )
0035
INSUFFICIENT TERMBUF CONFIGURED
( 十分な TERMBUF がコンフィギュレーションされていない )
0036
CANNOT CALL PU WITH TERMINAL-ERRORS DECLARATIVE
(TERMINAL-ERRORS 宣言を持つプログラムを呼び出せない )
0037
ILLEGAL ACCEPT VARIABLE TIMEOUT VALUE
(ACCEPT ステートメントの TIMEOUT 句の値が不正である )
0040
INVALID NUMERIC ITEM
( 数字項目が無効である )
0041
INVALID PRINTER SPECIFICATION
( プリンタの指定が無効である )
0042
DEVICE REQUIRES INTERVENTION
( デバイスが割込みを必要としている )
(errnum)
0043
PRINTER I/O ERROR
( プリンタ I/O エラー )
(errnum)
0050
TERMINAL STOPPED BY PENDING REQUEST
( ペンディング要求によって端末が停止した )
0051
TERMINAL SUSPENDED BY PENDING REQUEST
( ペンディング要求によって端末がサスペンドした )
0052
TERMINAL STOPPED BY PROGRAM
( プログラムによって端末が停止された )
0053
INVALID NUMERIC ITEM - INSTRUCTION ADDRESS
( 無効な数字項目-命令アドレス )
(%address)
0054
IO PROTOCOL DENIED
(IO プロトコルが拒否された )
(protocolnumber)
0055
INVALID I/O PROTOCOL VALUE FROM PATHMON
(PATHMON から無効な I/O プロトコル値を受け取った )
(protocolnumber)
0056
6540 CACHE ERROR; TERMINAL SUSPENDED
(6540 キャッシュ・エラー、端末がサスペンドした )
(errnum)
(number)
6-23
第 6 章 PROCEDURE DIVISION ( 手続き部 )
表 6-3 CALL ステートメントのエラー・コード ( 4 / 9 )
TERMINATION-STATUS
6-24
0057
6540 CACHE ERROR; REVERTING TO T16-6530 EMULATION
(6540 キャッシュ・エラー、T16-6530 エミュレーションに復帰した )
0058
PROGRAM UNIT OR SCOBOL CONSTRUCT REQUIRES NEWER
VERSION OF TCP
( このプログラムまたは SCREEN COBOL には、新しいバージョンの TCP が
必要である )
0059
I/O ERROR ON DEVICEINFO
(DEVICEINFO ステートメントの処理中に I/O エラーが発生した )
0060
DEVICE DOESN’T SUPPORT DOUBLEBYTE CHARACTERS
( デバイスが 2 バイト文字をサポートしていない )
0061
DBCS TRANSLATION SUPPORT NOT INSTALLED
(DBCS 変換サポートがインストールされていない )
0062
INVALID KATAKANA OR DBCS DATA
( カタカナまたは DBCS データが無効である )
0063
INVALID KATAKANA OR DBCS DATA
( カタカナまたは DBCS データが無効である )
0064
TRUNCATION OCCURRED DURING DISPLAY OF DBCS DATA
(DBCS データの表示の際に切り詰めが行われた )
0065
DEVICE DOES NOT SUPPORT KATAKANA
( デバイスがカタカナをサポートしていない )
0066
DEVICE DOES NOT SUPPORT KATAKANA
( デバイスがカタカナをサポートしていない )
0067
FIELD CONTAINS OTHER THAN DBCS DATA
( フィールドが DBCS データ以外を含んでいる )
0068
FIELD CONTAINS OTHER THAN DBCS DATA
( フィールドが DBCS データ以外を含んでいる )
0069
UNILATERAL ABORT: BACKUP TASK STATE NOT VALID
( 異常終了 : バックアップ・タスク状態が有効でない )
0070
BACKUP TASK ERROR: UNABLE TO CHECKOPEN TERMINAL
( バックアップ・タスク・エラー : 端末を CHECKOPEN できない )
0071
REQUESTED DEVICE COLOR/HIGHLIGHT NOT AVAILABLE
( 要求されたカラー表示またはハイライト表示属性をデバイスで使用できな
い)
0072
RUN-TIME ATTRIBUTE SETTING INVALID
( ランタイム属性設定が無効である )
0073
INSUFFICIENT TERMPOOL FOR REQUEST
( 要求に対する TERMPOOL が不十分である )
TERMINATIONSUBSTATUS
(errnum)
(bytes)
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
表 6-3 CALL ステートメントのエラー・コード ( 5 / 9 )
TERMINATION-STATUS
426750-001J
TERMINATIONSUBSTATUS
0074
ILLEGAL DELAY VALUE
(DELAY 値が不正である )
0100
ERROR DURING SERVER OPEN
( サーバを開く際にエラーが発生した )
(errnum)
0101
TCLPROG DIRECTORY FILE OPEN ERROR
(TCLPROG ディレクトリ・ファイルを開く際にエラーが発生した )
(errnum)
0102
TCLPROG CODE FILE OPEN ERROR
(TCLPROG コード・ファイルを開く際にエラーが発生した )
(errnum)
0103
ILLEGAL TCLPROG DIRECTORY FILE
(TCLPROG ディレクトリ・ファイルが不正である )
0104
ILLEGAL TCLPROG CODE FILE
(TCLPROG コード・ファイルが不正である )
0106
PARAMETERS FOR TCP CONFIGURATION TOO LARGE
(TCP コンフィギュレーションのためのパラメータが大き過ぎる )
0107
SWAP FILE CREATION ERROR
(SWAP ファイルの作成時にエラーが発生した )
(errnum)
0108
SWAP FILE OPEN ERROR
(SWAP ファイルを開く際にエラーが発生した )
(errnum)
0109
SWAP FILE I/O ERROR
(SWAP ファイルの I/O 時にエラーが発生した )
(errnum)
0110
NO ROOM FOR NEW SERVER CLASS IN TCP
(TCP に新しいサーバ・クラスのための空間がない )
0112
REPLY NUMBER NOT KNOWN TO PROGRAM
( プログラムに定義されていない応答番号があった )
0113
TRANSACTION MESSAGE SIZE EXCEEDS LIMIT
( トランザクション・メッセージのサイズが制限を超えた )
0114
MAXIMUM REPLY SIZE EXCEEDS LIMIT
( 最大応答サイズが制限を超えた )
0115
TRANSACTION REPLY SIZE INVALID
( トランザクション応答サイズが無効である )
(bytes-length)
0116
ERROR DURING SERVER I/O
( サーバ I/O 時にエラーが発生した )
(errnum)
0117
SERVER CLASS UNDEFINED
( サーバ・クラスが定義されていない )
0118
REQUEST INVALID FOR SERVER STATE
( サーバの状態に無効なリクエストが行われた )
6-25
第 6 章 PROCEDURE DIVISION ( 手続き部 )
表 6-3 CALL ステートメントのエラー・コード ( 6 / 9 )
TERMINATION-STATUS
6-26
TERMINATIONSUBSTATUS
0119
NO SPACE FOR NEW SERVER PROCESS
( 新しいサーバ・プロセスのためのスペースがない )
0121
TCLPROG DIRECTORY FILE ERROR
(TCLPROG ディレクトリ・ファイルでエラーが発生した )
(errnum)
0122
TCLPROG CODE FILE ERROR
(TCLPROG コード・ファイルでエラーが発生した )
(errnum)
0123
NO SERVER PROCESS LINKED TO
( サーバ・プロセスがリンクされていない )
0124
APPLICATION DEFINED ERROR--EXIT PROG WITH ERROR
( アプリケーション定義のエラー-エラーでプログラムを終了した )
0125
MULTIPLE UNSOLICITED MESSAGES REJECTED DUE TO TERM STOP/
SUSPEND
( 端末が停止またはサスペンドしたため、複数の非請求メッセージが拒否さ
れた )
0161
I/O ERROR
(I/O エラー )
(errnum)
0162
RECEIVED MESSAGE SMALLER THAN EXPECTED
( 想定より小さいメッセージを受け取った )
(byte-length)
0163
RECEIVED MESSAGE LARGER THAN EXPECTED
( 想定より大きいメッセージを受け取った )
0164
CODE OF RECEIVED MESSAGE UNDEFINED
( 受信メッセージのコードが定義されていない )
0165
EDIT ERROR OCCURRED ON MESSAGE INPUT
( メッセージ入力で編集エラーが発生した )
0166
RECEIVED MESSAGE EXCEEDS MAXIMUM ALLOWABLE SIZE
( 受け取ったメッセージが許される最大サイズを超えた )
(byte-length)
0167
MESSAGE TO SEND EXCEEDS MAXIMUM ALLOWABLE SIZE
( 送信するメッセージが許される最大サイズを超えた )
(byte-length)
0168
DEVICE SUBCLASS INVALID
( デバイスのサブクラスが無効である )
0169
ILLEGAL TIMEOUT VALUE
(TIMEOUT 値が不正である )
0170
INVALID END OF MESSAGE CHARACTER ENCOUNTERED
( 無効なメッセージの終わり文字が見つかった )
0171
FIELD LENGTH EXCEEDS MAXIMUM ALLOWABLE LENGTH
( フィールドの長さが許される最大長を超えた )
(byte-length)
0172
MESSAGE LENGTH EXCEEDS MAXIMUM ALLOWED
( メッセージの長さが許される最大長を超えた )
(byte-length)
(terminationstatus)
(timeout)
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
表 6-3 CALL ステートメントのエラー・コード ( 7 / 9 )
TERMINATION-STATUS
426750-001J
0173
I/O ERROR ON CONTROL-26 OPERATION
(CONTROL-26 オペレーションで I/O エラーが発生した )
0174
CONTROL-26 OPERATION DID NOT COMPLETE IN TIME
(CONTROL-26 オペレーションが時間内に終了しなかった )
0175
EDIT ERROR OCCURRED ON MESSAGE OUTPUT
( メッセージの出力時に編集エラーが発生した )
0176
ATTEMPT TO RECEIVE UNSOLICITED MESSAGE WITH ONE NOT YET
REPLIED TO
( 未応答メッセージが存在するにもかかわらず、次の非請求メッセージを受
け取ろうとした )
0177
NO UNSOLICITED MESSAGE TO REPLY TO
( 応答する非請求メッセージがない )
0178
ATTEMPT TO RECEIVE UNSOLICITED MESSAGE WHEN TERM
MAXINPUTMSGS = 0
( 端末の最大入力メッセージ = 0 のときに、非請求メッセージを受け取ろうと
した )
0179
DATA LEFT OVER ON SCATTER TO WORKING STORAGE
( ワーキング・ストレージに分散したときにデータが残されていた )
0180
NOT ENOUGH DATA FOR SCATTER TO WORKING STORAGE
( ワーキング・ストレージに分散するためのデータが不十分である )
0181
VARIABLE FIELD SIZE WOULD EXCEED DECLARED FIELD SIZE
( 変数フィールド・サイズが宣言されたフィールド・サイズを超えた )
0182
DELIMITER IS NOT BYTE ALIGNED
( デリミッタがバイト揃えされていない )
0183
DEPENDING VALUE IS OUT OF BOUNDS
( 従属する値が範囲外である )
0184
CONFLICT OF DATA TYPES DURING ’PRESENT IF’ DETERMINATION
(PRESENT IF 決定の際にデータ・タイプの矛盾がある )
0185
FIELD OCCURRENCE EXCEEDS WORKING STORAGE MAXIMUM
OCCURRENCE
( フィールドのオカレンスがワーキング・ストレージの最大オカレンスを超
えている )
0200
INVALID FORMAT MESSAGE RECEIVED BY TCP
(TCP が無効なフォーマットのメッセージを受け取った )
0201
SYNCID VIOLATION IN MESSAGE RECEIVED BY TCP
(TCP が受け取ったメッセージに SYNCID 違反があった )
0202
TERMINAL IDENTIFIER NOT KNOWN TO TCP
(TCP が知らない端末一意名があった )
TERMINATIONSUBSTATUS
(errnum)
6-27
第 6 章 PROCEDURE DIVISION ( 手続き部 )
表 6-3 CALL ステートメントのエラー・コード ( 8 / 9 )
TERMINATION-STATUS
6-28
TERMINATIONSUBSTATUS
0203
FUNCTION UNIMPLEMENTED
( 機能が実装されていない )
0204
TCP STATE DOES NOT ALLOW OPERATION
(TCP の状態がオペレーションを認めていない )
0205
TERMINAL STATE DOES NOT ALLOW OPERATION
( 端末の状態がオペレーションを認めていない )
0206
TCP CANNOT HANDLE MORE TERMINALS
(TCP はそれより多くの端末を扱うことができない )
0207
REQUEST PENDING
( リクエストが保留された )
0208
NO ROOM FOR ANOTHER ALTERNATE TCLPROG
( 別の代替 TCLPROG のための空間がない )
0209
PROCESSOR DOES NOT HAVE PATHWAY MICROCODE
( プロセッサに Pathway マイクロコードがない )
0210
BACKUP PROCESSOR DOWN
( バックアップ・プロセッサがダウン状態である )
0211
BACKUP NEWPROCESS FAILURE
( 新規バックアップ・プロセスの開始が障害を起こした )
0212
BACKUP FAILED
( バックアップ・プロセスが障害を起こした )
0213
OPEN OF FILE TO BACKUP FAILED
( バックアップ・プロセスがファイルを開く際に障害を起こした )
(errnum)
0214
FILE-SYSTEM ERROR DURING CHECKPOINT
( チェックポイント処理の際にファイル・システム・エラーが発生した )
(errnum)
0215
ERROR IN BACKUP
( バックアップ・プロセスにエラーが発生した )
< nested
message >
0216
TCP INTERNAL ERROR
(TCP の内部エラー )
(%p-reg)
0217
TCP TRAP
(TCP トラップ )
(%p-reg)
0218
TAKEOVER BY BACKUP
( バックアップ・プロセスによるテイクオーバー )
0219
TCP MEMORY DUMP TAKEN
(TCP メモリ・ダンプが行われた )
0220
INSPECT NOT ENABLED FOR TCP
(TCP のために Inspect を使用することができない )
(processcreationdetail)
file-name
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
表 6-3 CALL ステートメントのエラー・コード ( 9 / 9 )
TERMINATION-STATUS
426750-001J
0221
INSPECT TERMINAL TABLE FULL
(Inspect の端末テーブルに空き容量がない )
0222
INSPECT BREAKPOINT TABLE FULL
(Inspect のブレークポイント・テーブルに空き容量がない )
0223
REQUEST NOT ALLOWED WHILE AT BREAKPOINT
( ブレークポイントでリクエストが許されない )
0224
I/O ERROR WITH IMON OR INSPECT
(IMON または Inspect で I/O エラーが発生した )
0225
TASK ALREADY USING ANOTHER INSPECT TERMINAL
( そのタスクは既に別の端末を使用している )
0226
REQUESTED FUNCTION NOT SUPPORTED IN THIS RELEASE
( リクエストされた機能は、このリリースではサポートされていない )
0227
SEND: EXTERNAL PATHMON NAME INVALID
(SEND: 外部 PATHMON 名が無効である )
0228
SEND: EXTERNAL SYSTEM NAME INVALID
(SEND: 外部システム名が無効である )
0229
SEND: EXTERNAL SYSTEM NAME NOT DEFINED
(SEND: 外部システム名が定義されていない )
0230
SEND: NO ROOM FOR NEW EXTERNAL PATHMON IN TCP
(SEND: TCP に新しい外部 PATHMON のための空間がない )
0231
SEND: ERROR DURING I/O TO EXTERNAL PATHMON
(SEND: 外部 PATHMON への I/O の際にエラーが発生した )
0232
MAXTERMDATA IN TCP CONFIGURATION TOO SMALL
(TCP コンフィギュレーションの最大端末データが小さ過ぎる )
0233
SERVER PROCESS UNKNOWN
( 不明のサーバ・プロセス )
0239
GUARDIAN-LIB INCOMPATIBLE WITH TCP
(Guardian ライブラリが TCP と適合していない )
0240
VALUE FOR MAXINPUTMSGS TOO LARGE
( 最大入力メッセージの値が大き過ぎる )
0241
UNSOLICITED MESSAGE REJECTED BY TCP
( 非請求メッセージが TCP に拒否された )
0242
MULTIPLE UNSOLICITED MESSAGES REJECTED
( 複数の非請求メッセージが拒否された )
0243
PATHTCP2 CANNOT EXECUTE ON THIS RELEASE OF GUARDIAN
(Guardian のこのリリースでは、PATHTCP2 は実行できない )
TERMINATIONSUBSTATUS
(errnum)
(errnum)
(errnum)
6-29
第 6 章 PROCEDURE DIVISION ( 手続き部 )
CALL ... ON ERROR に関連する TERMINATION-STATUS エラー番号は、TCP が 3000 ~ 3999 の範囲
で生成する Pathway エラー・メッセージに直接対応しています。例えば、TERMINATION-STATUS エラー
114 は、Pathway エラー・メッセージ 3114 に対応しています。メッセージの説明については、『Compaq
NonStop Pathway/iTS System Management Manual』の TCP メッセージを参照して下さい。
CALL ... ON ERROR 以外の理由で TERMINATION-STATUS がセットされた場合は、TERMINATIONSTATUS の値は保証されないことに注意して下さい。
プログラムによるエラー状態の取り扱いについては、EXIT PROGRAM ステートメントを参照して下さ
い。
呼び出されるプログラムとの適合性
特定の端末タイプ用にコンパイルされたプログラムから、他のあらゆる端末タイプ用にコンパイルされ
たプログラムを呼び出すことができます。ただし、呼び出されるプログラムと呼出し側のプログラムに互
換性があって、結果が予測可能であるようにしなければなりません。次に、呼び出されるプログラムと呼
出し側のプログラムの互換性についての留意事項を示します。
□ ブロック・モード機能を備えた端末で実行されている会話モードのプログラムは、その端末で使用でき
る機能だけを使用するブロック・モード・プログラムを呼び出すことができます。
□ 端末タイプを (OBJECT-COMPUTER 段落の TERMINAL 句で ) 指定しないでコンパイルされたプログ
ラムは、スクリーン表示属性が限定されていると考えられるので、ほとんどのブロック・モード・プロ
グラムから呼び出すことができます。
□ 呼び出されるプログラムが使用するスクリーン表示属性は、呼出し側のプログラムにも適用可能でなけ
ればなりません。そうでない場合は、結果は予想できません。
□ 呼び出されるプログラムでシステム名として定義したファンクション・キーは、呼出し側のプログラム
にも適用可能でなければなりません。そうでない場合は、結果は予想できません。
□ 双方のプログラムで使用する文字セットには、互換性がなければなりません。呼び出されるプログラム
が 6530 端末用にコンパイルされ、その端末のコンフィギュレーション・ファイルで指定されたデフォ
ルトの文字セットを使用する場合には、最初の DISPLAY BASE ステートメントが現れるまでは
USASCII 文字が使用されます。
□ SET MINIMUM-ATTR または SET MINIMUM-COLOR ステートメントでリクエストした属性が端末で
サポートされていない場合は、DISPLAY BASE 処理の際にプログラムが中断されます。
□ TERMINATION-STATUS 特殊レジスタのエラー・コード 71 は、要求されたカラー表示、ハイライト
表示、またはアウトライン表示属性のサポートが十分ではないことを示します。
それぞれの端末タイプの特性については、
『Compaq NonStop Pathway/iTS TCP and Terminal Programming
Guide』を参照して下さい。
6-30
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
6.2.7 CHECKPOINT ステートメント
CHECKPOINT ステートメントは、ワーキング・ストレージ項目などの端末の現在の内容をチェックポ
イント処理することができます。
CHECKPOINT
このステートメントは、自動チェックポイントを行うこともできます。自動チェックポイントは、次の
場合に行われます。
□ BEGIN-TRANSACTION ステートメントの実行の際に、TCP がコンテキスト全体のチェックポイント
処理をする場合
□ END-TRANSACTION ステートメントの実行の際に、TCP がコンテキスト全体のチェックポイント処
理をする場合
□ TMF を使用しない (PATHCOM の SET SERVER TMF OFF コマンドを指定した ) サーバに対する SEND
ステートメントについて、TCP が SEND ステートメントの実行前と後にチェックポイント処理をする
場合
□ RECONNECT MODEM ステートメントの実行の際に、TCP がコンテキスト全体のチェックポイント処
理をする場合
(SET SERVER ON を指定した ) TMF サーバに対する SEND ステートメントでは、自動チェックポイン
トは行われません。TCP チェックポイントの詳細については、
『Compaq NonStop Pathway/iTS TCP and
Terminal Programming Guide』の「TCP checkpointing strategy」の説明を参照して下さい。
端末がトランザクション・モードのときに CHECKPOINT ステートメントが発行されると、端末は異常
終了処理のためにサスペンドされます。
6.2.8 CLEAR ステートメント
CLEAR ステートメントの新規の入力を受け入れるために端末をクリアします。このステートメントは、
インテリジェント・デバイスと通信するプログラムには使用することができません。
CLEAR INPUT
このステートメントは、現在表示されているすべての UNPROTECT フィールドに NULL 値を入れ、
MDT
(modified data tag) を使用する端末のすべての UNPROTECT フィールドの MDT をリセットします。MDT
以外は、そのフィールドの属性は影響を受けません。
CLEAR ステートメントは、次の点で RESET ステートメントとは異なります。
□ CLEAR ステートメントは、表示スクリーン上のすべての UNPROTECT フィールドを対象にします。
RESET ステートメントは、フィールドが保護されているかどうかに関係なく、そのステートメントで
指定されたフィールドだけを対象にします。
□ CLEAR ステートメントは、すべての UNPROTECT フィールドを空白にします。RESET ステートメン
トは、すべてのフィールドをあらかじめ宣言された値に戻します。
□ CLEAR ステートメントは、MDT ビットはクリアしますが、フィールド属性には影響を与えません。
RESET ステートメントは、すべてのフィールドを初期値に戻します。
426750-001J
6-31
第 6 章 PROCEDURE DIVISION ( 手続き部 )
□ CLEAR ステートメントは、短いデータ・シーケンスを 1 つだけ必要とします。RESET ステートメン
トは、そのステートメントで参照するすべてのフィールドごとに TCP からのデータ・シーケンスを 1
つずつ必要とします。
6.2.9 COMPUTE ステートメント
COMPUTE ステートメントは、算術式を評価して、結果を 1 つ以上のデータ項目にストアします。
COMPUTE { result } ,... = expression
result
結果を入れる数字基本項目の一意名です。
expression
算術式です。この式は、「第 2 章 SCREEN COBOL ソース・プログラム」で説明した手順にした
がって計算されます。
他の算術演算と同様に、切り詰めをどのように扱うかを考慮しなければなりません。
次に、COMPUTE ステートメントの例を示します。
WORKING-STORAGE SECTION.
77
77
77
77
01
compute-result
PIC 999
VALUE
ws-result
PIC S9(9)
VALUE
ws-99
PIC S99
VALUE
ws-five-ones
PIC S9(5)
VALUE
exponent
PIC 9(5)
VALUE
:
:
COMPUTE compute-result = (((24.0 + 1)
ZEROS.
ZEROS.
99.
11111.
ZERO
COMP.
* (60 - 10)) / 125).
(compute-result = 10)
6.2.10 COPY ステートメント
COPY ステートメントは、コンパイル時にコーディングの一部をプログラムに挿入します。これによっ
て、いくつかのプログラムで共通のコーディングを 1 回だけ記述すればよく、ソース・コードの保守が容
易になります。
COPY copy-text [ { OF } library-name ] .
[ { IN }
]
copy-text
SCREEN COBOL コピー・ライブラリ内の一意の節名です。
6-32
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
library-name
コピーするテキストを含むファイルの名前です。この名前は、コンパイルのためのデフォルトのサ
ブボリュームを使って、完全なファイル名に拡張することができます。サブボリュームおよびファ
イル名でライブラリ名を指定する場合は、引用符で囲まなければなりません。例:
"subvol.afile".
library-name が省略され、copy-text が存在する場合は、デフォルトのライブラリ名
COPYLIB がコンパイルのために使用されます。
COPY ステートメントは PROCEDURE DIVISION のステートメントとして説明されていますが、文字
列または分離符を指定できるところであれば SCREEN COBOL プログラムのどこにでも含めることができ
ます。ただし、別の COPY ステートメントの中には、指定することができません。キーワード COPY は 2
行に分離することはできませんが、COPY の後のテキストは次の行に継続することができます。
ライブラリ・テキストは、ソース・プログラムにコピーされます。SCREEN COBOL コピー・ライブラ
リは正しいフォーマットであり、それぞれの copy-text は正しい SCREEN COBOL 構文で書かれてい
なければなりません。
コピー・ライブラリは、次の形式の EDIT ファイルでなければなりません。
?SECTION copy-text-1 [ , { ANSI
} ]
[
{ TANDEM } ]
text-1
?SECTION copy-text-2 [ , { ANSI
} ]
[
{ TANDEM } ]
text-2
各 SECTION 行は、copy-text の始めを識別します。SECTION 行のカラム 1 には疑問符 (?) がなけ
ればなりません。テキストの内容は自由で、長さも任意です。テキスト行は、?SECTION で始めることは
できません。
ライブラリ・テキストのソース・フォーマットを指定しない場合は、コンパイラはライブラリ・テキス
トのソース・フォーマット (ANSI 標準リファレンス・フォーマットまたはタンデム標準リファレンス・
フォーマット ) を COPY ステートメントを含んでいる行のソース・フォーマットと同じであると見なしま
す。フォーマットを指定した場合は、指定したフォーマットがコンパイラの想定より優先され、ソース・
プログラムのフォーマットに関係なく、ライブラリ・テキストをコピーすることができます。また、ライ
ブラリ・テキスト自体にコンパイラ・コマンドを入れておいて、テキストがコピーされるときに実行させ
ることができます。コピーが終了すると、コンパイラは常に強制的にこの COPY ステートメントに出会っ
た場合のフォーマットに戻すことに注意して下さい。ANSI コンパイラ・コマンドがセットされている場合
の Compaq Inspect デバッグ用ツールの使用の制限については、
「第 7 章 コンパイル」を参照して下さい。
プログラムのコンパイル中に、COPY ステートメントで指定された
copy-text と一致する copytext 名を持つ SECTION コマンドを捜すことによって、コピーする copy-text が見つけられます。
テキストは、SECTION 行の直後から始めて、次の SECTION 行を見つけるか、ファイルの終わりに達する
までコピーされます。次の例では、text-0 には SECTION コマンドがないので、コピーすることができません。
text-0
426750-001J
6-33
第 6 章 PROCEDURE DIVISION ( 手続き部 )
?SECTION copy-text-1
text-1
ライブラリ・ファイルがこのように始まった場合は、このテキストはライブラリのコメントになります。
次の例では、COPYLIB という名前のコピー・ライブラリがコンパイルのためのデフォルトのボリュー
ムおよびサブボリュームにあるため、COPY ステートメント employee-detail が修飾されていないことに注
目して下さい。
コピー・ライブラリ COPYLIB の内容は、次のとおりです。
?SECTION employee-detail
01 emp-data-in.
05 emp-no
PIC
05 emp-name
PIC
05 dept
PIC
05 job-class
PIC
05 hourly-rate PIC
05 deductions
PIC
05 salary
PIC
X(05).
X(20).
X(03).
X(05).
9(3)V99.
9(3)V99.
9(7)V99.
SCREEN COBOL ソース・コードは、次のとおりです。
DATA DIVISION.
WORKING-STORAGE SECTION.
COPY employee-detail.
次に示すコンパイル・リストの例では、コピー・ライブラリからコピーされたすべての行には < のマー
クが付けられています。
DATA DIVISION.
WORKING-STORAGE SECTION.
COPY employee-detail.
< 01
<
<
<
<
<
<
<
6-34
emp-data-in.
05 emp-no
05 emp-name
05 dept
05 job-class
05 hourly-rate
05 deductions
05 salary
PIC
PIC
PIC
PIC
PIC
PIC
PIC
X(05).
X(20).
X(03).
X(05).
9(3)V99.
9(3)V99.
9(7)V99.
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
6.2.11 DELAY ステートメント
DELAY ステートメントは、指定した時間だけプログラムの実行を遅らせます。
DELAY { numeric-literal }
{ identifier
}
numeric-literal
時間を表す秒単位の数値です。この値は、正の整数でなければならず、最大値は 21474836 です。
identifier
時間を表す秒単位の整数データ項目の一意名です。この項目に含まれる値は、正の整数でなければ
ならず、最大値は 2,147,483,647 秒 (31 ビット ) です。
備考:最大値を守る必要があるのはプログラムの実行時だけで、2,147,483,647 より大きな値を指定してもコンパ
イラはエラーを生成しません。
このステートメントは、エラー ( 例えば、端末の電源切れによる端末 I/O エラー ) の発生後に一定時間を
置いて再試行を行う場合などに使用されます。
DELAY ステートメントのもう 1 つの使用法 (DELAY 0) は、即時実行です。例えば、ブロック・モード
で DISPLAY ステートメントの後にこのステートメントを指定すると、端末バッファの内容が直ちに画面
に出力されます。
次に、DELAY ステートメントの例を示します。
* highest level program-unit.
loop.
CALL menu ON ERROR PERFORM analyze-error.
IF retry = 1
* delay five minutes, then retry.
DELAY 300
GO TO loop
ELSE
GO TO giveup.
analyze-error.
IF TERMINATION-STATUS = 18 AND
( TERMINATION-SUBSTATUS = 171 OR
TERMINATION-SUBSTATUS = 173 )
MOVE 1 TO retry
ELSE
MOVE 0 TO retry.
* suspend.
giveup.
EXIT PROGRAM WITH ERROR.
426750-001J
6-35
第 6 章 PROCEDURE DIVISION ( 手続き部 )
6.2.12 DEVICEINFO ステートメント
DEVICEINFO ステートメントは、SCREEN COBOL プログラムが現在メッセージを送っているインテリ
ジェント・デバイスについての情報を提供します。このステートメントは、DEVICEINFO プロシージャと
同じ機能を実行します。
DEVICEINFO USING deviceinfo-rec
deviceinfo-rec
レベル 01 のグループ項目です。次のように定義します。
01
deviceinfo-rec.
02 file-name
02 device-type
02 device-subtype
02 physical-record-length
SCREEN COBOL コンパイラは、グループ項目
ずに、正しく定義したものとして扱います。
PIC
PIC
PIC
PIC
X(16).
9(4) comp.
9(4) comp.
9(4) comp.
deviceinfo-rec のデータ・タイプをチェックせ
DEVICEINFO ステートメントは、ファイル名を内部ネットワーク形式で返します。この形式について
は、『Guardian プログラマーズ・ガイド』を参照して下さい。
次に、DEVICEINFO ステートメントの例を示します。
MOVE TERMINAL-FILENAME TO file-name OF deviceinfo-rec.
DEVICEINFO USING deviceinfo-rec.
6.2.13 DISPLAY BASE ステートメント
DISPLAY BASE ステートメントは、SCREEN SECTION のスクリーン定義に基づいて、指定されたスク
リーンをフォーマットします。このステートメントは、後続のスクリーンのためのスクリーン記述を選択
しますが、スクリーンは表示しません。
DISPLAY BASE DYNAMIC ステートメントは、DISPLAY BASE ステートメントの後に DISPLAY ス
テートメントを指定した場合と同じ機能を実行します。
DISPLAY BASE ステートメントは、ブロック・モードでは会話モードの場合とは異なる処理を行いま
す。また、インテリジェント・デバイスとの通信には使用することができません。
ブロック・モードの端末の場合は、DISPLAY BASE ステートメントはスクリーン・リテラル、VALUE
句、NULL 文字、および FILL 文字のデータをフォーマットして、スクリーン・フィールドの属性を設定
します。また、DISPLAY BASE は、現在のスクリーン表示をクリアします。ただし、DISPLAY BASE ス
テートメントを実行しても、ワーキング・ストレージ項目の現在値がスクリーンの出力フィールドに現れ
ることはありません。スクリーンの出力フィールドに送られるデータは、DISPLAY ステートメントによっ
てフォーマットされます。
ブロック・モードと会話モードのいずれの端末の場合も、DISPLAY BASE ステートメントによってカレ
ント・スクリーンが設定され、それが他のすべてのスクリーン・オペレーションのベースになります。で
すから、他の表示オペレーションを実行する前に、このステートメントを実行しなければなりません。ま
た、いつでももう一度 DISPLAY BASE ステートメントを実行して、新しいスクリーンを設定したり、同
じスクリーンを再設定することができます。
6-36
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
DISPLAY BASE [DYNAMIC] base-screen-name
DYNAMIC
非リテラル・スクリーン・フィールドが FROM または USING 句で指定されたワーキング・スト
レージ項目から初期設定の内容を取得することができることを指定します。ワーキング・ストレー
ジの初期値を表示するために、後で DISPLAY ステートメントを実行する必要はありません。
さらに、DYNAMIC 参照子は、関連の制御構造にある個々の属性要素の内容を使用して、実行時に
スクリーン・フィールド属性の設定を変更する機能を提供します。
base-screen-name
ベース・スクリーンの名前です。
シャドウ・スクリーン・フィールドに SELECT ビットが 1 にセットされた関連のワーキング・ストレー
ジ項目がある場合は、そのスクリーン・フィールドは、FROM または USING 句で指定されたワーキング・
ストレージ・データ項目から初期スクリーンの内容を取得します。そうでない場合は、初期スクリーンの
内容は、コンパイル時のリテラル値またはデフォルトの初期値から取得されます。
DISPLAY BASE ステートメント (DYNAMIC 参照子がない場合 ) は、物理的なスクリーン表示は行いま
せん。スクリーン・データは、次のいずれかのイベントが生じたときに表示されます。
□ 端末バッファ (TERMBUF) に空き容量がなくなった。
□ 以 下 の ス テ ー ト メ ン ト の い ず れ か が 実 行 さ れ た。ACCEPT、BEGIN-TRANSACTION、END-
TRANSACTION、RESTART-TRANSACTION、ABORT-TRANSACTION、CALL、CHECKPOINT、
DELAY、EXIT PROGRAM、PRINT SCREEN、SEND
□ 会話型端末のために DISPLAY ステートメントが実行された。
SCREEN COBOL プログラムで最初の DISPLAY BASE ステートメントが実行されている間に、I/O ス
タートアップ・メッセージを使用して、Pathway/iTS オペレーションのために端末が使用できる状態にしま
す。それ以降は、そのプログラムはいずれの端末 I/O エラーに対しても CALL ON ERROR 句を通じて対処
することができます。
ブロック・モードで DISPLAY BASE ステートメントが実行された場合は、スクリーンの入力フィール
ドと出力フィールドには VALUE 句で当該フィールドに対して指定された値が設定されます (DYNAMIC
参照子が使用され、そのフィールドの SELECT ビットが 1 にセットされない場合。そのようなケースでは
関連するワーキング・ストレージ・データ項目から値が取得されます )。VALUE 句が指定されていない
フィールドには FILL 文字が入れられます。可変長テーブル (OCCURS DEPENDING ON で定義される ) の
場合には、テーブルの制御変数の現在値とは無関係に、定義上の最大許容長まで FILL 文字が入れられます。
426750-001J
6-37
第 6 章 PROCEDURE DIVISION ( 手続き部 )
DISPLAY BASE ステートメントの使用法について
実行中の SCREEN COBOL プログラムには、多くて 1 つのカレント・ベース・スクリーンがあります。
カレント・ベース・スクリーンは、最後に実行された DISPLAY BASE ステートメントによって定義され
ます。プログラムは、カレント・ベース・スクリーンの各オーバーレイ領域にごとに、多くて 1 つのカレ
ント・オーバーレイ・スクリーンを関連付けることができます。カレント・オーバーレイ・スクリーンは、
各オーバーレイ領域に対して最後に実行された DISPLAY OVERLAY ステートメントによって定義されま
す。DISPLAY BASE ステートメントおよび DISPLAY OVERLAY ステートメント以外は、スクリーン・オ
ペレーションはカレント・スクリーンだけを対象にしなければなりません。
スクリーンの定義は、SCREEN COBOL プログラムごとに固有のものです。ですから、カレント・スク
リーンが別のプログラムによって設定されていると、たとえ同じスクリーン宣言であっても、実行中のプ
ログラムで使用することはできません。つまり、スクリーンを使用するときは、プログラムごとに DISPLAY
BASE ステートメントを実行しなければなりません。
あるプログラムに定義済みのカレント・スクリーンがあって、スクリーン宣言のある別のプログラムを
呼び出すと、最初のプログラムに対するカレント・スクリーンは未定義になります。最初のプログラムが
以前に表示したスクリーンを使用しようとする場合は、最初のプログラムは別のプログラムの呼出しが終
了してから DISPLAY BASE/OVERLAY ステートメントを実行しなければなりません。
あるプログラムがスクリーン宣言のない別のプログラムまたは存在しないプログラムを呼び出した場合
は、カレント・スクリーンの定義は変更されないでそのまま残ります。
カレント・スクリーンを定義したプログラムが EXIT PROGRAM ステートメントを実行すると、カレン
ト・スクリーンは無効になります。例え EXIT PROGRAM ステートメントの実行後にスクリーン・オペ
レーションへの介入がなかったとしても、スクリーンを使用するには、再度スクリーンを表示しなければ
なりません。
6.2.14 DISPLAY OVERLAY ステートメント
DISPLAY OVERLAY ステートメントは、SCREEN SECTION のスクリーン定義に基づいて、指定され
たオーバーレイ・スクリーンをフォーマットし、そのオーバーレイ・スクリーンをカレント・ベース・ス
クリーンのオーバーレイ領域に関連付けます。このステートメントは、後続のオペレーションのためのオー
バーレイ・スクリーン記述を選択しますが、スクリーンは表示しません。
DISPLAY OVERLAY DYNAMIC ステートメントは、DISPLAY OVERLAY ステートメントの後に
DISPLAY ステートメントを指定した場合と同じ機能を実行します。
DISPLAY OVERLAY ステートメントは、ブロック・モードでは会話モードの場合とは異なる処理を行
います。また、インテリジェント・デバイスとの通信には使用することができません。
ブロック・モードの端末の場合は、DISPLAY OVERLAY ステートメントはスクリーン・リテラル、
VALUE 句、NULL 文字、および FILL 文字のデータをフォーマットして、スクリーン・フィールドの属性
を設定します。また、オーバーレイ・スクリーンは、オーバーレイ領域にある以前のスクリーンを置き換
えます。ただし、DISPLAY OVERLAY ステートメントを実行しても、ワーキング・ストレージ項目の現
在値がスクリーンの出力フィールドに現れることはありません。スクリーンの出力フィールドに送られる
データは、DISPLAY ステートメントによって送られます。
6-38
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
ブロック・モードと会話モードのいずれの端末の場合も、DISPLAY OVERLAY ステートメントによっ
てカレント・オーバーレイ・スクリーンが設定されます。そして、オーバーレイ・スクリーンを使用する
他の表示オペレーションを実行する場合は、その前にこのステートメントを実行しなければなりません。
DISPLAY OVERLAY { [DYNAMIC]overlay-screen-name } AT overlay{ SPACES
}
area
DYNAMIC
非リテラル・スクリーン・フィールドが FROM または USING 句で指定されたワーキング・スト
レージ項目から初期設定の内容を取得することを指定します。ワーキング・ストレージの初期値を
表示するために、後で DISPLAY ステートメントを実行する必要はありません。
さらに、DYNAMIC 参照子は、関連の制御構造にある個々の属性要素の内容を使用して、実行時に
スクリーン・フィールド属性の設定を変更する機能を提供します。
overlay-screen-name
表示するオーバーレイ・スクリーンの名前です。
AT overlay-area
オーバーレイ・スクリーンを配置する、現在表示されているベース・スクリーンのオーバーレイ領
域の名前です。
SPACES
オーバーレイ領域を空白にして、ベース・スクリーンが表示された直後の状態に復元することを指
定します。オーバーレイ・スクリーンとオーバーレイ領域とのあらゆる関係付けが破棄されます。
シャドウ・スクリーン・フィールドに SELECT ビットが 1 にセットされた関連のワーキング・ストレー
ジ項目がある場合は、そのスクリーン・フィールドは、FROM または USING 句で指定されたワーキング・
ストレージ・データ項目から初期スクリーンの内容を取得します。そうでない場合は、初期スクリーンの
内容は、コンパイル時のリテラル値またはデフォルトの初期値から取得されます。
DISPLAY BASE ステートメントは、DISPLAY OVERLAY ステートメントの前に指定しなければなりま
せん。そうでない場合は、エラーが生成されます。
オーバーレイ領域は、オーバーレイ・スクリーン以上の大きさでなければなりません。オーバーレイ・
スクリーンは、同時に複数のオーバーレイ領域に表示することはできません。
6.2.15 DISPLAY RECOVERY ステートメント
DISPLAY RECOVERY ステートメントは、スクリーン・リカバリを開始します。プログラムは、端末か
らのスクリーン・リカバリの要求を実行するために、このステートメントを使用することができます。そ
れによって、リカバリ処理のためのコードの重複を避けることができます。
このステートメントは、インテリジェント・デバイスと通信するプログラムでは使用することができま
せん。
DISPLAY RECOVERY
426750-001J
6-39
第 6 章 PROCEDURE DIVISION ( 手続き部 )
DISPLAY RECOVERY が実行されると、標準のエラー・リカバリ処理が実行されます。ここで起動され
るリカバリ・プロセスは、カレント・ベース・スクリーンに対して DISPLAY BASE ステートメントを実
行してから、現在有効なすべてのオーバーレイ・スクリーンに対して DISPLAY OVERLAY ステートメン
トを実行するのと同じ機能を実行します。その後で、スクリーン・リカバリ・プロセスは、SCREEN COBOL
プログラムで指定されているスクリーン・リカバリ宣言プロシージャを実行します。
6.2.16 DISPLAY ステートメント
DISPLAY ステートメントは、スクリーン内の選択された出力フィールドに送るデータをフォーマット
します。
DISPLAY BASE ステートメントは、ブロック・モードでは会話モードの場合とは異なる処理を行いま
す。また、インテリジェント・デバイスとの通信には使用することができません。
DISPLAY [ TEMP
] [ nonnumeric-literal IN ]
[ TEMPORARY ]
{ screen-identifier } ,...
[ DEPENDING [ ON ] identifier ]
[ SHADOWED
]
TEMP または TEMPORARY
次に RESET TEMP または ACCEPT ステートメントが実行を完了したときに、デフォルト値にリ
セットされるようにフィールドにフラグを立てます。
端末が会話モードの場合は、この指定は無視され、通常の DISPLAY 処理が行われます。スクリー
ン項目を一時的に変更するには、関連付けられたワーキング・ストレージ項目を保存し、値を変更
し、新しい値を表示して、保存されている現在の値を復元するという操作が必要になります。
nonnumeric-literal
端末の選択されたフィールドに送られる値です。この値は変換されず、必要に応じて切り詰められ
たり、FILL 文字で拡張されます。この値は、引用符で囲まなければなりません。
この句を省略すると、選択されたスクリーン・フィールドの値は、そのスクリーン・フィールド記
述の FROM または USING 句で指定されたワーキング・ストレージ・データ項目から取得されます。
データは変換され、スクリーン・フィールド宣言に基づいて編集され、結果が端末ディスプレイの
フィールドに入れられます。
screen-identifier
有効なスクリーンのスクリーン名、スクリーン・グループ名、または基本出力項目名です。1 つの
DISPLAY ステートメント当たり最大 127 項目まで指定可能です。screen-identifier が基
本項目ではない場合は、VALUE、FROM、または USING 句を定義してあるすべての従属基本項目
が参照されます。
6-40
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
DEPENDING ON identifier
スクリーン・フィールドのリストからゼロ ( 選択しない )、または 1 つの screen-identifier
を選択します。screen-identifier リスト内の位置が identifier の値と同じステート
メントが選択されます。identifier の値が 1 より小さいか screen-identifier の数よ
り大きい場合は、screen-identifier は選択されません。
SHADOWED
screen-identifier リストから、SELECT ビットが 1 にセットされている SHADOWED 項
目を持つフィールドだけを選択します。SHADOWED 項目を持たない screen-identifier
リスト内のフィールドは、選択されません。
備考: DEPENDING ON 参照子も SHADOWED 参照子も指定されない場合は、リスト内のすべてのフィールドが
選択されます。
DISPLAY ステートメントの DEPENDING ON 句は、PERFORM ONE ステートメントの DEPENDING
ON 句と類似しています。次の例は、両者の類似性を示しています。
WORKING-STORAGE SECTION.
:
77 ws-screen-status
PIC
01 ws-fld1
PIC
01 ws-fld2
PIC
01 ws-fld3
PIC
9(4)
x(10).
x(10).
x(10).
COMP VALUE 1.
SCREEN SECTION.
:
01 MENU1 SIZE 24, 80.
05 screen-fld1 at 4, 20
PIC X(10)
from fld1.
05 screen-fld2 at 5, 40
PIC X(10)
from fld2.
05 screen-fld3 at 6, 60
PIC X(10)
from fld3.
PROCEDURE DIVISION.
:
BODY-PARAGRAPH.
:
DISPLAY BASE MENU1.
DISPLAY SCREEN-FLD1,
SCREEN-FLD2,
SCREEN-FLD3,
DEPENDING ON WS-SCREEN-STATUS.
WS-SCREEN-STATUS が 1 のときは、SCREEN-FLD1 が表示されます。WS-SCREEN-STATUS が 2 の
ときは、SCREEN-FLD2 が表示され、以下同様です。WS-SCREEN-STATUS < 1 または WS-SCREENSTATUS > 3 のときでも、エラーとは見なされません。制御が単に失敗するだけで、スクリーン・フィー
ルドは表示されません ( 処理は継続されて、次のステートメントが実行されます )。
426750-001J
6-41
第 6 章 PROCEDURE DIVISION ( 手続き部 )
ブロック・モードでは、DISPLAY ステートメントはスクリーンへの物理的な書込みは行わないで、端
末バッファにデータを書き込みます。スクリーンへの物理的な書込みは、次のいずれかのイベントが発生
したときに行われます。
□ 端末バッファ (TERMBUF) に空き容量がなくなった。
□ 以 下 の ス テ ー ト メ ン ト の い ず れ か が 実 行 さ れ た。ACCEPT、BEGIN-TRANSACTION、END-
TRANSACTION、RESTART-TRANSACTION、ABORT-TRANSACTION、CALL、CHECKPOINT、
DELAY、EXIT PROGRAM、PRINT SCREEN、SEND
□ 会話型端末のために DISPLAY ステートメントが実行された。
会話モードの端末では、DISPLAY ステートメントは列の順に出力データを表示します。スクリーン・
フィールド値は、スクリーン・フィールド記述で指定されたカラム番号の位置に表示されます。フォーマッ
ティングのための空白行は生成されないので、通常、スクリーン行は SCREEN SECTION で指定された行
番号と対応しません。
行単位で完全にフォーマットされたスクリーンを表示するには、スクリーンのすべての行 ( 列 ) に少な
くとも 1 つの項目を定義しなければなりません。空白の行が必要な場合は、その列のスクリーン項目に空
白を指定した VALUE 句を指定します ( 例えば、VALUE " ")。そうすれば、DISPLAY ステートメントの
スクリーン一意名としてそのスクリーン名を指定することによってスクリーン・バッファ全体が準備され
ます。
会話モードの端末では、DISPLAY ステートメントは次のように実行されます。
□ DISPLAY ステートメントは、SCREEN SECTION で指定されたカラム位置に合せて、出力行にスクリー
ン項目を配置します。別のスクリーン項目が同じ行番号記述を持っていても DISPLAY ステートメント
で指定されていなければ、そのスクリーン項目はスクリーンに表示されます。
□ 複数のスクリーン・フィールドを表示するのにスクリーン・グループ名を指定した場合は、各スクリー
ン・フィールドはスクリーン・フィールド記述で指定されたカラムに表示されますが、表示行はスク
リーン・フィールド記述に関係なく連続して表示されます。
□ FILLER 項目以外のスクリーン項目は、SCREEN SECTION で TO、FROM、または USING 句を指定し
て定義しなければなりません。VALUE 句と TO、FROM、または USING 句の両方を指定してスクリー
ン項目を定義すると、VALUE 句で指定したリテラルは表示されません。DISPLAY ステートメントの
出力は、常に関連付けられたワーキング・ストレージ項目から行われます。
□ DISPLAY ステートメントで nonnumeric-literal が指定され、そのスクリーン一意名リストに
複数のフィールドが含まれている場合は、そのリテラルはリストで指定されたそれぞれのスクリーン・
フィールドに表示されます。
会話モードの端末では Break キーを有効にして、DISPLAY 処理を中断することができます。Break キー
は、Pathway システム・コンフィギュレーションで PATHCOM コマンド SET TERM または SET PROGRAM
TYPE によって有効にすることができます。Break キーが有効になっているときは、DISPLAY 処理の実行
中に Break キーを押すと、DISPLAY 処理は中断しますが、端末エラー条件は発生しません。
6-42
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
DISPLAY 処理が行われているときの TERMINATION-SUBSTATUS 特殊レジスタの値は、次のとおり
です。
□ BREAK キーが押されたときは、1
□ BREAK キーが押されないときは、0
6.2.17 DIVIDE ステートメント
DIVIDE ステートメントは、あるデータ項目を別のデータ項目で割り算して、結果を 1 つ以上のデータ
項目にストアします。DIVIDE ステートメントには、次の 3 つの形式があります。
DIVIDE INTO
DIVIDE GIVING
DIVIDE BY GIVING
次に、それぞれの形式について説明します。
DIVIDE INTO ステートメント
DIVIDE INTO ステートメントは、あるデータ項目を他のデータ項目で割り算します。複数の被除数を指
定することができ、結果は被除数のデータ項目にストアされます。
DIVIDE divisor INTO { dividend } ,...
divisor
除数となる数字リテラルまたは基本数字データ項目の一意名のいずれかです。
dividend
被除数となる基本数字データ項目の一意名です。商は、このデータ項目にストアされます。
DIVIDE GIVING ステートメント
DIVIDE GIVING ステートメントは、あるデータ項目を別のデータ項目で割り算して、商を指定のデー
タ項目にストアします。商は、1 つまたは複数のデータ項目にストアすることができます。
DIVIDE divisor INTO dividend GIVING { quotient } ,...
divisor
除数となる数字リテラルまたは基本数字データ項目の一意名のいずれかです。
dividend
被除数となる数字リテラルまたは基本数字データ項目の一意名のいずれかです。
quotient
商をストアする基本数字データ項目の一意名です。
426750-001J
6-43
第 6 章 PROCEDURE DIVISION ( 手続き部 )
DIVIDE BY GIVING ステートメント
DIVIDE BY GIVING ステートメントは、被除数を先に指定すること以外は、DIVIDE GIVING ステート
メントと同じです。
DIVIDE dividend BY divisor GIVING { quotient } ,...
dividend
被除数となる数字リテラルまたは基本数字データ項目の一意名のいずれかです。
divisor
除数となる数字リテラルまたは基本数字データ項目の一意名のいずれかです。
quotient
商をストアする基本数字データ項目の一意名です。
次に、DIVIDE BY GIVING ステートメントの例を示します。
WORKING-STORAGE SECTION.
77 leap-year
PIC
77 divide-result
PIC
01 invoice-date.
05 inv-month
PIC
05 inv-day
PIC
05 inv-year
PIC
:
PROCEDURE DIVISION.
:
DIVIDE inv-year BY 4
:
9
99
VALUE ZERO.
VALUE ZERO.
99.
99.
99.
GIVING divide-result.
6.2.18 END-TRANSACTION ステートメント
END-TRANSACTION ステートメントは、1 つのトランザクションとして取り扱う一連の処理の終わり
を表します。このステートメントが実行されると、端末はトランザクション・モードから抜けます。トラ
ンザクション・モードでは、トランザクション管理ファシリティ (TMF) の下で実行するようにコンフィ
ギュレーションされた Pathway サーバは、オーディット対象ファイルをロックしたり、更新したりするこ
とができます。
END-TRANSACTION
TMF がこのステートメントを受け入れると、トランザクション中に行われたデータベースの更新がコ
ミットされます。端末はトランザクション・モードを抜けて、特殊レジスタ TRANSACTION-ID は SPACES
にセットされます。TMF がこのステートメントを拒否したときは、トランザクションのリスタートが行わ
れます。
END-TRANSACTION ステートメントが実行されたときに端末がトランザクション・モードでない場合
は、端末は異常終了処理のためにサスペンドされます。
6-44
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
6.2.19 EXIT ステートメント
EXIT ステートメントは、プロシージャの終わりまたはサブプログラムの出口を示します。EXIT ステー
トメントには、次の 2 つの形式があります。
EXIT
EXIT PROGRAM
次に、それぞれの形式について説明します。
EXIT ステートメント
EXIT ステートメントは、プロシージャの終わりを示します。このステートメントは、何の処理も行いま
せん。ただし、EXIT ステートメントが先に実行された PERFORM ステートメントで参照されている場合
は、EXIT ステートメントは PERFORM ステートメントの後のステートメントへの戻りを指示します。
EXIT .
EXIT PROGRAM ステートメント
EXIT PROGRAM ステートメントは、呼び出されたプログラムの論理的な終わりを示します。呼び出さ
れたプログラムでこのステートメントが実行されると、制御は呼出し側のプログラムに戻ります。このス
テートメントを実行するプログラムが端末を開始した初期プログラムである場合は、端末は停止します。
EXIT PROGRAM [ WITH ERROR ] .
WITH ERROR
特殊レジスタ TERMINATION-STATUS および TERMINATION-SUBSTATUS によって記述される
エラー条件を再確認する方法を提供するオプションです。端末のサスペンドを生ずるようなエラー
が発生した場合は、ON ERROR 句を含む CALL ステートメントを持つ 1 つ上のレベルのプログラ
ムに制御が返されます。( 端末のサスペンドを生ずるようなエラー条件とは、CALL...ON ERROR 機
能を使用しなければ端末をサスペンドさせてしまう条件です。) ON ERROR 句を含むプログラムが
存在しない場合は、端末はサスペンドされ、リスタートすることはできません。
EXIT PROGRAM WITH ERROR ステートメントを実行する前に、特殊レジスタ TERMINATIONSTATUS および TERMINATION-SUBSTATUS の内容をプログラムで変更できることに注意して下
さい。TERMINATION-STATUS の値は、0 ~ 255 の範囲でなければなりません。
EXIT PROGRAM ステートメントは、段落内の唯一のセンテンスとして、単独で指定しなければなりま
せん。
426750-001J
6-45
第 6 章 PROCEDURE DIVISION ( 手続き部 )
6.2.20 GO TO ステートメント
GO TO ステートメントは、PROCEDURE DIVISION のある部分から別の部分に制御を移します。GO
TO ステートメントには、次の 2 つの形式があります。
GO TO
GO TO DEPENDING
次に、それぞれの形式について説明します。
GO TO ステートメント
GO TO ステートメントは、PROCEDURE DIVISION のある部分から別の部分に、無条件に制御を移し
ます。
GO [ TO ] procedure-name
procedure-name
制御が移されるプロシージャの名前です。
GO TO DEPENDING ステートメント
GO TO DEPENDING ステートメントは、可変データ項目の値に基づいて、いくつかのプロシージャの
内の 1 つに制御を移します。
GO TO { procedure-name } ,... DEPENDING [ ON ] depend
procedure-name
一連のプロシージャ名です。depend の値に基づいて、1 つだけ選ばれます。
depend
基本数字整数データ項目の一意名です。この値をインデックスのように使用して、プログラムが制
御を移すプロシージャの名前が選択されます。depend の値が procedure-name の範囲外の
場合は、分岐は行われずに、次のステートメントに制御が移されます。
次に、GO TO DEPENDING ステートメントの例を示します。
procedure-branch.
GO TO proc-1,
proc-2,
proc-3, DEPENDING ON branch-flag.
MOVE 0 to branch-flag.
□ branch-flag が 1 の場合は、制御は proc-1 に移されます。
□ branch-flag が 2 の場合は、制御は proc-2 に移されます。
□ branch-flag が 3 の場合は、制御は proc-3 に移されます。
6-46
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
□ branch-flag が 1 より小さいか、3 より大きい場合は、GO TO DEPENDING ステートメントの直後のス
テートメントに制御が移されます。
6.2.21 IF ステートメント
IF ステートメントは、指定された条件を判定して、その真偽に基づいて制御を移します。
IF condition { statement-1
} [ ELSE { statement-2
} ]
{ NEXT SENTENCE } [
{ NEXT SENTENCE } ]
condition
任意の条件式を指定することができます。
statement-1, statement-2
無条件ステートメントまたは条件ステートメントを指定します。いずれのステートメントにも IF ス
テートメントを含めることができます。( ネストされた IF ステートメントと呼ばれます。)
NEXT SENTENCE
statement-1 または statement-2 の代りに使用される無演算命令です。これを指定しても
何も処理は行われませんが、構文の構造を明確にしたり、条件の値の 1 つは何も処理を行わないこ
とを明確にするために指定します。
IF ステートメントの中の IF ステートメントは、左から右に向かって IF と ELSE がペアになります。つ
まり、ELSE は、まだ ELSE とペアになっていない直前の IF とペアになっていると見なされます。
IF ステートメントには、次の規則が適用されます。
□
condition が真の場合は、statement-1 が実行されます。statement-1 の代りに NEXT
SENTENCE が指定されているときは、何も処理は行われません。
□
condition が偽の場合は、statement-2 が実行されます。statement-2 の代りに NEXT
SENTENCE が指定されているとき、または ELSE を省略したときは、何も処理は行われません。
□
statement-1 または statement-2 の一部として制御の移動を引き起こす GO TO ステートメ
ントが実行されると、制御は無条件に GO TO ステートメントの行き先に移されます。
□
statement-1 または statement-2 の一部として指定された GO TO ステートメントが実行さ
れずに制御が無条件に移されないときは、IF ステートメントのステートメントの一部として実行され
たすべてのステートメントが終了した後で、制御は IF ステートメントの次の実行可能なステートメン
トに移されます。
□ PIC N データ項目またはリテラルを、GREATER THAN、LESS THAN、EQUAL などを使用して数字
データ項目 (PIC 9) と比較することは認められません。これ以外の比較はすべて認められ、バイトごと
に比較が行われます。
426750-001J
6-47
第 6 章 PROCEDURE DIVISION ( 手続き部 )
次に、IF ステートメントの例を示します。
IF julian-days IS GREATER THAN 59,
ADD leap-year TO julian-days.
次に、IF ELSE ステートメントの例を示します。
IF tally GREATER THAN 0
MOVE 0 TO tally
MOVE 3 TO msg-index
PERFORM print-error-routine
ELSE
次に、ネストされた IF ステートメントの例を示します。
IF employee-number NOT EQUAL TO SPACES
PERFORM read-routine
IF no-error
PERFORM list-record-out
IF yes
PERFORM delete-master
IF no-error
ADD 1 TO delete-count
ELSE
NEXT SENTENCE
ELSE
MOVE 0 TO flag
ELSE
NEXT SENTENCE
ELSE
MOVE 1 TO flag.
6.2.22 IF ... DOUBLEBYTE ステートメント
IF ... DOUBLEBYTE ステートメントは、英数字データ項目の中に 2 バイト文字だけが含まれているかテ
ストします。
IF data-name [ IS ] [ NOT ] DOUBLEBYTE
バイト境界で始まる 2 つの空白は %H2020 と見なされ、これは有効な 2 バイト文字です。1 つの空白や
バイト境界で始まらない空白は、2 バイト文字ではありません。
6.2.23 IF ... WITHIN ステートメント
IF ... WITHIN ステートメントは、OLD-CURSOR 特殊レジスタ、NEW-CURSOR 特殊レジスタ、または
該当のワーキング・ストレージ・データ項目にストアされた行およびカラム値によって位置が示されるカー
ソルが、スクリーン基本項目またはオーバーレイ・スクリーン基本項目のいずれの中にあるかを調べます。
IF [ NOT ] data-item [ NOT ] WITHIN screen-item
[ AT screen-area ]
6-48
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
data-item
OLD-CURSOR 特殊レジスタ、NEW-CURSOR 特殊レジスタ、またはワーキング・ストレージ・デー
タ項目を指定します。ワーキング・ストレージ・データ項目は、次のように定義されます。
01
WS-USER-SAVE-CURSOR.
02 WS-USER-SAVE-ROW
02 WS-USER-SAVE-COL
PIC 9(4) COMP.
PIC 9(4) COMP.
screen-item
SCREEN SECTION で定義されたスクリーン基本項目、または定義済みのスクリーン・オーバーレ
イ項目内のスクリーン基本項目を指定します。screen-item には、OCCURS 句を含めること
はできません。
screen-area
ベース・スクリーン定義内のスクリーン・オーバーレイ項目の名前を指定します。screen-area
を指定すると、コンパイラはベース・スクリーンに対するオーバーレイ・スクリーン基本項目のオ
フセットを計算することができます。
NOT
否定を指定します。
□ どちらの NOT オプションを指定しても、コンパイラは同じコードを生成します。data-item
の行およびカラム値が SCREEN SECTION の screen-item で定義された行およびカラム値
と同じではないときにだけ、IF ... WITHIN ステートメントの後のステートメントが実行されま
す。
□ 両方の NOT オプションを指定すると効果が相殺され、NOT を両方とも指定しない場合と同じ
になります。
備考:循環式のスクリーン・フィールドでは、1 行目だけがテストされます。IF ... WITHIN ステートメントを使用
して循環式のスクリーン・フィールドをテストすると、警告が発行されます。
6.2.24 MOVE ステートメント
MOVE ステートメントは、編集規則に基づいて、あるデータ項目から他の 1 つまたは複数のデータ項目
にデータを移動します。MOVE ステートメントには、次の 2 つの形式があります。
MOVE
MOVE CORRESPONDING
MOVE ステートメント
MOVEステートメントは、あるデータ項目から他の1つまたは複数のデータ項目にデータを移動します。
MOVE data-name-1 TO { data-name-2 } [,] ...
426750-001J
6-49
第 6 章 PROCEDURE DIVISION ( 手続き部 )
data-name-1
送出し側項目を指定します。この項目には、一意名またはリテラルを指定することができます。
data-name-1 は、添字付けまたは指標付けすることができます。添字または指標は、データが
最初の受取り側項目に移動される直前に、1 度だけ評価されます。
data-name-2
受取り側項目を指定します。この項目には、一意名を指定することができます。例:
MOVE item-1(b) TO item-2, item-3(b)
上のステートメントは、下のステートメントと意味が同じです。
MOVE item-1(b) TO temp
MOVE temp TO item-2
MOVE temp TO item-3(b).
次に、いくつかの MOVE ステートメントを指定した例を示します。
WORKING-STORAGE SECTION.
01 record-in.
05 item-a
PIC X(5).
05 item-b
PIC 99V99.
77 temp1
PIC X(4).
77 temp2
PIC X(8).
77 temp3
PIC 9(5)V999.
77 temp4
PIC 9V9.
PROCEDURE DIVISION.
begin-processing.
MOVE item-a TO temp1.
(1)
MOVE item-a TO temp2.
(2)
MOVE item-b TO temp3.
(3)
MOVE item-b TO temp4.
(4)
MOVE SPACES TO record-in.
MOVE ZEROS TO item-b.
(1) Item-a は、temp1 に合わせるために切り詰められます。
(2) temp2 の残りの部分には、空白が充填されます。
(3) temp3 の残りの部分には、ゼロが充填されます。
(4) item-b の値が 9.9 より大きい場合は、演算オーバフロー・エラーのため、TCP はそのプログラム
をサスペンドします。
6-50
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
MOVE CORRESPONDING ステートメント
MOVE CORRESPONDING ステートメントは、あるグループ内の指定されたデータ項目を別のグループ
の対応するデータ項目に転記します。
MOVE { CORR
} group-1 TO group-2
{ CORRESPONDING }
group-1
送出し側のデータ項目のグループ名です。
group-2
受取り側のデータ項目のグループ名です。
group-1 および group-2 は、SCREEN SECTION ではなく、WORKING-STORAGE SECTION ま
たは LINKAGE SECTION で定義されていなければなりません。
CORRESPONDING で指定されるデータ項目には、次の規則が適用されます。
□
group-1 および group-2 は、MOVE CORRESPONDING ステートメントに指定されたグループ
名です。これらのデータ項目のいずれかまたは両方は、REDEFINES 句または OCCURS 句で記述した
り、それらの句で記述された項目に従属させることができます。
□ REDEFINES、RENAMES、OCCURS、または USAGE IS INDEX 句を含んでいる
group-1 または
group-2 の従属データ項目は、転記することができません。
□ レベル番号 66、77、または 88 には、データ項目を定義することができません。
2 つの異なるグループ内の従属データ項目は、次の規則にしたがって対応します。
□ 両データ項目は、データ名が同一でなければなりません。
□ 送出し側データ項目のすべての修飾子 ( グループ名を除く ) は、受取り側データ項目のすべての修飾子
( 受け取ったグループ名を除く ) と同一でなければなりません。
□ 対応する送出し側 / 受取り側項目の少なくとも 1 つは、基本項目でなければなりません。対応するデー
タ項目の双方のクラスが異なっていても構いません。
□ 対応が適正でないデータ項目に従属するデータ項目は、すべて無視されます。
□ FILLER データ項目は、無視されます。
426750-001J
6-51
第 6 章 PROCEDURE DIVISION ( 手続き部 )
次に、対応する項目の例を示します。
例1
次の 2 つのグループでは、すべての項目が対応しています。
01
detail-in.
05 social-security
05 employee-name
05 address
10 street
10 city
10 state
10 zip-code
01
report-line.
03 social-security
03 FILLER
03 employee-name
03 FILLER
03 address
05 street
05 FILLER
05 city
05 FILLER
05 state
05 FILLER
05 zip-code
この場合、次に示す文は、report-line のすべてのデータ項目への転記を行います。
MOVE CORRESPONDING detail-in TO report-line
例2
次の 2 つのグループでは、pencils だけが対応しています。その他にもよく似た基本項目名がありますが、
修飾語が異なっているので対応関係はありません。
01
stock-items.
05 erasers
10 gum
10 pink
10 ink
05 pencils
10 mechanical
10 non-mechanical
05 felt-tip-pens
05 ball-point-pens
05 fountain-pens
01
shelf-items.
05 pens
07 felt-tip-pens
07 ball-point-pens
07 fountain-pens
05 eradicators
10 ink
10 pink
10 gum
05 pencils
10 mechanical
10 non-mechanical
この場合、次に示す文は、pencils グループのデータ項目だけを転記します。
MOVE CORRESPONDING stock-items TO shelf-items
6-52
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
MOVE ステートメントでの制約
次のようなデータ項目タイプ間でのデータ項目の転記 ( 移動 ) は、コンパイル・エラーを引き起こすの
で、行わないで下さい。
□ 英字データ項目または表意定数 SPACE ⇒ 数字データ項目
□ 数字リテラル、数字データ項目、または表意定数 ZERO ⇒ 英字データ項目
□ 非整数数字リテラルまたは非整数数字データ項目 ⇒ 英数字データ項目
□ 数字データ項目 ⇒ 整数部桁数が同数以上でない数字データ項目
□ 数字整数、数字非整数、および数字編集データ項目 ⇒ 2 バイト (PIC N) データだけが許されるデータ項目
□ 2 バイト (PIC N) データだけが許されるデータ項目またはリテラル ⇒ 数字整数、数字非整数、または数
字編集データ項目
MOVE ステートメントでの規則
データは、受取り側フィールドのデータ・カテゴリに基づいて変換され、ストアされます。規則は、次
のとおりです。
□ 受取り側が英数字または英字データ項目の場合
●
データは、受取り側フィールドに左基準でストアされます。
●
送出し側データ項目の長さが受取り側より短い場合は、
「第 2 章 SCREEN COBOL ソース・プログ
ラム」で説明した標準桁合わせ規則にしたがって、受取り側フィールドで空白が充填されます。
●
送出し側データ項目の長さが受取り側より長い場合は、受取り側フィールドの長さで右側が切り詰
められます。
●
送出し側データ項目が符号付き数字データ項目として記述されている場合は、演算符号は受取り側
フィールドに移動されません。これは、符号がデータ項目の一部である場合にも、単独の文字であ
る場合にも適用されます。
□ 受取り側が数字データ項目の場合
●
データは小数点を合わせてストアされます。必要に応じて、ゼロが充填されます。
●
受取り側フィールドおよび送出し側フィールドが符号付きの場合は、符号は移動され、変換されま
す。送出し側フィールドが符号付きでない場合は、値に正の符号が付けられます。
●
受取り側フィールドが符号付きでない場合は、送出し側フィールドのデータの絶対値が移動されま
す。
●
送出し側フィールドが英数字の場合は、送出し側フィールドの値は符号なし数字整数として扱われ
ます。
426750-001J
6-53
第 6 章 PROCEDURE DIVISION ( 手続き部 )
グループ項目間の MOVE は、英数字データ項目から英数字データ項目への移動として扱われ、データ変
換は行われません。この場合は、受取り側領域は、送出し側または受取り側データ項目が単独項目である
かサブグループ項目であるかを考慮することなく充填されます。
表 6-4 に、MOVE 変換の一覧を示します。
表 6-4 MOVE 可能なデータ項目の組合せ
受取り側データ項目
英数字編集
数字整数、
数字非整数
または数字編集
2 バイト文字
○
×
×
○*
○
○
×
○
○*
英数字編集
○
×
×
×
○*
数字整数
×
×
×
○
×
数字非整数
×
×
×
○
×
数字編集
×
×
×
×
×
2 バイト文字
×
○
○
×
○
送出し側
データ項目
英字
英数字
英字
○
英数字
* この印のある MOVE は、ストリング・データが 1 バイトずつ転記され、編集も変換も行われません。
6.2.25 MULTIPLY ステートメント
MULTIPLY ステートメントは、2 つ以上の数字データ項目を掛け算して、結果を指定されたデータ項目
にストアします。MULTIPLY では、受取り側フィールドに入りきれない値が容易に生成されるので、受取
り側フィールドを定義するときには、フィールドの大きさに十分注意して下さい。
MULTIPLY BY ステートメント
MULTIPLY BY ステートメントは、ある数字データ項目を 1 つまたは複数の他の数字データ項目に掛け
算して、結果を乗数のデータ項目にストアします。
MULTIPLY value BY { multiplier } ,...
value
被乗数です。数字リテラルまたは基本数字データ項目の一意名のいずれかを指定します。
6-54
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
multiplier
基本数字データ項目の一意名です。積は、multiplier の新しい値としてストアされます。
value および multiplier の桁数の合計は 18 桁を超えてはいけません。
MULTIPLY GIVING ステートメント
MULTIPLY GIVING ステートメントは、2 つの数字データ項目を掛け算して、積を 1 つまたは複数の他
のデータ項目にストアします。
MULTIPLY value BY multiplier GIVING { result } ,...
value
被乗数です。数字リテラルまたは基本数字データ項目の一意名のいずれかを指定します。
multiplier
数字リテラルまたは基本数字データ項目の一意名です。value および multiplier の桁数の合
計は 18 桁を超えてはいけません。
result
積がストアされる基本数字データ項目の一意名です。
6.2.26 PERFORM ステートメント
PERFORM ステートメントは、プログラム内の 1 つまたは複数のプロシージャを実行します。1 つの段
落名または節名を指定した場合は、指定された段落または節の最初のステートメントに制御が移され、段
落または節の実行が終了すると、制御は PERFORM ステートメントに移されます。複数の段落またはプロ
シージャを指定した場合は、その段落または節の最初のステートメントに制御が移され、最後の段落また
は節の実行が終了すると、制御は PERFORM ステートメントに移されます。
PERFORM ステートメントには、次の 5 つの形式があります。
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
TIMES
UNTIL
VARYING
ONE
各形式では、2 つのパラメータ proc-1 および proc-2 が指定されます。proc-1 と proc-2 は、
proc-1 で始まり proc-2 で終わる一連のオペレーションを表しているだけで、2 つのプロシージャに
特別な関係があるわけではありません。proc-1 から proc-2 の範囲に GO TO ステートメントや
PERFORM ステートメントがあっても構いません。復帰点 (return point) への論理的な経路が複数通りある
場合は、proc-2 を EXIT ステートメントを含む段落にして、すべての経路をここに導かなければなりま
せん。
PERFORM ス テ ー ト メ ン ト 以外の手段でこれらのプロシージャに制御が移された 場合は、どの
PERFORM ステートメントからも参照されていないと見なされ、制御はプロシージャの最後のステートメ
ントから次の実行可能なステートメントに移されます。
426750-001J
6-55
第 6 章 PROCEDURE DIVISION ( 手続き部 )
PERFORM ステートメントの範囲は、論理的には、PERFORM ステートメントに続くステートメントに
制御が移されるまでに PERFORM ステートメントの結果として実行されるすべてのステートメントです。
この範囲には、元の PERFORM ステートメントの範囲にある GO TO ステートメント、PERFORM ステー
トメント、または CALL ステートメントの結果として実行されるすべてのステートメント、および実行さ
れる可能性がある DECLARATIVES SECTION にあるすべてのステートメントが含まれます。ですから、
PERFORM ステートメントの範囲内のステートメントは、必ずしも連続して現れる必要はありません。
PERFORM ステートメントによって参照される一連のステートメントに別の PERFORM ステートメント
が含まれている場合は、ネストされた PERFORM ステートメントで指定される一連のプロシージャは元の
PERFORM ステートメントによって参照される論理シーケンスに完全に含まれるか、あるいは完全に除外
されなければなりません。つまり、他の有効な PERFORM ステートメントの範囲内で実行された有効な
PERFORM ステートメントは、制御を別の PERFORM ステートメントに移してはいけません。さらに、そ
のような 2 つ以上の有効な PERFORM ステートメントは、同一の出口を持ってはいけません。
PERFORM ステートメント
PERFORM ステートメントは、1 つのプロシージャ、または THROUGH で指定されたプロシージャのグ
ループを 1 回実行します。実行が終了すると、制御は PERFORM ステートメントの次のステートメントに
移されます。
PERFORM proc-1 [ { THROUGH } proc-2 ]
[ { THRU
}
]
proc-1 および proc-2
実行するプロシージャの段落または節です。
次に、1 つの段落を実行する PERFORM ステートメントの例を示します。
IF report-a
PERFORM do-report-a.
次に、いくつかの段落を実行する PERFORM ステートメントの例を示します。
IF reports
PERFORM do-reports THRU do-reports-exit.
:
do-reports.
:
(several paragraphs to create the reports)
:
do-reports-exit.
EXIT.
6-56
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
PERFORM TIMES ステートメント
PERFORM TIMES ステートメントは、1 つのプロシージャ、または THROUGH で指定されたプロシー
ジャのグループを、指定された回数だけ実行します。指定された回数の実行が終了すると、制御は
PERFORM TIMES ステートメントの次のステートメントに移されます。
PERFORM proc-1 [ { THROUGH } proc-2 ] count TIMES
[ { THRU
}
]
proc-1 および proc-2
実行するプロシージャの段落または節です。
count
整数リテラルまたは整数データ項目の一意名です。プロシージャ、またはプロシージャのグループ
は count の値の回数だけ実行されます。
次に、PERFORM TIMES ステートメントの例を示します。
PERFORM list-transactions 2 TIMES.
PERFORM UNTIL ステートメント
PERFORM UNTIL ステートメントは、1 つのプロシージャ、または THROUGH で指定されたプロシー
ジャのグループを、条件に基づいて実行します。条件は、各 PERFORM サイクルの前でチェックされます。
指定の条件が満たされると、
制御はPERFORM UNTILステートメントの次のステートメントに移されます。
PERFORM proc-1 [ { THROUGH } proc-2 ] UNTIL condition
[ { THRU
}
]
proc-1 および proc-2
実行するプロシージャの段落または節です。
condition
任意の条件式を指定することができます。
次に、PERFORM UNTIL ステートメントの例を示します。
WORKING-STORAGE SECTION.
01 flag
PIC 9.
88 bad
88 good
88 no-more-adds
:
PROCEDURE DIVISION.
:
PERFORM add-routine UNTIL
:
426750-001J
VALUE 0.
VALUE 1.
VALUE 1.
no-more-adds.
6-57
第 6 章 PROCEDURE DIVISION ( 手続き部 )
add-routine.
MOVE 0 to flag.
:
: Once the add routine is successful, a 1 is moved
: to flag; otherwise, flag remains 0. As long as
: flag is 0, the procedure is reexecuted.
:
delete-routine.
PERFORM VARYING ステートメント
PERFORM VARYING ステートメントは、1 つのプロシージャ、または THROUGH で指定されたプロ
シージャのグループを、指定の条件が真になるまでデータ項目を変更して実行します。AFTER を指定した
場合は、PERFORM の範囲は、ネストされたループ内になります。最も内側のループは、最後の AFTER
指定によって定義されます。また、最も外側のループは、VARYING 句の最初の一連のパラメータによっ
て定義されます。実行が終了すると、制御は PERFORM VARYING ステートメントの次のステートメント
に移されます。
PERFORM proc-1 [ { THROUGH } proc-2 ]
[ { THRU
}
]
VARYING vary-1 FROM base-1 BY step-1 UNTIL cond-1
[ AFTER vary-2 FROM base-2 BY step-2 UNTIL cond-2 ] ...
proc-1 および proc-2
実行するプロシージャの段落または節です。
vary-1 および vary-2
整数数字データ項目の一意名です。
base-1 および base-2
整数数字リテラルまたは数字データ項目の一意名です。
step-1 および step-2
整数数字リテラルまたは数字データ項目の一意名です。値は、ゼロ以外でなければなりません。
cond-1 および cond-2
任意の条件式を指定することができます。
次に、PERFORM VARYING ステートメントの例を示します。
WORKING-STORAGE SECTION.
01 command-data.
05 FILLER PIC X(36) VALUE "ADD
- ADD A NEW RECORD".
05 FILLER PIC X(36) VALUE "DELETE - DELETE A RECORD".
:
01 command-table REDEFINES command-data.
05 command-entry PIC X(36) OCCURS 10 TIMES.
6-58
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
77
77
no-of-commands
command-index
PIC 99
PIC 99
VALUE 9.
VALUE 1 COMP.
PROCEDURE DIVISION.
:
PERFORM list-commands VARYING command-index FROM 1 BY 1
UNTIL command-index GREATER THAN no-of-commands.
list-commands.
:
PERFORM ONE ステートメント
PERFORM ONE ステートメントは、ある整数データ項目の一意名に基づいて、1 つのプロシージャ、ま
たは THROUGH で指定されたプロシージャのグループのうちの 1 つを選択して実行します。
PERFORM ONE [ OF ] { proc-1 [ { THROUGH } proc-2 ] } ,...
{
[ { THRU
}
] }
DEPENDING [ ON ] identifier
proc-1 および proc-2
実行するプロシージャの段落または節です。最大 255 段落まで指定することができます。
identifier
整数数字リテラルまたは整数データ項目の一意名です。この値によって、実行するプロシージャ、
またはプロシージャのグループが決められます。
1 つのプロシージャまたはプロシージャのグループには、指標が割り当てられます。この指標は、リス
ト内で 1 つのプロシージャまたはプロシージャのグループの相対的な位置を示します。指標の値は 1 から
始まって、1 ずつ加算され、最大は 255 です。リストには、255 を超えるプロシージャまたはプロシージャ
のグループを含めることができません。
identifier の値がこれらの指標のいずれかに一致すると、その指標で示されたプロシージャまたは
プロシージャのグループが実行されます。実行が終了すると、制御は PERFORM ONE ステートメントの
次のステートメントに移されます。identifier の値がいずれの指標にも一致しない場合は、どのプロ
シージャも実行されません。
次に、PERFORM ONE ステートメントの例を示します。
PERFORM ONE OF
A THRU B
C
D
DEPENDING ON I.
426750-001J
6-59
第 6 章 PROCEDURE DIVISION ( 手続き部 )
6.2.27 PRINT SCREEN ステートメント
PRINT SCREEN ステートメントは現在のスクリーン・イメージをプリントします。プリンタは、接続さ
れている場合と接続されていない場合があります。
PRINT SCREEN ステートメントは、インテリジェント・デバイスと通信するプログラムでは使用するこ
とができません。
PRINT SCREEN [ ON ERROR imperative-statement ]
ON ERROR
プ リ ン ト 中 に エ ラ ー が 発 生 し た 場 合 に、制 御 を 移 す ポ イ ン ト を 指 定 し ま す。特 殊 レ ジ ス タ
TERMINATION-STATUS にエラーのタイプを示すエラー・コードがセットされ、imperativestatement が実行されます。
この句が省略されている場合にエラーが発生すると、デフォルトのエラー処理が行われます。
imperative-statement
エラーを検出したときに実行する無条件ステートメントです。
PATHCOM の SET TERM コマンドで 6520 端末の接続プリンタが指定されている場合は、スクリーン・
イメージはこの端末 (6524 端末は接続プリンタを含んでいます ) に直接接続されているプリンタに出力さ
れます。
PATHCOM の SET TERM コマンドで IBM3270 端末の接続プリンタが指定されている場合は、スクリー
ン・イメージは特殊レジスタ TERMINAL-PRINTER で指定されるデバイスに出力されます。このデバイス
は、端末と同じ制御装置に接続されていなければなりません。
プリンタが接続されていない場合は、特殊レジスタ TERMINAL-PRINTER で指定されるオペレーティ
ング・システム・ファイルにプリントが行われます。この場合、デバイス・タイプとして端末、プリンタ、
またはプロセスがサポートされます。
プリンタが接続されていない場合は、PRINT SCREEN ステートメントでプリントされるスクリーン・イ
メージが、表示されているスクリーン・イメージと異なることがあります。このプリント処理では、スク
リーンを読み込むのではなく、SCREEN COBOL オブジェクト・ファイルに含まれているスクリーン記述
およびこのスクリーンに関連付けられているワーキング・ストレージを使用してスクリーン・イメージが
形成されるためです。
次に、ワーキング・ストレージ項目から形成されるスクリーン・イメージが、表示されるスクリーンと
( 接続されていないプリンタに ) プリントされるスクリーンとで、どのように異なるかを示します。
□ SCREEN SECTION で HIDDEN と定義されたスクリーン・フィールドは、実行中に表示指定に変更さ
れても、プリントされません。最初に表示を抑止しておいて後でプリントしたいスクリーン・フィール
ドは、HIDDEN と定義してはいけません。処理中に TURN ステートメントを使用して、HIDDEN 属性
をオンあるいはオフに切り換えます。
□ ワーキング・ストレージ項目がスクリーンに表示されない値、またはスクリーンに現在表示されている
ものと異なるデータを含むことがあるため、想定外の値がプリントされることがあります。
6-60
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
□ DISPLAY "XYZ" IN SCREEN-FIELD などの直接表示は、ワーキング・ストレージには反映されないた
め、プリントされません。
□ 1 つのスクリーン・フィールドに関連付けられた FROM フィールドおよびもう 1 つの別の関連付けら
れた TO フィールドがある場合は、変則的な事態が生じます。PRINT SCREEN ステートメントは、関
連付けられたワーキング・ストレージを選択するときに、次のような優先順を割り当てることによっ
て、この問題を解決します。
高位
低位
-> USING
-> FROM
-> TO
表 6-5 に、PRINT SCREEN ステートメントによって特殊レジスタ TERMINATION-STATUS にセットさ
れるエラー・コードを示します。
表 6-5 PRINT SCREEN ステートメントの TERMINATION-STATUS エラー・コード
TERMINATIONSTATUS
意味
0
エラーなし。
1
ベース・スクリーンが表示されない。
デフォルトのシステム処置:端末はサスペンドされ、リスタートされない。エ
ラーを記述するメッセージがログ・ファイルに記録される。
2
当該の端末タイプに対してプリンタ指定が無効である。または、当該のプリンタ・
デバイス・タイプはサポートされていない。
□ 6510 端末に対して PATHCOM の SET TERM PRINTER コマンドの ISATTACHED 参照子が指定された。
□ IBM3270 に対して IS-ATTACHED 参照子が指定されたが、プリンタが端末と
同一のコントローラに接続されていない。
□ 端末、プリンタ、またはプロセス以外のデバイス・タイプを持つファイルが指
定された。
デフォルトのシステム処置:端末はサスペンドされ、リスタートされない。エ
ラーを記述するメッセージがログ・ファイルに記録される。
3
プリンタを点検する必要がある ( 例えば、NOT READY 状態である場合 )。プリン
ト・デバイスへの I/O 中に、そのデバイスへのオペレータの介入が必要であるこ
とを示すオペレーティング・システム・ファイル・エラー・コードが返された。
デフォルトのシステム処置:特殊レジスタ DIAGNOSTIC-ALLOWED が YES に
セットされている場合は、端末オペレータにこの状態を知らせる診断スクリーン
が表示される。
□ 端末オペレータが 6510 または 6520 端末の F1 キー ( または、同等の IBM3270
キー ) を押すと、エラーが訂正されていれば、スクリーン・リカバリ処理が起
動され、最初からリスタートされる。
特殊レジスタ DIAGNOSTIC-ALLOWED が NO にセットされている場合は、端末
はサスペンドされるが、リスタートすることができる。エラーを記述するメッ
セージがログ・ファイルに記録される。
4
致命的なエラーが発生した。デバイスへの I/O 中に、致命的なエラー状態を示す
オペレーティング・システム・エラー・コードが返された。
デフォルトのシステム処置:端末はサスペンドされるが、リスタートすることが
できる。エラーを記述するメッセージがログ・ファイルに記録される。
426750-001J
6-61
第 6 章 PROCEDURE DIVISION ( 手続き部 )
PRINT SCREEN ステートメントによって実行される I/O
PRINT SCREEN の I/O は、用紙の上端 (top-of-form) 処理で開始されます。各スクリーン行は別個のレ
コードに書き込まれ、末尾の空白および末尾の NULL 値は抑制されます。プリントは、スクリーンの最上
部の行から開始され、スクリーンの最下部の行まで行われます。
診断スクリーン
PRINT SCREEN 処理中にエラーが発生したときに、診断スクリーンを表示することができます。診断ス
クリーンについては、「付録 A ADVISORY メッセージ」に説明があります。次に、デフォルトの診断ス
クリーンの例を示します。
PATHWAY ERROR REPORT: 04MAY92,12:42
TERMINAL: TERM-1
PRINTER REQUIRES ATTENTION
PRINTER: $LP
PRESS F1 TO RETRY, F2 TO ABORT
IBM3270 接続プリンタ
IBM3270 端末でスクリーンをプリントするには、スクリーン位置 1,2 で始まる入力フィールドを宣言す
る必要があります。この位置に保護されたフィールドがある場合は、スクリーンはスクリーン複製処理の
ためにロックされ、PRINTER I/O ERROR (179) が発生します。
PRINT SCREEN 処理の出力デバイスは、デバイス・タイプが 10 で、AM3270 アクセス方式の CRT プ
ロトコルを使用しなければなりません。詳細については、『Device-Specific Access Methods ―AM3270/
TR3271』を参照して下さい。
6.2.28 RECEIVE UNSOLICITED MESSAGE ステートメント
RECEIVE UNSOLICITED MESSAGE ステートメントは、非請求メッセージを読み取って、ワーキング・
ストレージにストアします。メッセージは、直接ワーキング・ストレージに入る場合と MESSAGE SECTION
を介してマッピングされる場合があります。
RECEIVE UNSOLICITED [ MESSAGE ]
[ CODE FIELD [ IS ] code-field ]
{ YIELDS rcv-message
}
{
}
{ { CODE rcv-code [,rcv-code ]... YIELDS rcv-message }... }
[ TIMEOUT timeout-value ]
[ ON ERROR imperative-stmt ]
6-62
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
YIELDS rcv-message
WORKING-STORAGE SECTION または MESSAGE SECTION 内のレベル 01 のメッセージ名を示
します。
CODE FIELD [ IS ] code-field
非請求メッセージの
rcv-code フィールドの位置、長さ、およびデータ・タイプを定義します。
この句を省略すると、次のようなデフォルト値が使用されます。
□ オフセット―レコードの先頭から 0 バイト目
□ 長さ―2 バイト
□ データ・タイプ―COMPUTATIONAL 数字データ項目
rcv-code フィールドの位置、長さ、およびデータ・タイプがデフォルト値以外にしたいときは、
この句を指定する必要があります。
CODE FIELD 句の code-field パラメータには、WORKING-STORAGE SECTION のフィール
ド名を指定します。指定したフィールドのレコードの先頭からのオフセットは、rcv-code フィー
ルドの非請求メッセージの先頭からのオフセットを示します。
指定したフィールドの長さは、rcv-code フィールドの長さを示します。
指定したフィールドのデータ・タイプは、rcv-code フィールドのデータ・タイプを示します。
CODE rcv-code
受信する非請求メッセージを示すリテラルまたはデータ項目を指定します。
CODE rcv-code 句での rcv-code の位置は、TERMINATION-STATUS 値に対応します。そ
れぞれの非請求メッセージに、1 つ以上の rcv-code 値を対応させることができます。
非数字リテラルは、引用符で囲まなければなりません。
TIMEOUT timeout-value
RECEIVE UNSOLICITED MESSAGE 処理が非請求メッセージを待機する制限時間を秒単位で指定
します。timeout-value は、数字リテラルまたは数字データ項目でなければならず、0 ~ 32,767
秒を指定することができます。
指定した秒数以内に非請求メッセージを受信しない場合は、TERMINATION-SUBSTATUS が 40 に
セットされて、処理はキャンセルされ、ON ERROR 句が実行されます。
この句を省略すると、制限時間は指定されません。
ON ERROR imperative-stmt
メ ッ セ ー ジ の 受 信 中 に エ ラ ー が 発 生 し た 場 合 の 処 置 を 指 定 し ま す。エ ラ ー が 発 生 す る と、
imperative-stmt が実行されます。特殊レジスタ TERMINATION-STATUS に原因を示す
コード値が設定されます。
426750-001J
6-63
第 6 章 PROCEDURE DIVISION ( 手続き部 )
次に示す規則が適用されます。
□ SCREEN COBOL プログラムの非請求メッセージ・キューにメッセージがある場合は、RECEIVE
UNSOLICITED MESSAGE ステートメントは直ちに終了します。メッセージがない場合は、RECEIVE
UNSOLICITED MESSAGE ステートメントは非請求メッセージが到着するまで、または TIMEOUT 句
が指定されていれば制限時間になるまで待機します。
□ RECEIVE UNSOLICITED MESSAGE ステートメントの実行は、非請求メッセージの処理の最初のス
テップです。RECEIVE UNSOLICITED MESSAGE ステートメントは、以下の場合に実行されます。
1. 非請求メッセージが到着したため、ACCEPT ステートメントの ESCAPE
MESSAGE 句が実行された場合。
ON
UNSOLICITED
2. SEND MESSAGE ステートメントの実行が割り込みを受けて、ESCAPE
MESSAGE 句が実行された場合。
ON
UNSOLICITED
3. 特殊レジスタ PW-UNSOLICITED-MESSAGE-QUEUED をテストして、YES であることが判明した
場合。
4. SCREEN COBOL プログラムが RECEIVE UNSOLICITED MESSAGE ステートメントを実行して、
非請求メッセージの到着を待機する場合。
4 のケースで、SCREEN COBOL プログラムが非請求メッセージを無制限に待機する可能性があるとき
は、TIMEOUT 句を指定する必要があります。
複数の受信コードを指定している SCREEN COBOL プログラムの例を考えてみましょう。
PROCEDURE DIVISION.
UNSOLICITED-MESSAGE-HANDLER.
RECEIVE UNSOLICITED MESSAGE
CODE RC-1 YIELDS R-MSG-1
CODE RC-2 YIELDS R-MSG-2
TIMEOUT MAX-TIME
ON ERROR GOTO ERROR-HANDLER.
PERFORM ONE OF MSG-1-RCD
MSG-2-RCD
DEPENDING ON TERMINATION-STATUS.
ERROR-HANDLER.
IF TERMINATION-STATUS
= 1 AND
TERMINATION-SUBSTATUS = 40
PERFORM RCV-TIMED-OUT
ELSE
PERFORM ANALYZE-ERROR.
このプログラムは、次のように実行されます。
1. RECEIVE UNSOLICITED MESSAGE ステートメントは、非請求メッセージの到着を待機します。この
SCREEN COBOL プログラムの非請求メッセージ・キューにメッセージがある場合は、処理は直ちに終
了します。メッセージがない場合は、RECEIVE UNSOLICITED MESSAGE ステートメントは、非請求
メッセージの到着または制限時間まで待機します。
6-64
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
2. 非請求メッセージが到着すると、RECEIVE UNSOLICITED MESSAGE ステートメントは、受信コード
の値に応じてメッセージを R-MSG-1 または R-MSG-2 に移し、そのステートメントでの受信コードの
位置に応じて 1 または 2 を特殊レジスタ TERMINATION-STATUS に送ります。エラーもなくタイムア
ウトにもならずに RECEIVE UNSOLICITED MESSAGE ステートメントが実行されると、特殊レジス
タ TERMINATION-STATUS は、次のようにセットされます。
受信コード
TERMINATION-STATUS
RC-1
RC-2
1
2
3. RECEIVE UNSOLICITED MESSAGE ステートメントがタイムアウトになるか、エラーが発生すると、
特殊レジスタ TERMINATION-STATUS および TERMINATION-SUBSTATUS は状況に応じてセット
され、ERROR-HANDLER プロシージャが実行されます。
TERMINATION-STATUS にセットされるエラー番号については、表 6-5 を参照して下さい。
6.2.29 RECONNECT MODEM ステートメント
RECONNECT MODEM ステートメントは、公衆交換回線 ( 公衆回線システムによって使用される標準
の通信回線 ) を介して Pathway/iTS 端末またはインテリジェント・デバイスに接続するための SCREEN
COBOL プログラムの制御を可能にします。Pathway/iTS は交換回線での発呼 ( 自動呼出し ) 機能をサポー
トしません。
RECONNECT MODEM
公衆交換回線を介して Pathway/iTS 端末またはインテリジェント・デバイスへの接続が確立されている
場合は、RECONNECT MODEM ステートメントは SCREEN COBOL プログラムとの接続をいったん切っ
て、プログラムに次の着呼を待機させます。次の着呼が端末またはインテリジェント・デバイスへの接続
を完了すると、SCREEN COBOL プログラムは次のプログラム命令から実行を再開します。
接 続 手 段 が 交 換 回 線 で は な い P a t h w a y / i T S 端末またはインテリジェント・デバイスに 対して
RECONNECT MODEM ステートメントが実行された場合は、プログラムは直ちに次のプログラム命令か
ら実行を再開します。
RECONNECT MODEM ステートメントの実行後はすべての端末スクリーン定義がクリアされるので、次
のスクリーン処理の前に DISPLAY BASE ステートメントが実行されなければなりません。
RECONNECT MODEM ステートメントにより、SCREEN COBOL プログラムは交換回線を介して接続
されている Pathway/iTS 端末またはインテリジェント・デバイスに対して、次のオペレーションを実行し
ます。
□ 端末セッション ( 発呼側がログ・オフ ) の終わりで端末またはインテリジェント・デバイスを接続解除
します。
□ モデム・エラー ( 一時的な回線断 ) に対するリカバリを行い、端末またはインテリジェント・デバイス
からの次の発呼を待ちます。
発呼側端末に対して SCREEN COBOL プログラムは一貫性のある状態でのアクセスを提供しなければな
らないので、RECONNECT MODEM ステートメントを実行する前に、そのプログラムに固有の変数を初期
設定して、前のトランザクションを完了しておかなければなりません。
426750-001J
6-65
第 6 章 PROCEDURE DIVISION ( 手続き部 )
RECONNECT MODEM ステートメントは、全コンテキストのチェックポイント処理を行います。
Pathway/iTS が TMF の下で実行されていて、端末またはインテリジェント・デバイスがトランザクション・
モードである場合は、このステートメントは現在のトランザクションをバックアウトし、端末またはイン
テリジェント・デバイスをサスペンドして、再開できないようにします。ABORT-TRANSACTION ステー
トメントが RECONNECT MODEM ステートメントより前にある場合は、Pathway/iTS はモデム・エラー
の後で、端末またはインテリジェント・デバイスとの通信を再開しようとします。
次に、RECONNECT MODEM ステートメントの例を示します。
START-PROGRAM.
CALL SEARCH-PROGRAM ON ERROR GO TO VERIFY-RECONNECT.
RECONNECT MODEM.
GO TO START-PROGRAM.
VERIFY-RECONNECT.
IF TERMINATION-STATUS IS = 18 AND
TERMINATION-SUBSTATUS IS = 140
* This is a modem error - return to a consistent state
* and wait for the next terminal caller.
DELAY 10
RECONNECT MODEM
GO TO START-PROGRAM.
* Processes other error conditions.
DISPLAY BASE SEARCH-SCREEN.
または
SEND MESSAGE REPLY YIELDS MESSAGE-IN.
:
6.2.30 REPLY TO UNSOLICITED MESSAGE ステートメント
REPLY TO UNSOLICITED MESSAGE ステートメントは、RECEIVE UNSOLICITED MESSAGE ステー
ト メ ン ト に よ っ て 直 前 に 受 け 取 ったメッセージへの応答を送信します。RECEIVE UNSOLICITED
MESSAGE ステートメントが発行された後は、REPLY TO UNSOLICITED MESSAGE ステートメントが実
行されるまで別の RECEIVE UNSOLICITED MESSAGE ステートメントが発行されてもエラーとして拒否
され、すべての ESCAPE ON UNSOLICITED MESSAGE 句も無効となります。
REPLY [ TO ] UNSOLICITED [ MESSAGE ] [ WITH ] reply-message
[ ON ERROR imperative-stmt ]
reply-message
MESSAGE SECTION 内のレベル 01 のメッセージ・フィールドまたは WORKING-STORAGE
SECTION 内のレベル 01 またはレベル 77 データ項目を指定します。reply-message には、直
前に受信した非請求メッセージへの応答で送信されるデータを含めることができます。
6-66
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
ON ERROR imperative-stmt
メ ッ セ ー ジ の 送 信 中 に エ ラ ー が 発 生 し た 場 合 の 処 置 を 指 定 し ま す。エ ラ ー が 発 生 す る と、
imperative-stmt が実行され、特殊レジスタ TERMINATION-STATUS に原因を示すコード
値が入れられます。
REPLY TO UNSOLICITED MESSAGE ステートメントを使用した SCREEN COBOL プログラムの例を
考えて見ましょう。
PROCEDURE DIVISION.
MESSAGE-RESPONSE.
REPLY TO UNSOLICITED MESSAGE WITH MY-REPLY
ON ERROR PERFORM ERROR-HANDLER.
ERROR-HANDLER.
IF TERMINATION-STATUS
= 1
PERFORM ANALYZE-GUARDIAN-ERROR
ELSE
PERFORM ANALYZE-ERROR.
上記の REPLY TO UNSOLICITED MESSAGE ステートメントは、次のように実行されます。
1. 直前に受信した非請求メッセージへの応答として MY-REPLY の内容を送信します。
2. エラーがあると、ERROR-HANDLER プロシージャが実行されます。ファイル・システム・エラーの場
合は、特殊レジスタ TERMINATION-STATUS には 1 が入れられ、特殊レジスタ TERMINATIONSUBSTATUSにはエラー番号が入れられます。その他のエラーの場合は、特殊レジスタTERMINATIONSTATUS にはエラー番号が入れられます。
特殊レジスタ TERMINATION-STATUS に入れられるエラー番号については、この章で後述します。
6.2.31 RESET ステートメント
RESET ステートメントは、表示属性およびスクリーン・フィールドのデータをコンパイル時の定義に戻
します。このステートメントは、端末表示だけを復元し、内部データは復元しません。
RESET ステートメントは、インテリジェント・デバイスと通信するプログラムでは使用することができ
ません。
RESET [ TEMP
] [ ATTR ] { screen-identifier } ,...
[ TEMPORARY ] [ DATA ]
[ DEPENDING [ ON ] identifier ]
[ SHADOWED
]
TEMP または TEMPORARY
DISPLAY TEMP または TURN TEMP ステートメントから現在の値または属性を受け取った場合にだけ、
選択されたフィールドがリセットされることを指定します。
426750-001J
6-67
第 6 章 PROCEDURE DIVISION ( 手続き部 )
備考: SCREEN COBOL プログラムの実行中に、TCP は表示属性を制御するのと同じ方法で MDT (modified data
tag) を制御します。ただし、次の 2 つの重要な例外があります。
□ TURN TEMP ステートメントが表示属性を変更するために入力フィールドを選択した場合は、常に MDT
ビットがセットされます。
□ RESET TEMP ステートメントが属性をリセットするために入力フィールドを選択した場合は、その
フィールドの内部 MDT 属性とは無関係に、MDT ビットがセットされます。
これらの 2 つの例外は、TEMP 参照子を持つ TURN および RESET ステートメントにだけ適用されます。ま
た、ACCEPT ステートメントが終了した後ではフィールドの MDT ビットはリセットされないことに注意し
て下さい。いったん MDT ビットがセットされると、次の DISPLAY BASE、TURN、RESET、または CLEAR
INPUT ステートメントが実行されるまで、セットされたままになります。
ATTR
選択したフィールドの表示属性を、スクリーン定義で指定された値にリセットします。
DATA
選択したフィールドに表示される文字を、そのフィールドの VALUE フィールド特性句で指定され
た値にリセットします。値が指定されていない場合は、当該のフィールドは標準の FILL 文字で充
填されます。
ATTR および DATA のいずれも指定されていない場合は、選択したフィールドの属性とデータの両
方が初期値にリセットされます。
会話モードで作動している端末の場合は、RESET DATA は何も意味がありません。会話モードの
端末のフィールドの表示属性をリセットするには、RESET ATTR または RESET TEMP ATTR のい
ずれかを指定します。
screen-identifier
リセットするフィールドを指定します。1 つの RESET ステートメントでは、最大 127 個のスクリー
ン・フィールドまで指定することができます。それぞれの
screen-identifier には、スク
リーン全体の名前、スクリーン・グループの名前、現在表示されているベース・スクリーンまたは
オ ー バ ー レ イ・ス ク リ ー ン の 基 本 項 目 の 名 前 を 指 定 す る こ と が で き ま す。s cr e e n -
identifier がグループの場合は、定義に TO、FROM、または USING 句がある従属するすべ
ての基本項目がリセットされます。
DEPENDING ON identifier
スクリーン・フィールドのリストからゼロ ( 選択しない )、または 1 つの screen-identifier
を選択します。screen-identifier リスト内の位置が identifier の値と同じステート
メントが選択されます。identifier の値が 1 より小さいか screen-identifier の数よ
り大きい場合は、screen-identifier は選択されません。
6-68
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
SHADOWED
screen-identifier リストから、SELECT ビットが 1 にセットされている SHADOWED 項
目を持つフィールドだけを選択します。SHADOWED 項目を持たない screen-identifier
リスト内のフィールドは、選択されません。
備考: DEPENDING ON 参照子と SHADOWED 参照子が両方とも指定されていない場合は、 screenidentifier リストのすべてのフィールドが選択されます。
RESET ステートメントが実行されると、選択したフィールドの属性およびデータは、初期値にリセット
されます。
RESET ステートメントはスクリーンへの物理的な書込みは行わず、端末バッファにデータを書き込みま
す。スクリーンへの物理的な書込みは、次のいずれかのイベントが発生したときに行われます。
□ TERMBUF の空き容量がなくなった。
□ 次のいずれかのステートメントが実行された。
ACCEPT
BEGIN-TRANSACTION
END-TRANSACTION
RESTART-TRANSACTION
ABORT-TRANSACTION
CALL
CHECKPOINT
DELAY
EXIT PROGRAM
PRINT SCREEN
SEND
□ 会話型端末のために DISPLAY ステートメントが実行された。
RESET ステートメントの DEPENDING ON 句は、PERFORM ONE ステートメントの DEPENDING ON
句と類似しています。次の例は、両者の類似性を示しています。
WORKING-STORAGE SECTION.
:
77 ws-screen-status
PIC 9(4)
COMP VALUE 1.
01 ws-table.
05 ws-table-item
PIC X(10)
OCCURS 4 TIMES.
SCREEN SECTION.
:
01 MENU1 SIZE 24, 80.
05 screen-table
at 3, 4
PIC X(10)
OCCURS ON 4 LINES SKIPPING 1
VALUE "0000000000"
USING ws-table-item.
PROCEDURE DIVISION.
:
426750-001J
6-69
第 6 章 PROCEDURE DIVISION ( 手続き部 )
BODY-PARAGRAPH.
:
DISPLAY BASE MENU1.
TURN REVERSE IN MENU1.
DISPLAY MENU1.
:
RESET SCREEN-TABLE(1),
SCREEN-TABLE(2),
SCREEN-TABLE(3),
SCREEN-TABLE(4),
DEPENDING ON WS-SCREEN-STATUS.
WS-SCREEN-STATUS が 1 のときは、SCREEN-TABLE(1) の表示値とビデオ属性がスクリーン定義で
宣言された状態にリセットされます。WS-SCREEN-STATUS が 2 のときは、SCREEN-TABLE(2) の表示
値とビデオ属性がスクリーン定義で宣言された状態にリセットされ、以下同様です。WS-SCREEN-
STATUS < 1 または WS-SCREEN-STATUS > 3 のときでも、エラーとは見なされません。制御が単に失敗
するだけで、スクリーン・フィールドはリセットされません ( 処理は継続されて、次のステートメントが
実行されます )。
6.2.32 RESTART-TRANSACTION ステートメント
RESTART-TRANSACTION ステートメントは、トランザクション・モードで作動している端末のトラ
ンザクションをリスタートします。トランザクション・モードは、Compaq トランザクション管理ファシ
リティ (TMF) の下で実行するようにコンフィギュレーションした Pathway サーバのオペレーション・モー
ドです。トランザクション・モードでは、Pathway サーバはオーディット対象ファイルをロックしたり、更
新したりすることができます。
RESTART-TRANSACTION
このステートメントが実行されるということは、一過性の問題が発生したために、トランザクションを
実行する現在の試行が失敗したことを示します。
RESTART-TRANSACTION ステートメントは、TMF にこのトランザクションの間にデータベースで行
われたあらゆる更新をバックアウトするようリクエストし、端末の実行は BEGIN-TRANSACTION ステー
トメントで再開されます。TMF は、新しいトランザクション ID 番号をトランザクションに割り当てます。
TCP は、スクリーン・リカバリのために当該のスクリーンにマークを付け、特殊レジスタ RESTARTCOUNTER を 1 だけ加算します。特殊レジスタ TERMINATION-STATUS は 1 ( トランザクションが開始
またはリスタートされたことを示す ) のまま変わりません。ワーキング・ストレージ項目は、BEGINTRANSACTION ステートメントの実行時の値に戻ります。BEGIN-TRANSACTION ステートメントで ON
ERROR が指定されている場合は、指定された無条件ステートメントが実行されます。
次の 2 つの場合は、RESTART-TRANSACTION ステートメントが実行されると、端末は異常終了処理
のためにサスペンドされます。
□ このステートメントが実行されたときに、端末がトランザクション・モードでなかった場合。
□ データベースの更新をバックアウトしているときに、致命的なエラーが発生した場合。
6-70
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
6.2.33 SCROLL ステートメント
SCROLL ステートメントは、オーバーレイ領域の内容を上下に移動します。このステートメントは、6510
端末でだけ使用することができ、その他の端末またはインテリジェント・デバイスとの通信には使用する
ことができません。
SCROLL { UP
} overlay-area-name
{ DOWN }
UP
スクリーンのオーバーレイ領域に表示されるデータを、上に 1 行移動します。オーバーレイ領域の
最下部には空白行が 1 行現れ、オーバーレイ領域の最上部の行は失われます。
DOWN
スクリーンのオーバーレイ領域に表示されるデータを、下に 1 行移動します。オーバーレイ領域の
最上部には空白行が 1 行現れ、オーバーレイ領域の最下部の行は失われます。
overlay-area-name
スクリーン・オーバーレイ領域の名前です。当該の領域に関連付けられたオーバーレイ・スクリー
ンは、出力フィールドまたはリテラル・フィールドだけを含むことができます。リテラル・フィー
ルドは、オーバーレイ・スクリーンが初めてこの領域に表示されるときにだけ表示されます。
6.2.34 SEND ステートメント
SEND ステートメントは、それぞれの有効な応答コード値ごとに、関連付けられたデータの構造を宣言
します。SEND ステートメントは、トランザクション・リクエスト・メッセージをサーバ・プロセスに送
り、サーバ・プロセスから応答を受け取ります。SEND ステートメントには、メッセージおよび応答コー
ド値リストが含まれます。
SEND ステートメントの処理の際は、TCP は、サーバが応答を送るときに使用する応答コード値を保持
しています。応答を受け取ると、TCP は、応答コード値を応答コード値リストと比較してどの応答を受け
取ったかを判定し、その結果として、データの構造を確定します。すると、TCP は、応答をコピーして
SCREEN COBOL プログラムに渡します。
SEND [ identifier-1 ] ,... TO server-class-name
[ UNDER PATHWAY pathmon-name ]
[ AT SYSTEM system-name ]
[ REPLY { CODE { reply-code-value } ...
YIELDS [ VARYING ] {identifier-2 } ... } ...
CODE OTHER YIELDS [ VARYING ] { identifier-2 } ...
[ ON ERROR imperative-statement ]
426750-001J
6-71
第 6 章 PROCEDURE DIVISION ( 手続き部 )
identifier-1
サーバに送られるデータ項目です。この一意名で表されるデータ項目は、32,000 バイトを超えるこ
とはできません。identifier-1 が可変長データ項目である場合は、SEND ステートメントは
現在定義されているオカレンスだけを送信します ( 可変長データ項目とは、OCCURS DEPENDING
ON 句で定義された項目のことです )。
このパラメータを省略すると、ゼロ・バイトがサーバに送信され、それに対する応答もサーバから
返されます。
server-class-name
メッセージが送られるサーバ・クラスを示します。server-class-name には、非数字リテラ
ルまたはデータ項目を指定することができます。server-class-name を含むフィールドの大
きさは、1 ~ 15 文字が可能です。
この名前は、PATHCOM の ADD SERVER コマンドで使用される論理サーバ・クラス名です。
pathmon-name
s e r v e r - cl a s s - n a me パラメータで指定したサーバ・クラスへのリンクを制御する
PATHMON プロセスの名前です。pathmon-name には、非数字リテラルまたはデータ項目を指
定することができます。pathmon-name を含むフィールドには 15 文字まで含めることができま
すが、ネットワーク通信では、TCP は最初の 5 文字だけを渡します。
外部 PATHMON を通しての SEND ステートメントには、有効なネットワーク・プロセス名を指定
しなければなりません。この場合は、pathmon-name は先頭が $ で、1 ~ 4 文字の英数字を続
けます。
このパラメータを省略すると、サーバ・クラスを制御する PATHMON は、TCP を制御する PATHMON
プロセスと同じ名前であると見なされます。
system-name
指 定 さ れ た PATHMON プ ロセスが実行されている Compaq NonStop システムの名前です。
system-name には、非数字リテラルまたはデータ項目を指定することができます。 systemname を含むフィールドには 15 文字まで含めることができますが、ネットワーク通信では、TCP
は最初の 8 文字だけを渡します。
system-name には、有効なネットワーク・システム名を指定しなければなりません。この場合
は、system-name は先頭が \ ( バックスラッシュ、または、\ マーク ) で、1 ~ 7 文字の英数字
を続けます。このパラメータを省略すると、サーバ・クラスを制御する PATHMON の NonStop シ
ステム名は、TCP を制御する PATHMON のシステム名と同じ名前であると見なされます。
reply-code-value
サーバから返されることが期待される応答コードを指定する整数リテラルまたは整数データ項目で
す。1 つの YIELDS 句に関連付けられる応答コード値の最大数は、255 です。
この章で後述するように、TERMINATION-STATUS を使用して、実際に受け取る応答コードを識
別することができます。
VARYING
6-72
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
可変長の応答が期待される場合に、エラー・ログを制御するために使用します。ON ERROR 句を指
定した場合には、キーワード VARYING があると、応答が YIELDS バッファより短いときにエラー
3115 (TRANSACTION REPLY SIZE INVALID) のログへの記録が抑制されます。ただし、応答の長
さが YIELDS バッファの長さを超えるときは、常にエラー 3115 はログに記録されます。ON ERROR
句が指定されていない場合には、キーワード VARYING は何も効果がありません。
identifier-2
応答メッセージの内容の一部が入れられるデータ項目名です。
CODE OTHER
応答コードが確実に一致するようにするために使用します。これによって、実際の応答コードが期
待される応答コードのリストで見つからなかったときにエラー 3112 (REPLY NUMBER NOT
KNOWN TO PROGRAM) がログに記録されるのを防ぎます。何も明示的な応答コードが期待され
ない場合でも、CODE OTHER 句が単独で現れることがあることに注意して下さい。
CODE OTHER 句は、SEND 動詞の中の最後の CODE 句でなければなりません。CODE OTHER 句
の後に CODE <value> 句があると、SCREEN COBOL はエラー 616 (’CODE OTHER’ MUST BE
LAST STMT IN REPLY CODE LIST OF SEND) を報告します。
応答コード値は、キーワード OTHER と同じ CODE 句に指定することはできません。CODE 1 2
OTHER というシーケンスは、エラー 44 (SYNTAX ERROR DETECTED AT TOKEN) およびエラー
48 (PARSING RESUMED AT TOKEN) を生成します。CODE OTHER 1 2 というシーケンスも、同
じエラーを生成します。
ON ERROR
メッセージの送信中にエラーが発生した場合に制御が移されるポイントを指定します。
この句を省略したときにエラーが発生すると、デフォルトのシステム処置が行われます。エラーの
内容に応じて、リソースが利用できるようになるまで待つ、またはプログラムの実行をサスペンド
するのいずれかの処置が行われます。
SEND ステートメントの実行中に発生したエラーは、特殊レジスタ TERMINATION-STATUS の値
を調べることによって、その意味および対策を判定することができます。いくつかのエラーについ
ては、特殊レジスタ TERMINATION- SUBSTATUS に詳細情報が報告されます。
この章の末尾に、特殊レジスタ TERMINATION-STATUS のエラー番号が一覧されています。
imperative-statement
エラーを検出したときに実行するステートメントです。
426750-001J
6-73
第 6 章 PROCEDURE DIVISION ( 手続き部 )
応答コードおよび終了ステータスの使用法
可変長のデータ項目を含んでいるメッセージは、COBOL で書かれたサーバでは容易に分析することが
できません。唯一の例外は、可変長のデータ項目がそのメッセージの最後の項目である場合です。
サーバが複数のタイプのメッセージを処理するときは、データの内容によって自らトランザクションの
タイプがわかる場合以外は、メッセージのデータ項目にはトランザクションのタイプを識別するフィール
ドが含まれていなければなりません。
キーワード CODE の後に reply-code-value を指定することによって、応答の構成を定義するこ
とができます。SEND 処理がサーバから応答を受け取ると、最初の 2 バイトが 16 ビット整数として解釈さ
れます。このコードは、応答コード値のいずれかに一致する必要があります。このコードが一致すると、
応答全体が
reply-code-value に関連付けられた identifier-2 リストの項目に渡されます。
TCP が SEND ステートメントの実行中にエラーを検出しなかった場合には、特殊レジスタ TERMINATIONSTATUS がこの応答コード値の位置に対応する数字にセットされます。
各 reply-code-value は、例え応答コード値が同一のワーキング・ストレージ・データ項目をも
たらす場合であっても、特殊レジスタ TERMINATION-STATUS にそれぞれ一意の番号がセットされます。
一致する応答コード値がなかったり、応答メッセージのデータが identifier-2 リストのデータ項目
を正確に充填しない場合は、エラーが示されます。
次の例で示すように、SEND ステートメントでは、応答コードの位置が特殊レジスタ TERMINATIONSTATUS にセットされる値に影響します。
SEND HEADER, LASTNAME OF EMP-REC TO "PERS-DEPT"
REPLY CODE 1, 21, 31 YIELDS R-CODE, NEW-SALARY
CODE 2, 42, 62 YIELDS NEW-RATE, STOCK-OPTION, BENEFIT
CODE 0, 200
YIELDS TERMINATION-NOTICE
ON ERROR PERFORM SERVER-LIST.
この例では、応答コードの位置は特殊レジスタTERMINATION-STATUSの値に、次のように対応します。
応答コード
1
21
31
2
42
62
0
200
6-74
TERMINATION-STATUS
1
2
3
4
5
6
7
8
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
さらに、次の SEND ステートメントの例を考えてみましょう。
77
YEARLY-REVIEW PIC 999 VALUE 3.
:
MOVE YEARLY-REVIEW TO TRANSCODE OF HEADER.
SEND HEADER, LASTNAME OF PERSONAL-REC TO "SALARY-UPDATE"
REPLY CODE 1 YIELDS R-CODE, NEW-SALARY-CODE
CODE 2 YIELDS R-CODE, NEW-SALARY, STOCK-OPTION
CODE 0 YIELDS R-CODE, TERMINATION-NOTICE
ON ERROR PERFORM SERVER-DUMB.
この例は、次のように実行されます。
1. SCREEN COBOL プログラムのデータ領域から HEADER と LASTNAME の値を使用して、トランザク
ション・メッセージが組み立てられます。このメッセージは、サーバ・クラス SALARY-UPDATE の
サーバ・プロセスに送られ、リクエスタが応答を待ちます。
2. 応答を受け取ると、応答コードに応じて、応答が識別され NEW-SALARY-CODE、NEW-SALARY お
よ び S T O C K - O P T I O N 、または T E R M I N A T I O N - N O T I C E に転記されます。特殊レジスタ
TERMINATION-STATUS には、サーバから受け取った応答コードに応じて、1、2、または 3 が入れら
れます。
3. メッセージの送信中にエラーが発生すると、ON ERROR 句は特別な処置を行います。起こりうるエラー
としては、当該のサーバ・クラスがフリーズされている、適正なサーバが利用できない、サーバから認
識 不 能 な 応 答 を 受 け 取 っ た、な ど が あ り ま す。こ の よ う な 状 態 が 発 生 す る と、特 殊 レ ジ ス タ
TERMINATION-STATUS に はエラーのタイプを示す値がセットされ、無条件ステートメント
PERFORM SERVER-DUMB が実行されます。
4. ON ERROR 句が指定されていないときにエラーが発生した場合は、デフォルトのシステム処置が実行
されます (SEND ERROR 番号の一覧については、6-79 ページの「外部 PATHMON プロセスへの送信」
を参照して下さい )。
応答の長さ
応答の長さが YIELDS バッファの長さと一致しない場合には、ON ERROR 句が実行されて、リクエス
タがサスペンドされるのを防ぎます。この場合には、TCP が ON ERROR 句を実行するときに、SCREEN
COBOL の特殊レジスタ TERMINATION-STATUS および TERMINATION-SUBSTATUS が次のようにセッ
トされます。
TERMINATION-STATUS
=
TERMINATION-SUBSTATUS =
11
min (<rcvlen>,
1 + max(<sndlen>,<maxyldlen>) )
ここで、<rcvlen> = サーバからのメッセージの実際の長さ、<sndlen> = サーバに送信されたメッセージ
の長さ、<maxyldlen> = この SEND 動詞の任意の YIELDS 句の最長の合計応答領域です。
426750-001J
6-75
第 6 章 PROCEDURE DIVISION ( 手続き部 )
SEND に対して、TCP は、長さが 1 + max(<sndlen>,<maxyldlen>) の WRITEREAD バッファを割り当て
ます。特殊レジスタ TERMINATION-SUBSTATUS の値は、実際の応答、YIELDS バッファの長さ、およ
び WRITEREAD バッファの長さに応じて、次のようになります。
□ ケース 1:サーバの応答の長さが YIELDS バッファより短い。このケースでは、TERMINATION-
SUBSTATUS = サーバの応答の長さ。
□ ケース 2:サーバの応答の長さ = YIELDS バッファの長さ。このケースでは、TERMINATION-
SUBSTATUS は無効となります。この場合には、TCP は ON ERROR 句を起動しません。
□ ケース 3:サーバの応答の長さは YIELDS バッファより長いが、WRITEREAD バッファより短い。こ
のケースでは、TERMINATION-SUBSTATUS = サーバの応答の長さ。
□ ケース 4:サーバの応答の長さは YIELDS バッファより長いが、WRITEREAD バッファの長さに等し
い。このケースでは、TERMINATION-SUBSTATUS = サーバの応答の長さ。
□ ケース 5: サーバの応答の長さは YIELDS バッファより長く、WRITEREAD バッファより長い。この
ケースでは、TERMINATION-SUBSTATUS = WRITEREAD バッファの長さ。
明記されていない応答コード
次の例では、1 または 2 以外の応答コード ( 応答の最初の 2 バイト ) は、エラー 3112 (REPLY NUMBER
NOT KNOWN TO PROGRAM) のログへの記録を引き起こし、端末がサスペンドされます。1 または 2 の
応答コードを受け取ったけれども、その応答の長さがそれぞれ rply-1 または rply-2 の長さと一致しない場
合は、ON ERROR 句がないので、エラー 3115 (TRANSACTION REPLY SIZE INVALID) がログに記録さ
れ、ON ERROR 句がないので、端末がサスペンドされます。
SAMPLE-PARAGRAPH-1.
SEND msg-a TO srvr-x
REPLY CODE 1 YIELDS rply-1
CODE 2 YIELDS rply-2.
ケースによっては、アプリケーションで個別の応答コードを指定しなくても構いません。次の例では、
リクエスタは応答の最初の 2 バイトにあらゆる値を受け入れて、エラー 3112 をログに記録しません。
PERFORM SAMPLE-PARAGRAPH-2.
:
SAMPLE-PARAGRAPH-2.
SEND msg-a TO srvr-x
REPLY CODE OTHER YIELDS VARYING rply-a
ON ERROR
PERFORM ERR-FILTER.
ERR-FILTER.
IF TERMINATION-STATUS = 11 PERFORM var-len-reply-rcd
ELSE
PERFORM genuine-reply-error.
VAR-LEN-REPLY-RCD.
MOVE TERMINATION-SUBSTATUS TO rply-length.
GENUINE-REPLY-ERROR.
DISPLAY TERMINATION-STATUS.
6-76
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
この例は、次のように実行されます。
1. 実際の応答コードとは関係なく、応答の長さがワーキング・ストレージ項目 rply-a の長さと等しい場合
は、その応答が rply-a にストアされ、プログラムは AMPLE-PARAGRAPH-2 を実行した段落に制御を
移します。
2. 応答が rply-a より短い場合は、その応答が rply-a にストアされ、応答の実際の長さが特殊レジスタ
TERMINATION-SUBSTATUS にストアされて、TERMINATION-STATUS の値が 11 であると、VARLEN-REPLY-RCD 段落に制御が移されます。
3. 応答が rply-a より長い場合は、その応答は rply-a の長さに切り詰められて rply-a にストアされ、
TERMINATION-STATUS が 11 にセットされて、TERMINATION-SUBSTATUS は実際の応答の長さ
にセットされます。実際の応答の長さの最大値は 1 + max(len(msg-a),len(rply-a)) で、エラー 3115 がロ
グに記録され、プログラムは VAR-LEN-REPLY-RCD 段落に制御を移します。
応答の長さについての詳細説明
次の例では、受け取った応答は 2 つのワーキング・ストレージ項目にストアされます。最初の 2 バイト
は共通応答コードにストアされ、残りの部分は応答固有のバッファにストアされます。共通応答コードは、
長さの不一致があって特殊レジスタ TERMINATION-STATUS が 11 にセットされたときに、どのバッファ
に応答が入れられるかを示します。
次の例では、リクエスタは 15 または 37 の応答コードだけを受け取り、その他の応答コードのときはエ
ラー 3112 がログに記録されます。
PERFORM SAMPLE-PARAGRAPH-3.
:
SAMPLE-PARAGRAPH-3.
MOVE no-err TO err-flag.
MOVE 0 TO rp-len.
PERFORM send-paragraph.
IF err-flag = no-err
PERFORM ONE OF
set-rp-1-len
set-rp-2-len
DEPENDING ON termination-status
PERFORM good-reply-paragraph
ELSE IF err-flag = length-mismatch
MOVE termination-substatus TO rp-len
* if excess length, truncate to buffer length
PERFORM adjust-rp-len
* subtract 2 bytes for reply code
SUBTRACT 2 FROM rp-len
ELSE IF err-flag = genuine-err
PERFORM genuine-reply-err-paragraph.
SEND-PARAGRAPH.
SEND msg-a TO srvr-x
REPLY CODE 15
YIELDS VARYING rp-cd rp-buf-1
CODE 37
YIELDS VARYING rp-cd rp-buf-2
ON ERROR PERFORM err-paragraph.
426750-001J
6-77
第 6 章 PROCEDURE DIVISION ( 手続き部 )
ERR-PARAGRAPH.
IF TERMINATION-STATUS = 11
MOVE length-mismatch TO err-flag
ELSE
MOVE genuine-err TO err-flag.
ADJUST-RP-LEN.
IF
rp-cd = 15 PERFORM set-rp-1-len
ELSE IF rp-cd = 37 PERFORM set-rp-2-len.
SET-RP-1-LEN.
IF rp-len > max-rp-1-len
MOVE max-rp-1-len TO rp-len.
SET-RP-2-LEN.
IF rp-len > max-rp-2-len
MOVE max-rp-2-len TO rp-len.
GOOD-REPLY-PARAGRAPH.
IF rp-cd = 15
PERFORM rp-1-paragraph
ELSE IF rp-cd = 37
PERFORM rp-2-paragraph
ELSE
PERFORM logic-err-paragraph.
この例は、次のように実行されます。なお、REPLY CODE は 15 または 37 のいずれかであると想定します。
1. 応答の長さが対応する YIELDS 項目の長さと一致する場合は、その応答は対応する項目にストアされ、
ON ERROR 句による分岐は行われません。
2. 応答の長さが対応する YIELDS 項目の長さより短い場合は、その応答は対応する項目にストアされ、応
答の長さが特殊レジスタ TERMINATION-SUBSTATUS にストアされて、プログラムは
TERMINATION-STATUS = 11 で ERR-PARAGRAPH を実行します。VARYING が指定されているの
で、エラー 3115 はログに記録されません。
3. 応答の長さが対応する YIELDS 項目の長さより長い場合は、その応答は切り詰められて対応する項目
にストアされます。TERMINATION-STATUS は 11 にセットされ、TERMINATION-SUBSTATUS に
は実際の応答の長さがセットされます。実際の応答の長さの最大値は 1 + max(len(msg-a),len(rpcd)+len(rp-buf-1),len(rp-cd)+len(rp-buf-2)) で、プログラムは ERR-PARAGRAPH を実行します。この
ケースでは、エラー 3115 がログに記録されます。
6-78
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
外部 PATHMON プロセスへの送信
次のプログラムの例は、外部 PATHMON プロセス ( リクエストしている TCP とは異なる PATHMON 環
境にある PATHMON プロセス ) によって制御されるサーバ・クラスにアクセスするのに SEND ステート
メントを使用する 2 つの方法を示しています。
DATA DIVISION.
WORKING-STORAGE SECTION.
:
01 WS-DEFAULT-NAMES.
05 WS-DEFAULT-SERVER
05 WS-DEFAULT-PATHMON
05 WS-DEFAULT-SYSTEM
:
01 WS-SCRN1-FIELDS.
05 WS-SERV-NAME
05 WS-SCRN-PATHMON
05 WS-SCRN-SYSTEM
:
PIC X(15) VALUE "SERV-1".
PIC X(5) VALUE "$PWT".
PIC X(8) VALUE "\TS".
PIC X(15) VALUE " ".
PIC X(5) VALUE " ".
PIC X(8) VALUE " ".
PROCEDURE DIVISION.
:
:
SEND MSGID, EMPLOYEE-REC TO "SERV-1"
UNDER PATHWAY "$PWT"
AT SYSTEM "\TS"
REPLY CODE 1 YIELDS R-CODE, EMPLOYEE-REC
CODE 2 YIELDS R-CODE, HIRE-DATE
ON ERROR PERFORM 899-SEND-ERROR.
:
:
MOVE WS-DEFAULT-SERVER TO WS-SERV-NAME.
MOVE WS-DEFAULT-PATHMON TO WS-SCRN-PATHMON.
MOVE WS-DEFAULT-SYSTEM TO WS-SCRN-SYSTEM.
:
:
SEND MSGID, EMP-TRANSFER TO WS-SERV-NAME
UNDER PATHWAY WS-SCRN-PATHMON
AT SYSTEM WS-SCRN-SYSTEM
REPLY CODE 1 YIELDS R-CODE, EMPLOYEE-LOC
CODE 2 YIELDS R-CODE,
CODE 3 YIELDS R-CODE
ON ERROR PERFORM 899-SEND-ERROR.
:
426750-001J
6-79
第 6 章 PROCEDURE DIVISION ( 手続き部 )
次に、特殊レジスタ TERMINATION-STATUS のエラー番号を説明するメッセージを示します。
TERMINATION-STATUS 1
SERVER CLASS FROZEN
意 味:メッセージが送られたサーバ・クラスがフリーズされている。
ON ERROR 句がない場合の処置:
PATHCOM の THAW SERVER コマンドを実行してサーバ・クラスがフリーズ解除されるまで
システムは待って、SEND ステートメントの処理を継続する。
TERMINATION-STATUS 2
RESOURCE UNAVAILABLE
意 味:空いているサーバ・クラス制御ブロックが見つからない。TCP コンフィギュレーション・パラ
メータ MAXSERVERCLASSES の値を増やす必要がある。
ON ERROR 句がない場合の処置:
システムはリソースが利用できるようになるまで待って、SEND ステートメントの処理を継続
する。
TERMINATION-STATUS 3
RESOURCE UNAVAILABLE
意 味:空いているサーバ・クラス制御ブロックが見つからない。TCP コンフィギュレーション・パラ
メータ MAXSERVERPROCESSES の値を増やす必要がある。
ON ERROR 句がない場合の処置:
システムはリソースが利用できるようになるまで待って、SEND ステートメントの処理を継続
する。
TERMINATION-STATUS 4
LINK DENIED
意 味: PATHMON へのサーバ・クラスのリンク・リクエストが不確定な要因によって拒否された。TCP
は、このクラスへのリンクを持っていない。
ON ERROR 句がない場合の処置:
システムは、定期的にリンク・リクエストを出す。リンクが確立されると、SEND ステートメ
ントの処理が継続される。
TERMINATION-STATUS 5
SERVER CLASS UNDEFINED
6-80
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
意 味:指定された名前のサーバ・クラスが定義されていないため、PATHMON へのサーバ・クラスの
リンク・リクエストが拒否された。
ON ERROR 句がない場合の処置:
システムは、定期的にリンク・リクエストを出す。コンフィギュレーションにサーバ・クラス
が追加されると、SEND ステートメントの処理が継続される。
TERMINATION-STATUS 6
ILLEGAL SERVER CLASS NAME
意 味:指定されたサーバ・クラスの名前が有効なサーバ・クラス名のフォーマットではない。
ON ERROR 句がない場合の処置:
致命的なエラーとして、システムは端末をサスペンドする。
TERMINATION-STATUS 7
MESSAGE TOO LARGE
意 味:サーバへのメッセージが、TCP コンフィギュレーションによって認められた長さより長い。
TERMINATION-STATUS 8
MAXIMUM REPLY TOO LARGE
意 味: SEND ステートメントで指定された 1 つ以上の応答の長さが、TCP コンフィギュレーションに
よって認められた長さより長い。SEND メッセージによって端末からサーバに送られるメッ
セ ー ジ ま た は サ ー バ か ら 端 末 に 送 ら れ る 応 答 メ ッ セ ー ジ に 許 さ れ る 最 大 バ イ ト 数 は、
PATHCOM の SET TCP コマンドの MAXREPLY パラメータで、次のいずれか大きい方を指定
する必要がある。
□ TCP の制御下の端末からサーバに SEND ステートメントで送られる最も長いリクエスト・
メッセージのバイト数
□ SEND ステートメントで送られたリクエスト・メッセージに対して、サーバから TCP の制
御下の端末へ返される最も長い応答メッセージのバイト数
TERMINATION-STATUS 10
UNDEFINED REPLY
意 味:サーバからの応答コードが SEND ステートメントで指定したいずれのコードとも一致しない。
426750-001J
6-81
第 6 章 PROCEDURE DIVISION ( 手続き部 )
ON ERROR 句がない場合の処置:
システムは端末をサスペンドする。オペレータが PATHCOM の RESUME コマンドを発行して
端末の実行が再開されると、SEND ステートメントが再実行される。端末がトランザクション・
モードの場合は、トランザクションはバックアウトされ、端末はサスペンドされる。端末の実
行が再開されると、トランザクションはリスタートされる。
TERMINATION-STATUS 11
REPLY LENGTH INVALID
意 味:サーバから受け取った応答の長さが、選択した YIELDS リストで指定された長さと等しくない。
備考:特殊レジスタ TERMINATION-SUBSTATUS には、次の追加情報が含まれます : 受け取った応答の長さ ( バ
イト単位 )
TERMINATION-STATUS 12
I/O ERROR
意 味:サーバへの WRITEREAD の際にファイル・システム・エラーが発生したか、またはサーバでタ
イムアウトが発生した。
備考:特殊レジスタ TERMINATION-SUBSTATUS には、次の追加情報が含まれます : ファイル・システム・エ
ラー番号
TERMINATION-STATUS 13
TRANSACTION MODE VIOLATION
意 味:端末がトランザクション・モードのときに、TMF を使用しないサーバへの SEND が試行された。
ON ERROR 句がない場合の処置:
システムは端末を異常終了処理のためにサスペンドする。
TERMINATION-STATUS 14
NO PMCB AVAILABLE
意 味:リクエストが TCP に外部 PATHMON プロセスとの通信を要求したが、TCP が通信することが
できる PATHMON プロセスの最大数に既に達している。SET TCP MAXPATHWAYS コマンド
で指定した値によって、この最大数がセットされる。
ON ERROR 句がない場合の処置:
システムは端末をサスペンドして、エラー・メッセージを PATHMON ログ・ファイルに送る。
6-82
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
TERMINATION-STATUS 15
UNDEFINED SYSTEM
意 味:指定されたシステム名は、ネットワークで定義されていない。
TERMINATION-STATUS 16
ILLEGAL SYSTEM NAME
意 味:指定されたシステム名は、正しいフォーマットではない。例えば、最初の文字がバック・スラッ
シュ (\) ではない。
TERMINATION-STATUS 17
ILLEGAL PATHMON NAME
意 味:指定された PATHMON プロセスの名前は、正しいフォーマットではない。例えば、最初の文字
がドル記号 ($) ではない。
TERMINATION-STATUS 18
PATHMON I/O ERROR
意 味:外部 PATHMON への OPEN または WRITEREAD メッセージの際に、I/O エラーが発生した。
TERMINATION-STATUS 19
PATHMON I/O ERROR DUE TO LICENCING PROBLEMS
意 味:ライセンスの問題のために、外部 PATHMON プロセスが OPEN メッセージを拒否した。
備考:特殊レジスタ TERMINATION-SUBSTATUS には、次の追加情報が含まれます: ファイル・システム・エ
ラー番号
426750-001J
6-83
第 6 章 PROCEDURE DIVISION ( 手続き部 )
6.2.35 SEND MESSAGE ステートメント
SEND MESSAGE ステートメントは、インテリジェント・デバイスにメッセージを送信し、インテリ
ジェント・デバイスから応答を受信し、あるいはメッセージの送信と応答の受信の両方を行います。メッ
セージ・データの構造は、MESSAGE SECTION のメッセージ・テンプレートまたは WORKING-STORAGE
SECTION 内のレベル 01 データ項目のいずれかによって示されます。
SEND MESSAGE
{ send-message
}
{ [ send-message ] reply-spec }
[ ESCAPE ON UNSOLICITED [ MESSAGE ] ]
[ USER [ CONVERSION ] numeric-literal ]
[ TIMEOUT timeout-value ]
[ ON ERROR imperative-statement ]
reply-spec syntax:
REPLY [ CODE FIELD [ IS ] code-field ]
{YIELDS reply-message
}
{{CODE reply-code [,reply-code]... YIELDS reply-message}...}
send-message
MESSAGE SECTION のメッセージ・テンプレートまたは WORKING-STORAGE SECTION 内のレ
ベル 01 データ項目を指定します。どちらを使用する場合も、インテリジェント・デバイスへ送信さ
れるデータを示します。
send-message を省略すると、データは送信されませんが、応答メッセージは返されます。
CODE FIELD [ IS ] code-field
reply-message 内の reply-code フィールドの位置、長さ、およびデータ・タイプを定義
します。
CODE FIELD 句を省略すると、デフォルトとして次の値が使用されます。
□ オフセット―レコードの先頭から 0 バイト目
□ 長さ―2 バイト
□ データ・タイプ―COMPUTATIONAL 数字データ項目
reply-code フィールドの位置、長さ、およびデータ・タイプをデフォルト以外の値にしたいと
きは、この句を指定する必要があります。
CODE FIELD 句の code-field パラメータには、WORKING-STOREGE SECTION 内のフィー
ルド名を指定します。
6-84
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
指 定 さ れ た フ ィ ー ル ド の レ コード先頭からのオフセットは、reply-code フィールドの
reply-message の先頭からのオフセットを示します。
指定されたフィールドの長さは、reply-code フィールドの長さを示します。
指定されたフィールドのデータ・タイプは、reply-code フィールドのデータ・タイプを示します。
すべての reply-messages 内の reply-code は、長さおよびオフセットが同じでなければ
なりません。ただし、名前が同じである必要はありません。
YIELDS reply-message
MESSAGE SECTION のメッセージ・テンプレートまたは WORKING-STORAGE SECTION 内のレ
ベル 01 データ項目を指定します。これは、SEND MESSAGE ステートメントに対するインテリジェ
ント・デバイスからの応答として期待されるデータを記述します。1 つの reply-message は、
1 つまたは複数の reply-code 値に関連付けることができます。
reply-message お よ び reply-code を両方とも省略すると、応答は返されません。
reply-message を 1 つだけ指定して、code-field を省略した場合は、どのような応答で
も指定された reply-message のフォーマットになります。
CODE reply-code
どの reply-message を受け取りたいかを示すリテラルまたはデータ項目を指定します。
reply-message を 1 つだけ指定した場合は、reply-code の指定は不要です。
CODE reply-code 句での reply-code の位置は、TERMINATION-STATUS の値と対応し
ます。各 reply-message に対して、1 つまたは複数の reply-code 値を関連付けることが
できます。
非数字リテラルは、引用符で囲まなければなりません。
ESCAPE ON UNSOLICITED [ MESSAGE ]
非請求メッセージが到着したら、直ちに SEND MESSAGE ステートメントを中断することを指定し
ます。SEND MESSAGE ステートメントの実行直後に特殊レジスタ TERMINATION-STATUS の適
切な条件コードの値をチェックすることで、非請求メッセージを受け取ったかどうかがわかります。
これは、SEND MESSAGE 処理の終了方法として認められていて、
ON ERROR 句では扱われません。
特殊レジスタ TERMINATION-SUBSTATUS には、SEND MESSAGE ステートメントが非請求メッ
セージに対する処理を終了した直後の値が入れられます。この値は、非請求メッセージを受け取っ
た時点でのフロント・エンド・プロセスの状態を示します。
TIMEOUT timeout-value
インテリジェント・デバイスへの出力の制限時間を秒単位で指定します。timeout-value に
は、数字リテラルまたは数字データ項目を指定することができます。有効な値は、0 ~ 32,767 秒です。
426750-001J
6-85
第 6 章 PROCEDURE DIVISION ( 手続き部 )
タイムアウト・エラーが発生すると、Pathway ログに記録されます。TCP 属性 SENDMSGTIMEOUT
が OFF にセットされている場合は、最初の SENDMSGTIMEOUT タイムアウト・エラーだけが TCP
に記録されます。SEND MESSAGE ステートメントで ON ERROR 句が指定されている場合は、
PATHMON プロセスの下でコンフィギュレーションされた各 TCP ごとに検出された最初の 3161 タ
イムアウトだけがログに記録されます。プライマリ TCP が障害を起こしてバックアップ TCP がテ
イクオーバーした場合は、バックアップ TCP にて最初に検出された 3161 タイムアウトがログに記
録されます。TCP はこれ以外の 3161 タイムアウト・エラーは、ログに記録しません。ON ERROR
句が指定されていないときに 3161 タイムアウトが発生した場合は、タイムアウトがログに記録さ
れた後で、対応する端末はサスペンドされます。
指定された秒数以内に出力が完了しない場合は、TERMINATION- STATUS は 1 にセットされ、ま
た TERMINATION-SUBSTATUS は 40 にセットされ、処理はキャンセルされて、ON ERROR 句が
実行されます。
SEND MESSAGE ステートメントを含んでいる SCREEN COBOL プログラムが待機式 (CONTROL
26) プロトコルを使用するデバイスと通信する場合は、特殊レジスタ TERMINATION-SUBSTATUS
には TIMEOUT のために SEND MESSAGE ステートメントが終了した直後の値が設定されます。
TIMEOUT 句を省略すると、制限時間はありません。
USER [ CONVERSION ] numeric-literal
send-message または reply-message のいずれかに関連付けられたユーザ変換プロシー
ジャを指定します。ユーザ変換プロシージャの詳細については、
『Compaq NonStop Pathway/iTS TCP
and Terminal Programming Guide』を参照して下さい。
ON ERROR imperative-statement
メ ッセ ー ジの 送信 中に エ ラー が発生した場合の処置を指定します。エラーが検出される と、
imperative-statement が実行されます。
ON ERROR 句を省略したときにエラーが発生すると、デフォルトのシステム処置が行われます。エ
ラーの内容に応じて、リソースが利用できるようになるまで待つ、またはプログラムの実行をサス
ペンドするのいずれかの処置が行われます。
SEND MESSAGE ステートメントで ON ERROR 句が指定されている場合は、TERMINATIONSTATUS には指定された値がセットされます。
エラーがないときは、TERMINATION-STATUS には一致した応答の相対的な位置がセットされま
す。ですから、ユーザはエラーが発生したときにだけに実行するエラー処理ルーチンを作成する必
要があります。
「付録 D MESSAGE SECTION ステートメントのエラー」に、SEND MESSAGE ステートメントの
実行の際に発生するエラーを一覧しています。
備考: SEND MESSAGE ステートメントで ON ERROR 句が指定されている場合であっても、PATHMON プロセ
スによってログにエラー・メッセージを記録することができます。
次の規則が適用されます。
6-86
□
send-message および reply-message は、32,000 バイトを超えることができません。
□
send-message に関する留意事項
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
●
send-message に MESSAGE SECTION 内のメッセージ・テンプレートを指定した場合は、メッ
セージ内の FROM 句または USING 句で指定されたデータ項目からデータが取得されます。この
データは、メッセージ定義に基づいて変換、編集された後にインテリジェント・デバイスに送られ
ます。
●
send-message に WORKING-STORAGE SECTION 内のレベル 01 データ項目を指定した場合
は、データは検証も変換も行われないで、そのままインテリジェント・デバイスに送られます。た
だし、USER CONVERSION 句が指定されていれば、この限りではありません。
●
send-message に可変長データ項目 (OCCURS DEPENDING ON 句を使って記述 ) を指定した場
合は、現在のオカレンス数までの文字数だけを送ります。
□
reply-message に関する留意事項
●
reply-message にメッセージ・テンプレートの名前を指定した場合は、メッセージの値はメッ
セージ・フィールドの定義に基づいて検証され、TO または USING 句で指定された WORKING-
STORAGE SECTION 内のデータ項目のフォーマットに変換されてから、そのデータ項目に転記さ
れます。
●
reply-message に WORKING-STORAGE SECTION 内のレベル 01 データ項目を指定した場合
は、インテリジェント・デバイスから受け取ったデータは検証も変換も行われないで、そのままデー
タ項目に転記されます。ただし、USER CONVERSION 句が指定されていれば、この限りではあり
ません。
●
1 つの SEND MESSAGE ステートメント内のすべての reply-messages は、フォーマットが
同じでなければなりません。指定可能なフォーマットは、次のとおり:FIXED、VARYING1、
VARYING2、DELIMITED、または FIXED-DELIMITED。
●
reply-message を 1 つだけ指定した場合は、reply-code の指定は不要です。
●
インテリジェント・デバイスからの応答を受け取ると、TCP はメッセージまたはデータ項目内の
reply-code をチェックします。reply-code の値は、どの reply-message が返され
たかを示します。
●
code-field が指定されていれば、reply-code は code-field が示す位置に置かれま
す。code-field が省略されたときは、reply-code はメッセージまたはデータ項目の最初
の 2 バイトに置かれます。
●
各 reply-code は、特殊レジスタ TERMINATION-STATUS 内の値と関連付けられます。
TERMINATION-STATUS の値は、reply-code 値のリスト内の各 reply-code の位置に関
連付けられた (1 から始まる ) 番号にセットされます。
●
1 つの reply-message を 1 つまたは複数の reply-code に関連付けることができます。
reply-code によって同じ reply-message が生じるかどうかに関わらず、各 replycode は TERMINATION-STATUS の値と一意に対応します。
●
code-field が指定された場合は、SCREEN COBOL の算術演算の一般規則 「
( SCREEN COBOL
ソース・プログラム」を参照 ) に基づいて各 reply-code と code-field を比較すること
によって、reply-message が選択されます。比較テストは、次のように記述されているのと
まったく同じように行われます。
IF code-field EQUALS reply-code
426750-001J
6-87
第 6 章 PROCEDURE DIVISION ( 手続き部 )
□ 実行に関する留意事項
●
Pathway/iTS は、複数のメッセージをバッファに入れません。SEND MESSAGE が実行されるとき
に、各メッセージはインテリジェント・デバイスに送られます。
●
プログラムとインテリジェント・デバイスとの間のメッセージの同期は、SCREEN COBOL プログ
ラムが行います。つまり、インテリジェント・デバイスからメッセージが重複してきた場合に、プ
ログラム側で検出できるようにしておかなければなりません。
●
Pathway/iTS は、SEND MESSAGE ステートメントが実行されるときにはチェックポイント処理を
行いません。
複数の応答メッセージ・タイプを処理する SCREEN COBOL プログラムの例を考えてみましょう。
DATA DIVISION.
WORKING-STORAGE SECTION.
77 INQUIRY PIC X(12).
01 MESSAGE-REPLY-OK.
03 REPLY-CODE-FIELD
03 REPLY-OK
01 MESSAGE-REPLY-NOGOOD.
03 REPLY-CODE-FIELD
03 REPLY-NG
PIC X(2).
PIC X(130).
PIC X(2).
PIC X(14).
MESSAGE SECTION.
01 INTELLIGENT-MESSAGE-INQ
PIC X(12) FROM INQUIRY.
PROCEDURE DIVISION.
SEND MESSAGE INTELLIGENT-MESSAGE-INQ
REPLY CODE FIELD IS REPLY-CODE-FIELD OF MESSAGE-REPLY-OK
CODE "A1", "B1", "C1" YIELDS MESSAGE-REPLY-OK
CODE "A2", "B2", "C2" YIELDS MESSAGE-REPLY-NOGOOD
ON-ERROR PERFORM DEVICE-DUMB.
この SEND MESSAGE ステートメントは、次のように実行されます。
1. ワーキング・ストレージ・データ項目 INQUIRY から NTELLIGENT-MESSAGE-INQ というメッ
セージ・テンプレートを使用してメッセージを組み立てます。そのメッセージをインテリジェント・
デバイスまたはプロセスに送って、応答を待ちます。
2. 応答が到着すると、応答コードの値に応じて、MESSAGE-REPLY-OK または MESSAGE-REPLYNOGOOD のいずれかにその応答を転記します。SEND MESSAGE ステートメントでの応答コード
の位置に基づいて、特殊レジスタ TERMINATION-STATUS に 1 ~ 6 の値を転記します。この例で
は、特殊レジスタ TERMINATION-STATUS は次のようにセットされます。
応答コード
A1
B1
C1
A2
B2
C2
6-88
TERMINATION-STATUS
1
2
3
4
5
6
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
3. SEND MESSAGE ステートメントがエラーを検出した場合は、特殊レジスタ TERMINATIONSTATUS にそのエラーのタイプを示す値をセットして、DEVICE-DUMB プロシージャを実行しま
す。
応答コードの値は、数字でも構いません。次の例を考えてみましょう。
SEND MESSAGE INQUIRY
REPLY CODE FIELD IS REPLY-CODE-FIELD OF MESSAGE-REPLY-OK
CODE 1, 21, 31 YIELDS MESSAGE-REPLY-OK
CODE 2, 42, 62 YIELDS MESSAGE-REPLY-NOGOOD
ON ERROR PERFORM DEVICE-DUMB.
この例では、特殊レジスタ TERMINATION-STATUS は次のようにセットされます。
応答コード
1
21
31
2
42
62
TERMINATION-STATUS
1
2
3
4
5
6
次の SCREEN COBOL プログラムの例を考えて見ましょう。このプログラムには、ESCAPE ON
UNSOLICITED MESSAGE 句の処理が含まれています。
CONTINUE-ACTION.
SEND MESSAGE REQUEST-MESSAGE
REPLY CODE "AA" YIELDS reply-aa
CODE "XX" YIELDS reply-xx
ESCAPE ON UNSOLICITED MESSAGE
TIMEOUT FIVE-MINUTES
ON ERROR
PERFORM ERROR-ANALYSIS.
* Normal reply processing:
PERFORM ONE OF AA-RPLY-ACTION
XX-RPLY-ACTION
UNSOL-MSG-ARRIVED
DEPENDING ON TERMINATION-STATUS.
UNSOL-MSG-ARRIVED.
PERFORM SAVE-OUTCOME.
RECEIVE UNSOLICITED
YIELDS UNSOL-STATS-REQST.
.
.
.
REPLY TO UNSOLICITED latest-stats
* Save the outcome of the SEND MESSAGE I/O.
SAVE-OUTCOME.
IF TERMINATION-SUBSTATUS = 187
MOVE OP-QUIESCENT TO OP-OUTCOME
ELSE
IF TERMINATION-SUBSTATUS = 188
MOVE OP-BAD-SESSION TO OP-OUTCOME
ELSE
IF TERMINATION-SUBSTATUS = 189
MOVE OP-WONT-QUIESCENT TO OP-OUTCOME.
426750-001J
6-89
第 6 章 PROCEDURE DIVISION ( 手続き部 )
非請求メッセージを受け取ったかどうかを検出するには、特殊レジスタ TERMINATION-
STATUS の条件コード値をプログラムで処理する必要があります。この例では、特殊レジスタ
TERMINATION-STATUS は次のようにセットされます。
処置
TERMINATION-STATUS
応答コードが AA のメッセージを受信した
1
応答コードが XX のメッセージを受信した
2
非請求メッセージを受信した
3
特殊レジスタ TERMINATION-SUBSTATUS の値は、非請求メッセージを受け取った時点でのフロ
ント・エンド・プロセスの状態を示します。
CONTROL 26 プロセス・インタフェースに対する TERMINATION-SUBSTATUS の値は、
UNSOLICITED MESSAGE と TIMEOUT という 2 つのタイプのエスケープ条件に共通に適用されま
す。SEND MESSAGE ステートメントは、キュード・プロトコル (CONTROL 26) を使用するイン
テリジェント・デバイスとの通信でも使用することができます。例えば、SNAX/HLS フロント・エ
ンド・プロセス・インタフェースを介して接続されるインテリジェント・デバイスなどがあります。
CONTROL 26 端末上で SCREEN COBOL プログラムに対して割り込みがあると、TCP は表 6-6 に
示 し た 値 の い ず れ か を T E R M I N A T I O N - S U B S T A T U S に セ ッ ト し ま す 。特 殊 レ ジ ス タ
TERMINATION-SUBSTATUS にセットされる値は、割込みの原因によって異なります。
6-90
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
表 6-6 SEND MESSAGE ステートメントのための TERMINATION-SUBSTATUS の値
TERMINATION
-SUBSTATUS
187
188
189
意味
UNSOLICITED MESSAGE 句
あり
TIMEOUT 句あり
データが
ない
フロント・エンド・プロセスは
停止状態。
フロント・エンド・プロセスは
停止状態。
SCREEN COBOL プログラムは
メッセージを処理する。メッ
セージに応じて、セッションを
再開するか、他の処置を行う。
SCREEN COBOL プログラムは
TIMEOUT 処理を行い、セッ
ションを再開する。
データまたはコンテキストの消
失。
データまたはコンテキストの消
失。
非請求メッセージを処理した後
で、SCREEN COBOL プログラ
ムはフロント・エンド・プロセ
スに関してセッションを終了し
て、新しいセッションを開始し
ようとする。
SCREEN COBOL プログラムは
フロント・エンド・プロセスに
関してセッションを終了して、
新しいセッションを開始しよう
とする。
データを
消失した
データを
待機中
処理進行中。
フロント・エンド・プロセスを
停止状態にすることはできない。
フロント・エンド・プロセスを
停止状態にすることはできない。
備考: ESCAPE ON UNSOLICITED MESSAGE または TIMEOUT によって SEND MESSAGE ステートメントが
終了すると、特殊レジスタ TERMINATION-SUBSTATUS には、187、188、または 189 の値が入れられま
す。ただし、TIMEOUT の場合には、適合性を保つために、特殊レジスタ TERMINATION-SUBSTATUS に
は「データなし」を意味する値 40 がセットされます。
6.2.36 SET ステートメント
SET ステートメントは、指定されたスクリーン・フィールドの位置を特殊レジスタ NEW-CURSOR にス
トアします。この値は、スクリーン上のカーソル位置を決めるために、次の ACCEPT ステートメントの初
めに使用されます。なお、この値はプログラムによって変更することができます。また、この値は、ある
特定の目的のためにプログラムによって検査することもできます。
SET ステートメントは、インテリジェント・デバイスと通信するプログラムでは使用することができま
せん。
SET NEW-CURSOR AT { screen-identifier } ,...
[ DEPENDING [ ON ] identifier ]
[ SHADOWED
]
screen-identifier
位置付けの対象となるスクリーン・フィールドを指定します。1 つの SET ステートメント当たり最
大 127 まで可能です。各 screen-identifier には、スクリーン全体の名前、スクリーン・
グループの名前、現在表示されているベース・スクリーンまたはオーバーレイ・スクリーンの基本
入力項目の名前を指定することができます。screen-identifier がグループの場合は、定義
に TO、FROM、または USING 句がある従属するすべての基本項目が対象になります。screenidentifier は、添字付き項目にすることはできません。
426750-001J
6-91
第 6 章 PROCEDURE DIVISION ( 手続き部 )
デフォルトのカーソル位置は、現在の ACCEPT ステートメントの TO または USING 句で定義した
最初のスクリーン・フィールドです。
DEPENDING ON identifier
スクリーン・フィールドのリストからゼロ ( 選択しない )、または 1 つの screen-identifier
を選択します。screen-identifier リスト内の位置が identifier の値と同じステート
メントが選択されます。identifier の値が 1 より小さいか screen-identifier の数よ
り大きい場合は、screen-identifier は選択されません。
SHADOWED
screen-identifier リストから、SELECT ビットが 1 にセットされている SHADOWED 項
目を持つフィールドだけを選択します。SHADOWED 項目を持たない screen-identifier
リスト内のフィールドは、選択されません。
備考: DEPENDING ON 参照子も SHADOWED 参照子も指定されない場合は、screen-identifier リスト内
のすべてのフィールドが選択されます。
SET ステートメントは、スクリーンにあるフィールドを、上から下、左から右の順に選択します。小さ
な列 ( 行 ) 番号を持つスクリーン・フィールドは、それよりも大きな列 ( 行 ) 番号を持つスクリーン・フィー
ルドより先に選択されます。同一列 ( 行 ) では、小さなカラム番号を持つスクリーン・フィールドが、それ
よりも大きなカラム番号を持つスクリーン・フィールドより先に選択されます。
SET ステートメントは、最初に選択したフィールドの最左端の文字の列およびカラム番号を特殊レジス
タ NEW-CURSOR にストアします。NEW-CURSOR の暗黙の構造は、次のとおりです。
01
NEW-CURSOR.
02 NEW-CURSOR-ROW
02 NEW-CURSOR-COL
PIC 9999 COMP.
PIC 9999 COMP.
ACCEPT 処理が開始されたときに特殊レジスタ NEW-CURSOR の値が有効なスクリーン位置でない場
合は、65xx 端末については ACCEPT ステートメントの最初の非保護フィールドにカーソルが位置付けら
れ、IBM 3270 端末については ACCEPT ステートメントの最初のフィールドにカーソルが位置付けられま
す (IBM 3270 端末は、保護フィールドにカーソルを位置付けることを防止しません )。
ACCEPT ステートメントを実行した後で、特殊レジスタ NEW-CURSOR はゼロにセットされ、これに
よって次の ACCEPT ステートメントのためのカーソル位置が設定されます。65xx 端末については、カー
ソル位置は ACCEPT ステートメントの最初の非保護フィールドです。IBM 3270 端末については、カーソ
ル位置は TO または USING 句で定義された、ACCEPT ステートメントの最初のフィールドです。
IBM3270 端末でカーソルを保護フィールドに位置付けたくないときは、SET ステートメントを使用して
カーソルを非保護フィールドに位置付けることができます。
6-92
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
SET ステートメントの DEPENDING ON 句は、PERFORM ONE ステートメントの DEPENDING ON 句
と類似しています。次の例は、両者の類似性を示しています。
WORKING-STORAGE SECTION.
:
77 ws-screen-status
PIC
01 ws-fld1
PIC
01 ws-fld2
PIC
01 ws-fld3
PIC
9(4)
x(10).
x(10).
x(10).
COMP VALUE 1.
SCREEN SECTION.
:
01 MENU1 SIZE 24, 80.
05 screen-fld1
at 4, 20
PIC X(10)
from fld1.
05 screen-fld2
at 5, 40
PIC X(10)
from fld2.
05 screen-fld3
at 6, 60
PIC X(10)
from fld3.
PROCEDURE DIVISION.
:
BODY-PARAGRAPH.
:
DISPLAY BASE MENU1.
DISPLAY MENU1.
SET NEW-CURSOR AT SCREEN-FLD1,
SCREEN-FLD2,
SCREEN-FLD3,
DEPENDING ON WS-SCREEN-STATUS.
ACCEPT MENU1
:
WS-SCREEN-STATUS が 1 のときは、ACCEPT ステートメントの実行時にカーソルが SCREEN-FLD1
に位置付けられます。WS-SCREEN-STATUS が 2 のときは、ACCEPT ステートメントの実行時にカーソ
ルが SCREEN-FLD2 に位置付けられ、以下同様です。WS-SCREEN-STATUS < 1 または WS-SCREENSTATUS > 3 のときでも、エラーとは見なされません。制御が単に失敗するだけで、カーソルはデフォル
トの位置のままになります ( 処理は継続されて、次のステートメントが実行されます )。
6.2.37 SET MINIMUM-ATTR ステートメント
SET MINIMUM-ATTR ステートメントは、ハイライト表示属性およびアウトライン表示属性のサポート
の最低レベルを設定します。
SET MINIMUM-ATTR USING data-name.
data-name
ハイライト表示属性およびアウトライン表示属性のためのワーキング・ストレージ・グループ項目
のテンプレートを指定します。
426750-001J
6-93
第 6 章 PROCEDURE DIVISION ( 手続き部 )
ハイライト表示属性およびアウトライン表示属性のためのワーキング・ストレージ・グループ項目のテ
ンプレートは、WORKING-STORAGE SECTION で次のように定義されていなければなりません。
01 WS-MINIMUM-ATTRIBUTE.
02 FILLER
02 IBM-BASE-ATTR
02 IBM-FIELD-REVERSE
02 IBM-FIELD-BLINK
02 IBM-FIELD-UNDERLINE
02 IBM-FIELD-OUTLINE
PIC
PIC
PIC
PIC
PIC
PIC
9(04)
9(04)
9(04)
9(04)
9(04)
9(04)
COMP.
COMP.
COMP.
COMP.
COMP.
COMP.
□ IBM-BASE-ATTR は、Pathway の C00 およびそれ以前のリリースが IBM 3270 ファミリの端末に対し
て現在サポートしているフィールド属性セットを指定します。SET MINIMUM-ATTR ステートメント
を指定しない場合は、デフォルトとして IBM-BASE-ATTR が使用されます。
□ IBM-FIELD-REVERSE、IBM-FIELD-BLINK、および IBM-FIELD-UNDERLINE は、IBM 3270 ファミ
リの端末で使用可能なハイライト表示属性セットを指定します。
□ IBM-FIELD-OUTLINE は、IBM 3270 ファミリの端末のためのアウトライン表示属性セットを指定しま
す。指定可能なアウトライン表示属性は、次のとおりです。TOPLINE、LEFTLINE、RIGHTLINE、
BOTTOMLINE、BOXFIELD
ある属性が必要なときは、その属性に対応するワーキング・ストレージの基本項目に値 1 を設定します。
例えば、白黒反転 (reverse video) およびアウトライン (outline) にしたいときは、IBM-FIELD-REVERSE 基
本項目および IBM-FIELD-OUTLINE 基本項目に値 1 を設定し、ワーキング・ストレージの他のすべての基
本項目には 0 をセットします。
ハイライト表示属性およびアウトライン表示属性のサポートの最低レベルは、いったん設定すると、
CALL ステートメントによって他のプログラムを呼び出した場合でも、後続の SET MINIMUM-ATTR ス
テートメントを実行して変更しない限り、元のレベルが維持されます。
6-94
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
6.2.38 SET MINIMUM-COLOR ステートメント
SET MINIMUM-COLOR ステートメントは、カラー表示属性のサポートの最低レベルを設定します。
SET MINIMUM-COLOR USING data-name.
data-name
カラー表示属性のためのワーキング・ストレージ・グループ項目のテンプレートを指定します。こ
れらは、WPRKING-STORAGE SECTION で次のように定義されていなければなりません。
01 WS-MINIMUM-COLOR.
02 FILLER
02 IBM-PARTIAL-COLOR
02 IBM-FULL-COLOR
PIC 9(04) COMP.
PIC 9(04) COMP.
PIC 9(04) COMP.
□ IBM-PARTIAL-COLOR は、IBM 3270 ファミリの端末の内、3 色をサポートすることができる端末を
指定します。
□ IBM-FULL-COLOR は、IBM 3270 ファミリの端末の内、6 色をサポートすることができる端末を指定
します。
ある属性が必要なときは、その属性に対応するワーキング・ストレージの基本項目に値 1 を設定します。
例えば、6 色をサポートする端末だけでプログラムを作動させたいときは、IBM-FULL-COLOR 基本項目
に値 1 を転記し、ワーキング・ストレージの他のすべての基本項目には 0 をセットします。
カラー表示属性のサポートの最低レベルは、いったん設定すると、CALL ステートメントによって他の
プログラムを呼び出した場合でも、後続の SET MINIMUM-COLOR ステートメントを実行して変更しない
限り、元のレベルが維持されます。
SET MINIMUM-COLOR ステートメントを指定しない場合は、カラー表示属性のデフォルトの設定はカ
ラー表示なしです。この場合、ワーキング・ストレージのグループ項目 DEVICE-VIDEO-COLOR に従属
するすべての基本項目は 0 にセットされます。
6.2.39 STOP RUN ステートメント
STOP RUN ステートメントは、このステートメントの実行後、実行中のプログラムを直ちに停止します。
STOP RUN
呼び出されたプログラムの実行中に STOP RUN ステートメントが実行されると、制御は呼び出したプロ
グラムに返されません。
426750-001J
6-95
第 6 章 PROCEDURE DIVISION ( 手続き部 )
6.2.40 SUBTRACT ステートメント
SUBTRACT ステートメントは、基本数字データ項目の減算を行い、結果を指定されたデータ項目にス
トアします。SUBTRACT ステートメントには、次の 3 つの形式があります。
SUBTRACT
SUBTRACT GIVING
SUBTRACT CORRESPONDING
次に、それぞれの形式について説明します。
SUBTRACT ステートメント
SUBTRACT ステートメントは、キーワード FROM の前のすべてのデータ項目を合計して、キーワード
FROM の後の各データ項目の現在の値から合計値を減算します。
SUBTRACT { sub-1 } ,... FROM { sub-2 } ,...
sub-1
数字リテラルまたは基本数字データ項目の一意名のいずれかです。
sub-2
基本数字データ項目の一意名です。
SUBTRACT GIVING ステートメント
SUBTRACT GIVING ステートメントは、結果を他のデータ項目にストアすること以外は、SUBTRACT
ステートメントと同じです。
SUBTRACT { sub-1 } ,... FROM sub-2 GIVING { result } ,...
sub-1
数字リテラルまたは基本数字データ項目の一意名のいずれかです。
sub-2
数字リテラルまたは基本数字データ項目の一意名のいずれかです。
result
基本数字データ項目の一意名です。
6-96
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
SUBTRACT CORRESPONDING ステートメント
SUBTRACT CORRESPONDING ステートメントは、あるグループ内の基本項目を別のグループ内の対
応する項目から減算します。SUBTRACT CORRESPONDING ステートメントで指定された名前および修
飾語 ( グループ名を除く ) が同じであるときに、それぞれの項目は対応します。
SUBTRACT { CORR
} group-1 FROM group-2
{ CORRESPONDING }
group-1 および group-2
一部またはすべての基本項目が数字であるグループ項目の一意名です。差は、group-2 項目に入
れられます。
対 応 す る 項 目 の 例 に つ い て は、
「ADD CORRESPONDING ステートメント」を参照して下 さい。
CORRESPONDING 指定で使用されるデータ項目には、次の規則が適用されます。
□ REDEFINES 句または OCCURS 句は、どのデータ項目のデータ記述項にも指定することができます。
□ データ項目は、REDEFINES 句または OCCURS 句が指定されているデータ記述項に従属することがで
きます。
□ データ項目は、レベル番号 66、77、または 88 で定義することはできません。
2 つの異なるグループ内の従属データ項目は、次の規則にしたがって対応します。
□ 両データ項目は、データ名が同一でなければなりません。
□ 引くデータ項目のすべての修飾子 ( グループ名を除く ) は、引かれるデータ項目のすべての修飾子 ( 受
け取ったグループ名を除く ) と同一でなければなりません。
□ 基本数字データ項目だけが考慮されます。
□ 対応が適正でないデータ項目に従属するデータ項目は、すべて無視されます。
□ FILLER データ項目は、無視されます。
426750-001J
6-97
第 6 章 PROCEDURE DIVISION ( 手続き部 )
6.2.41 TERMINALINFO ステートメント
TERMINALINFO ステートメントは、端末についての情報を返します。端末が必要な拡張フィールド属
性をサポートしていない場合には、この情報に基づいて必要な処置を決めることができます。
TERMINALINFO USING data-name.
data-name
端末でサポートされるカラー表示属性、ハイライト表示属性、およびアウトライン表示属性のため
のワーキング・ストレージ・グループ項目のテンプレートを指定します。
TERMINALINFO ステートメントが返す情報は、WORKING-STORAGE SECTION で定義されている基
本項目にストアされます。カラー表示属性、ハイライト表示属性、およびアウトライン表示属性のための
ワーキング・ストレージ・グループ項目のテンプレートは、WORKING-STORAGE SECTION で次のよう
に定義されていなければなりません。
01 WS-TERMINAL-INFO.
02 DEVICE-VIDEO-STATUS-ATTR
02 DEVICE-VIDEO-STATUS-COLOR
02 DEVICE-VIDEO-COLOR.
03 IBM-PARTIAL-COLOR
03 IBM-FULL-COLOR
03 FILLER
02 DEVICE-VIDEO-ATTRIBUTES.
03 IBM-BASE-ATTR
03 IBM-FIELD-REVERSE
03 IBM-FIELD-BLINK
03 IBM-FIELD-UNDERLINE
03 IBM-FIELD-OUTLINE
PIC S9(04) COMP VALUE 0.
PIC S9(04) COMP VALUE 0.
PIC 9(4) COMP.
PIC 9(4) COMP.
PIC 9(4) COMP.
PIC
PIC
PIC
PIC
PIC
9(4)
9(4)
9(4)
9(4)
9(4)
COMP.
COMP.
COMP.
COMP.
COMP.
□ DEVICE-VIDEO-STATUS-ATTR は、SET MINIMUM-ATTR ステートメントでリクエストされたハイ
ライト表示属性 (REVERSE、BLINK、および UNDERLINE) に対するサポートのレベルを示します。
●
1 は、端末がサポートする属性がリクエストされている属性より多いことを示します。
●
0 は、端末がサポートする属性がリクエストされている属性と同じであることを示します。
●
-1 は、端末がサポートする属性がリクエストされている属性より少ないことを示します。
SET MINIMUM-ATTR ステートメントを省略すると、デフォルトのサポート・レベル ( つまり、端末
はハイライト、カラー、およびアウトライン表示属性をサポートしない ) を示す応答が返されます。
□ DEVICE-VIDEO-STATUS-COLOR は、SET MINIMUM-COLOR ステートメントでリクエストされた
カラー表示属性に対するサポートのレベルを示します。
6-98
●
1 は、端末がサポートする属性がリクエストされている属性より多いことを示します。
●
0 は、端末がサポートする属性がリクエストされている属性と同じであることを示します。
●
-1 は、端末がサポートする属性がリクエストされている属性より少ないことを示します。
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
□ IBM-PARTIAL-COLOR は、端末が 3 色をサポートしているかどうかを示します。
●
1 は、端末が 3 色をサポートすることを示します。
●
0 は、端末が 3 色をサポートしないことを示します。
□ IBM-FULL-COLOR は、端末が 6 色をサポートしているかどうかを示します。
●
1 は、端末が 6 色をサポートすることを示します。
●
0 は、端末が 6 色をサポートしないことを示します。
□ IBM-BASE-ATTR、IBM-FIELD-REVERSE、IBM-FIELD-BLINK、IBM-FIELD-UNDERLINE、および
IBM-FIELD-OUTLINE の基本項目はそれぞれ、対応する属性を端末がサポートしているかどうかを示
します。
●
1 は、端末が対応する属性をサポートすることを示します。
●
0 は、端末が対応する属性をサポートしないことを示します。
IBM-BASE-ATTR は、Pathway の C00 およびそれ以前のリリースが IBM 3270 ファミリの端末に対し
てサポートしている属性を、端末がサポートしているかどうかを示します。
IBM-FIELD-REVERSE は、端末が白黒反転 (reverse video) をサポートしているかどうかを示します。
IBM-FIELD-BLINK は、端末が明滅 (blinking video) をサポートしているかどうかを示します。
IBM-FIELD-UNDERLINE は、端末が下線 (underlinine) をサポートしているかどうかを示します。
IBM-FIELD-OUTLINE は、端末がアウトライン (outlinine) をサポートしているかどうかを示します。
例えば、SET MINIMUM-COLOR ステートメントの実行後に、TERMINALINFO ステートメントによっ
て DEVICE-VIDEO-STATUS-COLOR に値 0 が返されたとすれば、その端末は SET MINIMUM-COLOR ス
テートメントでリクエストされたカラー表示属性をサポートしていることがわかります。同様に、SET
MINIMUM-ATTR ステートメントの実行後に、TERMINALINFO ステートメントによって DEVICEVIDEO-STATUS-ATTR に値 1 が返されたとすれば、その端末は SET MINIMUM-ATTR でリクエストされ
たよりも多くのハイライト表示属性をサポートしていることがわかります。
TERMINALINFO ステートメントが返した情報に基づいて何らかの処置を行う場合には、次の点に注意
して下さい。
□ デフォルトの設定は、カラー表示属性のない IBM-BASE-ATTR です。このデフォルトの設定は、IBM-
BASE-ATTR を 1 にセットし、他のすべてのワーキング・ストレージ・フィールドを 0 にセットして
SET MINIMUM-ATTR ステートメントを実行し、すべてのワーキング・ストレージ・フィールドを 0 に
セットして SET MINIMUM-COLOR ステートメントを実行するのと同等です。
□ SET MINIMUM-ATTR ステートメントまたは SET MINIMUM-COLOR ステートメントを発行した後で
TERMINALINFO ステートメントを発行して、SET MINIMUM-ATTR ステートメントまたは SET
MINIMUM-COLOR ステートメントでリクエストされた拡張フィールド属性を端末がどの程度サポー
トしているかがわかります。
□ ある DISPLAY BASE ステートメントが実行されてから別の DISPLAY BASE ステートメントが実行さ
れるまでの間に、リクエストした属性を変更することができますが、TCP は端末がサポートしない属
性を使用しません。
426750-001J
6-99
第 6 章 PROCEDURE DIVISION ( 手続き部 )
6.2.42 TRANSFORM ステートメント
TRANSFORM ステートメントは、ワーキング・ストレージ・データ項目のセットをワーキング・スト
レージ・データ項目の別のセットで置き換えます。
TRANSFORM
trans-rec-out
[ SELECT CODE FIELD [ IS ] code-field ]
{YIELDS trans-rec-in
}
{
}
{{CODE select-code [,select-code]...YIELDS trans-rec-in}...}
[ON ERROR imperative-statement ]
[USER [ CONVERSION ] numeric-literal ]
trans-rec-out
TRANSFORM ステートメントで組み立てられる出力レコードを指定します。trans-rec-out
の構成は、次のとおりです。
out-item-1 [, out-item-n ... ]
out-item-n
WORKING-STORAGE SECTION または MESSAGE SECTION 内のレベル 01 項目、グルー
プ項目、または基本データ項目です。
out-item-1 から out-item-n は、WORKING-STORAGE SECTION の項目または
MESSAGE SECTION の項目のいずれか一方でなければならず、混在することはできません。
YIELDS trans-rec-in
TRANSFORM 処理の入力レコードを指定します。trans-rec-in の構成は、次のとおりです。
in-item-1 [, in-item-n ... ]
in-item-1
WORKING-STORAGE SECTION または MESSAGE SECTION 内のレベル 01 項目、グルー
プ項目、または基本データ項目です。in-item-1 から in-item-n は、WORKINGSTORAGE SECTION の項目または MESSAGE SECTION の項目のいずれか一方でなければ
ならず、混在することはできません。
SELECT CODE FIELD [ IS ] code-field
入力レコードの select-code フィールドの位置、長さ、およびデータ・タイプを指定します。
SELECT CODE FIELD 句を省略すると、デフォルトとして次の値が使用されます。
6-100
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
□ オフセット―レコードの先頭から 0 バイト目
□ 長さ―2 バイト
□ データ・タイプ―COMPUTATIONAL 数字データ項目
select-code フィールドの位置、長さ、およびデータ・タイプをデフォルト以外の値にしたい
ときは、この句を指定する必要があります。
SELECT CODE FIELD 句の code-field パラメータには、WORKING-STOREGE SECTION 内
のフィールド名を指定します。
指定されたフィールドのレコード先頭からのオフセットは、select-code フィールドの入力レ
コードの先頭からのオフセットを示します。
指定されたフィールドの長さは、select-code フィールドの長さを示します。
指定されたフィールドのデータ・タイプは、select-code フィールドのデータ・タイプを示し
ます。
CODE select-code
どの入力レコードを受け取りたいかを示すリテラルまたはデータ項目を指定します。
CODE select-code 句での select-code の位置は、TERMINATION-STATUS の値と対応
します。各入力レコードに対して、1 つまたは複数の select-code 値を関連付けることができ
ます。
非数字リテラルは、引用符で囲まなければなりません。
ON ERROR imperative-statement
TRANSFORM 処理の入力指定または出力指定でエラーが発生した場合の処置を指定します。エラー
が検出されると、imperative-statement が実行されます。
ON ERROR 句を省略したときにエラーが発生すると、TCP は端末に対してデフォルトのシステム
処置を行ないます。
USER [ CONVERSION ] numeric-literal
入力レコードまたは出力レコードのいずれかに関連付けられたユーザ変換プロシージャを指定しま
す。
TRANSFORM ステートメントの処理は、SEND MESSAGE ステートメントの処理と類似していますが、
物理的な I/O は行われません。TRANSFORM ステートメントでは、出力フェーズ (SEND MESSAGE) の後
に入力フェーズ (REPLY) がありますが、デバイスまたはプロセスとの間の入力および出力は行われません。
TRANSFORM ステートメントが起動されると、直接または MESSEGE SECTION を介して、WORKINGSTORAGE SECTION が参照されます。この出力フェーズ中に、TRANSFORM は出力のためのデータを内
部バッファに用意します。
入力フェーズでは、TRANSFORM は内部バッファからのデータを処理します。このデータは、直接
WORKING-STORAGE SECTION にストアされるか、あるいは MESSEGE SECTION のテンプレートを介
して WORKING-STORAGE SECTION にマッピングされます。
426750-001J
6-101
第 6 章 PROCEDURE DIVISION ( 手続き部 )
出力フェーズまたは入力フェースのどちらであっても、MESSEGE SECTION を介してデータがマッピ
ングされる場合は、MESSEGE SECTION の記述項が WORKING-STORAGE SECTION のどの項目を処理
するかを指定します。さらに、MESSEGE SECTION の記述項は、順序、フォーマット、および長さなどの
データの特性を定義します。
順序付け、編集、および変換などのデータ変換機能が使用されていない場合は、TRANSFORM ステー
トメントは単なる転記 (move) ステートメントとなります。MESSEGE SECTION にテンプレートをセット
アップしてから TRANSFORM ステートメントによるブロック転記機能を起動すれば、一連のデータを 1
つの項目から指定された項目に移動するようにプログラムすることができます。
次の規則が適用されます。
□ 出力レコードまたは入力レコードのいずれについても、1 つのレコードに異なる節を混在させてはいけ
ません。つまり、各レコード内の項目は、WORKING-STORAGE SECTION の項目または MESSAGE
SECTION の項目のいずれか一方でなければなりません。異なる節が混在している出力レコードまたは
入力レコードがあると、コンパイラはエラーを生成します。
□ 出力レコードの項目と入力レコードの項目が異なる節に属していても構いません。例えば、出力レコー
ドを WORKING-STORAGE SECTION の項目で構成し、入力レコードを MESSEGE SECTION の項目
で構成することができます。
□ コンパイル時には、編集規則チェックは限られた範囲でしか行われません。出力テンプレートと入力テ
ンプレートとの適合性は、コンパイル時にはチェックされません。例えば、PIC A フィールドからの出
力を PIC 9 フィールドに入力するようなコーディングもあり得ますが、コンパイラはこのようなタイプ
のエラーを検出しません。
□ 実行時には、データが指定されたデータ・タイプと矛盾しないように、入力と出力の両面でチェックが
行われます。例えば、データ量が多過ぎるまたは少な過ぎて、入力要件が満たされないと、ランタイ
ム・エラーが発生します。エラーが検出されると、ON ERROR 句が実行されて、TERMINATION-
STATUS および TERMINATION-SUBSTATUS に所定の値がセットされます。さらに、TRANSFORM
ステートメントの実行中にデータ編集エラーが検出された場合には、適切な FIELD-STATUS 項目が更
新されて、エラーに関連するフィールドが示されます。
□ 特殊レジスタ TERMINATION-STATUS にセットされるエラー番号の説明については、
「付録 D MESSAGE SECTION ステートメントのエラー」を参照して下さい。
複数の入力レコードがある SCREEN COBOL プログラムの例を考えてみましょう。
DATA DIVISION.
WORKING-STORAGE SECTION.
01
WS-SOURCE
PIC X(102).
01
WS-CODE-MSG.
05 WS-SEL-CODE-FIELD
PIC 9(4) COMP.
WS-DESTINATION-TEMP-1.
05 WS-DEST-1-FLD1
05 WS-DEST-1-FLD2
PIC X(50).
PIC X(50).
WS-DESTINATION-TEMP-2.
05 WS-DEST-2-FLD1
PIC X(30).
01
01
6-102
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
05
05
WS-DEST-2-FLD2
WS-DEST-2-FLD3
PIC X(30).
PIC X(40).
MESSAGE SECTION.
01
MS-SOURCE
PIC X(102) FROM WS-SOURCE.
01
DESTINATION-TEMP-1.
05 FILLER
05 MS-DEST-1-FLD1
05 MS-DEST-1-FLD2
PIC 9(4) COMP.
PIC X(50) TO WS-DEST-1-FLD1.
PIC X(50) TO WS-DEST-1-FLD2.
DESTINATION-TEMP-2.
05 FILLER
05 MS-DEST-2-FLD1
05 MS-DEST-2-FLD2
05 MS-DEST-2-FLD3
PIC
PIC
PIC
PIC
01
9(4) COMP.
X(30) TO WS-DEST-2-FLD1.
X(30) TO WS-DEST-2-FLD2.
X(40) TO WS-DEST-2-FLD3.
PROCEDURE DIVISON.
TRANSFORM MS-SOURCE
SELECT CODE FIELD IS WS-SEL-CODE-FIELD OF WS-CODE-MSG
CODE 44, 54 YIELDS DESTINATION-TEMP-1
CODE 64, 74 YIELDS DESTINATION-TEMP-2
ON ERROR PERFORM ERROR-HANDLER.
PERFORM ONE OF PROCESS-DEST-TEMP-1
PROCESS-DEST-TEMP-2
DEPENDING ON TERMINATION-STATUS.
この TRANSFORM ステートメントは、次のように実行されます。
1. TRANSFORM が WS-SOURCE 内のデータを使って出力レコードを組み立てます。TRANSFORM は、
MESSAGE SECTION 内の MS-SOURCE を介してこのデータを送信します。
2. TRANSFORM は、code-field の WS-SEL-CODE-FIELD OF WS-CODE-MSG の位置、長さ、お
よびデータ・タイプを決定します。ワーキング・ストレージ・レコードの先頭を基準としたコード・
フィールドの相対位置は、入力コードの先頭を基準とした選択コードのオフセットを定義します。この
ケースでは、WS-SEL-CODE-FIELD はワーキング・ストレージ・レコードの先頭にあるので、選択コー
ドは入力レコードの先頭にあると想定されます。
この例では、SELECT CODE FIELD IS 句はデフォルトと同じ内容を指定しているので、省略すること
ができます。TRANSFORM ステートメントの SELECT CODE FIELD IS 句には、code-field とし
て指定された WORKING-STORAGE SECTION 内のデータ項目が常に指定されていなければなりませ
ん。
3. DESTINATION-TEMP-1 と DESTINATION-TEMP-2 の FILLER フィールドは、選択コードを含んでい
る入力レコード内のフィールドのためのプレースホルダ (place holder) です。これらの FILLER フィー
ルドは TCP によって処理され、ワーキング・ストレージにストアされないように削除されます。
4. 複数の入力レコードがあることも考えられるため、TRANSFORM は入力レコードの先頭の 2 バイトの
内容を比較して、データの送信先を決定します。選択コードが 44 または 54 の場合は、TRANSFORM
は DESTINATION-TEMP-1 を介してデータを送ります。選択コードが 64 または 74 の場合は、
TRANSFORM は DESTINATION-TEMP-2 を介してデータを送ります。
426750-001J
6-103
第 6 章 PROCEDURE DIVISION ( 手続き部 )
可能な選択コードの中の何番目の選択コードであるかによって、TRANSFORM は 1 ~ 4 の数を特殊レ
ジスタ TERMINATION-STATUS に転記します。
□ エラーがない場合は、特殊レジスタ TERMINATION-STATUS は次のようにセットされます。
選択コード
TERMINATION-STATUS
44
1
54
2
64
3
74
4
□ エラーを検出すると、TRANSFORM はエラーのタイプを示す値を TERMINATION-STATUS にセッ
トして、ERROR-HANDLER プロシージャを実行します。
次の例では、TRANSFORM は入力レコードの先頭から 30 バイト目の選択コードを探します。ワーキン
グ・ストレージ・レコード WS-CODE-MSG 内での
code-field 、WS-SEL-CODE-FIELD の位置が、
このオフセットを定義します。また、選択コードは、ワーキング・ストレージ・データ項目 SC1 および
SC2 に指定されるのであって、数字リテラルを使うのではないことに注意して下さい。
DATA DIVISION.
WORKING-STORAGE SECTION.
01
01
01
01
01
WS-SOURCE
WS-CODE-MSG.
05 PREFIX
05 WS-SEL-CODE-FIELD
REPLY CODES.
05 SC1
05 SC2
WS-DESTINATION-TEMP-1.
05 WS-DEST-1-FLD1
05 WS-DEST-2-FLD2
05 WS-DEST-1-FLD3
WS-DESTINATION-TEMP-2.
05 WS-DEST-2-FLD1
05 WS-DEST-2-FLD2
05 WS-DEST-2-FLD3
PIC X(102).
PIC X(30).
PIC 9(4) COMP.
PIC 9(4) COMP, VALUE IS 1.
PIC 9(4) COMP, VALUE IS 2.
PIC X(30).
PIC X(20).
PIC X(50).
PIC X(30).
PIC X(30).
PIC X(40).
MESSAGE SECTION.
01
MS-SOURCE
PIC X(102) FROM WS-SOURCE.
01
DESTINATION-TEMP-1.
05 MS-DEST-1-FLD1
05 FILLER
05 MS-DEST-1-FLD2
05 MS-DEST-1-FLD3
PIC
PIC
PIC
PIC
X(30) TO WS-DEST-1-FLD1.
9(4) COMP.
X(20) TO WS-DEST-1-FLD2.
X(50) TO WS-DEST-1-FLD3.
DESTINATION-TEMP-2.
05 MS-DEST-2-FLD1
05 FILLER
05 MS-DEST-2-FLD2
05 MS-DEST-2-FLD3
PIC
PIC
PIC
PIC
X(30) TO WS-DEST-2-FLD1.
9(4) COMP.
X(30) TO WS-DEST-2-FLD2.
X(40) TO WS-DEST-2-FLD3.
01
6-104
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
PROCEDURE DIVISON.
TRANSFORM MS-SOURCE
SELECT CODE FIELD IS WS-SEL-CODE-FIELD OF WS-CODE-MSG
CODE SC1 YIELDS DESTINATION-TEMP-1
CODE SC2 YIELDS DESTINATION-TEMP-2
ON ERROR PERFORM ERROR-HANDLER.
6.2.43 TURN ステートメント
TURN ステートメントは、スクリーン変数フィールドの表示属性を変更します。TURN ステートメント
は、インテリジェント・デバイスと通信するプログラムでは使用することができません。
TURN [ TEMP
] { [ mnemonic-name ]
}
[ TEMPORARY ] { [ DYNAMIC
]
}
[ RECEIVE FROM { ALTERNAL }
}
{
{ALTERNATE OR TERMINAL} }
{
{TERMINAL
} }
{
{TERMINAL OR ALTERNATE} }
IN
{ screen-identifier } [,]... [ DEPENDING [ON] identifier ]
[ SHADOWED
]
TEMP または TEMPORARY
次の RESET TEMP ステートメントまたは ACCEPT ステートメントが実行されるときに、指定され
たフィールドを初期設定の表示属性にリセットすることを指定します。
備考: SCREEN COBOL プログラムの実行中に、TCP は表示属性を制御するのと同じ方法で MDT (modified data
tag) を制御します。ただし、次の 2 つの重要な例外があります。
□ TURN TEMP ステートメントが表示属性を変更するために入力フィールドを選択した場合は、常に MDT
ビットがセットされます。
□ RESET TEMP ステートメントが属性をリセットするために入力フィールドを選択した場合は、その
フィールドの内部 MDT 属性とは無関係に、MDT ビットがセットされます。
これらの 2 つの例外は、TEMP 参照子を持つ TURN および RESET ステートメントにだけ適用されます。ま
た、ACCEPT ステートメントが終了した後ではフィールドの MDT ビットはリセットされないことに注意し
て下さい。いったん MDT ビットがセットされると、次の DISPLAY BASE、TURN、RESET、または CLEAR
INPUT ステートメントが実行されるまで、セットされたままになります。
426750-001J
6-105
第 6 章 PROCEDURE DIVISION ( 手続き部 )
mnemonic-name
使 用 す る 表 示 属 性 を 指 定 します。mnemonic-name は、プログラムの ENVIRONMENT
DIVISION の SPECIAL-NAMES 段落の IS 句によって 1 つ以上の表示属性に関連付けられます。
DYNAMIC
コンパイル時に定義されたスクリーン・フィールドの属性と制御構造で定義された属性設定を組み
合わせて、当該のスクリーン・フィールドを組み立てることができることを指定します。
RECEIVE FROM
スクリーン・フィールドのためのデータをどこから受け入れることができるかを、デバイスのタイ
プによって指定します。この句は、6AI (A00 版以降 ) ファームウェアを使う 6530 端末または 6540
端末で実行されているアプリケーションでだけサポートされます。
screen-identifier
属性を変更することができるフィールドを指定します。それぞれの
screen-identifier に
は、スクリーン全体の名前、スクリーン・グループの名前、現在表示されているベース・スクリー
ンまたはオーバーレイ・スクリーンの基本入力項目の名前を指定することができます。screen-
identifier がグループの場合は、定義に TO、FROM、または USING 句がある従属するすべ
ての基本項目が対象になります。1 つの TURN ステートメント当たり最大 127 スクリーン・フィー
ルドまで指定することができます。
DEPENDING ON identifier
スクリーン・フィールドのリストからゼロ ( 選択しない )、または 1 つの screen-identifier
を選択します。screen-identifier リスト内の位置が identifier の値と同じステート
メントが選択されます。identifier の値が 1 より小さいか screen-identifier の数よ
り大きい場合は、screen-identifier は選択されません。
SHADOWED
screen-identifier リストから、SELECT ビットが 1 にセットされている SHADOWED 項
目を持つフィールドだけを選択します。SHADOWED 項目を持たない screen-identifier
リスト内のフィールドは、選択されません。
備考: DEPENDING ON 参照子も SHADOWED 参照子も指定されない場合は、screen-identifier リスト内
のすべてのフィールドが選択されます。
選 択され たフィ ールド の属性 は、mnemonic-name によって指定された属性に変更されま す。
mnemonic-name によって指定されない属性は、そのフィールドの最初の属性によって決定されます。
DYNAMIC 参照子は、関連する制御構造にある個々の属性要素の内容を使用して、実行時にスクリーン・
フィールド属性の設定を変更する機能を提供します。これによって、実行時の表示属性を、コンパイル時
の設定ではなく、TURN ステートメントによって指定された新しい表示属性に設定することができます。
属性の設定をコンパイル時の値に戻すには、RESET ステートメントを使用します。
6-106
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
表 6-7 は、TURN 処理でのスクリーン・フィールドの選択を決定するための基準を示しています。
表 6-7 TURN 処理でのスクリーン・フィールドの選択基準
DYNAMIC
SHADOWED
選択される
選択されない
選択される
スクリーン・フィールドが持つ特性
TURN 処理の指定子
SHADOWED:
YES, SELECT=1
SHADOWED
YES, SELECT=0
SHADOWED:
NO
mnemonic-name
選択される
選択される
選択される
mnemonic-name
SHADOWED
選択される
選択されない
選択される
DYNAMIC
選択される
選択される
選択される
TURN ステートメントはスクリーンへの物理的な書込みは行わずに、端末バッファにデータを書き込み
ます。スクリーンへの物理的な書込みは、次のいずれかのイベントが発生したときに行われます。
□ 端末バッファ (TERMBUF) に空き容量がなくなくなった。
□ 以下のステートメントのいずれかが実行された。ACCEPT、BEGIN-TRANSACTION、
END-TRANSACTION、RESTART-TRANSACTION、ABORT-TRANSACTION、CALL、CHECKPOINT、
DELAY、EXIT PROGRAM、PRINT SCREEN、SEND
□ 会話型端末のために DISPLAY ステートメントが実行された。
TURN ステートメントの DEPENDING ON 句は、PERFORM ONE ステートメントの DEPENDING ON
句と類似しています。次の例は、両者の類似性を示しています。
WORKING-STORAGE SECTION.
:
77 ws-screen-status
PIC
01 ws-fld1
PIC
01 ws-fld2
PIC
01 ws-fld3
PIC
9(4)
x(10).
x(10).
x(10).
COMP VALUE 1.
SCREEN SECTION.
:
01 MENU1 SIZE 24, 80.
05 screen-fld1
at 4, 20
PIC X(10)
from fld1.
05 screen-fld2
at 5, 40
PIC X(10)
from fld2.
05 screen-fld3
at 6, 60
PIC X(10)
from fld3.
426750-001J
6-107
第 6 章 PROCEDURE DIVISION ( 手続き部 )
PROCEDURE DIVISION.
:
BODY-PARAGRAPH.
:
DISPLAY BASE MENU1.
DISPLAY MENU1.
TURN REVERSE IN SCREEN-FLD1,
SCREEN-FLD2,
SCREEN-FLD3,
DEPENDING ON WS-SCREEN-STATUS.
WS-SCREEN-STATUS が 1 のときは、SCREEN-FLD1 が REVERSE で表示されます。WS-SCREENSTATUS が 2 のときは、SCREEN-FLD2 が REVERSE で表示され、以下同様です。WS-SCREEN-STATUS
< 1 または WS-SCREEN-STATUS > 3 のときでも、エラーとは見なされません。制御が単に失敗するだけ
で、どのスクリーン・フィールドも REVERSE では表示されません ( 処理は継続されて、次のステートメ
ントが実行されます )。
6.2.44 IBM 3270 端末での属性の扱い
TURN ステートメントを使用して表示属性を動的に設定した場合に発生する可能性がある矛盾状態に対
しては、次の対応がなされます。
□ HIDDEN 属性のフィールドを BLINK、BRIGHT、REVERSE、または UNDERLINE 属性に変更しても、
表示には何の効果もありません。
□ BLINK 属性のフィールドを HIDDEN 属性に変更すると、そのフィールドは HIDDEN 属性に変更され
ます。
□ BLINK 属性のフィールドを REVERSE 属性に変更すると、そのフィールドは反転しますが明滅はしま
せん。
□ BLINK 属性のフィールドを UNDERLINE 属性に変更すると、そのフィールドは下線付きになりますが
明滅はしません。
□ REVERSE 属性のフィールドを BLINK 属性に変更すると、そのフィールドは明滅しますが反転はしま
せん。
□ REVERSE 属性のフィールドを UNDERLINE 属性に変更すると、そのフィールドは下線付きになりま
すが反転はしません。
□ UNDERLINE 属性のフィールドを HIDDEN 属性に変更すると、そのフィールドは HIDDEN 属性にな
り、テキストも下線も表示されません。
□ UNDERLINE 属性のフィールドを BLINK 属性に変更すると、テキストは明滅しますが下線は表示され
ません。
□ UNDERLINE 属性のフィールドを REVERSE 属性に変更すると、そのフィールドは反転しますが下線
は表示されません。
□ 初めにアウトライン表示属性 (TOPLINE、LEFTLINE、RIGHTLINE、BOTTOMLINE、BOXFIELD) を
設定したフィールドを BLINK 属性に変更すると、テキストだけが明滅して、罫線は明滅しません。
6-108
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
6.2.45 6500 シリーズ端末での属性の扱い
次の表は、SCREEN COBOL が 6500 シリーズ端末で多重的に指定された属性をどのように扱うかを示
しています。
HIDDEN
PROTECTED
BLINK
MDTON
DIM
REVERSE
UNDERLINE
HIDDEN
隠蔽
隠蔽 &
保護
隠蔽 &
明滅
隠蔽 &
MDTON
領域は
DIM、
テキスト
は隠蔽
領域は
反転、
テキストは
隠蔽
下線 &
隠蔽
PROTECTED
保護 &
隠蔽
保護
保護 &
明滅
保護 &
MDTON
保護 &
DIM
保護 &
反転
保護 &
下線
BLINK
明滅 &
隠蔽
明滅 &
保護
明滅
明滅 &
MDTON
明滅 &
DIM
明滅 &
反転
明滅 &
下線
MDTON
MDTON
& 隠蔽
MDTON
& 保護
MDTO
明滅
MDTON
MDTON
& DIM
MDTON
& 反転
MDTON
& 下線
DIM
テキスト
は隠蔽、
領域は
DIM
DIM &
保護
DIM &
明滅
DIM &
MDTON
DIM
DIM &
反転
DIM &
下線
REVERSE
反転 &
隠蔽
反転 &
保護
反転 &
明滅
反転 &
MDTON
反転 &
DIM
反転
反転 &
下線
UNDERLINE
下線 &
隠蔽
下線 &
保護
下線 &
明滅
下線 &
MDTON
下線 &
DIM
下線 &
反転
下線
6.2.46 USE FOR SCREEN RECOVERY ステートメント
USE FOR SCREEN RECOVERY ステートメントは、PROCEDURE DIVISION の DECLARATIVES 部分
で使用されます。このステートメントは、指定されたベース・スクリーンがアクティブなときにエラーが
発生すると、端末表示を復元するためのプロシージャを割り当てます。USE FOR SCREEN RECOVERY ス
テートメントは、端末エラーまたは通信エラー、プロセッサ障害、あるいは端末のサスペンドがあった場
合に、起動されます。USE FOR SCREEN RECOVERY ステートメントを起動するエラーの一覧について
は、『Compaq NonStop Pathway/iTS TCP and Terminal Programming Guide 』を参照して下さい。
DECLARATIVES プロシージャは、端末がサスペンドして、PATHCOM コマンド RESUME TERM で再開
された後でのみ、自動的に呼び出されます。通常、SCREEN COBOL プログラムがスクリーンに ADVISORY
テキストを表示するので、画面操作において適切な処置を行わなければなりません。SCREEN COBOL プ
ログラムでユーザ作成の回復処置が提供されない場合は、TCP が端末エラーに対する独自の処置を行いま
す。
426750-001J
6-109
第 6 章 PROCEDURE DIVISION ( 手続き部 )
USE FOR SCREEN RECOVERY ステートメントに対して、USE FOR TERMINAL-ERRORS ステートメ
ントは、端末エラーまたは通信デバイス・エラーのために回復不能なエラーが発生した場合に起動されま
す。DECLARATIVES プロシージャは、SCREEN COBOL プログラムのロジックによって検出されたエラー
には適用されません。DISPLAY RECOVERY ステートメントは、USE FOR SCREEN RECOVERY ステー
トメントの中では使用できないことに注意して下さい。USE FOR SCREEN RECOVERY ステートメント
は、インテリジェント・デバイスと通信するプログラムでは使用することができません。
USE [ FOR SCREEN ] RECOVERY
[ ON { base-screen-name-n } ,... ] .
ON base-screen-name-n
DECLARATIVES プロシージャが適用されるベース・スクリーンを指定します。この指定を省略す
ると、DECLARATIVES プロシージャは他の USE ステートメントで指定されていないすべてのス
クリーンに適用されます。
リカバリ処理は、カレント・ベース・スクリーンに対して DISPLAY BASE を実行してから、現在アク
ティブなすべてのオーバーレイ・スクリーンに対して DISPLAY OVERLAY を実行するのと同等の処理を
行います。それから、適用される DECLARATIVES プロシージャが実行されます。DECLARATIVES プロ
シージャの実行が終了すると、問題が検出されたときに実行されていたステートメントに制御が返され、
そ の ス テ ー ト メ ン ト が 再 び 実 行 されます。USE FOR SCREEN RECOVERY ステートメントは、
PROCEDURE DIVISION の DECLARATIVES 節の見出しの直後に指定しなければなりません。次に、USE
ステートメントの例を示します。
PROCEDURE DIVISION.
DECLARATIVES.
S-R SECTION.
USE FOR SCREEN RECOVERY.
RECOV-1.
MOVE "SCREEN RECOVERY" TO error-msg,
DISPLAY msg-1.
END DECLARATIVES.
MAIN SECTION.
6.2.47 USE FOR TERMINAL-ERRORS ステートメント
USE FOR TERMINAL-ERRORS ステートメントは、PROCEDURE DIVISION の DECLARATIVES 部分
で使用されます。このステートメントは、端末 I/O の際に回復不能なエラーが発生したときにだけ実行さ
れるプロシージャを割り当てます。回復不能なエラーは、端末エラーまたは通信回線エラーが原因で発生
することがあります。USE FOR TERMINAL -ERRORS ステートメントを起動するエラーの一覧について
は、『Compaq NonStop Pathway/iTS TCP and Terminal Programming Guide』を参照して下さい。
USE FOR TERMINAL-ERRORS ステートメントは、インテリジェント・デバイスと通信するプログラ
ムでは使用することができません。
USE [ FOR ] TERMINAL-ERRORS.
回復不能な端末 I/O エラーが発生すると、TCP は USE FOR TERMINAL-ERRORS ステートメントの直
後の DECLARATIVES プロシージャを実行します。TCP は、端末エラーが回復不能であると判断したら直
ちに DECLARATIVES プロシージャを実行します。USE FOR SCREEN RECOVERY ステートメントは端
末がサスペンドされて再開された後でのみ DECLARATIVES プロシージャを実行するのとは、この点が異
なります。
6-110
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
プログラムに USE FOR TERMINAL-ERRORS ステートメントが存在せず、回復不能な端末 I/O エラー
が発生した場合は、そのプログラムはサスペンドします。
プログラムに USE FOR TERMINAL-ERRORS ステートメントが存在するときに、回復不能な端末 I/O
エラーが発生すると、TCP は次のスクリーン・オペレーションの時点で自動的にスクリーン・リカバリを
試行します。この操作は、次のスクリーン・オペレーションの前に DISPLAY RECOVERY ステートメン
トが正常に実行された場合を除きます。TCP が自動スクリーン・リカバリを実行するために、次のスクリー
ン・オペレーションが DECLARATIVES SECTION に存在する必要はありません。
次に示す SCREEN COBOL ステートメントは、データを端末バッファに追加するため、回復不能な端末
I/O エラーが引き起こされる可能性があります。
ACCEPT
CLEAR INPUT
DISPLAY BASE
DISPLAY OVERLAY
DISPLAY RECOVERY
DISPLAY
RECONNECT MODEM
RESET
SCROLL
TURN
会話モードで動作するプログラムでは、回復不能な端末 I/O エラーは、上記のステートメントのいずれ
かと直接関係することがあります。ブロック・モードで動作するプログラムでは、上記のステートメント
のいずれかに直接起因しないことがあります。
ブロック・モードでは出力データはバッファに貯えられるので、回復不能な端末 I/O エラーは、データ
を実際に端末に書き込むか、端末から読み取るときにだけ発生します。バッファに空き容量がなくなる前
にいくつかの入力ステートメントや出力ステートメントが実行されることも考えられるし、他の処理に
よって端末へ実際にデータが書き込まれることもあります。ブロック・モードでは、端末へ実際にデータ
が書き込まれるのは次のような場合です。
□ 端末バッファに空き容量がなくなった場合
□ ACCEPT ステートメントを実行する前
□ DELAY、SEND、または CALL などのステートメントを実行する前
プログラムで USE FOR TERMINAL-ERRORS プロシージャを指定したときに、回復不能な端末 I/O エ
ラーが発生した場合は、TCP は次のような処置を実行します。
1. 特殊レジスタ TERMINATION-SUBSTATUS に、適切なファイル・システム・エラー・コードをセット
します。
2. 特殊レジスタ PW-TERMINAL-ERROR-OCCURRED に 1 をセットします ( 他の場合は、0 がセットさ
れています )
3. USE FOR TERMINAL-ERRORS ステートメントの直後の DECLARATIVES プロシージャを実行しま
す。
4. I/O 障害の発生時に実行されていたステートメントの直後のステートメントから実行を再開します。
DECLARATIVES プロシージャ自体の中でエラーが発生した場合は、TCP は上記のステップ 1 およびス
テップ 2 と同様に、特殊レジスタ PW-TERMINAL-ERROR-OCCURRED に 1 をセットし、特殊レジスタ
TERMINATION-SUBSTATUS にファイル・システム・エラー・コードをセットして、その DECLARATIVES
プロシージャ自体の中の次のステートメントから実行が再開されます。
426750-001J
6-111
第 6 章 PROCEDURE DIVISION ( 手続き部 )
USE FOR TERMINAL-ERRORS プロシージャは、簡単な構造で強力な機能を実現します。このプロシー
ジャを使うと、端末 I/O エラーが発生した場合に最大限の制御が可能になりますが、不測の結果を招く恐
れもあります。ですから、このプロシージャを使用する場合は、プロシージャの使用法と目的の両面に注
意を払って下さい。
次の点に留意して下さい。
□ ブロック・モードでは、どのステートメントがエラーを引き起こしたのかを知る方法はありません。
□ USE FOR TERMINAL-ERRORS プロシージャが扱うエラーについては、Pathway のログ機能は適用さ
れません。
□ ACCEPT ステートメントの実行中に回復不能な端末 I/O エラーが発生した場合は、TCP は
TERMINATION-STATUS を 0 にリセットしてから、その ACCEPT ステートメントの次のステートメ
ントに制御を返します。
□ USE FOR TERMINAL-ERRORS の DECLARATIVES プロシージャ内から別の SCREEN COBOL プロ
グラムを呼び出す場合は、次の規則が適用されます。
●
呼び出されるプログラム ( および、さらにそこから呼び出されるプログラム ) は、USE FOR
TERMINAL-ERRORS ステートメントを含んでいてはいけません。もし含まれている場合は、ラン
タイム・エラーが発生してプログラムがサスペンドします。
●
呼び出されたプログラムで回復不能な端末 I/O エラーが発生すると、呼び出したプログラムがサス
ペンドされます。
DECLARATIVES プロシージャ内で再試行する前に、エラーの性質を検討して下さい。再試行が可能な
エラーもありますが、不可能なエラーもあります。エラーの性質を判断するために、特殊レジスタ
TERMINATION-SUBSTATUS にあるファイル・システム・エラー・コードをチェックします。
DECLARATIVES プロシージャ内に実行可能なステートメントが含まれていない場合は、エラーを引き
起こしたステートメントの直後のステートメントから実行が再開されます。このように、回復不能な端末
I/O エラーが発生しても、エラーが発生した形跡を残さないことがります。このような事態を避ける 1 つの
方法として、少なくとも 1 つのステートメント (EXIT PROGRAM ステートメントなど ) を含めておく方法
があります。
DECLARATIVES プロシージャは、現在のデータ ( コンテキスト ) を保存するために使用することもで
きます。DECLARATIVES プロシージャを使用して現在のデータを保存しておけば、EXIT PROGRAM
WITH ERROR または CALL...ON ERROR を DECLARATIVES プロシージャの外部で使用した場合よりも、
スクリーンをより完全にリカバリしてアプリケーションを再開することができます。次に、端末 I/O エラー
が発生したときに現在のレコードおよび最終のレコードを保存する例を示します。
. . .
DATA DIVISION.
WORKING-STORAGE SECTION.
01 CONTEXT-INFO.
02 CURRENT-REC.
04 NAME
PIC
04 ACCT-NUM.
06 ACCT-PRE PIC
06 ACCT-SN
PIC
06 ACCT-SUFF PIC
04 ACT-BAL
PIC
02 LAST-REC.
6-112
A(33).
AA.
99999.
X(4).
999999V99.
426750-001J
第 6 章 PROCEDURE DIVISION ( 手続き部 )
04 NAME
PIC A(33).
04 ACCT-NUM.
06 ACCT-PRE
PIC AA.
06 ACCT-SN
PIC 99999.
06 ACCT-SUFF PIC X(4).
04 ACT-BAL
PIC 999999V99.
01 REPLY-STRUCT.
02 OUTCOME
PIC 999.
02 EXTENSION
PIC AAA.
. . .
PROCEDURE DIVISION.
DECLARATIVES.
TERM-ERROR SECTION.
USE FOR TERMINAL-ERRORS.
TERM-ERROR-PROC.
SEND CONTEXT-INFO
TO TROUBLE-SERVER
REPLY OUTCOME OF REPLY-STRUCT.
TERM-ERROR-END.
EXIT PROGRAM.
END DECLARATIVES.
MAIN SECTION.
. . .
次の例では、EXIT PROGRAM ステートメントが 1 つだけ使用されています。
PROCEDURE DIVISION.
DECLARATIVES.
U-T-E SECTION.
USE FOR TERMINAL-ERRORS.
TERM-ERRORS.
EXIT PROGRAM.
END DECLARATIVES.
MAIN SECTION.
. . .
DISPLAY BASE
. . .
DISPLAY
. . .
DISPLAY
この DECLARATIVES プロシージャに EXIT PROGRAM ステートメントが含まれていないと、回復不
能な端末 I/O エラーが発生するといずれの DISPLAY ステートメントも実行できなくなり、エラーが検出
されません。
426750-001J
6-113
第 6 章 PROCEDURE DIVISION ( 手続き部 )
( 空白ページ )
6-114
426750-001J
第 7 章 コンパイル
第 7 章 コンパイル
SCREEN COBOL コンパイラは、SCOBOLX の実行コマンドによって呼び出されます。すべてのパラ
メータにデフォルト値を使用するときは、次のようにコマンドを入力します。
SCOBOLX
7.1 SCREEN COBOL コンパイラの実行
SCREEN COBOL コンパイラは、通常、コマンド・インタープリタから起動されます。コマンドの構文
は、次のとおりです。
SCOBOLX [ / [ IN source-file ]
[ , OUT [ list-file ] ]
[ , run-option ] ... / ]
[ tclprog-file ]
[ , copy-library ]
[ ; compiler-command ] ...
備考: SCOBOLX の実行コマンドによるソース・プログラム・ユニットのコンパイルは、そのソース・プログラ
ム・ユニットが存在するノードで実行しなければなりません。あるノードに存在するソース・プログラム・
ユニットを別のノードでコンパイルすることはできません。
IN source-file
SCREEN COBOL ステートメントおよびコンパイラ・コマンドを含んでいるファイルです。SCREEN
COBOL コンパイラは、source-file を 132 バイトのレコードとして読み取ります。このパラ
メータを省略すると、コンパイラは、コマンド・インタープリタの現在の入力ファイル ( 通常は、
ホーム端末 ) から入力を受け取ります。
OUT list-file
指定されたファイルに、コンパイラのリストを出力します。list-file の形式は、sourcefile と同じです。list-file が非構造化ディスク・ファイルの場合は、list-file の各レ
コードは 132 文字です ( それより短いレコードは、第 132 カラムまで空白が補われます )。
OUT だけを指定して list-file を省略したときは、リストは出力されません。このオプション
全体を省略したときは、リストはコマンド・インタープリタの OUT ファイル ( 通常は、ホーム端
末 ) に出力されます。
run-option
以下のオペレーティング・システム・コマンド・オプションのいずれかです。
NAME $process-name
コンパイラのプロセス名を指定します。
CPU cpu-number
コンパイラを実行するプロセッサを指定します。
426750-001J
7-1
第 7 章 コンパイル
PRI priority
実行優先度を指定します。
MEM num-pages
データ・ページの最大数を指定します。
NOWAIT
コマンド・インタープリタがコンパイラの終了を待たずに、次のコマンド入力を促すプロン
プトを出力することを指定します。
SWAP $disk-volume
SCOBOLX および SCOBOLX2 プロセス・スワップ・ファイルが作成されるディスク・ボ
リュームを指定します。
このオプションを省略し、TACL の SET SWAP コマンドを使用してプロセス・スワップ・
ファイルにデフォルトのディスク・ボリュームを指定していないと、プロセス・スワップ・
ファイルはSCOBOLXオブジェクト・プログラム・ファイルが存在するのと同じサブボリュー
ムに作成されます。SCOBOLX オブジェクト・プログラム・ファイルが $SYSTEM にあると
きに、プロセス・スワップ・ファイルがそれと同じサブボリュームに作成されると、システ
ムの性能が低下することがあるので、注意して下さい。
スワップ・ファイルの管理については、『KMSF ( カーネル管理スワップ・ファシリティ ) マニュア
ル』を参照して下さい。
tclprog-file
オブジェクト・プログラムやその他の情報が格納されるディスク・ファイルの名前をコンパイラが
生成するときに使用するファイル名の一部 ( ルート ) を指定します。tclprog-file には、次に
示す形式でディスク・ファイル名を指定します。
[ \system . ] [ $volume . ] [ subvolume . ] file
file は、最大 5 文字です。このパラメータを省略すると、POBJ が使用されます。file に、コ
ンパイラが以下の文字を付加して実際のファイル名が生成されます。
COD
( オブジェクト・プログラムが入る ) コード・ファイルです。
DIR
コード・ファイルのディレクトリです。
SYM
( コンパイラ・オプション SYMBOLS が指定されたときに生成される ) シンボル・テーブル
です。
デフォルトのファイル名は、POBJCOD、POBJDIR、および POBJSYM です。
7-2
426750-001J
第 7 章 コンパイル
copy-library
EDIT ファイルの名前です。このファイルは、特定のライブラリ名が指定されていない COPY ステー
トメントを処理するときに、ソース・コードのためのデフォルトのライブラリとして使用されます。
copy-library は、ディスク・ファイル名の形式で指定します。
このパラメータを省略すると、COPYLIB が使用されます。
compiler-command
次に示すコンパイラ・コマンドのいずれかを指定します。
ANSI
COMPILE
CROSSREF/NOCROSSREF
ERRORS
HEADING
LINES
LIST/NOLIST
MAP/NOMAP
OPTION
SHOWCOPY/NOSHOWCOPY
SMAP/NOSMAP
SYMBOLS/NOSYMBOLS
SETTOG
SYNTAX
TANDEM
WARN/NOWARN
次に、SCREEN COBOL コンパイラを実行するコマンドの例を示します。
SCOBOLX / IN MYSOURCE, OUT $S, NOWAIT / MPROG; MAP; &
CROSSREF ONLY LABELS; LIST
SCOBOLX / IN APROG /
7.1.1 コンパイラ生成ファイルの使用法
ディスク・ファイル COD、DIR、および SYM が存在していない場合は、SCREEN COBOL はそれらの
ファイルを作成して、そこにオブジェクト・プログラム情報を格納します。それらのディスク・ファイル
が存在している場合は、SCREEN COBOL は当該のファイル内に既に存在しているプログラムにオブジェ
クト・プログラムを追加します。この追加は、追加されるオブジェクト・プログラムのプログラム ID が既
に存在するものと同じであっても、当該のファイルを同時に使用しているユーザを妨げない方法で行われ
ます。ですから、TCP が現在使用しているオブジェクト・ファイルに追加することも可能です。
PATHCOM コマンドおよび SCUP でオブジェクト・ファイルを参照するときは、COD、DIR、または
SYM を取り除いたファイル名 ( ルート ) を使用します。Guardian コマンドでオブジェクト・ファイルを参
照するときは、COD、DIR、または SYM を含めた実際のファイル名を使用します。実際のファイルは、新
しいファイル名が同じ方法で関連付けられていれば、名前を変更したり、別のボリュームにコピーしたり
することができます。つまり、1 つのファイルが COD で終わり、1 つのファイルが DIR で終わり、1 つの
ファイルが SYM で終わるという点を除いて、同じルートを持っていることが必要です。
7.1.2 PARAM SAMECPU コマンドの使用法
コマンド・インタープリタの SAMECPU パラメータは、SCOBOLX および SCOBOLX2 が実行されるの
と同じ CPU でプロセス SYMSERV を実行することを指定します。通常、SYMSERV は、SCOBOLX およ
び SCOBOLX2 が実行されている CPU より 1 つ上位の番号の CPU で実行されます。上位の番号のプロセッ
サがないときは、SYMSERV は最も下位の番号のプロセッサで実行されます。
426750-001J
7-3
第 7 章 コンパイル
SCREEN COBOL コンパイラは、コマンド・インタープリタの PARAM コマンドに渡される SAMECPU
パラメータを認識します。この PARAM コマンドの構文は、次のとおりです。
PARAM SAMECPU number
number
ゼロ以外の任意の数です。0 を指定すると、SAMECPU パラメータは無効になります。
number は、SYMSERV プロセスをどの CPU で実行するかを指定するものではありません。
SYMSERV プロセスを実行する CPU は、実行コマンドの CPU オプションで決められます。
同一の CPU で SYMSERV プロセスを実行するコマンド・シーケンスは、次のとおりです。
TACL 1> PARAM SAMECPU 1
TACL 2> SCOBOLX/IN ... , OUT ...
7.1.3 PARAM SWAPVOL の使用法
コマンド・インタープリタの SWAPVOL パラメータには、スワップ・ボリュームの名前を指定します。
このボリューム上で、以下のファイルおよびボリュームが作成されます。
□ SCOBOLX および SCOBOLX2 の一時的ワーク・ファイル
□ SCOBOLX2 のプロセス・スワップ・ディスク・ボリューム。このボリュームには、SCOBOLX2 プロ
セスが実行時に使用するデータ・スタック・スワップ・ファイルが入れられます。
SCREEN COBOL コンパイラは、コマンド・インタープリタの PARAM コマンドに渡される SWAPVOL
パラメータを認識します。この PARAM コマンドの構文は、次のとおりです。
PARAM SWAPVOL $volume
$volume
現在選択されているディスク・ボリューム以外の任意のディスク・ボリュームを指定します。
PARAM SWAPVOL が省略され、TACL の SET SWAP コマンドでカレント・スワップ・ボリュームが
指定されていないときは、SCOBOLX および SCOBOLX2 のすべての一時的ワーク・ファイルは SCOBOLX
オブジェクト・プログラム・ファイルが存在するのと同じサブボリュームに作成されます。SCOBOLX オ
ブジェクト・プログラム・ファイルが $SYSTEM にあるときに、プロセス・スワップ・ファイルがそれと
同じサブボリュームに作成されると、システムの性能が低下することがあるので、注意して下さい。
備考: SCOBOLX の実行コマンドの SWAP オプションは、SCOBOLX および SCOBOLX2 の一時的ワーク・ファ
イルが作成される場所には影響しません。ただし、SCOBOLX プロセスが使用する実行時のデータ・スタッ
ク・スワップ・ファイルを Kernel 管理スワップ・ファシリティ (KMSF) が作成する場所には影響します。
例えば、一時的ワーク・ファイルが作成されるディスク・ボリュームとして $MINT を指定するコマン
ド・シーケンスは、次のようになります。
TACL 3> PARAM SWAPVOL $MINT
7-4
426750-001J
第 7 章 コンパイル
7.2 コンパイラ・コマンドの使用法
コンパイラ・コマンドはコンパイラに情報を提供して、コンパイル機能を選択します。例えば、コンパ
イラ・コマンドは、ソース・フォーマット、コンパイラがオブジェクト・コードを書き込むファイル、お
よびリスティングのオプションを選択します。また、コンパイラ・コマンドは、ソース・ファイルの一部
に対する選択コンパイルも制御します。
7.2.1 コンパイラ・コマンドの指定
コンパイラ・コマンドは、1 つの例外を除いて、SCOBOLX の実行コマンドのコンパイラ・コマンド・
フィールドおよび SCREEN COBOL のソース・ファイルの 2 箇所に指定することができます。( 例外につ
いては、7-14 ページの「SECTION コマンド」を参照して下さい。) このコマンドは、次のように指定します。
□ SCOBOLX の実行コマンドのコンパイラ・コマンド・フィールドに指定する場合 - 各コンパイラ・コ
マンドの前にセミコロン (;) を付けます。コンパイラ・コマンドの中のオプション・コマンドを指定す
る方法については、7-13 ページの「OPTION コマンド」を参照して下さい。
□ SCREEN COBOL のソース・ファイルに指定する場合 - 1 つのソース・テキスト行にコマンドを 1 つ
指定します。COPY ステートメントでソース・ライブラリ・ファイルから取り出した部分を含めて、コ
マンドはソース・テキストの任意の場所に指定することができます。ただし、ソース・テキスト内のコ
ンパイラ・コマンド行は、複数行の COPY ステートメントを使用して散在させることはできません。
ソース・テキスト内に指定するコンパイラ・コマンドの構文は、次のとおりです。
?compiler-command
?
標識フィールド ( タンデム標準リファレンス・フォーマットでは第 1 カラム、ANSI 標準リファレン
ス・フォーマットでは第 1 カラムまたは第 7 カラム ) に指定しなければなりません。
compiler-command
以下に説明するコンパイラ・コマンドのいずれかを指定します。
疑問符 (?) は、ソース・テキスト・フォーマットの標識であって、コンパイラ・コマンドの一部ではあ
りません。ですから、SCOBOLX の実行コマンドの一部として入力するコンパイラ・コマンドの前には、
疑問符は付けません。
7.3.2 コンパイラ・コマンドが有効となる時
SCREEN COBOL コンパイラは、SCOBOLX の実行コマンド内で指定されたコマンドをあたかもソース・
ファイルの最初に指定されたように扱います。ですから、コンパイラは、それらをリスト・ファイルの先
頭に表示します。コマンドは、実行コマンド内に現れる順に、コンパイルの開始時に有効になります。コ
マンドの指定に矛盾があるときは、最後に指定されたコマンドが優先します。
ソース・ファイル内に指定されたコンパイラ・コマンドは、次のソース・テキスト行の先頭で有効にな
ります。コマンドの指定に矛盾があるときは、最後に指定されたコマンドが優先します。ソース・テキス
ト内に指定されたコマンドは、SCOBOLX の実行コマンド内で指定されたコマンドに優先します。
426750-001J
7-5
第 7 章 コンパイル
7.2.3 コンパイラ・コマンドのサマリ
コンパイラ・コマンドは、機能によってカテゴリ分けすることができます。カテゴリおよび説明は、次
のとおりです。
□ オプション・コマンド - ソース・テキストの入力フォーマット、ソース・リスティング・オプション、
ページ見出しのタイトル・フィールド、およびコンパイル・オプションを指定します。オプション・コ
マンドの詳細については、7-13 ページの「OPTION コマンド」を参照して下さい。
□ クロスリファレンス・コマンド - プログラム一意名についてのクロスリファレンス情報の生成を制御
します。
□ トグル・コマンド - ソース・テキストの一部に対して選択的なコンパイルを行います。15 個以内の、
トグルと呼ばれるフラグをオン ( セット )、オフ ( リセット )、またはテストすることができます。
□ セクション・コマンド - COPY ステートメントによってアクセスされる、SCREEN COBOL ソース・
ライブラリ内の個々のテキストを識別します。
表 7-1 に、コンパイラ・オプション・コマンドとそのデフォルトを示します。表 7-2 に、コンパイラ・
クロスリファレンス・コマンドとそのデフォルトを示します。表 7-3 に、コンパイラ・トグル・コマンド
を示します。
表 7-1 コンパイラ・オプション・コマンド ( 1 / 2 )
コマンド
デフォルト
ANSI
TANDEM
COMPILE
ERRORS
ERRORS 100
HEADING
LINES
LINES 60
LIST
MAP
NOMAP
NOLIST
LIST
NOMAP
NOSHOWCOPY
SHOWCOPY
NOSMAP
NOSYMBOLS
NOWARN
WARN
OPTION
SHOWCOPY
SMAP
7-6
NOSMAP
426750-001J
第 7 章 コンパイル
表 7-1 コンパイラ・オプション・コマンド ( 2 / 2 )
コマンド
デフォルト
SYMBOLS
NOSYMBOLS
SYNTAX
COMPILE
TANDEM
WARN
表 7-2 コンパイラ・クロスリファレンス・コマンド
コマンド
デフォルト
CROSSREF
NOCROSSREF
NOCROSSREF
表 7-3 コンパイラ・トグル・コマンド
コマンド
デフォルト
ENDIF
IF
IFNOT
RESETTOG
SETTOG
7.3 コンパイラ・コマンドの説明
ここでは、コンパイラ・コマンドをアルファベット順に説明します。
7.3.1 ANSI コマンド
ANSI コマンドは、後続のソース・テキストが ANSI 標準リファレンス・フォーマットであることを指
定します。
ANSI
80 文字より長い行は切り詰められ、短い行は右側に空白が詰められます。マージン R 以降の位置 ( 第 73
カラムから第 80 カラム ) は、識別フィールドになります。このフィールドは、任意の ASCII 文字を含める
ことができますが、コメントとして扱われるので、プログラムの実行には何の影響もありません。
426750-001J
7-7
第 7 章 コンパイル
このコマンドを省略すると、ソース・テキスト・フォーマットは TANDEM になります。
備考: Compaq Inspect デバッグ用ツールを使用して実行する必要があるプログラムについては、シンボル・テー
ブル・ファイルにデータを格納する SYMSERV にコンパイラが必要な情報を渡せるようにするために、
SYMBOLS コンパイル・コマンドを指定することが必要です。ANSI コンパイラ・コマンドも使用されたと
きは、各行についての情報はコンパイラによって生成される行番号のセットによって識別されます。この番
号のセットは、1 から始まって、次の行に進むたびに 1 ずつ増加します。Inspect セッションの間は、ソー
ス・ファイルの行番号を使用して、プログラムのソースの行にアクセスします。SYMSERV を経由してデー
タを識別するのに使用した行番号とソース・ファイルの行番号が同じでないときは、不整合が生じます。
Inspect の SOURCE コマンドを使用すれば、誤ったソース行が表示されます。ソース・ファイルの行番号を
1 ずつ増加するように付け直してからプログラムを再コンパイルすれば、この種の問題は解決します。
7.3.2 COMPILE コマンド
COMPILE コマンドは、コンパイルおよびオブジェクト・ファイルの作成を要求します。
COMPILE
このコマンドと SYNTAX コマンドを省略すると、デフォルトとして COMPILE が使用されます。
7.3.3 CROSSREF コマンド
CROSSREF コマンドは、コンパイルされたプログラム出力にこの SCREEN COBOL プログラムの一意
名のリストを追加することを指定します。このリストは、クロスリファレンスと呼ばれ、一意名がプログ
ラムのどこで記述され、読み取られ、または書き込まれているかを示します。このコマンドには、プログ
ラム一意名を分類するクラスのリストを指定します。クラス・リストから選択することによって、クロス
リファレンス・リストに含める一意名を決定することができます。
デフォルトは NOCROSSREF コマンドで、CROSSREF コマンドは無効になります。
{ CROSSREF [ ONLY
] [ class ] ... }
{
[ INCLUDE ]
}
{
[ EXCLUDE ]
}
{
}
{ NOCROSSREF
}
ONLY
指定したクラスだけの情報を要求します。
INCLUDE
現在のクラス・リストに一意名のクラスを追加します。
EXCLUDE
現在のクラス・リストから一意名を削除します。
class
次に示す SCREEN COBOL 一意名のいずれかを指定します。
7-8
426750-001J
第 7 章 コンパイル
CONDITIONS
条件名を持つ項目で、プログラム内で判定されます。
DATANAMES
VARIABLES
WORKING-STORAGE SECTION で定義されたデータ項目
LABELS
PROCNAMES
段落名および SECTION 名
LITERALS
数字および非数字リテラル
MNEMONICS
表示属性に関連付けられている呼び名
PROGRAMS
呼び出されるプログラム・ユニットの名前
SCREEN
SCREEN SECTION で記述されたスクリーン・グループまたはフィールド
UNREFS
プログラム内で定義されたが参照されていない項目
CROSSREF でオプションとクラスのいずれも指定しないと、次に示すプログラム一意名を含むクロスリ
ファレンス・リストが生成されます。
CONDITIONS
DATANAMES or VARIABLES
LABELS or PROCNAMES
MNEMONICS
PROGRAMS
SCREENS
NOLIST または SYNTAX コマンドのいずれかが SCREEN COBOL ソース・プログラム内またはコンパ
イル時に指定された場合は、クロスリファレンス・リストは生成されません。CROSSREF の詳細な説明に
ついては、『CROSSREF Manual』を参照して下さい。
426750-001J
7-9
第 7 章 コンパイル
7.3.4 ENDIF コマンド
ENDIF コマンドは、先行する IF または IFNOT コマンドの範囲の終わりを示します。
ENDIF toggle-number
toggle-number
IF または IFNOT コマンドで指定された toggle-number です。
7.3.5 ERRORS コマンド
ERRORS コマンドは、コンパイルの際に許されるエラーの最大数を設定します。
ERRORS nnnnn
nnnnn
0 ~ 32,767 の整数です。
このコマンドを省略すると、デフォルトとして 100 エラーが使用されます。
ERROR コマンドで設定した制限を超えると、コンパイルは途中で終了します。
7.3.6 HEADING コマンド
HEADING コマンドは、コンパイル・リストの各ページに現れる標準のページの先頭の見出し部分を指
定の見出しに置き換えるか、または空白にします。
HEADING
[ "character-string" ]
"character-string"
引用符 (") で囲んだ任意の ASCII 文字列です。引用符内には必ず 1 つ以上の文字を指定しなければ
なりません。文字列の中に引用符自体を含める場合は、引用符を 2 つ連続して指定しなければなり
ません。この文字列は、後続のすべてのページの先頭に見出しとして使用されます。
character-string の指定を省略すると、ページの先頭の見出し部分は空白にされます。
7-10
426750-001J
第 7 章 コンパイル
7.3.7 IF コマンド
IF コマンドは、後続のソース・テキストを無視するようにコンパイラに指示します。ただし、SETTOG
コマンドでトグルがオンに指定されている場合は、このコマンドは無効です。
IF toggle-number
toggle-number
1 ~ 15 の整数です。
このコマンドは COPY ステートメントには影響を及ぼしません。COPY ステートメントは、このコマン
ドには関係なく処理されます。
次に、IF コマンドの例を示します。
?RESETTOG 1, 2
.
.
.
?IF 2
.
.
.
text
.
.
.
?ENDIF 2
この例では、RESETTOG コマンドでトグル 2 がオフにされているので、IF 2 コマンドから ENDIF 2 コ
マンドまでのソース・テキストはコンパイルされません。
7.3.8 IFNOT コマンド
IFNOT コマンドは、後続のソース・テキストを無視するようにコンパイラに指示します。ただし、
RESETTOG コマンドまたはデフォルト ( 何もセットしない ) のいずれかによってトグルがオフに指定され
ている場合は、このコマンドは無効です。
IFNOT toggle-number
toggle-number
1 ~ 15 の整数です。
このコマンドは COPY ステートメントには影響を及ぼしません。COPY ステートメントは、このコマン
ドには関係なく処理されます。
次に、IFNOT コマンドの例を示します。
?RESETTOG 1, 2
.
.
.
?IFNOT 1
426750-001J
7-11
第 7 章 コンパイル
.
.
.
text
.
.
.
?ENDIF 1
この例では、RESETTOG コマンドでトグル 1 がオフにされているので、IFNOT 1 コマンドから ENDIF
1 コマンドまでのソース・テキストはコンパイルされます。
7.3.9 LINES コマンド
LINES コマンドは、出力される各ページの行数を設定します。指定の行数を超えると、改ページが行わ
れ、次ページの先頭に標準ページ見出しが表示され、空白行が 2 行出力され、その後に中断された行が続
きます。
LINES nnnnn
nnnnn
10 ~ 32,767 の整数です。
ページングが適用されないコンパイル・リスト・デバイスの場合は、この行制限は無視されます。
このコマンドを省略すると、デフォルトとして LINES 60 が使用されます。
7.3.10 LIST コマンド
LIST コマンドは、コンパイル・リスト・デバイスにソース・リストのイメージを出力します。NOLIST
コマンドは、LIST オプションを無効にします。
{ LIST
}
{ NOLIST }
MAP コマンドは、LIST コマンドが有効なときにだけ、効力があります。
LIST コマンドと NOLIST コマンドを省略すると、デフォルトによって LIST が使用されます。
7.3.11 MAP コマンド
MAP コマンドは、プログラムまたはサブプグラムのソース・テキストの次に、ユーザ定義シンボルの表
を表示します。NOMAP コマンドは、MAP オプションを無効にします。
{ MAP
}
{ NOMAP }
MAP コマンドは、LIST コマンドが有効なときにだけ、効力があります。MAP コマンドは、SYNTAX
オプションが指定された場合は、ステートメント・オフセット・リストを作成しません。
7-12
426750-001J
第 7 章 コンパイル
7.3.12 OPTION コマンド
OPTION コマンドは、ソース・テキストの入力フォーマット、ソース・リスト・オプション、ページ見
出しのタイトル・フィールド、およびコンパイル・オプションを制御します。
[ OPTION ] command-option [ , command-option ] ...
command-option
次に示すコマンドのいずれかを指定します。
ANSI
COMPILE
ERRORS
HEADING
LINES
LIST
MAP
NOLIST
NOMAP
NOSHOWCOPY
NOSMAP
NOSYMBOLS
NOWARN
OPTION
SHOWCOPY
SMAP
SYMBOLS
SYNTAX
TANDEM
WARN
1 つの OPTION コマンドには、使用可能なオプションを任意の順序で、任意に組み合わせて指定するこ
とができます。指定されたオプションは、次のソース・テキスト行の開始時に有効になります。OPTION
コマンドに矛盾する複数のオプションが含まれている場合は、最後に指定されたオプションが有効になり
ます。例えば、次に示す 2 つの OPTION コマンドは、同じ機能を表しています。
OPTION LIST, ERRORS 20, LIST, NOLIST
OPTION ERRORS 20, NOLIST
SCOBOLX の実行コマンドでは、コマンド・オプションおよびコンパイラ・コマンドを区切る分離符と
して使用するコンマとセミコロンは、次のように使い分けられます。
□ OPTION コマンド内でコマンド・オプションを示す場合は、分離符としてコンマ (,) を使用します。
□ コンパイラ・コマンドとして指定する場合は、分離符としてセミコロン (;) を使用します。
例えば、次に示す 2 つのコマンドの意味は同じです。
SCOBOLX / in infile / mprog; OPTION ERROR 20, NOLIST;
SCOBOLX / IN INFILE / mprog; ERROR 20; NOLIST
キーワード OPTION は、必須ではありません。次の例では、OPTION コマンドに ERROR 20 と NOLIST
という 2 つのオプションが示されていますが、OPTION という語は想定されているだけで、記述されてい
ません。この例では、実行コマンドとソース・テキスト記述項の両方が示されています。
SCOBOLX / IN INFILE / ; ERROR 20, NOLIST; CROSSREF
?ERROR 20, NOLIST
?CROSSREF
426750-001J
7-13
第 7 章 コンパイル
7.3.13 RESETTOG コマンド
RESETTOG コマンドは、指定されたすべてのトグルをオフにします。
RESETTOG [ toggle-number [ , toggle-number ] ... ]
toggle-number
1 ~ 15 の整数です。
toggle-number オプションを省略すると、すべてのトグルはオフになります。
7.3.14 SECTION コマンド
SECTION コマンドは、COPY ステートメントによってアクセスされる SCREEN COBOL ソース・ライ
ブラリにある個々のテキストを指定します。SECTION コマンドは、コンパイル・ソース・ファイルのテキ
スト内に現れた場合は、無視されます。
SECTION text-name [ , library-text-format ]
text-name
1 ~ 30 文字の英字、数字、およびハイフンです。ただし、すべて数字ではいけません。
コンパイラは、ライブラリ・テキストのフォーマットは現在のソース・テキストのフォーマットと同じ
であると見なします。このデフォルトのフォーマットは、SECTION コマンドの直後にコンパイラ・コマン
ドを入力することによって上書きすることができますが、ANSI または TANDEM コマンドを使用する方が
このためには便利です。
SECTION コマンドでは、次に示す予約語を指定してはいけません。
ANSI
CHECK
COMPILE
CONDITIONS
DEBUG1
DEBUG2
ENDIF
ERRORS
EXCLUDE
INCLUDE
LABELS
LITERALS
MESSAGES
ONLY
OPTION
PROGRAMS
SCREENS
SYNTAX
TRACE
VARIABLES
7.3.15 SETTOG コマンド
SETTOG コマンドは、指定されたすべてのトグルをオンにします。
SETTOG [ toggle-number [ , toggle-number ] ... ]
toggle-number
1 ~ 15 の整数です。
toggle-number オプションを省略すると、すべてのトグルがオンになります。
7-14
426750-001J
第 7 章 コンパイル
7.3.16 SHOWCOPY コマンド
SHOWCOPY コマンドは、リスト・ファイルにおいてコピーされたステートメントの前に、COPY ス
テートメントをコメント行として表示することを指定します。NOSHOWCOPY コマンドは、SHOWCOPY
コマンドを無効にします。
{ SHOWCOPY
}
{ NOSHOWCOPY }
このコマンドを省略すると、デフォルトとして SHOWCOPY が使用されます。
7.3.17 SMAP コマンド
SMAP コマンドは、プログラムまたはサブプログラムのソース・テキストのリストの後に、記述子マッ
プを作成することを指定します。SMAP コマンドによって作成されるマップは、MAP コマンドによって作
成されるものよりコンパクトで、多くの情報を含んでいます。MAP と SMAP の両方が指定された場合は、
SMAP だけが有効になります。
{ SMAP
}
{ NOSMAP }
このコマンドを省略すると、デフォルトとして NOSMAP が使用されます。
SMAP コマンドは、LIST コマンドが有効なときにだけ、効力があります。SYNTAX オプションが指定
されていると、SMAP コマンドはステートメント・オフセット・リストを作成しません。
7.3.18 SYMBOLS コマンド
SYMBOLS コマンドは、SCREEN COBOL プログラムのシンボル・テーブル・ファイルを作成するよう、
コンパイラに指示します。このファイルは、Inspect デバッグ用ツールでプログラムを検査したりデバッグ
するときに使用します。NOSYMBOLS コマンドは、SYMBOLS コマンドを無効にして、コンパイラがシ
ンボル・テーブル・ファイルを作成しないようにします。
{ SYMBOLS
}
{ NOSYMBOLS }
このコマンドを省略すると、デフォルトとして NOSYMBOLS が使用されます。
SYMBOLS コマンドを指定した場合は、データ項目 ( 基本項目またはグループ項目のいずれか ) は 12,288
文字を超えることはできません。
シンボル・テーブル・ファイルの名前には、SCOBOLX の実行コマンドで使用された名前 ( ルート ) に
SYM を付けたものが使用されます。次の例では、SCOBOLX コンパイラは TESTFILE にあるプログラム
をコンパイルして、MANUFSYM という名前のファイルにシンボル・テーブルを追加します。
SCOBOLX / IN TESTFILE / MANUF; MAP; SYMBOLS
NOSYMBOLS を指定してコンパイルしたプログラムは、多くの場合、SYMBOLS を指定してコンパイ
ルしたプログラムよりかなり小さなラン・ユニットを生成します。NOSYMBOLS を指定した場合は、コン
パイラは参照されなかったデータ宣言に対するデータ記述子をすべて廃棄します。一方、SYMBOLS を指
定した場合は、すべてのデータ記述子がラン・ユニットに残されます。
426750-001J
7-15
第 7 章 コンパイル
7.3.19 SYNTAX コマンド
SYNTAX コマンドは、ソース・テキストの構文チェックだけをするようコンパイラに要求します。オブ
ジェクト・ファイルは生成されません。
SYNTAX
このコマンドと COMPILE コマンドの両方を省略すると、デフォルトとして COMPILE が使用されます。
このコマンドと共に CROSSREF コマンドを指定しても、クロスリファレンス・リストは生成されません。
SYNTAX オプションを指定した場合は、MAP および SMAP コマンドはステートメント・オフセット・
リストを生成しません。
7.3.20 TANDEM コマンド
TANDEM コマンドは、後続のソース・テキストがタンデム標準リファレンス・フォーマットであるこ
とを指定します。
TANDEM
このコマンドと ANSI コマンドの両方を省略すると、デフォルトとして TANDEM が使用されます。
タンデム標準リファレンス・フォーマットの各ソース行には、132 文字まで含めることができます (132
文字を超える部分は、切り詰められます )。このソース・テキストには、ANSI 標準リファレンス・フォー
マットの始めにある 6 文字のシーケンス番号領域および終わりにある 6 文字の識別フィールドに相当する
フィールドは含みません。
7.3.21 WARN コマンド
WARN コマンドは、ソース・テキストの警告レベルのエラー状態を報告させます。NOWARN コマンド
は、WARN オプションを無効にします。
{ WARN
}
{ NOWARN }
このコマンドを省略すると、デフォルトとして WARN が使用されます。
LIST が指定されていない場合は、リファレンス・ポイントを示すために、コンパイラが最後にスキャン
したソース・テキスト行を一緒に表示します。
7-16
426750-001J
第 7 章 コンパイル
7.4 コンパイル統計データ
各コンパイルの終わりに、コンパイルに関する統計データがプリントされます。例:
OBJECT FILE NAME IS $MART.BEN.POBJ
PROGRAM NAME IS EXAMPLE
PROGRAM VERSION IS 1
NO. ERRORS=0;
NO. WARNINGS=0
CODE SIZE=245
RUN UNIT SIZE=748
DATA SIZE=328
NUMBER OF SOURCE LINES READ=147
MAXIMUM SYMBOL TABLE SIZE=4920 WORDS
ELAPSED TIME 0:00:32
OBJECT FILE NAME IS
オ ブ ジ ェ ク ト・フ ァ イ ル 名 の 短 縮 形。こ の 例 で は、プ ロ グ ラ ム の オ ブ ジ ェ ク ト・コ ー ド は、
$MART.BEN サブボリュームの POBJCOD、POBJDIR、および POBJSYM ファイルに入れられます。
PROGRAM NAME IS
プログラムの名前 ( この行は、エラーがなかったときにだけプリントされます )。
PROGRAM VERSION IS
プログラムのバージョン番号 ( この行は、エラーがなかったときにだけプリントされます )。
NO. ERRORS =
発行されたエラー・メッセージの総数。
NO. WARNING =
発行された警告メッセージの総数。
CODE SIZE =
オブジェクト・ファイル内の PROCEDURE DIVISION の全コードのために使用された総バイト数。
RUN UNIT SIZE =
このプログラム・ユニットが POBJCOD ファイルに占める総バイト数。
DATA SIZE =
ユーザが割り当てたワーキング・ストレージとコンパイラが割り当てたワーキング・ストレージの
合計の総バイト数。
NUMBER OF SOURCE LINES READ
SCREEN COBOL コンパイラが読み取ったソース行の総数 (COPY 行を含む )。
426750-001J
7-17
第 7 章 コンパイル
MAXIMUM SYMBOL TABLE SIZE =
コンパイラがシンボル・テーブルのために必要とするワード数 ( これはある一瞬をとらえたワード
数なので、概数に過ぎません )。
ELAPSED TIME コンパイルに要した時間。
7.5 コンパイラの停止
コンパイルは、3 つのコンパイラ・プロセスによって実行されます。正常に完了する前にコンパイルを
停止するには、次のように操作します。
1. BREAK キーを押します。
2. STOP とキー入力して、最初のコンパイラ・プロセス SCOBOLX を停止します。
3. STOP および SCOBOLX2 PID 番号をキー入力するか、PAUSE とキー入力して、2 番目のコンパイラ・
プロセス SCOBOLX2 および 3 番目のコンパイラ・プロセスを停止します。PAUSE とキー入力した場
合は、SCOBOLX2 はエラー・メッセージ (** FAILURE 10 ** COMPILER COMMUNICATION LOST
: 00) を発行してから、停止します。
4. BREAK キーを押して、コマンド・インタープリタに戻ります。
5. STATUS コマンドをキー入力して、不要なコンパイラ・プロセスが停止したことを確認します。
7.6 ディスク・スペースの節約
プログラム開発の間に蓄積することができるオブジェクト・ファイルの数を監視することによって、不
要なディスク・スペースの使用を防止することができます。SCREEN COBOL ソース・プログラムをコン
パイルするたびに、新しいバージョンのオブジェクト・コードがコード・ファイルに追加されて、ディレ
クトリ・ファイルに登録されます。
複数のバージョンの SCREEN COBOL オブジェクト・ファイルを操作して、管理する方法については、
『NonStop Pathway/iTS SCUP リファレンス・マニュアル』を参照して下さい。
7-18
426750-001J
第 7 章 コンパイル
7.7 SCREEN COBOL の制限事項
Compaq NonStop システム・アーキテクチャおよび SCREEN COBOL コンパイラの実装方式のために、
プログラムには以下の制限が課されます。
□ 非数字リテラルは、120 文字を超えることができません。
□ 数字リテラルは、18 桁を超えることができません。
□ 数字データの値は、18 桁を超えることができません。
□ 1 つの SCREEN COBOL プログラム・ユニットの最大合計サイズは、65,408 バイトです。ですから、擬
似コードは、最大 32,767 バイトに制限されます。ただし、データ・サイズには制限がありません。基
本データ項目または参照されるグループ項目の長さが 32,000 バイトを越えないようにすることをお勧
めします。( これらの項目は、WORKING-STORAGE SECTION または LINKAGE SECTION で定義さ
れます。) ただし、擬似コードのために必要なスペースを使用することによって、データが 32,000 バイ
トを超えることは可能です。
□ SEND ステートメントで指定するメッセージまたは応答の最大長は、次に示す PATHCOM コマンドの
SET TCP の 3 つのパラメータのいずれかによって TCP に割り当てられるデータ・スペースを超えるこ
とができません。
●
SERVERPOOL ( サーバ I/O メッセージについての制限 )
●
MAXTERMDATA ( 端末文脈データについての制限 )
●
MAXREPLY ( 応答についての制限 )
これらの制限値については、Pathway システム管理者に問い合わせて下さい。また、メッセージおよび
応答はワーキング・ストレージに入れられるので、ワーキング・ストレージの 32,000 バイトの制限が適用
されます。
□ PERFORM ONE ステートメントの段落の数は、255 を超えることができません。
□ スクリーン項目 (SCREEN SECTION で定義される ) は、長さが 255 文字を超えることができません。
□ LENGTH MUST BE 句 ( スクリーン項目 ) に指定する長さは、255 文字を超えることができません。
□ スクリーン項目は、添え字を 1 つしか付けることができません。データ項目には、最大 3 つの添え字を
付けることができます。
□ PICTURE 句で記述される文字列の長さは、30 文字を超えることができません。30 文字を超えるデー
タ項目は、繰り返し回数を括弧に入れて指定しなければなりません。
□ オーバーレイ・スクリーンは、オーバーレイ領域のサイズを超えることができません。
□ コンパイラがコンパイルの際に書き込む診断メッセージの最大数は、32,767 です。
□ DEPENDING 句に指定するスクリーン・フィールド一意名の最大数は、1 つの RESET、SET、DISPLAY
または TURN ステートメント当たり 127 です。
426750-001J
7-19
第 7 章 コンパイル
( 空白ページ )
7-20
426750-001J
第 8 章 Pathway アプリケーションの例
第 8 章 Pathway アプリケーションの例
この章では、Pathway アプリケーションの例を示します。この例には、PATHMON および PATHCOM
プロセスを生成するコマンド、Pathway をコンフィギュレーションするコマンド、Pathway システムの構成
要素を定義するコマンド、ブロック・モードで作動する端末および会話モードで作動する端末のための一
般的なプログラミング概念を示す 2 つの SCREEN COBOL プログラム、および COBOL で書かれた関連の
サーバ・プログラムが含まれています。
これらの例は、以下の手順に示された順序にしたがうことによって、正確に複製することができます。
1. サンプルの COBOL サーバ・プログラムをコーディングします。
2. サンプルの COBOL サーバ・プログラムをコンパイルして、実行します。Pathway のコンフィギュレー
ションと一致するように、
デフォルトのオブジェクト・ファイル名 RUNUNIT を EXSERV に変更します。
3. SCREEN COBOL アプリケーション・プログラムをコーディングします。
4. サンプルのブロック・モード端末用 SCREEN COBOL アプリケーション・プログラムをコンパイルし
ます。オブジェクト・ファイル名の指定を省略すると、デフォルトとして POBJCOD および POBJDIR
が使用されます。
サンプルの会話モード端末用 SCREEN COBOL アプリケーション・プログラムをコンパイルして、実
行します。( このプログラムは単に説明のためのもので、この章で示したサーバ・プログラムとは通信
しません。)
5. PWCONFIG という名前の Pathway コンフィギュレーション・ファイルをコーディングします。2 つの
SET TERM コマンドで指定されているプロセス名 $term01 および $term02 を、お使いのシステムで有
効な端末名に変更します。操作に支障がなければ、$term02 を指定している 2 番目の SET TERM コマ
ンドのセットを取り除いても構いません。
6. PATHMON および PATHCOM の実行コマンドを含んでいる OBEY ファイルを設定します。PATHMON
名 $PM は、適切な 5 文字の名前に変更することができます。
7. OBEY コマンドを実行します。
8. SCREEN COBOL アプリケーション・プログラムのための PATHCOM RUN コマンドを実行します。
このアプリケーションを設定する前に、以下の規則に注意して下さい。
□ Pathway コンフィギュレーションは、コマンド端末を通して設定します。コマンド端末を、このコン
フィギュレーションに含めることはできません。
□ Pathway システムは、複数の PATHCOM が同時に PATHMON と通信できるように設定しなければな
りません。したがって、SET PATHWAY MAXPATHCOMS コマンドは決して 1 に設定してはいけませ
ん。( デフォルトは、5 です。)
□ コマンド端末から適宜コマンドを実行して、Pathway コンフィギュレーションをオンラインで変更する
ことができます。この操作は、PATHCOM とキー入力して、PATHCOM のプロンプト (=) に応答する
ことによって行うことができます。PATHMON 名が $PM ではない場合は、この PATHCOM コマンド
に $process-name パラメータを含める必要があります。
426750-001J
8-1
第 8 章 Pathway アプリケーションの例
□ コンフィギュレーションされた端末にてコマンド・インタープリタを実行している場合は、その端末で
SCREEN COBOL アプリケーションを起動するときには、コマンド・インタープリタに対して PAUSE
とキー入力する必要があります。
サンプルのブロック・モード端末用 SCREEN COBOL リクエスタ・プログラムは、次に示すベース・ス
クリーンだけを記述しています。このプログラムは、適切なファンクション・キーが押されるまで、名前
および住所の入力を受け入れます。
DEPARTMENT : MKT
PASSWORD :
NAME : ______________________________
ADDR : ____________________
MONTH : FEBRUARY
DAY : 15
YEAR : 92
REPLY F1
F2
F3
F4
-
ENTER
ENTER
CLEAR
RESET
PASSWORD
DATA
INPUT
DATA SCREEN
F5
F6
F7
F16
-
BLINK REPLY
RESET ATTR REPLY
RESET DATA REPLY
EXIT PROGRAM
□ SMITH という名前をキー入力して、F2 キーを押すと、サーバは応答コード 999 およびエラー・コード
1 を返します。SMITH IS ALREADY ON FILE というメッセージが端末の ADVISORY フィールドに表
示されます。
□ JONES という名前をキー入力して、F2 キーを押すと、サーバは応答コード 999 およびエラー・コード
2 を返します。JONES IS ALREADY ON FILE というメッセージが端末の ADVISORY フィールドに表
示されます。
□ オペレータがその他の名前をキー入力して、F2 キーを押すと、サーバは応答コード 0 を返してレコー
ドを書き込みます。入力されたレコードが端末のスクリーンに表示されます。
サンプルの会話モード端末用 SCREEN COBOL リクエスタ・プログラムは、ベース・スクリーンしか記
述していませんが、会話モードの SCREEN COBOL プログラムの特性を十分に示しています。このプログ
ラムは、スクリーン見出しを表示し、オペレータに入力を求め、名前 (NAME) と住所 (ADDR) の入力を受
け入れます。また、このプログラムには機能選択も備わっていて、プログラムで指定された入力制御文字
に応答しますが、サーバの応答は提供されません。
8.1 PATHMON および PATHCOM プロセスの実行
前ページに示したプログラムを実行するには、PATHCOM の実行コマンドを使用します。
PATHMON / NAME $PM, CPU 0, NOWAIT /
PATHCOM / IN PWCONFIG / $PM
PWCONFIG には、次に示すコマンドが含まれています。
SET
SET
SET
SET
8-2
PATHMON
PATHWAY
PATHWAY
PATHWAY
BACKUPCPU
MAXTCPS 1
MAXTERMS 5
MAXSERVERCLASSES 5
426750-001J
第 8 章 Pathway アプリケーションの例
SET PATHWAY
SET PATHWAY
SET PATHWAY
SET PATHWAY
SET PATHWAY
SET PATHWAY
START PATHWAY
RESET TCP
SET TCP
SET TCP
SET TCP
SET TCP
SET TCP
SET TCP
ADD TCP
RESET TERM
SET TERM
SET TERM
SET TERM
SET TERM
ADD TERM
RESET TERM
SET TERM
SET TERM
ADD TERM
RESET PROGRAM
SET PROGRAM
SET PROGRAM
SET PROGRAM
SET PROGRAM
ADD PROGRAM
RESET SERVER
SET SERVER
SET SERVER
SET SERVER
SET SERVER
ADD SERVER
START TCP
START TERM *
MAXSERVERPROCESSES 5
MAXSTARTUPS 5
MAXASSIGNS 5
MAXPARAMS 5
MAXPATHCOMS 3
MAXPROGRAMS 1
COLD !
CPUS 1:2
PROGRAM $SYSTEM.SYSTEM.PATHTCP2
PRI 141
PROCESS $XTCP
TCLPROG pobj
MAXTERMS 5
ex-tcp
FILE $term01
TCP ex-tcp
INITIAL example
TMF OFF
t1
LIKE t1
FILE $term02
t2
TCP ex-tcp
TYPE T16-6520 INITIAL example
ERROR-ABORT ON
TMF OFF
exprog
PROGRAM exserv
CPUS 0:1
NUMSTATIC 1
MAXSERVERS 3
example-server
ex-tcp
8.2 ブロック・モード端末用 SCREEN COBOL プログラム
次に、SCREEN COBOL プログラムおよび関連する COBOL サーバの例を示します。
IDENTIFICATION DIVISION.
(1)
PROGRAM-ID. EXAMPLE.
(1)
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. T16.
OBJECT-COMPUTER. T16,
TERMINAL IS T16-6520.
SPECIAL-NAMES.
F1-KEY IS F1, F2-KEY IS F2, F3-KEY IS F3,
F4-KEY IS F4, F5-KEY IS F5, F6-KEY IS F6,
F7-KEY IS F7, F16-KEY IS F16
ATTENTION IS BLINK, HIDDEN IS HIDDEN.
426750-001J
8-3
第 8 章 Pathway アプリケーションの例
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS.
02 ERROR-MSG
02 PASSWORD
02 DEPT-HEADER
01 EXIT-FLAG
88 EXIT-PROGRAM
01 ENTRY-MSG.
02 PW-HEADER.
04 REPLY-CODE
04 APPLICATION-CODE
04 FUNCTION-CODE
04 TRANS-CODE
04 TERM-ID
04 LOG-REQUEST
02 ENTRY-GROUP.
04 NAME-IN
04 ADDR-IN
04 DATE-GRP.
06 MONTH-IN
06 DAY-IN
06 YEAR-IN
01 ENTRY-REPLY.
02 PW-HEADER.
04 REPLY-CODE
04 FILLER
02 SERVER-RECORD
01 ERROR-REPLY.
02 REPLY-CODE
02 FILLER
02 ERROR-CODE
PIC X(77).
PIC X(3).
PIC X(3).
PIC S9
VALUE 1.
PIC
PIC
PIC
PIC
PIC
PIC
VALUE 0.
S9(4) COMP.
XX.
XX.
99.
X(15).
X.
(2)
(2)
(2)
(2)
(2)
(2)
(2)
(4)
(3)
(3)
(3)
(3)
(3)
PIC A(30).
PIC X(20).
PIC A(10).
PIC 99.
PIC 99.
PIC S9(4) COMP.
PIC X(22).
PIC X(64).
(5)
(5)
(4)
(5)
(5)
(5)
PIC S9(4) COMP.
PIC X(22).
PIC S999 COMP.
(5)
(4)
(5)
(5)
(1) SET TERM INITIAL コマンドで指定されるプログラム名を示します。このプログラムは、端末の起動
時に使用されます。
(2) トランザクション・メッセージの見出しを示します。
(3) この行は、必須ではありません。
(4) Pathway が必要とする応答コードを示します。これらの項目は、COMPUTATIONAL として定義する
必要があります。
(5) サーバと SCREEN COBOL プログラムとの間でやり取りされるデータの量を抑えるために 2 つの応答
メッセージが使用されることを示します。サーバからエラー・コードだけを返す場合は ERRORREPLY を使用し、データを返す場合は ENTRY-REPLY を使用します。
SCREEN SECTION.
01 EXAMPLE-SCREEN BASE SIZE 24, 80.
03 FILLER
AT 1, 20 VALUE "EXAMPLE SCREEN COBOL PROGRAM".(1)
03 FILLER
AT 3, 1
VALUE "DEPARTMENT :".
(2)
03 DEPT-HEADER
AT 3, 14 PIC X(3) FROM DEPT-HEADER OF WS.
(3)
03 FILLER
AT 3, * + 10 VALUE "PASSWORD :".
(4)
03 PASSWORD
AT 3, * + 2 PIC X(3) LENGTH 1 THRU 3, HIDDEN, (5)
UPSHIFT INPUT, MUST BE "AAA", "X", TO PASSWORD OF WS.
(5)
8-4
426750-001J
第 8 章 Pathway アプリケーションの例
03 DATA-IN.
05 FILLER
05 NAME-IN
AT 5, 1
AT 5, 8
05 FILLER
05 ADDR-IN
AT 6, 1
AT 6, 8
03
03
03
03
03
03
03
VALUE "NAME :".
PIC A(30) LENGTH 1 THRU 30
TO NAME-IN OF ENTRY-MSG, FILL "_".
VALUE "ADDR :".
PIC X(20) LENGTH 1 THRU 20
TO ADDR-IN OF ENTRY-MSG, FILL "_".
(6)
(6)
05 DATE-GRP
AT 8, 1.
07 FILLER
AT @, 1 VALUE "MONTH :".
(7)
07 MONTH-IN AT @, * + 2 PIC A(10) LENGTH 1 THRU 10
MUST BE "JANUARY", "FEBRUARY" USING MONTH-IN OF
ENTRY-MSG, UPSHIFT INPUT, VALUE "FEBRUARY".
07 FILLER
AT @, * + 4 VALUE "DAY :".
07 DAY-IN
AT @, * + 2 PIC Z9 LENGTH 1 THRU 2, VALUE "15"
MUST BE 1 THRU 31, USING DAY-IN OF ENTRY-MSG.
07 FILLER
AT @, * + 4 VALUE "YEAR :".
07 YEAR-IN AT @, * + 2 PIC Z9 MUST BE 79, 82, 85 THRU 88
USING YEAR-IN OF ENTRY-MSG, VALUE "85".
FILLER
AT 10, 1 VALUE "REPLY -".
SERVER-RECORD AT 10, * + 2 PIC X(64)
FROM SERVER-RECORD OF ENTRY-REPLY.
FILLER
AT 18, 1 VALUE
"F1 - ENTER PASSWORD
F5 - BLINK REPLY".
FILLER
AT 19, 1 VALUE
"F2 - ENTER DATA
F6 - RESET ATTR REPLY".
FILLER
AT 20, 1 VALUE
"F3 - CLEAR INPUT
F7 - RESET DATA REPLY".
FILLER
AT 21, 1 VALUE
"F4 - RESET DATA SCREEN F16 - EXIT PROGRAM".
ERROR-MSG
AT 24, 2 PIC X(76) ADVISORY
(8)
FROM ERROR-MSG OF WS.
(8)
(1) このリテラルは、スクリーンの 1 行目の第 20 カラムから表示されます。
(2) このリテラルは、スクリーンの 3 行目の第 1 カラムから表示されます。
(3) SCREEN SECTION でデータ名が使用されている場合は、データ名は PIC 句で関連付けられなければ
なりません。FROM ( データ関連付け句 ) は、出力フィールドの関連付けを指定します。この例では、
DEPT-HEADER OF WS の内容がスクリーンの指定の場所に表示されます。
(4) アスタリスク (*) は、現在の位置からの相対位置であることを示します。したがって、リテラル
PASSWORD は、スクリーンの 3 行目の第 26 (16 + 10) カラムに表示されます。
(5) PASSWORD に入力されたデータは、入力時には表示されません。パスワードは、大文字変換され、
値が正しいかチェックされます。パスワードが正しければ、そのパスワードはワーキング・ストレー
ジのデータ名 PASSWORD に転記されます。
(6) 端末から 1 ~ 30 文字の英字をキー入力しなければなりません。入力された文字は、ENTRY-MSG に
転記されます。FILL ( 充填 ) 文字としては、下線 (_) が使用されます。
(7) 単価記号 (@) は、グループのホーム位置からの相対位置であることを示します。このリテラルは、8
行目の第 1 カラムから表示されます。
(8) TCP によって生成される情報およびエラー・メッセージのために使用される ADVISORY フィールド
を示します。プログラマも、このフィールドを使用することができます。
426750-001J
8-5
第 8 章 Pathway アプリケーションの例
PROCEDURE DIVISION.
A-MAIN.
DISPLAY BASE EXAMPLE-SCREEN
MOVE "MKT" TO DEPT-HEADER OF WS.
DISPLAY DEPT-HEADER OF EXAMPLE-SCREEN
ACCEPT PASSWORD OF EXAMPLE-SCREEN UNTIL F1-KEY
PERFORM CASE-MANAGER UNTIL EXIT-PROGRAM.
A-EXIT.
EXIT PROGRAM.
CASE-MANAGER.
ACCEPT DATA-IN OF EXAMPLE-SCREEN UNTIL F2-KEY
ESCAPE ON F3-KEY F4-KEY F5-KEY F6-KEY F7-KEY F16-KEY
PERFORM ONE OF
DATA-ENTERED, CLEAR-INPUT, RESET-DATA, BLINK-REPLY
RESET-ATTR-REPLY, RESET-DATA-REPLY, SET-EXIT
DEPENDING ON TERMINATION-STATUS
DATA-ENTERED.
MOVE SPACES TO PW-HEADER OF ENTRY-MSG.
PERFORM SEND-DATA.
CLEAR-INPUT.
CLEAR INPUT
RESET-DATA.
RESET DATA EXAMPLE-SCREEN
BLINK-REPLY.
TURN ATTENTION IN SERVER-RECORD OF EXAMPLE-SCREEN
RESET-ATTR-REPLY.
RESET ATTR SERVER-RECORD OF EXAMPLE-SCREEN
RESET-DATA-REPLY.
RESET DATA SERVER-RECORD OF EXAMPLE-SCREEN
SET-EXIT.
MOVE 1 TO EXIT-FLAG.
SEND-DATA.
SEND ENTRY-MSG TO "EXAMPLE-SERVER"
REPLY CODE 0
YIELDS ENTRY-REPLY
CODE 999 YIELDS ERROR-REPLY.
IF TERMINATION-STATUS = 2 AND ERROR-CODE = 1
MOVE "SMITH IS ALREADY ON FILE" TO ERROR-MSG OF WS
PERFORM 901-DISPLAY-ADVISORY
ELSE IF TERMINATION-STATUS = 2 AND ERROR-CODE = 2
MOVE "JONES IS ALREADY ON FILE" TO ERROR-MSG OF WS
PERFORM 901-DISPLAY-ADVISORY
ELSE
DISPLAY SERVER-RECORD OF EXAMPLE-SCREEN
901-DISPLAY-ADVISORY.
DISPLAY TEMP ERROR-MSG OF EXAMPLE-SCREEN
TURN TEMP ATTENTION IN ERROR-MSG OF EXAMPLE-SCREEN.
(1)
(2)
(3)
(4)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(1) この行は、スクリーンおよび初期値、FILL 文字、およびデフォルト値を表示します。
(2) DEPT-HEADER の値をスクリーンの 3 行目の第 14 カラムに表示します。
(3) F1 キーが押されると、当該のフィールドが妥当性をチェックされます。データはスクリーンの他の
フィールドにもキー入力することができますが、ここでは PASSWORD フィールドだけが使用されま
す。
(4) UNTIL F2-KEY の指定により、F2 キーが押されるまでデータの入力を待ち、妥当性チェックを実行
します。ファンクション・キーの ESCAPE 指定によって、データが入力されないときは、このステー
トメントは終了します。
8-6
426750-001J
第 8 章 Pathway アプリケーションの例
(5) ACCEPT ステートメントを終了させるために押されたファンクション・キーには、指定された順序に
し た が っ て 位 置 を 示 す 値 が あるので、ACCEPT ステートメントが終了したときに当該の値が
TERMINATION-STATUS 特殊レジスタに記憶されます。
(6) 保護されていないフィールドをすべて消去します。
(7) スクリーンのフィールドを初期値にリセットします。
(8) BLINK 属性をセットして、SERVER-RECORD を点滅させます。
(9) BLINK 属性をリセットして、SERVER-RECORD の点滅を停止します。
(10) SERVER-RECORD のデータ部分を元の値 ( 空白行 ) にリセットします。
(11) 使用するサーバ・クラスを指定します。ワーキング・ストレージにあるデータ名にすることもできます。
(12) SERVER-RECORD を構成するフィールドを表示します。
(13) スクリーンに ERROR-MSG を一時的データとして表示します。
(14) BLINK 属性を一時的属性としてセットし、ERROR-MSG の値を点滅させます。
8.3 会話モード端末用 SCREEN COBOL プログラム
次に、会話モード端末用 SCREEN COBOL プログラムを示します。
IDENTIFICATION DIVISION.
PROGRAM-ID. dconv-exp
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. T16.
OBJECT-COMPUTER. T16, TERMINAL IS CONVERSATIONAL
SPECIAL-NAMES.
BELL IS BELL,
NOBELL IS NOBELL.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 EMPLOYEE-REC.
05 EMP-LAST-NAME
PIC X(10) VALUE SPACES.
05 EMP-FIRST-NAME
PIC X(10) VALUE SPACES.
05 EMP-MIDDLE-INIT
PIC X(02) VALUE SPACES.
05 EMP-ADDR
PIC X(30) VALUE SPACES.
05 EMP-CITY
PIC X(10) VALUE SPACES.
05 EMP-STATE
PIC X(02) VALUE SPACES.
05 EMP-ZIP
PIC 9(05) VALUE ZEROS.
01 WS-ADVISORY
PIC X(70) VALUE SPACES.
01 WS-FUNC
PIC X(06) VALUE SPACES.
88 WS-SEARCH-REQUEST
VALUE "SEARCH".
88 WS-ADD-REQUEST
VALUE "ADD".
88 WS-DELETE-REQUEST
VALUE "DELETE".
88 WS-SHOW-REQUEST
VALUE "SHOW".
88 WS-EXIT-REQUEST
VALUE "EXIT".
01 EXIT-FLAG
PIC 9(01) COMP VALUE ZERO.
88 EXIT-PROGRAM
VALUE 1.
88 INVALID-RESPONSE
VALUE 2.
01 MESSAGE-ID
PIC 9(04) COMP VALUE ZERO.
01 R-CODE
PIC 9(04) COMP VALUE ZERO.
88 SEND-ERROR
VALUE 999.
426750-001J
(1)
(2)
8-7
第 8 章 Pathway アプリケーションの例
(1) SET TERM INITIAL コマンドで指定したプログラム名を指定します。
(2) 会話モード端末のタイプを指定して、SET PROGRAM TYPE および SET TERM TYPE コマンドで指
定した端末タイプを示します。
SCREEN SECTION.
01 EMPLOYEE-REC-SCREEN
*
*
*
*
-
BASE
SIZE 24, 80
FIELD-SEPARATOR ","
GROUP-SEPARATOR ";"
ABORT-INPUT
"AI"
END-OF-INPUT
47
The keyboard character for END-OF-INPUT is "/"
RESTART-INPUT
58, 58.
The keyboard characters for RESTART-INPUT is "::"
05 TITLE
AT 1, 3
VALUE "PERSONNEL SYSTEM EXAMPLE".
05 NAME-PROMPT
AT 2, 1
VALUE "LAST NAME: ".
05 LAST-NAME-FLD
AT 3, 1
PIC X(10)
USING EMP-LAST-NAME
LENGTH 1 THRU 10
PROMPT NAME-PROMPT.
05 FIRST-NAME-PROMPT AT 2, 12 VALUE "FIRST NAME: ".
05 FIRST-NAME-FLD
AT 3, 12 PIC X(10)
USING EMP-FIRST-NAME
LENGTH 1 THRU 10
PROMPT FIRST-NAME-PROMPT.
05 MI-PROMPT
AT 2, 24 VALUE "MI: ".
05 MIDDLE-INIT-FLD
AT 3, 24 PIC X(2)
USING EMP-MIDDLE-INIT
PROMPT MI-PROMPT.
05 ADDR-PROMPT
AT 4, 1
VALUE "ADDRESS: ".
05 ADDR-FLD
AT 4, 11 PIC X(30)
USING EMP-ADDR
PROMPT ADDR-PROMPT.
05 CITY-PROMPT
AT 5, 1
VALUE "CITY: ".
05 CITY-FLD
AT 5, 11 PIC X(10)
USING EMP-CITY
PROMPT CITY-PROMPT.
05 STATE-PROMPT
AT 5, 22 VALUE "STATE: ".
05 STATE-FLD
AT 5, 30 PIC X(10)
USING EMP-STATE
PROMPT STATE-PROMPT.
05 ZIP-PROMPT
AT 5, 45 VALUE "ZIP: ".
05 ZIP-FLD
AT 5, 51 PIC Z(5)
USING EMP-ZIP
PROMPT ZIP-PROMPT.
05 TYPEAHEAD-MSG
AT 10, 1 VALUE "TO GET TYPEAHEAD, ENTER
" LAST NAME, FIRST NAME, MIDDLE INITIAL."
05 PROMPT-AREA AREA AT 23, 1 SIZE 1, 80.
05 ADVISORY-FLD
AT 24, 1 PIC X(70)
ADVISORY FROM WS-ADVISORY.
(1)
(1)
(2)
(2)
(1)
(1)
(3)
(4)
(4)
01 EMPLOYEE-REC-PROMPT OVERLAY
SIZE 1, 80.
05 FUNC-PROMPT
AT 1, 1 VALUE "(FUNCTION) SEARCH, ADD,
"DELETE, SHOW, EXIT: ".
05 FUNC-INPUT
AT 1, 45 PIC X(06)
TO WS-FUNC
UPSHIFT INPUT
LENGTH MUST BE 3 THRU 6
PROMPT FUNC-PROMPT.
8-8
426750-001J
第 8 章 Pathway アプリケーションの例
(1) この行は、入力制御文字についてのコメント行です。SCREEN COBOL プログラムの実行には影響を
与えません。
(2) ACCEPT ステートメントの処理中に端末入力を制御する入力制御文字を再定義します。
(3) スクリーンの最初の PROMPT 句です。この句の値は、端末がこのフィールドのデータを受入れ可能
になると表示されます。
(4) スクリーンの始めに表示される見出しに含まれる先行入力メッセージを識別します。
PROCEDURE DIVISION.
BEGIN-PROGRAM.
DISPLAY BASE EMPLOYEE-REC-SCREEN.
DISPLAY TITLE, TYPEAHEAD-MSG.
PERFORM LOOP UNTIL EXIT-PROGRAM.
EXIT-PROG.
EXIT PROGRAM.
LOOP.
ACCEPT EMPLOYEE-REC-SCREEN
UNTIL INPUT
ESCAPE ON ABORT.
IF TERMINATION-STATUS = 1
PERFORM FUNCTION-DISPLAY
PERFORM INIT-EMPLOYEE-REC
ELSE
PERFORM EXIT-IT.
FUNCTION-DISPLAY.
DISPLAY OVERLAY EMPLOYEE-REC-PROMPT AT PROMPT-AREA.
MOVE 2 TO EXIT-FLAG.
PERFORM OPERATION UNTIL NOT INVALID-RESPONSE.
OPERATION.
ACCEPT EMPLOYEE-REC-PROMPT
UNTIL INPUT
ESCAPE ON ABORT.
IF TERMINATION-STATUS = 1
PERFORM FUNCTION-SELECTION
ELSE
PERFORM EXIT-IT.
FUNCTION-SELECTION.
MOVE ZERO TO EXIT-FLAG.
IF WS-SEARCH-REQUEST
PERFORM SEARCH-IT
ELSE
IF WS-ADD-REQUEST
PERFORM ADD-IT
ELSE
IF WS-DELETE-REQUEST
PERFORM DELETE-IT
ELSE
IF WS-SHOW-REQUEST
PERFORM SHOW-IT
ELSE
IF WS-EXIT-REQUEST
PERFORM EXIT-IT
ELSE
PERFORM INVALID-FUNCTION.
426750-001J
8-9
第 8 章 Pathway アプリケーションの例
SEARCH-IT.
MOVE 1 TO MESSAGE-ID.
SEND MESSAGE-ID, EMPLOYEE-REC TO "USER-SERVER"
REPLY CODE 1 YIELDS R-CODE, EMPLOYEE-REC
CODE 2 YIELDS R-CODE
ON ERROR MOVE 999 TO R-CODE.
IF NOT SEND-ERROR
PERFORM ONE OF DISPLAY-EMPLOYEE-REC, EMPLOYEE-NOT-FOUND
DEPENDING ON R-CODE
ELSE
PERFORM SEND-ERROR-NOTICE.
ADD-IT.
MOVE 2 TO MESSAGE-ID.
SEND MESSAGE-ID, EMPLOYEE-REC TO "USER-SERVER"
REPLY CODE 1, 3 YIELDS R-CODE
ON ERROR MOVE 999 TO R-CODE.
IF NOT SEND-ERROR
PERFORM ONE OF EMPLOYEE-ADDED, EMPLOYEE-ALREADY-EXISTS
DEPENDING ON R-CODE
ELSE
PERFORM SEND-ERROR-NOTICE.
DELETE-IT.
MOVE 3 TO MESSAGE-ID.
SEND MESSAGE-ID, EMPLOYEE-REC TO "USER-SERVER"
REPLY CODE 1, 2 YIELDS R-CODE
ON ERROR MOVE 999 TO R-CODE.
IF NOT SEND-ERROR
PERFORM ONE OF EMPLOYEE-DELETED, EMPLOYEE-NOT-FOUND
DEPENDING ON R-CODE
ELSE
PERFORM SEND-ERROR-NOTICE.
SHOW-IT.
MOVE 4 TO MESSAGE-ID.
SEND MESSAGE-ID, EMPLOYEE-REC TO "USER-SERVER"
REPLY CODE 1, 2 YIELDS R-CODE
ON ERROR MOVE 999 TO R-CODE.
IF NOT SEND-ERROR
PERFORM ONE OF DISPLAY-EMPLOYEE-REC, EMPLOYEE-NOT-FOUND
DEPENDING ON R-CODE
ELSE
PERFORM SEND-ERROR-NOTICE.
EXIT-IT.
MOVE 1 TO EXIT-FLAG.
DISPLAY-EMPLOYEE-REC.
DISPLAY EMPLOYEE-REC-SCREEN.
EMPLOYEE-NOT-FOUND.
MOVE "EMPLOYEE DOES NOT EXIST" TO WS-ADVISORY.
DISPLAY ADVISORY-FLD.
EMPLOYEE-ADDED.
MOVE "EMPLOYEE ADDED" TO WS-ADVISORY.
DISPLAY ADVISORY-FLD.
EMPLOYEE-ALREADY-EXISTS.
MOVE "EMPLOYEE ALREADY EXISTS" TO WS-ADVISORY.
DISPLAY ADVISORY-FLD.
EMPLOYEE-DELETED.
MOVE "EMPLOYEE DELETED" TO WS-ADVISORY.
DISPLAY ADVISORY-FLD.
INIT-EMPLOYEE-REC.
MOVE SPACES TO EMPLOYEE-REC.
MOVE ZEROES TO EMP-ZIP.
8-10
426750-001J
第 8 章 Pathway アプリケーションの例
INVALID-FUNCTION.
MOVE 2 TO EXIT-FLAG.
MOVE "INVALID FUNCTION REQUESTED" TO WS-ADVISORY.
DISPLAY ADVISORY-FLD.
SEND-ERROR-NOTICE.
MOVE "ERROR ACCESSING PERSONNEL SYSTEM" TO WS-ADVISORY.
DISPLAY ADVISORY-FLD.
8.4 COBOL で作成されたサーバ・プログラム
次に、COBOL で作成されたサーバ・プログラムの例を示します。
IDENTIFICATION DIVISION.
PROGRAM-ID. EXAMPLE-SERVER.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. TANDEM/16.
OBJECT-COMPUTER. TANDEM/16.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT MESSAGE-IN, ASSIGN TO $RECEIVE
FILE STATUS IS RECEIVE-FILE-STATUS.
SELECT MESSAGE-OUT, ASSIGN TO $RECEIVE
FILE STATUS IS RECEIVE-FILE-STATUS.
DATA DIVISION.
FILE SECTION.
FD MESSAGE-IN
LABEL RECORDS ARE OMITTED.
01 ENTRY-MSG.
02 PW-HEADER.
04 REPLY-CODE
PIC S9(4) COMP.
04 APPLICATION-CODE PIC XX.
04 FUNCTION-CODE
PIC XX.
04 TRANS-CODE
PIC 99.
04 TERM-ID
PIC X(15).
04 LOG-REQUEST
PIC X.
02 ENTRY-GROUP.
04 NAME-IN
PIC A(30).
04 ADDR-IN
PIC X(20).
04 DATE-GRP.
06 MONTH-IN
PIC A(10).
06 DAY-IN
PIC 99.
06 YEAR-IN
PIC 99.
FD MESSAGE-OUT
LABEL RECORDS ARE OMITTED
RECORD CONTAINS 1 TO 88 CHARACTERS.
01 ENTRY-REPLY.
02 PW-HEADER.
04 REPLY-CODE
PIC S9(4) COMP.
04 FILLER
PIC X(22).
02 SERVER-RECORD
PIC X(64).
01 ERROR-REPLY.
02 REPLY-CODE
PIC S9(4) COMP.
02 FILLER
PIC X(22).
02 ERROR-CODE
PIC S999 COMP.
WORKING-STORAGE SECTION.
01 RECEIVE-FILE-STATUS.
02 STAT-1
PIC 9.
88 CLOSE-FROM-REQUESTOR VALUE 1.
02 STAT-2
PIC 9.
426750-001J
8-11
第 8 章 Pathway アプリケーションの例
PROCEDURE DIVISION.
BEGIN-COBOL-SERVER.
OPEN INPUT MESSAGE-IN.
OPEN OUTPUT MESSAGE-OUT SYNCDEPTH 1.
PERFORM B-TRANS UNTIL CLOSE-FROM-REQUESTOR.
STOP RUN.
B-TRANS.
MOVE SPACES TO ENTRY-REPLY, ENTRY-MSG.
READ MESSAGE-IN, AT END STOP RUN.
MOVE PW-HEADER OF MESSAGE-IN TO PW-HEADER OF MESSAGE-OUT.
IF NAME-IN = "SMITH"
MOVE 999 TO REPLY-CODE OF ERROR-REPLY
MOVE 1 TO ERROR-CODE
WRITE ERROR-REPLY
ELSE IF NAME-IN = "JONES"
MOVE 999 TO REPLY-CODE OF ERROR-REPLY
MOVE 2 TO ERROR-CODE
WRITE ERROR-REPLY
ELSE
MOVE 0 TO REPLY-CODE OF ENTRY-REPLY
MOVE ENTRY-GROUP TO SERVER-RECORD
WRITE ENTRY-REPLY.
8-12
426750-001J
付録 A ADVISORY メッセージ
付録 A ADVISORY メッセージ
Pathway 端末制御プロセス (TCP) は、スクリーンの ADVISORY フィールドにメッセージを表示します。
ADVISORY フィールドは、SCREEN SECTION の ADVISORY フィールド特性句で定義される英数字の出
力フィールドです。このフィールドに表示されるメッセージは、主として入力チェックの際に検出された
エラーについて記述したものです。標準メッセージのテキストは、そのメッセージを発生させた原因を簡
潔に示しています。
4.1 メッセージと記述
メッセージのテキストおよびメッセージを参照するために TCP が内部的に使用する番号を、番号順に示
します。メッセージのリストは、独自の変換プロシージャを開発する際の参考にすることができます。
1
REQUIRED FIELD MISSING
意 味:このフィールドには、長さがゼロの入力は認められない。
2
PREVIOUS FIELD MISSING
意 味: DEPENDING 句を指定した必須の OCCURS フィールドに対してオカレンスがあるが、前のオ
カレンスがない。
3
EARLIER FIELD MISSING
意 味: DEPENDING 句を指定した OCCURS フィールドに対して、同じ項目による異なる反復フィー
ルドが必要であったが、このオカレンス番号に対応するものがない。当該のフィールドのオカ
レンスは存在する。
4
FIELD TOO SHORT
意 味:FILL 文字および空白を取り除いた後のフィールド・データが、認められているものより短い。
426750-001J
付録 A-1
付録 A ADVISORY メッセージ
5
FIELD NOT CORRECT LENGTH
意 味:入力が所定の長さではない。
6
FIELD TOO LONG
意 味:入力が長すぎる。通常、端末のフォーマッティングが破損したときに発生する。
7
WRONG FORMAT
意 味:英数字項目への入力が PICTURE 句にしたがっていない。
8
WRONG FORMAT: DIGIT EXPECTED
意 味:英数字項目への入力で、PICTURE 句に記号 9 が指定されているところに数字がない。
9
WRONG FORMAT: LETTER EXPECTED
意 味:英数字項目への入力で、PICTURE句に記号Aが指定されているところに英字または空白がない。
10
INVALID NUMBER FORMAT
意 味:数字項目への入力が PICTURE 句にしたがっていない。
11
VALUE WRONG
意 味:入力された数値が、フィールドおよび受取り側データ項目に認められている値より大きい。
付録 A-2
426750-001J
付録 A ADVISORY メッセージ
12
VALUE INCORRECT
意 味:この入力値は、MUST BE 句で認められていない。
13
MESSAGE:
意 味:このテキストは、通知メッセージの接頭辞として使用される。
14
DEP OCCUR FLD ERR-INPUT RESTARTED
意 味: OCCURS DEPENDING ON 句が同一の DEPEND データ項目を参照する複数のスクリーン一意
名について、以下のいずれかのエラーが検知された。
□ DEPEND データ項目値が、スクリーン一意名に認められる最大の要素数より大きい。
□ 必須のスクリーン一意名フィールドが、関連する DEPEND データ項目の値よりも少ない回
数しか繰り返されていない。
この ADVISORY メッセージは、会話モードの端末にだけ表示されます。
15
ABORT NOT ALLOWED
意 味: ESCAPE ON ABORT が指定されていない。したがって、ABORT-INPUT 制御文字が有効でな
い。ACCEPT 処理は、この制御文字が入力された位置から継続される。
この ADVISORY メッセージは、会話モードの端末にだけ表示されます。
17
WRONG FORMAT: DBCS EXPECTED
意 味: 2 バイト・データを必要とするフィールドに、1 バイト ( 英数字 ) データが入力された。
426750-001J
付録 A-3
付録 A ADVISORY メッセージ
18
WRONG FORMAT: KATAKANA NOT ALLOWED
意 味:カタカナをサポートするようコンフィギュレーションされていないデバイスで、カタカナ・デー
タが入力された。
19
WRONG FORMAT: INVALID ASIAN CHARACTERS
意 味:変換ルーチンが処理できない文字が入力された。
A.2 ADVISORY メッセージ・ルーチンの修正と置換
ユーザは、Pathway の ADVISORY メッセージ・ルーチンを修正したり、独自の ADVISORY メッセー
ジ・ルーチンと置き換えることができます。
メッセージのテキストを変更したり、独自の変換プロシージャで使用するためにエラー・メッセージを
追加したい場合は、TLIB にて提供されている既存の ADVISORY メッセージ・ルーチンを修正することが
できます。このルーチンは、pTAL (Portable Transaction Application Language) で書かれています。例 A-1
に、サンプルのソース・リスティングを示します (TLIB にある実際のソースとは若干異なっています )。
このルーチンを置き換えるには、代替のプロシージャを pTAL で記述する必要があります。ルーチンを
修正または置換のいずれを行うにしても、コンパイルした後で nld ユーティリティを使用して、作成した
プロシージャを元来の TCP ユーザ・ライブラリ・オブジェクト・ファイル PATHTCPL にリンクする必要
があります。
備考: D40 より前のリリースでは ADVISORY メッセージ・ルーチンは TAL で記述されていましたが、D40 以降
のリリース ( すべての G シリーズ・リリースを含む ) では、ADVISORY メッセージ・ルーチンは pTAL で
記述する必要があります。pTAL ではアーキテクチャ固有の TAL 構成を取り除いて、新しい構成に置き換え
ています。ユーザは TAL および pTAL コンパイラの両方でコンパイルすることができる ADVISORY メッ
セージ・ルーチンを記述することができ、Pathway/iTS の異なるリリースで同じソース・コードを使用する
ことができます。
既存の ADVISORY メッセージ・ルーチンを pTAL に変換して Pathway/iTS の D40 以降のバージョンで使
用する場合は、詳細については『pTAL Conversion Guide』および『pTAL Reference Manual』を参照して
下さい。多くの ADVISORY メッセージ・ルーチンは簡潔ですので、変更は必要ありません。
次に、ADVISORY メッセージ・プロシージャの宣言の例を示します。
PROC ADVISORY^MESSAGE( MSGNUM, BUF, MESSLEN );
INT
MSGNUM; ! THE ERROR NUMBER
STRING .BUF;
! PLACE MESSAGE HERE
INT
.MESSLEN; ! RETURN MESSAGE LENGTH HERE (MAX 255)
付録 A-4
426750-001J
付録 A ADVISORY メッセージ
MSGNUM パラメータは、この付録の ADVISORY メッセージのリストに付いている内部的なメッセー
ジ番号、またはユーザ独自の変換プロシージャによって返される内部的なメッセージ番号です。ユーザ独
自の変換プロシージャを使用するときに新しいエラー・メッセージ番号を使用する場合は、100 より大き
い番号を使用して、将来の Pathway のエラー番号と重複しないようにして下さい。
BUF パラメータは、MSGNUM に関連するテキストが格納されるストリング・バッファです。このテキ
ストは、255 文字より長くすることはできません。
MESSLEN パラメータは、返されるテキストの長さに設定します。
標準の ADVISORY メッセージ・プロシージャを修正するか、新しいものをコーディングした後で、次
に示すコマンドを使用して、pTAL コンパイラでプロシージャをコンパイルし、すべてのコンパイルエラー
を取り除き、ユーザ・ライブラリを構築して下さい。
NLD advisory-msg-object $volume.ZPATHWAY.TCPLIB
-UL-O native-user-library
advisory-msg-object
pTAL オブジェクト・ファイルです。
$volume
インストレーション・サブボリューム ZPATHWAY が置かれるボリュームです。
native-user-library
TCP が使用する TNS/R ネイティブのユーザ・ライブラリ・オブジェクトです。
例 A-1 は、標準 ADVISORY^MESSAGE プロシージャのためのソース・リスティングのサンプルです。
このリスティングを変更して、英語以外の言語版を作成することができます。
426750-001J
付録 A-5
付録 A ADVISORY メッセージ
例 A-1 ADVISORY^MESSAGE ソース・リスティング ( 1/2 )
PROC ADVISORY^MESSAGE( ERRNUM, BUF, MESSLEN );
INT
ERRNUM; ! THE ERROR NUMBER
STRING .BUF;
! PLACE MESSAGE HERE
INT
.MESSLEN; ! RETURN MESSAGE LENGTH HERE (MAX 255)
BEGIN
! RETURN THE MESSAGE (AND ITS LENGTH) FOR THE GIVEN ERROR NUMBER.
! THE MESSAGES SHOULD PROBABLY BE LIMITED TO 38 CHARACTERS TO ALLOW
! THE FULL MESSAGE TO FIT ON MOST SCREENS.
!
INT LEN;
INT OFFSET;
STRING MSGTEXT = ’P’ := [
!....+....1....+....2....+....3....+....4
!REQMISS
= 1! "REQUIRED FIELD MISSING",
!PREVMISS
= 2! "PREVIOUS FIELD MISSING",
!OTHERMISS
= 3! "EARLIER FIELD MISSING",
!SHORTLEN
= 4! "FIELD TOO SHORT",
!LENWRONG
= 5! "FIELD NOT CORRECT LENGTH",
!LONGLEN
= 6! "FIELD TOO LONG",
!UNEXPECTCHAR = 7! "WRONG FORMAT",
!NOTDIGIT
= 8! "WRONG FORMAT: DIGIT EXPECTED",
!NOTALPHA
= 9! "WRONG FORMAT: LETTER EXPECTED",
!....+....1....+....2....+....3....+....4
!INVALIDNUMFORM= 10! "INVALID NUMBER FORMAT",
!VALOVFL
= 11! "VALUE WRONG",
!ILLVAL
= 12! "VALUE INCORRECT",
!TELLHEAD
= 13! "MESSAGE: ",
!DEPOCCUR
= 14! "DEP OCCUR FLD ERR-INPUT RESTARTED",
!CANTABORT
= 15! "ABORT NOT ALLOWED",
!FIELDABSENT
= 16! "FIELD IS ABSENT",
!NOTALLDBCS
= 17! "WRONG FORMAT: DBCS EXPECTED",
!NOKATAKANA
= 18! "WRONG FORMAT: KATAKANA NOT ALLOWED",
!INVALIDASIAN = 19! "WRONG FORMAT: INVALID ASIAN CHARACTERS",
" " ];
LITERAL
! OFFSETS INTO MSGTEXT
OFF^01 = 0,
OFF^02 = OFF^01 + 22,
OFF^03 = OFF^02 + 22,
OFF^04 = OFF^03 + 21,
OFF^05 = OFF^04 + 15,
OFF^06 = OFF^05 + 24,
OFF^07 = OFF^06 + 14,
OFF^08 = OFF^07 + 12,
OFF^09 = OFF^08 + 28,
OFF^10 = OFF^09 + 29,
OFF^11 = OFF^10 + 21,
OFF^12 = OFF^11 + 11,
OFF^13 = OFF^12 + 15,
OFF^14 = OFF^13 + 9,
OFF^15 = OFF^14 + 33,
OFF^16 = OFF^15 + 17,
OFF^17 = OFF^16 + 15,
OFF^18 = OFF^17 + 27,
OFF^19 = OFF^18 + 34,
OFF^LAST= OFF^19 + 38,
LAST^ERR=
19;
! LAST ERR # IN TABLE
付録 A-6
!15!
!27!
!34!
!38!
426750-001J
付録 A ADVISORY メッセージ
例 A-1 ADVISORY^MESSAGE ソース・リスティング ( 2/2 )
INT MSGOFFSET = ’P’ :=
0, OFF^01,
OFF^05, OFF^06,
OFF^10, OFF^11,
OFF^15, OFF^16,
[
OFF^02,
OFF^07,
OFF^12,
OFF^17,
OFF^03,
OFF^08,
OFF^13,
OFF^18,
OFF^04,
OFF^09,
OFF^14,
OFF^19, OFF^LAST
];
IF ERRNUM <= LAST^ERR THEN
BEGIN
OFFSET:= MSGOFFSET[ ERRNUM ];
LEN
:= MSGOFFSET[ ERRNUM+1 ] - OFFSET;
END
ELSE
LEN:= 0;
IF LEN THEN
BUF ’:=’ MSGTEXT[ OFFSET ] FOR LEN
ELSE
BEGIN
BUF ’:=’ "-ERROR ######-";
CALL NUMOUT( BUF[7], ERRNUM, 10, 6 );
LEN:= 14
END;
MESSLEN:= LEN;
END; !ADVISORY^MESSAGE!
426750-001J
付録 A-7
付録 A ADVISORY メッセージ
( 空白ページ )
付録 A-8
426750-001J
付録 B 診断スクリーン
付録 B 診断スクリーン
診断スクリーンは、エラーが発生または処理が中断されたことを、端末に通知するために表示されます。
診断スクリーンは、PATHCOM SET TERM コマンドの DIAGNOSTIC パラメータがオフに設定されていな
いときに表示されます。このパラメータがオン ( デフォルト ) に設定されている場合は、特殊レジスタ
DIAGNOSTIC-ALLOWED は初期化されて YES になります。
診断スクリーンが表示された後に、スクリーン・リカバリが起動されます。PRINT SCREEN 処理の際に
エラーが発生したために診断スクリーンが表示された場合は、スクリーン・リカバリが特に重要になりま
す。デフォルトの診断スクリーンは、次のような形式をしています。
PATHWAY ERROR REPORT: timestamp
TERMINAL: termname
diagnostic-message
[ device-name ]
[ retry-info ]
□
device-name のデフォルトの値 :
PRINTER: filename
□
retry-info のデフォルトの値 :
PRESS f1 TO RETRY,
f2 TO ABORT
f1 = T16-6510、T16-6520、T16-6530、および T16-6540 端末の F1
1 = IBM-3270 端末の PA1
f2 = T16-6510、T16-6520、T16-6530、および T16-6540 端末の F2
2 = IBM-3270 端末の PA2
標準の診断メッセージおよびその意味は、次のとおりです。
PRINTER BUSY
意 味: PRINT SCREEN ステートメントの出力先であるプリント・デバイスは、現在使用中である。
PRINTER REQUIRES ATTENTION
意 味: PRINT SCREEN ステートメントの出力先であるプリント・デバイスを READY 状態にする必要
がある。
TERMINAL STOPPED BY PROGRAM
意 味:最高位のプログラム・ユニットが EXIT されたため、端末が停止した。
426750-001J
付録 B-1
付録 B 診断スクリーン
TERMINAL STOPPED BY SYSTEM OPERATOR
意 味:システム・オペレータからのコマンドによって、端末が停止した、または処理が中断した。
TERMINAL SUSPENDED BY SYSTEM OPERATOR
意 味:システム・オペレータからのコマンドによって、端末が中断した。
TERMINAL SUSPENDED FOR SYSTEM ERROR
意 味:プログラムの実行中にエラーが発生したため、端末が中断した。
TERMINAL STOPPED FOR SYSTEM ERROR
意 味:プログラムの実行中にエラーが発生したため、端末が中断した。端末がリスタートされる可能
性はない。
代替の診断メッセージ・ルーチンの使用法
Pathway が生成する診断メッセージを、例えば、英語以外の別の言語で表示することができます。メッ
セージを変更するには、PATHTCP ルーチンである DIAGNOSTIC^MESSAGE を、ユーザが作成して同じ
名前を指定したルーチンに置き換えることが必要です。この付録で先に説明した ADVISORY^MESSAGE
プロシージャを置き換える方法と同じようにして行うことができます。
DIAGNOSTIC^MESSAGE プロシージャの宣言は、次のとおりです。
PROC DIAGNOSTIC^MESSAGE( DIAG^FORMAT,MESSAGE,MSGLEN,CONTEXT );
INT
.EXT DIAG^FORMAT( DIAG^FORMAT^DEF );
! Byte addressable diagnostic info struct.
STRING .MESSAGE; ! Returned --Message to display (byte addr).
INT
.MSGLEN; ! Returned --Length in bytes of message.
INT
.EXT CONTEXT;
このプロシージャは、1 回の呼び出しでスクリーンを 1 行初期化するので、繰り返し呼び出されます。
DIAG^FORMAT パラメータについては例 B-1 に説明がありますが、このパラメータはエラー状態および
スクリーンを構築する順序を定義します。CONTEXT パラメータは、あるスクリーンを初期化するために
連続的にプロシージャを呼び出しても変更されない、1 語の記憶領域を提供します。このパラメータは、初
期化処理の最初の呼び出しが行われる前にゼロに設定されます。
付録 B-2
426750-001J
付録 B 診断スクリーン
例 B-1 診断メッセージ生成のための DIAG^FORMAT パラメータ
STRUCT DIAG^FORMAT^DEF( * );
BEGIN
STRING CLASS;
STRING SUBCLASS;
INT
ROW;
INT
ERRTYPE;
STRING
STRING
INT
INT
STRING
INT
INT
STRING
INT
END;
LOG^TERM^NAME[ 0:14 ];
TERM^PRINTER[ 0:35 ];
ERRNUM;
ERRINFO;
PUNAME[ 0:30 ];
PUVERSION;
INSTR^ADDR;
INSTR^CODE[ 0:19 ];
CONTEXT;
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
- ALL STRING ARRAYS ARE BLANK PADDED.
CLASS 0 = IBM3270, 1 = T16-6510,
2 = T16-6520.
SUBCLASS FOR IBM-3270 (SCREEN SIZE).
0 = 24 X 80 (NOT IBM^3270),
1 = 12 X 40,
2 = 24 X 80,
3 = 24 X 80 - ALT 32 X 80,
4 = 24 X 80 - ALT 43 X 80,
4 = 24 X 80 - ALT 12 X 80,
ROW OF SCREEN FORMAT [1:NROWS].
SEE DIAG^ROW^??? BELOW.
ERROR TYPE [1:4].
SEE DIAG^ERRTYPE^??? BELOW.
TERMINAL PATHWAY NAME.
PRINTER NAME, EXTERNAL FORM.
ERROR NUMBER OF SUSPENSION CAUSE.
ADDITIONAL ERROR INFO.
PROGRAM-UNIT NAME.
VERSION OF PROGRAM UNIT.
ADDRESS OF INSTRUCTION AT SUSP.
INSTRUCTION AT SUSPENSION.
ONE WORD OF USER CONTEXT.
LITERAL ! PATHWAY DEFINED DIAGNOSTIC DISPLAY ROWS.
!
1
2
3
3
DIAG^ROW^NULL
= 0, !
1........0.........0.........0.......8
DIAG^ROW^HEADER
= 1, ! HEADER - "PATHWAY(TM) ERROR REPORT ddMONyy,hh:mm"
DIAG^ROW^TERMNAME = 3, ! TERM
- "TERM: term-name"
DIAG^ROW^ERRTYPE
= 5, ! ERROR - "TERMINAL STOPPED BECAUSE OF ERROR".
DIAG^ROW^DEVNAME
= 6, ! DEVNAME- " PRINTER: $LP".
DIAG^ROW^RETRYINFO = 7; ! RETRY - " PRESS F1 TO RETRY, F2 TO ABORT"
LITERAL ! DIAGNOSTIC DISPLAY ERROR TYPES.
DIAG^ERRTYPE^STOP^BY^PROG
= 1, ! TERM STOPPED BY PROGRAM.
DIAG^ERRTYPE^STOP^BY^OP
= 2, ! TERM STOPPED BY OPERATOR.
DIAG^ERRTYPE^ABRT^BY^OP
= 3, ! TERM ABORTED BY OPERATOR.
DIAG^ERRTYPE^SUSP^BY^ERR
= 4, ! TERM SUSPENDED BECAUSE OF ERROR.
DIAG^ERRTYPE^SUSP^BY^ERR^NRS = 5, ! TERM SUSPENDED BECAUSE OF ERROR, NOT
!
RESUMABLE.
DIAG^ERRTYPE^SUSP^BY^OP
= 6, ! TERM SUSPENDED BY OPERATOR.
DIAG^ERRTYPE^NOT^READY
= 7, ! PRINTER NOT READY.
DIAG^ERRTYPE^BUSY
= 8; ! PRINTER BUSY.
診断メッセージの変更
標準の DIAGNOSTIC^MESSAGE プロシージャのソース・リスティングを変更して、英語以外の言語版
を作成することができます。例 B-2 に、このソース・リスティングの例を示します。
426750-001J
付録 B-3
付録 B 診断スクリーン
例 B-2 DIAGNOSTIC^MESSAGE ソース・リスティング ( 1/3 )
PROC DIAGNOSTIC^MESSAGE( DIAG^FORMAT, MESSAGE, MSGLEN, CONTEXT );
INT
.EXT DIAG^FORMAT ( DIAG^FORMAT^DEF ); ! DIAGNOSTIC !
STRING .MESSAGE; ! RETURNED - MESSAGE TO BE DISPLAYED (IN LOWER 32K).
INT
.MSGLEN; ! RETURNED - LENGTH IN BYTES OF MESSAGE.
INT
.EXT CONTEXT; ! ONE WORD OF "OWN" STORAGE. SET TO ZERO ON FIRST
! CALL OF DIAGNOSTIC DISPLAY SEQUENCE. !
BEGIN
!---------------------------------------------------------------------------!
! This procedure is used to format a row of diagnostic display text.
! It is called once for each row of the display.
!
!---------------------------------------------------------------------------STRING .S;
INT(32) S32; ! receives MOVE address !
INT TS[0:2];
INT SUBPROC ASCII^TIMESTAMP ( TS , ARRAY ) ;
INT
.TS;
! TIMESTAMP TO BE CONVERTED.
STRING .ARRAY; ! TARGET OF CONVERSION.
BEGIN
!---------------------------------------------------------------------------!
! THIS PROCEDURE CONVERTS THE TIMESTAMP FROM INTERNAL TO THE FOLLOWING
! EXTERNAL FORM: "ddMMMyy,hh:mm:ss"
!
! RETURNS - LENGTH OF TIMESTAMP STRING.
!
!---------------------------------------------------------------------------INT T[0:6]; ! RETURN ARRAY FOR INTERNAL TIME.
STRING
MONTH[3:38] = ’P’ := "JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC";
ARRAY := " ";
ARRAY[1] ’:=’ ARRAY FOR 15;
CALL CONTIME( T , TS[0] , TS[1] , TS[2] );
CALL NUMOUT(ARRAY,T[2],10,2);
! DAY.
ARRAY[2] ’:=’ MONTH[T[1]*3] FOR 3; ! MONTH.
CALL NUMOUT(ARRAY[5],T,10,4);
! YEAR.
ARRAY[5] ’:=’ ARRAY[7] FOR 2;
ARRAY[7] := ",";
! ,
CALL NUMOUT(ARRAY[8],T[3],10,2);
! HOUR.
ARRAY[10] := ":";
! :
CALL NUMOUT(ARRAY[11],T[4],10,2);
! MIN.
ARRAY[13] := ":";
! :
CALL NUMOUT(ARRAY[14],T[5],10,2);
! SEC.
RETURN 16;
END;! ASCII^TIMESTAMP!
付録 B-4
426750-001J
付録 B 診断スクリーン
例 B-2 DIAGNOSTIC^MESSAGE ソース・リスティング ( 2/3 )
MSGLEN:= 0;
IF DIAG^FORMAT.ROW = DIAG^ROW^HEADER THEN
BEGIN
MESSAGE ’:=’ "PATHWAY ERROR REPORT: " -> @S;
CALL TIMESTAMP( TS );
@S:= @S[ ASCII^TIMESTAMP( TS, S ) ];
MSGLEN:= @S ’-’ @MESSAGE;
END
ELSE
IF DIAG^FORMAT.ROW = DIAG^ROW^TERMNAME THEN
BEGIN
MESSAGE ’:=’ "TERMINAL: " -> @S;
S ’:=’ DIAG^FORMAT.LOG^TERM^NAME FOR 15 -> S32;
! Compiler required INT(32) to hold address here. !
@S := $INT ( S32 );
RSCAN S[-1] WHILE " " -> @S;
MSGLEN:= @S[ 1 ] ’-’ @MESSAGE;
END
ELSE
IF DIAG^FORMAT.ROW = DIAG^ROW^ERRTYPE THEN
BEGIN
!
1
2
3
3
!1........0.........0.........0.......8
IF DIAG^FORMAT.ERRTYPE = DIAG^ERRTYPE^STOP^BY^PROG THEN
MESSAGE ’:=’ "TERMINAL STOPPED BY PROGRAM" -> @S
ELSE
IF DIAG^FORMAT.ERRTYPE = DIAG^ERRTYPE^STOP^BY^OP OR
DIAG^FORMAT.ERRTYPE = DIAG^ERRTYPE^ABRT^BY^OP THEN
MESSAGE ’:=’ "TERMINAL STOPPED BY SYSTEM OPERATOR" -> @S
ELSE
IF DIAG^FORMAT.ERRTYPE = DIAG^ERRTYPE^SUSP^BY^ERR THEN
MESSAGE ’:=’ "TERMINAL SUSPENDED FOR SYSTEM ERROR" -> @S
ELSE
IF DIAG^FORMAT.ERRTYPE = DIAG^ERRTYPE^SUSP^BY^ERR^NRS THEN
MESSAGE ’:=’ "TERMINAL STOPPED FOR SYSTEM ERROR" -> @S
ELSE
IF DIAG^FORMAT.ERRTYPE = DIAG^ERRTYPE^SUSP^BY^OP THEN
MESSAGE ’:=’ "TERMINAL SUSPENDED BY SYSTEM OPERATOR" -> @S
ELSE
IF DIAG^FORMAT.ERRTYPE = DIAG^ERRTYPE^NOT^READY THEN
MESSAGE ’:=’ "PRINTER REQUIRES ATTENTION" -> @S
ELSE
IF DIAG^FORMAT.ERRTYPE = DIAG^ERRTYPE^BUSY THEN
MESSAGE ’:=’ "PRINTER BUSY" -> @S;
MSGLEN:= @S ’-’ @MESSAGE;
END
426750-001J
付録 B-5
付録 B 診断スクリーン
例 B-2 DIAGNOSTIC^MESSAGE ソース・リスティング ( 3/3 )
ELSE
IF DIAG^FORMAT.ROW = DIAG^ROW^DEVNAME AND
( DIAG^FORMAT.ERRTYPE = DIAG^ERRTYPE^NOT^READY OR
DIAG^FORMAT.ERRTYPE = DIAG^ERRTYPE^BUSY ) THEN
BEGIN
IF DIAG^FORMAT.TERM^PRINTER <> " " THEN
BEGIN
MESSAGE ’:=’ " PRINTER: " -> @S;
S ’:=’ DIAG^FORMAT.TERM^PRINTER FOR 36 -> S32;
! Compiler required INT(32) to hold address here. !
@S := $INT ( S32 );
RSCAN S[-1] WHILE " " -> @S;
MSGLEN:= @S[1] ’-’ @MESSAGE;
END;
END
ELSE
IF DIAG^FORMAT.ROW = DIAG^ROW^RETRYINFO AND
( DIAG^FORMAT.ERRTYPE = DIAG^ERRTYPE^NOT^READY OR
DIAG^FORMAT.ERRTYPE = DIAG^ERRTYPE^BUSY ) THEN
BEGIN
MESSAGE ’:=’ " PRESS " -> @S;
IF DIAG^FORMAT.CLASS = 0 THEN
S ’:=’ "PA1" -> @S
ELSE
S ’:=’ "F1" -> @S;
S ’:=’ " TO RETRY, " -> @S;
IF DIAG^FORMAT.CLASS = 0 THEN
S ’:=’ "PA2" -> @S
ELSE
S ’:=’ "F2" -> @S;
S ’:=’ " TO ABORT" -> @S;
MSGLEN:= @S ’-’ @MESSAGE;
END;
END;!DIAGNOSTIC^MESSAGE!
付録 B-6
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
付録 C SCREEN COBOL コンパイラ診断メッセージ
SCREEN COBOL コンパイラは、ソース・テキストまたはコンパイル・プロセスでの問題を報告するた
めに、次に示す 3 種類の診断メッセージを生成します。
□ WARNING ( 警告 ) メッセージ -疑わしい状態を報告するメッセージであり、コード生成には影響があ
りません。このメッセージは、SCREEN COBOL 言語の規約からのわずかな逸脱を報告するものから、
プログラムが意図したものとは別の意味にコンパイルされてしまう可能性があるような重大な規約違
反を報告するものまであります。WARNING メッセージの説明には、簡潔な説明、回復処置、または
コンパイラによる仮定条件が含まれています。「第 7 章 コンパイル」で説明したように、NOWARN
コンパイラ・コマンドを使用して、WARNING メッセージが表示されないようにすることができます。
□ ERROR ( エラー ) メッセージ - SCREEN COBOL の構文または意味上の重大な違反を報告します。コ
ンパイラは、コード生成を停止し、それまでに生成したコードを削除します。なお、コンパイル処理自
体は、構文をチェックするために継続されます。また、エラー・ポイントにおいてコンパイラが取得し
た情報は不完全または不正確であるため、以降の構文チェックでは、正しい構文でもエラーとされるこ
とがあります。
□ FAILURE ( 障害 ) メッセージ -コンパイル処理が継続できないような重大な問題を報告します。それ
までに生成したコードは削除されます。
WARNING メッセージおよび ERROR メッセージのほとんどは、ソース・テキストの特定の部分または
特定のユーザ定義項目に関するものです。コンパイラは、次のようにして、エラーの場所を表示します。
□ 問題がローカル・エラーのときは、メッセージの直前のソース行に脱字記号 (^) を表示します。この場
合、エラーのある言語要素は、直前のソース行の脱字記号が表示された場所またはそれより左側の場所
にあります。場合によっては、直前に表示されたソース行の 1 つ前の行にあることもあります。
□ プ ロ グ ラ ム 全 体 を 検 査 し な い と わ か ら な い よ う な 問 題 に つ い て は、メ ッ セ ー ジ の 直 前 の 行 に
「PROBLEM AT OR NEAR LINE nnnnn」と表示します。これは、問題の前段の部分を行番号で示した
ものです。問題の原因 ( または、相互に関係するいくつかの原因の 1 つ ) が示された行の付近に存在し
ます。
□ メッセージの最後にユーザ定義の名前が表示されている場合は、示されたユーザ定義項目に問題があり
ます。
SCREEN COBOL コンパイラのエラー・メッセージは、SCOBOLX の実行コマンドの OUT パラメータ
で指定されたファイルまたはプリント・デバイスに書き込まれます。FAILURE メッセージの場合は、さら
にホーム端末にも送信されます。次ページ以降の個々の診断メッセージの説明では、
「意味」欄に問題の詳
細な説明や違反のあった言語規約について示します。同じメッセージがいくつかの問題に対応している場
合には、問題別に意味を説明します。
426750-001J
付録 C-1
付録 C SCREEN COBOL コンパイラ診断メッセージ
番号があるすべてのメッセージでは、問題の種類を示す FAILURE、WARNING、または ERROR の語
が前後をアスタリスクで囲まれてメッセージの前に付けられます。例:
** FAILURE nnn **
** WARNING nnn **
** ERROR nnn **
0
TOO MANY ERRORS
種 類: FAILURE
意 味:エラー診断の数が指定の制限を超えた。デフォルトの制限は、100。
1
UNABLE TO INVOKE COMPILER PROCESS
種 類: FAILURE
意 味:コンパイラが、そのプロセスのいずれかを起動することができない。NEWPROCESS プロシー
ジャから返されたエラー・コード ( ビット 0 ~ 7) がメッセージに付加される。
2
UNABLE TO OPEN $RECEIVE
種 類: FAILURE
意 味:コンパイラが、$RECEIVE ファイルを開くことができない。オペレーティング・システムから
返されたエラー・コードがメッセージに付加される。
3
UNABLE TO OPEN COMMUNICATION FILE
種 類: FAILURE
意 味:コンパイラが、プロセス間通信ファイルを開くことができない。オペレーティング・システム
から返されたエラー・コードがメッセージに付加される。
付録 C-2
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
4
UNABLE TO OPEN (SOURCE/LIST) FILE
種 類: FAILURE
意 味:コンパイラが、指定されたファイルを開くことができない。オペレーティング・システムから
返されたエラー・コードがメッセージに付加される。
5
UNABLE TO USE (SOURCE/LIST) FILE
種 類: FAILURE
意 味:次のいずれかの状態が存在する。
□ ソース・ファイルに読取り権限がない、またはリスト・ファイルに書込み権限がない。
□ ソース・ファイル (EDIT ファイル ) へのアクセスが失敗した。ファイルへのアクセスが失敗
したときに返されたエラー・コードがメッセージに付加される。
□ リスト・ファイルのレコード長が 40 バイト未満である、または、リスト・デバイスがプリ
ンタまたはプロセスであるが初期制御オペレーションが失敗した。
6
UNABLE TO CREATE WORK FILE
種 類: FAILURE
意 味:コンパイラが、ワーク・ファイルのいずれかを作成することができない。オペレーティング・
システムから返されたエラー・コードがメッセージに付加される。
7
UNABLE TO OPEN WORK FILE
種 類: FAILURE
意 味:コンパイラが、ワーク・ファイルのいずれかを開くことができない。オペレーティング・シス
テムから返されたエラー・コードがメッセージに付加される。
426750-001J
付録 C-3
付録 C SCREEN COBOL コンパイラ診断メッセージ
8
UNABLE TO OPEN COPY FILE
種 類: FAILURE
意 味:コンパイラが、COPY ライブラリ・ファイルを開くことができない。オペレーティング・シス
テムから返されたエラー・コードがメッセージに付加される。
9
UNABLE TO USE COPY FILE
種 類: FAILURE
意 味:次のいずれかの状態が存在する。
□ デフォルトの COPY ライブラリ・ファイル名が有効なファイル名ではない。
□ COPY ライブラリ・ファイルが EDIT ファイルではない、またはこのコンパイルの開始後に
修正された。
□ COPY ライブラリへのアクセスが失敗した。ファイルへのアクセスに失敗したときに返され
たエラー・コードがメッセージに付加される。
10
COMPILER COMMUNICATION LOST
種 類: FAILURE
意 味:コンパイラ・プロセス同士の通信が失敗した。オペレーティング・システムから返されたエ
ラー・コードがメッセージに付加される。コードが 0 のときは、コンパイラ・プロセスのいず
れかが異常終了した。
11
(SOURCE/LIST) FILE (READ/WRITE) FAILURE
種 類: FAILURE
意 味:コンパイラが、指定されたファイルにアクセスできない。オペレーティング・システムから返
されたエラー・コードがメッセージに付加される。
付録 C-4
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
12
SOURCE FILE EDITREAD FAILURE
種 類: FAILURE
意 味:ソース・ファイルに出された読取りが失敗した。ファイルへのアクセスに失敗したときに返さ
れたエラー・コードがメッセージに付加される。
13
COPY FILE EDITREAD FAILURE
種 類: FAILURE
意 味: COPY ライブラリ・ファイルの読取りが失敗した。ファイルへのアクセスに失敗したときに返
されたエラー・コードがメッセージに付加される。
14
UNABLE TO CREATE RUN UNIT FILE
種 類: FAILURE
意 味:コンパイラが、オブジェクト・ファイルを作成することができない。オペレーティング・シス
テムから返されたエラー・コードがメッセージに付加される。
15
UNABLE TO OPEN RUN UNIT FILE
種 類: FAILURE
意 味:コンパイラが、オブジェクト・ファイルを開くことができない。オペレーティング・システム
から返されたエラー・コードがメッセージに付加される。
16
FAILURE IN USING OR ALLOCATING EXTENDED SEGMENT
種 類: FAILURE
意 味:メモリまたはディスク容量が不足しているため、コンパイラが拡張セグメントを割り当てるこ
とができない。
426750-001J
付録 C-5
付録 C SCREEN COBOL コンパイラ診断メッセージ
17
COMPILER LOGIC ERROR
種 類: FAILURE
意 味:内部整合性チェックによって、コンパイラのロジックにエラーが見つかった。タンデム担当者
に連絡して下さい。
18
DICTIONARY OVERFLOW
種 類: FAILURE
意 味:現在のプログラム・ユニットで定義されている項目の数に対して、コンパイラ・ディクショナ
リ・スペースが不足している。MEM パラメータをより大きな値に設定して SCREEN COBOL
コンパイラを起動すれば、エラーが解決する可能性がある。MEM パラメータに 64 を指定して
もこのエラーが発生するときは、プログラムをより小さいプログラム・ユニットに分割する必
要がある。
19
FILE ERROR ON WORK FILE
種 類: FAILURE
意 味:コンパイラ・ワーク・ファイルのオペレーションが失敗した。オペレーティング・システムか
ら返されたエラー・コードがメッセージに付加される。
20
RUN UNIT OVERFLOW
種 類: FAILURE
意 味:コード・スペースとデータ・ディスクリプタ領域の総量がオーバフローを起こした。ワーキン
グ・ストレージにあるユーザ・データ・スペースが、コンパイラによって監視されない。
21
CONTROL DATA SPACE OVERFLOW
種 類: FAILURE
意 味:各プログラム・ユニットに対して、制御のために使用する補助データ・スペースを SCREEN
COBOL コンパイラは割り当てる。これらの制御データ・スペースの合計が、SCREEN COBOL
で利用できる最大値を超えている。
付録 C-6
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
22
PROGRAM CODE SPACE OVERFLOW
種 類: FAILURE
意 味:単一のプログラム・ユニットに割り当てられるコード・スペースまたはオブジェクト・ファイ
ル全体での総コード・スペースのいずれかが、SCREEN COBOL で利用できる最大値を超えて
いる。
23
FILE ERROR ON RUN UNIT FILE
種 類: FAILURE
意 味:オブジェクト・ファイルへのオペレーションが失敗した。オペレーティング・システムから返
されたエラー・コードがメッセージに付加される。
25
INTERPROCESS MESSAGE OVERFLOW
種 類: FAILURE
意 味:ソース行の長さが、入力バッファ・サイズを超えた。
26
MISSING QUOTE CHARACTER
種 類: ERROR
意 味:非数字リテラルの終わりの引用符がない。
27
NULL LITERAL
種 類: ERROR
意 味:非数字リテラルに 1 つも文字がない ( つまり、値がない )。
426750-001J
付録 C-7
付録 C SCREEN COBOL コンパイラ診断メッセージ
28
LITERAL EXCEEDS 120 CHARACTERS
種 類: ERROR
意 味:非数字リテラルに 120 を超える文字が含まれている。
29
LITERAL EXCEEDS 18 DIGITS
種 類: ERROR
意 味:数字リテラルが 18 桁を超えている。
30
WORD EXCEEDS 30 CHARACTERS
種 類: ERROR
意 味: SCREEN COBOL の 1 つの語 (word) が 30 文字を超えている。
31
NOT SUPPORTED
種 類: WARNING
意 味: SCREEN COBOL は、ANSI COBOL 言語のいくつかのオプション要素をサポートしていない。
このメッセージは次に示す言語要素のいずれかの可能性を指摘しているが、これらは通常、プ
ログラムを正しく実行するために不可欠な要件ではない。
□ 再実行機能
□ ファイル・ラベル (SCREEN COBOL にはファイルを扱う機能はない )
□ 複数のシステム名が指定された ASSIGN 句 (NO ASSIGN)
31
NOT SUPPORTED
種 類: ERROR
意 味: SCREEN COBOL は、ANSI COBOL 言語のいくつかのオプション要素をサポートしていない。
付録 C-8
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
32
ILLEGAL CONTEXT FOR RESERVED WORD
種 類: WARNING
意 味: SCREEN COBOL の予約語が、COPY ステートメントにおいてテキスト名またはライブラリ名
として使用されている。
32
ILLEGAL CONTEXT FOR RESERVED WORD
種 類: ERROR
意 味:示された SCREEN COBOL の予約語は、この文脈では使用することができない。ユーザ定義名
として予約語を定義しようとすると、このメッセージの原因となる。
33
ILLEGAL CHARACTER
種 類: ERROR
意 味:示された文字は、この文脈では使用することができない。この文字が印字不能文字であること
があるので、文字の内部値がメッセージに示される。
34
TOKEN EXCEEDS 120 CHARACTERS
種 類: ERROR
意 味:文字列と見なされる記述項が、120 文字を超えている。その文字列がいくつかの連続した言語
要素で構成されているときは、文字列に空白を挿入して言語要素を分離することによって、問
題を解消することができる。
35
BLANK CONTINUATION LINE
種 類: WARNING
意 味:継続行と指定されたソース行に、空白しか存在しない。
426750-001J
付録 C-9
付録 C SCREEN COBOL コンパイラ診断メッセージ
36
ILLEGAL INDICATOR CHARACTER
種 類: WARNING
意 味:次のいずれかの状態が存在する。
□ ソース行の標識フィールドに、- * / ? ( ハイフン、アスタリスク、斜線、疑問符 ) または空
白以外の文字が存在する。
□ IDENTIFICATION DIVISION の段落のコメント記述項の一部として継続行が指定されてい
る。
37
MISSING SEPARATOR
種 類: WARNING
意 味:次のいずれかの状態が存在する。
□ 文字列の後に分離符がない。
□ コンマ、セミコロン、またはピリオドの後に空白がない。
38
UNEXPECTED TEXT
種 類: ERROR
意 味:次のいずれかの状態が存在する。
□ 同一のソース行で、SECTION 見出しまたは DIVISION 見出しの後に他のテキストが続いて
いる。
□ 同一のソース行で、IDENTIFICATION DIVISION の PROGRAM-ID 段落のプログラム名の
後に他のテキストが続いている。
□ IDENTIFICATION DIVISION の見出しまたは PROGRAM-ID 段落の後には、
IDENTIFICATION DIVISION の段落見出しまたは ENVIRONMENT DIVISION の見出しを
続けなければならない。さらにこの指定は、ソース行の領域 A から始めなければならない。
39
UNEXPECTED END OF TEXT
種 類: ERROR
意 味: 4 つの必須の DIVISION が指定される前に、ソース・テキストが終わっている。
付録 C-10
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
40
INCORRECT NUMBER OF PARAMETERS
種 類: ERROR
意 味: CALL ステートメントの USING 句で指定されたオペランドの数が、その CALL ステートメン
トが起動する SCREEN COBOL サブプログラムの PROCEDURE DIVISION の見出しの USING
オプションで指定された名前の数と一致しない。
41
NAME CONFLICT
種 類: ERROR
意 味:次のいずれかの状態が存在する。
□ あるクラスでのユーザ定義名の定義が、別のクラスでの既に定義されている名前と矛盾す
る。
□ 新しいデータ項目の名前が、完全に修飾したとしても、既に定義されているデータ項目の名
前と区別することができない。
42
AMBIGUOUS REFERENCE
種 類: ERROR
意 味:リファレンスの修飾が不十分なため、プログラム・ユニット内で一意のオブジェクトを識別す
ることができない。
43
NON-STANDARD ALPHABET NOT SUPPORTED
種 類: WARNING
意 味:ある句で EBCDIC が指定されているが、EBCDIC はサポートされていない。
426750-001J
付録 C-11
付録 C SCREEN COBOL コンパイラ診断メッセージ
43
NON-STANDARD ALPHABET NOT SUPPORTED
種 類: ERROR
意 味:次のいずれかの状態が存在する。
□ このプログラムで使用されている文字の大小順序が、標準ではない。
□ 整数値が有効な値の範囲外である。範囲は、特定の文脈に応じて異なる。
44
SYNTAX ERROR DETECTED AT TOKEN: xxxxx
種 類: ERROR
意 味:標識行によって示されたトークンに、構文エラーがあった。コンパイラはトークン
xxxxx を
修正しようとしたが、修正できなかった。コンパイラは、エラー 48 が示すトークンに達するま
で、後続のソース・コードを検査して、無視した。
45
SYNTAX ERROR REPLACING UNEXPECTED TOKEN BY xxxxx
種 類: ERROR
意 味:標識行によって示されたトークンに、構文エラーがあった。コンパイラは、トークン
xxxxx
を挿入してそのエラーを修正しようとした。コンパイラがエラーを正しく修正したかどうか、
プログラムと照合して確認する必要がある。
46
SYNTAX ERROR - INSERTING MISSING TOKEN: xxxxx
種 類: ERROR
意 味:標識行によって示されたトークンに、構文エラーがあった。コンパイラは、トークン
xxxxx
を挿入してそのエラーを修正した。通常、いくつかの修正方法の 1 つが選択され、実行される。
コンパイラがエラーを正しく修正したかどうか、プログラムと照合して確認する必要がある。
付録 C-12
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
47
SYNTAX ERROR - DELETING UNEXPECTED TOKEN: xxxxx
種 類: ERROR
意 味:標識行によって示されたトークンに、構文エラーがあった。コンパイラは、トークン
xxxxx
を削除してそのエラーを修正しようとした。コンパイラがエラーを正しく修正したかどうか、
プログラムと照合して確認する必要がある。
48
PARSING RESUMED AT TOKEN: xxxxx
種 類: WARNING
意 味:このメッセージは、エラー 44、45、46、および 47 の後に表示され、コンパイラが、エラーを
回復しようとして、エラーがあったトークンからトークン xxxxx の間のすべてのトークン
( ただし、トークン xxxxx は含まない ) を無視したことを示す。このメッセージが表示された
場合は、コンパイラによるエラーの修正は、通常は好ましいものではなく、プログラムのエラー
を調べて適切な修正処置を決定する必要がある。
49
END-OF-FILE ENCOUNTERED DURING RECOVERY
種 類: FAILURE
意 味:ソース・コードの終わり近くで、恐らく構文エラーがあった。エラー 44 は、エラーが発生した
場所を示す。エラーの後にソース・コードが僅かしかないので、コンパイラはこのエラーを修
正することができない。
50
EXPECTED ’IDENTIFICATION’
種 類: ERROR
意 味: SCREEN COBOL で記述されたプログラム・ユニットは、IDENTIFICATION DIVISION の見出
しで始まらなけらばならない。また、予約語 IDENTIFICATION は、ソース行の領域 A で開始
されなければならない。
426750-001J
付録 C-13
付録 C SCREEN COBOL コンパイラ診断メッセージ
51
EXPECTED UNSIGNED INTEGER
種 類: ERROR
意 味:次のいずれかの状態が存在する。
□ この文脈では、数字リテラルは符号なし整数でなければならない。
□ この文脈では、符号なし整数リテラルだけが許される。
52
0 NOT PERMITTED IN THIS CONTEXT
種 類: ERROR
意 味:示された整数リテラルは、この文脈ではゼロであってはならない。
53
INTEGER NOT IN EXPECTED RANGE
種 類: ERROR
意 味:次のいずれかの状態が存在する。
□ 整数リテラルの値が、この文脈では小さ過ぎる。
□ 整数リテラルの値が、この文脈では大き過ぎる。
54
ILLEGAL RANGE
種 類: ERROR
意 味:次のいずれかの状態が存在する。
□ 数字範囲の最初の値が、最後の値を越えている。
□ 非数字範囲の最初の値が、最後の値より大きい。
付録 C-14
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
55
OUT OF ORDER
種 類: WARNING
意 味:指定 (phrase)、句 (clause)、または段落 (paragraph) の位置が、SCREEN COBOL 言語の構文規
則にしたがっていない。
55
OUT OF ORDER
種 類: ERROR
意 味:次のいずれかの状態が存在する。
□ REDEFINES 句は、データ記述項の最初の句でなければならない。
□ DATA DIVISION の SECTION の順序が正しくない。
56
DUPLICATE PHRASE
種 類: ERROR
意 味:示された句 (phrase) は、前に指定されているものと機能が重複している。
57
DUPLICATE CLAUSE
種 類: ERROR
意 味:示された文節 (clause) は、前に指定されているものと機能が重複している。
58
DUPLICATE PARAGRAPH
種 類: ERROR
意 味:示された段落 (paragraph) 見出しは、前に指定されているものと機能が重複している。
426750-001J
付録 C-15
付録 C SCREEN COBOL コンパイラ診断メッセージ
59
DUPLICATE SECTION
種 類: ERROR
意 味:示された SECTION 見出しは、前に指定されているものと機能が重複している。
61
EXPECTED COMMAND WORD
種 類: ERROR
意 味:コンパイラ・コマンド行は、コマンドのキーワードまたは OPTION コマンドで定義したコマン
ド・オプションのいずれかで始まっていなければならない。
62
EXPECTED QUOTED STRING
種 類: ERROR
意 味: HEADING コマンド・オプションのヘッディング値は、引用符で囲まれていなければならない
( つまり、非数字リテラル )。
63
EXPECTED COMMA
種 類: ERROR
意 味:次のいずれかの状態が存在する。
□ コンパイラ・コマンド・オプションは、コンマで区切られていなければならない。
□ SETTOG または RESETTOG コマンドのトグル番号は、コンマで区切られていなければな
らない。
64
MISSING TEXT NAME
種 類: ERROR
意 味:次のいずれかの状態が存在する。
□ SECTION コマンドでテキスト名が指定されていない。
□ COPY ステートメントで指定されたテキスト名が、コピー・ライブラリで見つからない。
付録 C-16
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
65
COMMAND NOT PERMITTED AFTER OPTION
種 類: ERROR
意 味:コマンド・キーワードが 1 つ以上のコマンド・オプションの後に指定されている。各コマンド
行には、1 つのコマンドしか指定することができない。
66
TEXT NOT PERMITTED AFTER COMMAND
種 類: ERROR
意 味:コマンドの後に、余分なテキストが指定されている。各コマンド行には、1 つのコマンドしか
指定することができない。
68
COMMAND NOT COMPATIBLE WITH PREVIOUS COMMANDS
種 類: WARNING
意 味: SYNTAX および SYMBOLS コマンドが、両方とも使用されている。
70
MISSING PROGRAM ID
種 類: ERROR
意 味: IDENTIFICATION DIVISION に必須の PROGRAM-ID 段落が指定されていない。
71
MISSING CONFIGURATION SECTION
種 類: ERROR
意 味: ENVIRONMENT DIVISION に必須の CONFIGURATION SECTION が指定されていない。
426750-001J
付録 C-17
付録 C SCREEN COBOL コンパイラ診断メッセージ
72
MISSING SOURCE COMPUTER PARAGRAPH
種 類: WARNING
意 味: CONFIGURATION SECTION には、SOURCE-COMPUTER 段落が指定されていなければなら
ない。デフォルトとして、SOURCE-COMPUTER. TANDEM/16 が使用される。
73
MISSING OBJECT COMPUTER PARAGRAPH
種 類: WARNING
意 味: CONFIGURATION SECTION には、OBJECT-COMPUTER 段落が指定されていなければなら
ない。
75
ILLEGAL EXTERNAL FILE NAME FORM
種 類: ERROR
意 味:外部ファイル名を内部ファイル名に変換しようとしたが、失敗した。
76
MISSING CONDITION NAME
種 類: WARNING
意 味:条件名のないスイッチが見つかった。
77
ILLEGAL CURRENCY SYMBOL
種 類: ERROR
意 味:指定された代替の通貨記号が 1 文字ではない、または指定された文字が代替の通貨記号として
認められている記号ではない。
付録 C-18
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
94
ALPHABET NAME NOT FOUND
種 類: ERROR
意 味:示された名前は定義されていない、または英字名ではない。
111
CLAUSE NOT PERMITTED FOR THIS ENTRY
種 類: ERROR
意 味:示された句が、それが認められていないレベル番号の記述項に含まれている。
112
NOT PERMITTED IN THIS SECTION
種 類: ERROR
意 味:初期値を定義している VALUE 句が、DATA DIVISION の LINKAGE SECTION で指定されて
いる。
113
ILLEGAL LEVEL NUMBER
種 類: ERROR
意 味:レベル番号が 66、77、88、または 01 ~ 49 の範囲にない。不正な番号は、コンパイラによって
50 に変換される。
114
INCONSISTENT LEVEL NUMBER
種 類: ERROR
意 味:レベル番号が、同一のデータ構造内で前に指定されているデータ記述項のレベル番号より小さ
い。( レベル番号は、同一のデータ構造内で前に指定されているデータ記述項のレベル番号より
大きいか、それと等しくなければならない。)
426750-001J
付録 C-19
付録 C SCREEN COBOL コンパイラ診断メッセージ
115
MISSING 01 LEVEL ENTRY
種 類: ERROR
意 味: 02 ~ 49 の範囲のレベル番号が、レベル番号 01 のデータ記述項の下位に指定されていない。つ
まり、1 つのデータ構造内にない。
116
PRECEDED BY VARIABLE OCCURRENCE TABLE
種 類: ERROR
意 味:同一のデータ構造内では、可変反復テーブルのデータ記述項 ( 反復回数の範囲を指定した
OCCURS 句を含むもの ) の後に、より低いレベル番号を持つデータ記述項を指定することはで
きない。
117
NOT PRECEDED BY CONDITIONAL VARIABLE
種 類: ERROR
意 味:条件名 ( レベル番号 88 で定義される名前 ) は、その条件名でテストされるデータ項目の記述項
の後に定義しなければならない。間にあるデータ記述項も、レベル番号 88 でなければならない。
118
NOT PRECEDED BY RECORD
種 類: ERROR
意 味:レベル番号 66 のデータ記述項の前には、データ構造が指定されていなければならない。間にあ
るデータ記述項も、レベル番号 66 でなければならない。
119
FILLER PERMITTED ONLY FOR ELEMENTARY RECORD ITEM
種 類: ERROR
意 味: FILLER データ項目のデータ記述項は、02 ~ 49 の範囲のレベル番号を持っていなければなら
ず、従属データ項目の記述が指定されていてはならない。つまり、データ構造内で定義された
基本データ項目でなければならない。
付録 C-20
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
120
DO NOT QUOTE PICTURE STRING
種 類: WARNING
意 味: PICTURE 文字列を非数字リテラルとして指定してはならない。SCREEN COBOL コンパイラ
は、PICTURE 文字列として非数字リテラルの内容を受け入れる。
121
PICTURE STRING EXCEEDS 30 CHARACTERS
種 類: ERROR
意 味: SCREEN COBOL では、PICTURE 文字列の長さを最大 30 文字に制限している。30 文字を超え
るデータ項目を記述するには、繰返し回数を括弧で囲んで記述しなければならない。
122
TOO MANY DIGIT POSITIONS
種 類: ERROR
意 味: SCREEN COBOL では、数字データ項目または数字編集データ項目の長さを、最大 18 桁に制限
している。
123
TOO MANY CHARACTER POSITIONS
種 類: ERROR
意 味: SCREEN COBOL では、基本データ項目の大きさを最大 32,000 文字位置に制限している。
124
ILLEGAL PICTURE STRING
種 類: ERROR
意 味: PICTURE 文字列が SCREEN COBOL の構文にしたがっていない。このエラーの原因としては、
不正な文字が使用されている、括弧が対になっていない、文字は正しいが組合せが適切ではな
い、PICTURE にデータ文字の桁が指定されていないなどがある。
426750-001J
付録 C-21
付録 C SCREEN COBOL コンパイラ診断メッセージ
125
LAST SYMBOL IS ’,’ OR ’.’
種 類: WARNING
意 味:終わりのコンマ、セミコロン、ピリオド、または空白を取り除いた後の、PICTURE 文字列の最
後の PICTURE 文字がコンマまたは小数点になっている。コンパイラは PICTURE を受け入れ
て、SPECIAL-NAMES 段落で DECIMAL-POINT IS COMMA 句が指定されているかどうかに
したがって解釈する。
126
PICTURE NOT PERMITTED FOR INDEX ITEM
種 類: ERROR
意 味:指標項目には、PICTURE 句を指定してはならない。
127
SUBORDINATE USAGE CONFLICTS WITH GROUP USAGE
種 類: ERROR
意 味:グループ項目のデータ記述項に USAGE 句が指定されている場合は、従属データ項目の記述に
は異なる USAGE 句を指定することはできない。
128
DISPLAY USAGE REQUIRED IN GROUP WITHOUT VALUE OR CONDITION NAME
種 類: ERROR
意 味:グループ項目のデータ記述項に初期値を指定した VALUE 句がある場合、またはグループ項目
のデータ記述項の後にグループ項目の条件名を定義した記述項がある場合は、従属データ項目
に USAGE として DISPLAY を指定しなければならない。
129
COMPUTATIONAL USAGE REQUIRES NUMERIC
種 類: ERROR
意 味:データ項目の USAGE に COMPUTATIONAL を指定した場合は、そのデータ項目のデータ・タ
イプは数字でなければならない。
付録 C-22
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
130
SUBORDINATE SIGN CONFLICTS WITH GROUP SIGN
種 類: ERROR
意 味:グループ項目のデータ記述項に SIGN 句を指定した場合には、従属データ項目の記述に異なる
SIGN 特性を指定してはならない。
131
SIGN CLAUSE REQUIRES DISPLAY USAGE
種 類: ERROR
意 味:次のいずれかの状態が存在する。
□ グループ項目のデータ記述項に SIGN 句が指定され、従属の数字データ項目が符号付きであ
る ( つまり、PICTURE に S が指定されている ) 場合は、USAGE に DISPLAY を指定しなけ
ればならない。
□ 現在のデータ項目のデータ記述項に SIGN 句が指定されている場合は、USAGE に DISPLAY
を指定しなければならない。
132
SIGN CLAUSE REQUIRES DISPLAY USAGE
種 類: ERROR
意 味:現在のデータ項目のデータ記述項に SIGN 句が指定されている場合は、その PICTURE には数
字タイプを指定して S を含めなければならない。
133
JUSTIFIED REQUIRES DISPLAY USAGE
種 類: ERROR
意 味:データ項目に JUSTIFIED 句が記述されている場合は、USAGE に DISPLAY を指定しなければ
ならない。
134
JUSTIFIED NOT PERMITTED FOR NUMERIC OR EDITED
種 類: ERROR
意 味:数字として記述されたデータ項目には、JUSTIFIED 句を指定してはならない。
426750-001J
付録 C-23
付録 C SCREEN COBOL コンパイラ診断メッセージ
135
JUSTIFIED NOT PERMITTED IN GROUP WITH VALUE OR CONDITION NAME
種 類: ERROR
意 味:グループ項目のデータ記述項に初期値を指定した VALUE 句がある場合、またはグループ項目
のデータ記述項の後にグループ項目の条件名を定義した記述項がある場合は、従属データ項目
に JUSTIFIED 句を指定してはならない。
136
SYNCHRONIZED NOT PERMITTED FOR INDEX ITEM
種 類: WARNING
意 味:指標項目には、SYNCHRONIZED 句を指定してはならない。
137
SYNCHRONIZED NOT PERMITTED IN GROUP WITH VALUE OR CONDITION
NAME
種 類: ERROR
意 味:グループ項目のデータ記述項に初期値を指定した VALUE 句がある場合、またはグループ項目
のデータ記述項の後にグループ項目の条件名を定義した記述項がある場合は、従属データ項目
に SYNCHRONIZED 句を指定してはならない。
138
BLANK WHEN ZERO REQUIRES DISPLAY USAGE
種 類: ERROR
意 味: BLANK WHEN ZERO 句を指定したデータ項目には、USAGE に DISPLAY を指定しなければ
ならない。BLANK WHEN ZERO 句を使用する場合はこの構文にしたがわなければならないが、
SCREEN COBOL プログラムはこの構文を使用したデータ項目にはアクセスできない。
139
BLANK WHEN ZERO REQUIRES NUMERIC EDITED
種 類: ERROR
意 味: BLANK WHEN ZERO 句では数字データ項目だけを記述することができる。BLANK WHEN
ZERO 句を使用する場合はこの構文にしたがわなければならないが、SCREEN COBOL プログ
ラムはこの構文を使用したデータ項目にはアクセスできない。
付録 C-24
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
140
BLANK WHEN ZERO NOT COMPATIBLE WITH ’*’
種 類: ERROR
意 味: 1 つのデータ項目では、BLANK WHEN ZERO 句とアスタリスク (*) のある PICTURE 句の両方
を指定することはできない。BLANK WHEN ZERO 句を使用する場合はこの構文にしたがわな
ければならないが、SCREEN COBOL プログラムはこの構文を使用したデータ項目にはアクセ
スできない。
141
TOO MANY NESTED TABLES
種 類: ERROR
意 味: SCREEN COBOL では、最大で 3 つの添え字を持つデータ項目へのアクセスをサポートしてい
る。指定された OCCURS 句は 3 つ以上の OCCURS 句に従属しており、データ項目にアクセス
するのに 4 つ以上の添え字が必要になる。
142
VARIABLE OCCURRENCE NOT PERMITTED FOR SUBORDINATE TABLE
種 類: ERROR
意 味: SCREEN COBOL では、可変反復テーブルをグループ・テーブル項目の下位に指定することは
認められない。
143
VARIABLE OCCURRENCE NOT PERMITTED IN REDEFINITION
種 類: ERROR
意 味:再定義で記述されたデータ項目を、可変反復テーブルにすることはできない。
144
VARIABLE OCCURRENCE NOT COMPATIBLE WITH GROUP INITIAL VALUE
種 類: ERROR
意 味:グループ項目のデータ記述項が初期値を持つ場合は、従属データ項目を可変反復テーブルにす
ることはできない。
426750-001J
付録 C-25
付録 C SCREEN COBOL コンパイラ診断メッセージ
145
TOO MANY KEYS
種 類: ERROR
意 味:キーが 30 個より多い。
146
SUBORDINATE VALUE NOT PERMITTED WITH GROUP VALUE
種 類: ERROR
意 味:グループ項目のデータ記述項がグループ項目の初期値を指定する場合は、従属データ項目に初
期値を指定することはできない。
147
ONLY ONE INITIAL VALUE PERMITTED
種 類: ERROR
意 味: 1 つのデータ項目に複数の初期値を指定することはできない。
148
RANGE NOT PERMITTED FOR INITIAL VALUE
種 類: ERROR
意 味:データ項目に値の範囲で初期値を指定することはできない。
149
INITIAL VALUE OR CONDITION NAME NOT PERMITTED FOR INDEX ITEM
種 類: ERROR
意 味:指標項目には、VALUE 句を指定してはならない。
150
INITIAL VALUE NOT PERMITTED FOR TABLE ITEM
種 類: ERROR
意 味: OCCURS 句が記述されているデータ項目、またはグループ・テーブル項目に従属するデータ項
目は、初期値を指定することができない。
付録 C-26
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
151
INITIAL VALUE NOT PERMITTED FOR REDEFINITION
種 類: ERROR
意 味:再定義で記述されたデータ項目は、初期値を指定することはできない。
152
SIGNIFICANCE RANGE OF LITERALS EXCEEDS 18 DIGITS
種 類: ERROR
意 味:数字リテラルの有効桁数が 18 桁を超えている。
153
NUMERIC LITERAL NOT COMPATIBLE WITH NONNUMERIC FIGURATIVE OR
LITERAL
種 類: ERROR
意 味: 1 つの VALUE 句に数字リテラルが指定されている場合には、他のすべての値も数字リテラル
であるか、表意定数 ZERO、ZEROS、または ZEROES でなければならない。
154
RENAME OBJECT NOT DATA ITEM
種 類: ERROR
意 味: RENAMES 句は、データ項目だけの名前を変更することができる。
155
RENAME OBJECT IS 66 LEVEL ITEM
種 類: ERROR
意 味: RENAMES 句は、レベル 66 項目の名前を変更することはできない。
426750-001J
付録 C-27
付録 C SCREEN COBOL コンパイラ診断メッセージ
156
RENAME OBJECT NOT SUBORDINATE TO PRECEDING RECORD
種 類: ERROR
意 味: RENAMES 句で参照されるデータ項目は、前のデータ記述で定義されていなければならない。
157
RENAME OBJECT IN TABLE OR HAS VARIABLE SIZE
種 類: ERROR
意 味: RENAMES 句では、テーブル項目を参照することができない。さらに、可変反復テーブルを含
むグループ・データ項目を参照することができない。
158
ILLEGAL RENAMES OBJECT RANGE
種 類: ERROR
意 味: RENAMES 句で範囲の終わりを示すデータ項目には、範囲の始めを示すデータ項目に含まれて
いる文字位置を指定してはならない。ただし、同一のデータ構造で、終わりのデータ項目の最
初の文字位置は、始めのデータ項目の最初の文字位置より前にあってはならない。
159
REDEFINITION OBJECT NOT FOUND
種 類: ERROR
意 味: REDEFINES 句で指定された名前は見つからない、またはデータ項目の名前ではない。
REDEFINES 句がデータ構造にあると、そのデータ構造だけをサーチして、データ項目が再定
義されること注意して下さい。
160
REDEFINITION OBJECT HAS CONFLICTING LEVEL NUMBER
種 類: ERROR
意 味:再定義しようとするデータ項目は、再定義するデータ記述項と同じレベル番号を持っていなけ
ればならない。
付録 C-28
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
161
REDEFINITION OBJECT IS REDEFINITION
種 類: ERROR
意 味: REDEFINES 句で記述されたデータ項目は、それ自体を再定義することはできない。この制限
は、再定義項目のデータ記述項にも REDEFINES 句が含まれない限り、再定義の従属項には適
用されない。
162
REDEFINITION OBJECT AND REDEFINITION NOT SUBORDINATE TO SAME
LEVELS
種 類: ERROR
意 味:再定義されるデータ項目が一連のグループ項目に従属している場合は、再定義データ項目もそ
れらのグループに従属しなければならない。
163
REDEFINITION OBJECT NOT PRECEDING ITEM AT THIS LEVEL
種 類: ERROR
意 味:再定義のデータ記述項と再定義される項目のデータ記述項の間には、間に入る記述項が同一の
データ項目を再定義している場合を除いて、同一のレベル番号を持つ他のデータ記述項があっ
てはならない。
164
REDEFINITION OBJECT IS TABLE OR HAS VARIABLE SIZE
種 類: ERROR
意 味: SIZE 可変長のテーブル項目またはグループ項目 ( つまり、従属する可変反復テーブルを持つ
テーブル項目またはグループ項目 ) は、再定義することができない。
165
MISSING VALUE CLAUSE
種 類: ERROR
意 味:レベル番号 88 のデータ記述項に、必須の VALUE 句が指定されていない。
426750-001J
付録 C-29
付録 C SCREEN COBOL コンパイラ診断メッセージ
166
MISSING RENAMES CLAUSE
種 類: ERROR
意 味:レベル番号 66 のデータ記述項に、必須の RENAMES 句が指定されていない。
167
GROUP ITEM HAS ELEMENTARY ITEM CLAUSE
種 類: ERROR
意 味:グループ項目のデータ記述項に、BLANK WHEN ZERO、JUSTIFIED、SYNCHRONIZED、ま
たは PICTURE 句が指定されている。これらの句は、基本データ項目だけを記述することがで
きる。BLANK WHEN ZERO 句を使用する場合はこの構文にしたがわなければならないが、
SCREEN COBOL プログラムはこの構文を使用したデータ項目にはアクセスできない。
168
GROUP WITH SIGN CLAUSE HAS NO SIGNED NUMERIC SUBORDINATE
種 類: WARNING
意 味: SCREEN COBOL では、SIGN 句が指定されたグループ・データ項目は、少なくとも 1 つの符
号付き数字従属データ項目を持たなければならない。SCREEN COBOL は、単に通知する目的
でこの不適合を報告する。
169
ELEMENTARY ITEM HAS NO PICTURE
種 類: ERROR
意 味:基本データ項目には、PICTURE 句を指定しなければならない。
174
FIRST ELEMENTARY ITEM NOT DISPLAY AND NOT ALIGNED
種 類: ERROR
意 味:示されたデータ項目は、再定義する領域の最初の文字位置に揃えることができない。SCREEN
COBOL では、最初の基本項目の位置を揃えるのに暗黙の FILLER 文字位置の割り当てを必要
とする再定義を認められない。
付録 C-30
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
175
REDEFINITION HAS INCORRECT SIZE
種 類: ERROR
意 味:再定義に必要とされる文字位置の数は、再定義を 01 レベルで開始する場合を除いて、再定義さ
れるデータ項目が使用する文字位置の数に等しくなければならない。
176
NONNUMERIC FIGURATIVE OR LITERAL NOT PERMITTED FOR NUMERIC ITEM
種 類: ERROR
意 味:数字データ項目の初期値は、数字リテラルまたは表意定数 ZERO、ZEROS、または ZEROES の
いずれかでなければならない。
177
SIGNED LITERAL NOT PERMITTED FOR UNSIGNED NUMERIC ITEM
種 類: ERROR
意 味:符号なし数字データ項目の初期値は、符号なし数字リテラルまたは表意定数 ZERO、ZEROS、
または ZEROES のいずれかでなければならない。
178
TOO MANY FRACTION DIGITS IN NUMERIC LITERAL
種 類: ERROR
意 味:数字データ項目に初期値を割り当てるには、小数点の右側 ( 小数部 ) のゼロでない桁を切り捨て
ることが必要である。
179
NUMERIC LITERAL VALUE TOO LARGE FOR ITEM
種 類: ERROR
意 味:数字データ項目に初期値を割り当てるには、小数点の左側 ( 整数部 ) のゼロでない桁を切り捨て
ることが必要である。
426750-001J
付録 C-31
付録 C SCREEN COBOL コンパイラ診断メッセージ
180
NUMERIC LITERAL NOT PERMITTED FOR NONNUMERIC OR GROUP ITEM
種 類: ERROR
意 味:数字リテラルは、基本数字データ項目の初期値としてだけ使用することができる。
181
NONNUMERIC LITERAL EXCEEDS ITEM SIZE
種 類: ERROR
意 味:示されたデータ項目に初期値を割り当てるには、1 つ以上の文字を切り捨てることが必要であ
る。
182
01 OR 77 LEVEL ITEM TOO LARGE
種 類: ERROR
意 味: SCREEN COBOL では、WORKING-STORAGE SECTION または LINKAGE SECTION に定義
されるレベル 01 またはレベル 77 データ項目の大きさを、32,000 文字位置までサポートしている。
183
DATA ITEM DESCRIPTION NOT COMPATIBLE WITH FILE CODE SET
種 類: ERROR
意 味: CODE SET を指定したファイルに、この記述にしたがわないデータ項目がある。
190
DEPENDING ITEM NOT FOUND
種 類: ERROR
意 味: OCCURS 句の DEPENDING 指定で参照される名前が、定義されていない。
付録 C-32
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
191
DEPENDING ITEM NOT SIMPLE UNSIGNED INTEGER DATA ITEM
種 類: ERROR
意 味:示された名前 (OCCURS 句の DEPENDING 指定で参照される名前 ) が符号なし整数基本データ
項目を識別していない、またはこの項目にアクセスするには添え字が必要である。
192
DEPENDING ITEM IN TABLE
種 類: ERROR
意 味:示されたデータ項目は、制御の対象になっているデーブル内に割り当てられている。この割り
当ては、明示的または暗黙的な再定義の結果である。
203
MESSAGE FORMAT MUST BE THE SAME IN ALL REPLIES
種 類: ERROR
意 味: 1 つの SEND MESSAGE 文に対するすべての応答メッセージは、同一のフォーマット (FIXED、
VARYING1、または VARYING2 のいずれか ) でなければならない。ワーキング・ストレージ
からの応答には、FIXED フォーマットを使用する。
205
USING OPERAND NOT FOUND IN LINKAGE SECTION
種 類: ERROR
意 味: PROCEDURE DIVISION の見出しの USING 指定で指定された名前が、DATA DIVISION の
LINKAGE SECTION で定義されていない。
206
USING OPERAND NOT DATA ITEM
種 類: ERROR
意 味: PROCEDURE DIVISION の見出しの USING 指定で指定された名前が、データ項目を識別して
いない。PROCEDURE DIVISION の見出しの USING 指定では、データ項目名だけを指定する
ことができる。
426750-001J
付録 C-33
付録 C SCREEN COBOL コンパイラ診断メッセージ
207
USING OPERAND IS REDEFINITION OR NOT LEVEL 01 OR LEVEL 77 DATA
ITEM
種 類: ERROR
意 味: SCREEN COBOL では、USING 指定されるデータ項目はレベル 01 またはレベル 77 項目でなけ
ればならない。また、USING 指定ではレベル 01 またはレベル 77 のいずれかの再定義項目は認
められない。
208
DATA ITEM PERMITTED ONLY ONCE AS USING OPERAND
種 類: ERROR
意 味: PROCEDURE DIVISION の見出しの USING 指定では、同一の名前を 2 回以上指定することは
できない。
209
TOO MANY USING OPERANDS
種 類: ERROR
意 味: SCREEN COBOL では、PROCEDURE DIVISION の見出しの USING 指定に最大 29 個の名前
を指定することができる。
210
LINKAGE DATA ITEM MUST BE USING OPERAND
種 類: ERROR
意 味:示されたデータ項目は、LINKAGE SECTION に定義されているが、アドレスすることができな
い。アドレスすることができる項目は、PROCEDURE DIVISION の見出しの USING 指定で指
定された項目、それらの従属項目、および従属項目の再定義項目、リネーム項目、および条件
名である。
211
TOO MANY RECORDS
種 類: ERROR
意 味:このプログラムは、SCREEN COBOL コンパイラがアドレスできるよりも多くのデータ構成を
定義している。
付録 C-34
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
212
TOO MANY ELEMENTARY ITEMS
種 類: ERROR
意 味:このプログラムは、SCREEN COBOL コンパイラがアドレスできるよりも多くのレベル 77 デー
タ項目を定義している。
213
FEATURE NOT SUPPORTED BY SCREEN COBOL
種 類: ERROR
意 味: SCREEN COBOL がサポートしない機能が使用されている。
214
MULTIPLE UNIT COMPILES NOT SUPPORTED BY SCREEN COBOL
種 類: ERROR
意 味:コンパイルの際に、複数の IDENTIFICATION DIVISION が見つかった。
221
INSUFFICIENT SPECIFICATION TO DETERMINE TYPE OF SCREEN ITEM
種 類: ERROR
意 味:レベル 01 のスクリーン名以外のスクリーン項目は、グループ、オーバーレイ領域、リテラル・
フィールド、入力フィールド、出力フィールド、または入出力フィールドのいずれかでなけれ
ばならない。この項目は、定義の最小限の要件が満たされていないため、分類することができ
ない。
222
THIS SCREEN ITEM MUST BE NAMED
種 類: ERROR
意 味:レベル 01 ( スクリーン名 ) およびオーバーレイ領域には、名前が必要である。
426750-001J
付録 C-35
付録 C SCREEN COBOL コンパイラ診断メッセージ
223
THIS SCREEN ITEM MUST HAVE BASE SPECIFICATION
種 類: ERROR
意 味:このスクリーン項目には、BASE 句を指定しなければならない。
224
THIS SCREEN ITEM MUST HAVE ’OVERLAY’ SPECIFICATION
種 類: ERROR
意 味:このスクリーン項目には、OVERLAY 句を指定しなければならない。
225
THIS SCREEN ITEM MUST HAVE SIZE SPECIFIED
種 類: ERROR
意 味:オーバーレイ領域には、SIZE 句を指定しなければならない。
226
THIS SCREEN ITEM MUST HAVE ’AREA’ SPECIFICATION
種 類: ERROR
意 味:オーバーレイ領域には、AREA 句を指定しなければならない。
227
THIS SCREEN ITEM MUST HAVE LOCATION (’AT’) SPECIFIED
種 類: ERROR
意 味:すべてのスクリーン項目に、位置を指定しなければならない。スクリーン項目では、AT 句また
は REDEFINES 句、あるいはその両方を使用することができる。
228
THIS SCREEN ITEM MUST HAVE LOCATION (’REDEFINES’) SPECIFIED
種 類: ERROR
意 味:すべてのスクリーン項目に、位置を指定しなければならない。スクリーン項目では、AT 句また
は REDEFINES 句、あるいはその両方を使用することができる。
付録 C-36
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
229
THIS SCREEN ITEM MUST HAVE FROM (OR USING) DATA ITEM
種 類: ERROR
意 味:このスクリーン項目には、関連付けされるデータ項目を指定した FROM 句または USING 句を
指定しなければならない。
230
THIS SCREEN ITEM MUST HAVE TO (OR USING) DATA ITEM
種 類: ERROR
意 味:このスクリーン項目には、関連付けされるデータ項目を指定した TO 句または USING 句を指定
しなければならない。
231
THIS SCREEN ITEM MUST HAVE SHADOW DATA ITEM SPECIFIED
種 類: ERROR
意 味:このスクリーン項目には、関連付けされるデータ項目を指定した SHADOWED 句を指定しなけ
ればならない。
232
THIS SCREEN ITEM MUST HAVE PICTURE SPECIFICATION
種 類: ERROR
意 味:入力フィールド、出力フィールド、および入出力フィールドには、PICTURE 句を指定しなけれ
ばならない。
233
THIS SCREEN ITEM MUST HAVE INITIAL VALUE
種 類: ERROR
意 味:リテラル・フィールドには、初期値を指定しなければならない。
426750-001J
付録 C-37
付録 C SCREEN COBOL コンパイラ診断メッセージ
234
THIS SCREEN ITEM MUST HAVE FILL CHARACTER SPECIFIED
種 類: ERROR
意 味:このスクリーン項目には、FILL 文字を指定した FILL 句を指定しなければならない。
235
THIS SCREEN ITEM MUST HAVE OCCURS SPECIFICATION
種 類: ERROR
意 味:このスクリーン項目には、OCCURS 句を指定しなければならない。
236
THIS SCREEN ITEM MUST HAVE ACCEPTABLE VALUE(S) (’MUST’)
SPECIFIED
種 類: ERROR
意 味:このスクリーン項目の MUST BE 句には、スクリーン項目の PICTURE 句の指定と矛盾しない
値を指定しなければならない。
237
THIS SCREEN ITEM MUST HAVE ACCEPTABLE LENGTH(S) SPECIFIED
種 類: ERROR
意 味:このスクリーン項目の LENGTH 句には、スクリーン項目の PICTURE 句の指定と矛盾しない長
さを指定しなければならない。
238
THIS SCREEN ITEM MUST HAVE UPSHIFT SPECIFICATION
種 類: ERROR
意 味:このスクリーン項目には、有効な INPUT または OUTPUT が指定された UPSHIFT 句を指定し
なければならない。
付録 C-38
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
239
THIS SCREEN ITEM MUST HAVE FULL ACTION (’WHEN FULL’) SPECIFIED
種 類: ERROR
意 味:このスクリーン項目には、WHEN FULL 句を指定しなければならない。
240
THIS SCREEN ITEM MUST HAVE USER CONVERSION NUMBER SPECIFIED
種 類: ERROR
意 味:このスクリーン項目には、USER CONVERSION 句を指定しなければならない。
243
THIS SCREEN ITEM MUST HAVE PROMPT FIELD SPECIFIED
種 類: ERROR
意 味:このスクリーン項目には、SCREEN SECTION で指定された PROMPT 句を指定しなければなら
ない。
254
THIS SCREEN ITEM MUST NOT BE NAMED
種 類: ERROR
意 味:リテラル・フィールドには、名前を付けてはならない。
255
THIS SCREEN ITEM MUST NOT HAVE BASE SPECIFICATION
種 類: ERROR
意 味: BASE 句は、レベル 01 にだけ認められる。
256
THIS SCREEN ITEM MUST NO HAVE ’OVERLAY’ SPECIFICATION
種 類: ERROR
意 味: OVERLAY 句は、レベル 01 にだけ認められる。
426750-001J
付録 C-39
付録 C SCREEN COBOL コンパイラ診断メッセージ
257
THIS SCREEN ITEM MUST NOT HAVE SIZE SPECIFIED
種 類: ERROR
意 味: SIZE 句は、レベル 01 またはオーバーレイ領域項目にだけ認められる。
258
THIS SCREEN ITEM MUST NOT HAVE ’AREA’ SPECIFICATION
種 類: ERROR
意 味: AREA 句は、オーバーレイ領域に対してだけ指定することができる。この項目には、矛盾する
句または従属する項目 ( つまり、グループ ) がある。
259
THIS SCREEN ITEM MUST NOT HAVE LOCATION (’AT’) SPECIFIED
種 類: ERROR
意 味:このスクリーン項目には、スクリーン位置を指定してはならない。AT 句は、スクリーン・グ
ループまたはフィールドに対してだけ認められる。
260
THIS SCREEN ITEM MUST NOT HAVE LOCATION (’REDEFINES’) SPECIFIED
種 類: ERROR
意 味:このスクリーン項目は、別のスクリーン項目を再定義してはならない。REDEFINES 句は、基
本スクリーン・フィールドに対してだけ認められる。
261
THIS SCREEN ITEM MUST NOT HAVE FROM (OR USING) DATA ITEM
種 類: ERROR
意 味:入力フィールドまたは入出力フィールドに対してだけ、FROM 句または USING 句を指定する
ことができる。
付録 C-40
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
262
THIS SCREEN ITEM MUST NOT HAVE TO (OR USING) DATA ITEM
種 類: ERROR
意 味:入力フィールドまたは入出力フィールドに対してだけ、TO 句または USING 句を指定すること
ができる。
263
THIS SCREEN ITEM MUST NOT HAVE SHADOW DATA ITEM SPECIFIED
種 類: ERROR
意 味: SHADOWED 句は、入力フィールド、出力フィールド、または入出力フィールドに対してだけ
認められる。
264
THIS SCREEN ITEM MUST NOT HAVE PICTURE SPECIFICATION
種 類: ERROR
意 味: PICTURE 句は、入力フィールド、出力フィールド、または入出力フィールドに対してだけ認め
られる。
265
THIS SCREEN ITEM MUST NOT HAVE INITIAL VALUE
種 類: ERROR
意 味: VALUE 句は、入力フィールド、出力フィールド、入出力フィールド、またはリテラル・フィー
ルドに対してだけ認められる。
266
THIS SCREEN ITEM MUST NOT HAVE FILL CHARACTER SPECIFIED
種 類: ERROR
意 味: FILL 句は、入力フィールド、出力フィールド、または入出力フィールドに対してだけ認められ
る。
267
THIS SCREEN ITEM MUST NOT HAVE OCCURS SPECIFICATION
種 類: ERROR
意 味: OCCURS 句は、入力フィールド、出力フィールド、または入出力フィールドに対してだけ認め
られる。
426750-001J
付録 C-41
付録 C SCREEN COBOL コンパイラ診断メッセージ
268
THIS SCREEN ITEM MUST NOT HAVE ACCEPTABLE VALUE(S) (’MUST’)
SPECIFIED
種 類: ERROR
意 味: MUST 句は、入力フィールドまたは入出力フィールドに対してだけ認められる。
269
THIS SCREEN ITEM MUST NOT HAVE ACCEPTABLE LENGTH(S) SPECIFIED
種 類: ERROR
意 味: LENGTH 句は、入力フィールドまたは入出力フィールドに対してだけ認められる。
270
THIS SCREEN ITEM MUST NOT HAVE UPSHIFT SPECIFICATION
種 類: ERROR
意 味: UPSHIFT 句は、入力フィールド、出力フィールド、または入出力フィールドに対してだけ認め
られる。
271
THIS SCREEN ITEM MUST NOT HAVE FULL ACTION (’WHEN FULL’)
SPECIFIED
種 類: ERROR
意 味: WHEN FULL 句は、入力フィールドまたは入出力フィールドに対してだけ認められる。
272
THIS SCREEN ITEM MUST NOT HAVE USER CONVERSION NUMBER SPECIFIED
種 類: ERROR
意 味: USER CONVERSION 句は、入力フィールド、出力フィールド、または入出力フィールドに対
してだけ認められる。
付録 C-42
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
275
THIS SCREEN ITEM MUST NOT HAVE PROMPT FIELD SPECIFIED
種 類: ERROR
意 味:このスクリーン項目には、PROMPT 句を指定してはならない。
276
THIS SCREEN ITEM MUST NOT HAVE FIELD-SEPARATOR CHARACTER
SPECIFIED
種 類: ERROR
意 味:このスクリーン項目には、FIELD-SEPARATOR 句を指定してはならない。FIELD-SEPARATOR
句は、レベル 01 のスクリーン項目に対してだけ指定することができる。
277
THIS SCREEN ITEM MUST NOT HAVE GROUP-SEPARATOR CHARACTER
SPECIFIED
種 類: ERROR
意 味:このスクリーン項目には、GROUP-SEPARATOR 句を指定してはならない。
GROUP-SEPARATOR 句は、レベル 01 のスクリーン項目に対してだけ指定することができる。
278
THIS SCREEN ITEM MUST NOT HAVE ABORT-INPUT CHARACTERS SPECIFIED
種 類: ERROR
意 味:このスクリーン項目には、ABORT-INPUT 句を指定してはならない。ABORT-INPUT 句は、レ
ベル 01 のスクリーン項目に対してだけ指定することができる。
279
THIS SCREEN ITEM MUST NOT HAVE END-OF-INPUT CHARACTERS
SPECIFIED
種 類: ERROR
意 味:このスクリーン項目には、END-OF-INPUT 句を指定してはならない。END-OF-INPUT 句は、
レベル 01 のスクリーン項目に対してだけ指定することができる。
426750-001J
付録 C-43
付録 C SCREEN COBOL コンパイラ診断メッセージ
280
THIS SCREEN ITEM MUST NOT HAVE RESTART-INPUT CHARACTERS
SPECIFIED
種 類: ERROR
意 味:このスクリーン項目には、RESTART-INPUT 句を指定してはならない。RESTART-INPUT 句
は、レベル 01 のスクリーン項目に対してだけ指定することができる。
281
THIS SCREEN ITEM MUST NOT HAVE FIXED-LENGTH SPECIFICATION
種 類: ERROR
意 味:この項目には、FIXED-LENGTH を指定することは認められない。
282
THIS SCREEN ITEM MUST NOT HAVE TRANSPARENT SPECIFICATION
種 類: ERROR
意 味:この項目には、TRANSPARENT を指定することは認められない。
285
THIS SCREEN ITEM MUST NOT HAVE ADVISORY SPECIFICATION
種 類: ERROR
意 味: ADVISORY 句は、出力フィールドまたは入出力フィールドに対してだけ認められる。
286
THIS SCREEN ITEM HAS DUPLICATE NAMING
種 類: ERROR
意 味:重複した句は認められない。
287
THIS SCREEN ITEM HAS DUPLICATE BASE SPECIFICATION
種 類: ERROR
意 味:重複した句は認められない。
付録 C-44
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
288
THIS SCREEN ITEM HAS DUPLICATE ’OVERLAY’ SPECIFICATION
種 類: ERROR
意 味:重複した句は認められない。
289
THIS SCREEN ITEM HAS DUPLICATE SIZE SPECIFIED
種 類: ERROR
意 味:重複した句は認められない。
290
THIS SCREEN ITEM HAS DUPLICATE ’AREA’ SPECIFICATION
種 類: ERROR
意 味:重複した句は認められない。
291
THIS SCREEN ITEM HAS DUPLICATE LOCATION (’AT’) SPECIFIED
種 類: ERROR
意 味:重複した句は認められない。
292
THIS SCREEN ITEM HAS DUPLICATE LOCATION (’REDEFINES’) SPECIFIED
種 類: ERROR
意 味:重複した句は認められない。
293
THIS SCREEN ITEM HAS DUPLICATE FROM (OR USING) DATA ITEM
種 類: ERROR
意 味:重複した句は認められない。
426750-001J
付録 C-45
付録 C SCREEN COBOL コンパイラ診断メッセージ
294
THIS SCREEN ITEM HAS DUPLICATE TO (OR USING) DATA ITEM
種 類: ERROR
意 味:重複した句は認められない。
295
THIS SCREEN ITEM HAS DUPLICATE SHADOW DATA ITEM SPECIFIED
種 類: ERROR
意 味:重複した句は認められない。
296
THIS SCREEN ITEM HAS DUPLICATE PICTURE SPECIFICATION
種 類: ERROR
意 味:重複した句は認められない。
297
THIS SCREEN ITEM HAS DUPLICATE INITIAL VALUE
種 類: ERROR
意 味:重複した句は認められない。
298
THIS SCREEN ITEM HAS DUPLICATE FILL CHARACTER SPECIFIED
種 類: ERROR
意 味:重複した句は認められない。
299
THIS SCREEN ITEM HAS DUPLICATE OCCURS SPECIFICATION
種 類: ERROR
意 味:重複した句は認められない。
付録 C-46
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
300
THIS SCREEN ITEM HAS DUPLICATE ACCEPTABLE VALUE(S) (’MUST’)
SPECIFIED
種 類: ERROR
意 味:重複した句は認められない。
301
THIS SCREEN ITEM HAS DUPLICATE ACCEPTABLE LENGTH(S) SPECIFIED
種 類: ERROR
意 味:重複した句は認められない。
302
THIS SCREEN ITEM HAS DUPLICATE UPSHIFT SPECIFICATION
種 類: ERROR
意 味:重複した句は認められない。
303
THIS SCREEN ITEM HAS DUPLICATE FULL ACTION (’WHEN FULL’)
SPECIFIED
種 類: ERROR
意 味:重複した句は認められない。
304
THIS SCREEN ITEM HAS DUPLICATE USER CONVERSION NUMBER SPECIFIED
種 類: ERROR
意 味:重複した句は認められない。
426750-001J
付録 C-47
付録 C SCREEN COBOL コンパイラ診断メッセージ
307
THIS SCREEN ITEM HAS DUPLICATE PROMPT FIELD SPECIFIED
種 類: ERROR
意 味:重複した句は認められない。
308
THIS SCREEN ITEM HAS DUPLICATE FIELD-SEPARATOR CHARACTER
SPECIFIED
種 類: ERROR
意 味:複数の入力文字句にフィールド分離符を重複して指定することは認められない。
309
THIS SCREEN ITEM HAS DUPLICATE GROUP-SEPARATOR CHARACTERS
SPECIFIED
種 類: ERROR
意 味:複数の入力文字句にグループ分離符を重複して指定することは認められない。
310
THIS SCREEN ITEM HAS DUPLICATE ABORT-INPUT CHARACTERS SPECIFIED
種 類: ERROR
意 味:複数の入力文字句に ABORT-INPUT を重複して指定することは認められない。
311
THIS SCREEN ITEM HAS DUPLICATE END-OF-INPUT CHARACTERS
SPECIFIED
種 類: ERROR
意 味:複数の入力文字句に END-OF-INPUT を重複して指定することは認められない。
付録 C-48
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
312
THIS SCREEN ITEM HAS DUPLICATE RESTART-INPUT CHARACTERS
SPECIFIED
種 類: ERROR
意 味:複数の入力文字句に RESTART-INPUT を重複して指定することは認められない。
313
THIS SCREEN ITEM HAS DUPLICATE FIXED-LENGTH SPECIFICATION
種 類: ERROR
意 味: FIXED-LENGTH を重複して指定することは認められない。
314
THIS SCREEN ITEM HAS DUPLICATE TRANSPARENT SPECIFICATION
種 類: ERROR
意 味: TRANSPARENT を重複して指定することは認められない。
317
THIS SCREEN ITEM HAS DUPLICATE ADVISORY SPECIFICATION
種 類: ERROR
意 味:重複した句は認められない。
318
INPUT SCREEN ITEMS (TO OR USING) MAY NOT BE PROTECTED
種 類: ERROR
意 味:入力フィールドおよび入出力フィールドは、PROTECT ( 保護 ) してはならない。保護した場合
は、データ入力することができなくなる。
319
REDEFINED SCREEN ITEM HAS DIFFERENT LOCATION
種 類: ERROR
意 味:再定義したフィールドは、元のフィールドと同じ位置でなければならない。
426750-001J
付録 C-49
付録 C SCREEN COBOL コンパイラ診断メッセージ
320
REDEFINED SCREEN ITEM HAS DIFFERENT LENGTH
種 類: ERROR
意 味:再定義したフィールドは、元のフィールドと同じ長さでなければならない。
321
REDEFINED SCREEN ITEM HAS DIFFERENT DISPLAY ATTRIBUTE
種 類: ERROR
意 味:再定義したフィールドは、元のフィールドと同じ表示属性でなければならない。
322
REDEFINED SCREEN ITEM HAS DIFFERENT FULL ACTION
種 類: ERROR
意 味:再定義したフィールドは、元のフィールドと同じ WHEN FULL 指定でなければならない。
323
REDEFINED SCREEN ITEM HAS DIFFERENT OCCURS SPECIFICATION
種 類: ERROR
意 味:再定義したフィールドは、元のフィールドと同じ OCCURS 指定でなければならない。
324
DUPLICATE SPECIFICATION FOR DISPLAY ATTRIBUTE
種 類: ERROR
意 味:このタイプの表示属性が 2 回以上宣言されている。属性は 1 回だけ宣言することができる。
付録 C-50
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
325
INITIAL VALUE MUST BE QUOTED STRING
種 類: ERROR
意 味:スクリーン項目の初期値には、ストリング・リテラルだけが認められる。
326
TOO MANY SEPARATORS OR OFFSETS IN COLUMN SPACING LIST
種 類: ERROR
意 味:カラム・スペーシング・リストには、カラム・オカレンスより少ないエントリを格納しなけれ
ばならない。
327
UNKNOWN TERMINAL TYPE
種 類: ERROR
意 味:端末タイプは、IBM-3270、T16-6510、T16-6520、T16-6530、または T16-6540 でなければならない。
328
NO TERMINAL TYPE SPECIFIED
種 類: ERROR
意 味: TERMINAL IS 句が必要である。
329
FUNCTION KEY NOT ALLOWED FOR THIS TERMINAL TYPE
種 類: ERROR
意 味:示されたファンクション・キーは、この端末タイプでは使用することができない。
330
DISPLAY ATTRIBUTE NOT ALLOWED FOR THIS TERMINAL TYPE
種 類: ERROR
意 味:示された表示属性は、この端末タイプでは使用することができない。
426750-001J
付録 C-51
付録 C SCREEN COBOL コンパイラ診断メッセージ
331
FROM (USING) DATA ITEM HAS DIFFERENT TYPE (NUMBER VS STRING)
種 類: ERROR
意 味:数字スクリーン項目は数字データ項目に関連付けられなければならない。また、非数字スクリー
ン項目は非数字データ項目に関連付けられなければならない。
332
FROM (USING) DATA ITEM HAS INSUFFICIENT NUMBER OF OCCURRENCES
種 類: ERROR
意 味:スクリーン項目がデータ項目より多くのオカレンスを持っている。
333
FROM (USING) DATA ITEM HAS INCOMPATIBLE SCALE
種 類: ERROR
意 味: TO または USING データ項目で指定されている位取りが、スクリーン項目 PICTURE で指定さ
れた位取りと矛盾している。データ編集が矛盾なく行えるように、位取りを設定しなければな
らない。
334
TO (USING) DATA ITEM HAS DIFFERENT TYPE (NUMBER VS. STRING)
種 類: ERROR
意 味:数字スクリーン項目は数字データ項目に関連付けられなければならない。また、非数字スクリー
ン項目は非数字データ項目に関連付けられなければならない。
335
TO (USING) DATA ITEM HAS INSUFFICIENT NUMBER OF OCCURRENCES
種 類: ERROR
意 味:スクリーン項目がデータ項目より多くのオカレンスを持っている。
付録 C-52
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
336
TO (USING) DATA ITEM HAS INCOMPATIBLE SCALE
種 類: ERROR
意 味: FROM または USING データ項目で指定されている位取りが、スクリーン項目 PICTURE で指
定された位取りと矛盾している。データ編集が矛盾なく行えるように、位取りを設定しなけれ
ばならない。
337
VALUE STRING LONGER THAN PICTURE
種 類: ERROR
意 味:値ストリングは、スクリーン項目より短くなければならない。
338
OVERLAY AREA TOO LARGE
種 類: ERROR
意 味:オーバーレイ領域がベース・スクリーンより大きい。
339
OVERLAY SCREENS MAY NOT CONTAIN OVERLAY AREAS
種 類: ERROR
意 味:オーバーレイ・スクリーンに、オーバーレイ領域を設定してはいけない。ベース・スクリーン
だけがオーバーレイ領域を持つことができる。
340
OVERLAY AREAS MUST BE FULL WIDTH FOR THIS TERMINAL TYPE
種 類: ERROR
意 味: T16-6510 端末では、オーバーレイ領域はベース・スクリーンと同じ大きさでなければならない。
426750-001J
付録 C-53
付録 C SCREEN COBOL コンパイラ診断メッセージ
341
SCREEN TOO LARGE FOR TERMINAL TYPE
種 類: ERROR
意 味:スクリーンの大きさが、この端末でサポートされている最大の大きさを超えている。
342
ERROR ENHANCEMENT MAY NOT SPECIFY PROTECTION ATTRIBUTE
種 類: ERROR
意 味: ERROR-ENHANCEMENT 句では、PROTECTED 属性を指定してはならない。エラーのある
フィールドが保護されていると、エラーの訂正が不可能になる。
343
SHADOWED DATA ITEM HAS INSUFFICIENT NUMBER OF OCCURRENCES
種 類: ERROR
意 味: SHADOWED 句が適用されるフィールドに OCCURS 句が指定されている場合は、SHADOWED
句で指定されたデータ項目はこの OCCURS 句が指定されたフィールドと同じオカレンス数を
持っていなければならない。
344
SCREEN ITEM TOO LONG
種 類: ERROR
意 味:このスクリーン項目は、最大フィールド長である 255 文字を超えている。
345
UNKNOWN CHARACTER SET TYPE
種 類: ERROR
意 味: ENVIRONMENT DIVISION の OBJECT-COMPUTER 段落に、無効な文字セット・タイプが指
定された。
付録 C-54
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
346
CHARACTER SET NOT VALID FOR THIS TERMINAL TYPE
種 類: WARNING
意 味:指定された文字セットは、この端末タイプでは有効ではない。この文字セットの指定は無視さ
れる。
347
PROMPT SCREEN ITEM MUST BE A FIELD IN SAME SCREEN
種 類: ERROR
意 味:次のいずれかの状態が存在する。
□ PROMPT 句に指定されたスクリーン項目とそのスクリーン・フィールドの定義が同一のス
クリーン内になけらばならない。
□ スクリーン項目はフィールドでなければならない。
□ スクリーン項目は、オーバーレイ、グループ、または FILLER 項目であってはならない。
348
PROMPT SCREEN ITEM MUST NOT BE THE CURRENT ITEM
種 類: ERROR
意 味: PROMPT 句に指定されたスクリーン項目は、PROMPT 句を含んでいるスクリーン項目を参照
できない。スクリーン・フィールドは、それ自体をプロンプトすることはできない。
349
PROMPT SCREEN ITEM MUST HAVE A FROM (OR USING) DATA ITEM
種 類: ERROR
意 味: PROMPT 句に指定されたスクリーン項目が関連付けられたワーキング・ストレージ・データ項
目を持っている場合は、そのスクリーン項目は FROM または USING 句を持っていなければな
らない。TO 句はエラーになる。
426750-001J
付録 C-55
付録 C SCREEN COBOL コンパイラ診断メッセージ
350
DUPLICATE INPUT EDIT CONTROL CHARACTERS DEFINED
種 類: ERROR
意 味: 1 つのスクリーン内で同一の文字を 2 つ以上の入力制御文字として定義してはならない。
351
OPERAND MUST BE A SCREEN ITEM
種 類: ERROR
意 味:このオペランドは、SCREEN SECTION に定義した項目でなければならない。
352
OPERAND MUST BE A DATA ITEM
種 類: ERROR
意 味:このオペランドは、WORKING-STORAGE SECTION に定義した項目でなければならない。
353
OPERAND MUST BE A MNEMONIC-NAME
種 類: ERROR
意 味:このオペランドは、SPECIAL-NAMES 段落に指定した呼び名でなければならない。
354
INVALID CONVERSATIONAL SEPARATOR
種 類: ERROR
意 味:フィールド分離符またはグループ分離符が、正しく定義されていない。非数字リテラルは、引
用符で囲まれた 1 つの英数字でなければならない。また、数字リテラルは、0 ~ 255 の範囲で
なければならない。
付録 C-56
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
355
TOO MANY COLUMN OCCURRENCES SPECIFIED FOR SCREEN FIELD
種 類: ERROR
意 味: OCCURS 句が、スクリーンの大きさを超えるカラム番号を含んでいる。例えば、スクリーンが
SIZE 20, 80 と定義されているときに、OCCURS IN 82 COLUMNS という句を指定すると、こ
のメッセージが生成される。
356
TOO MANY LINE OCCURRENCES SPECIFIED FOR SCREEN FIELD
種 類: ERROR
意 味: OCCURS 句が、スクリーンの大きさを超える行番号を含んでいる。例えば、スクリーンが SIZE
20, 80 と定義されているときに、OCCURS IN 24 LINES という句を指定すると、このメッセー
ジが生成される。
357
LENGTH CLAUSE NOT VALID FOR SCREEN FIELD PICTURE
種 類: ERROR
意 味: LENGTH 句に指定されたデータ項目の長さが、PICTURE 句に示される長さに対して短過ぎる、
または長過ぎる。LENGTH 句または PICTURE 句のいずれかを修正して、適切な長さを指定し
なければならない。
358
THIS MESSAGE ITEM MUST HAVE TO, FROM, OR USING DATA ITEM
種 類: ERROR
意 味: MESSAGE SECTION のフィールドには、WORKING-STORAGE SECTION のデータ項目を指
定する TO、FROM、または USING 句が記述されていなければならない。
359
THIS MESSAGE ITEM MUST HAVE PICTURE SPECIFICATION
種 類: ERROR
意 味: MESSAGE SECTION のフィールドには、PICTURE 句が指定されていなければならない。
426750-001J
付録 C-57
付録 C SCREEN COBOL コンパイラ診断メッセージ
360
MESSAGE ITEM TOO LONG
種 類: ERROR
意 味: MESSAGE SECTION のメッセージ・フィールドに、32,000 バイトより大きなサイズが指定さ
れている。
361
THIS MESSAGE ITEM HAS DUPLICATE FROM (OR USING) DATA ITEM
種 類: ERROR
意 味:重複した句は認められない。
362
THIS MESSAGE HAS DUPLICATE TO (OR USING) DATA ITEM
種 類: ERROR
意 味:重複した句は認められない。
363
THIS MESSAGE ITEM HAS DUPLICATE PICTURE SPECIFICATION
種 類: ERROR
意 味:重複した句は認められない。
364
THIS MESSAGE ITEM HAS DUPLICATE USER CONVERSION NUMBER
SPECIFIED
種 類: ERROR
意 味:重複した句は認められない。
365
THIS MESSAGE ITEM HAS DUPLICATE FORMAT SPECIFICATION
種 類: ERROR
意 味:重複した句は認められない。
付録 C-58
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
366
THIS MESSAGE ITEM HAS DUPLICATE NAMING
種 類: ERROR
意 味: MESSAGE SECTION 内の 1 つのフィールドに、2 つ以上の名前指定がある。名前指定は 1 つだ
け認められる。
367
MESSAGE ITEM HAS DUPLICATE OCCURS SPECIFICATION
種 類: ERROR
意 味: OCCURS 句を重複して指定することは認められない。
368
THIS MESSAGE ITEM HAS DUPLICATE FIELD STATUS
種 類: ERROR
意 味: MESSAGE SECTION 内の 1 つのフィールドに、2 つ以上の FIELD STATUS 句が指定されてい
る。重複した句は認められない。
369
ITEM SPECIFIED BY FIELD STATUS IS TOO SHORT
種 類: ERROR
意 味: MESSAGE SECTION の項目が、フィールド・ステータス情報を収容するのに十分な大きさを
持っていない WORKING-STORAGE SECTION の項目を参照した。WORKING-STORAGE
SECTION の項目の推奨のサイズおよびフォーマットは、1 つのグループ項目内で 2 個の PIC
9(4) COMP フィールドである。
370
VARYING FORMAT NOT SUPPORTED FOR MULTI-FIELD MESSAGES
種 類: ERROR
意 味: FIXED、DELIMITED、または FIXED DELIMITED フォーマットのメッセージだけが、レベル
01 内にグループ項目およびフィールド項目を持つことができる。
426750-001J
付録 C-59
付録 C SCREEN COBOL コンパイラ診断メッセージ
371
OPERAND MUST BE AN ELEMENTARY MESSAGE ITEM
種 類: ERROR
意 味:このオペランドは、MESSAGE SECTION の項目でなければならない。レベル 01 項目、グルー
プ項目、または OCCURS 句項目であってはならない。
372
RESULTING COUNT ALLOWED ON 01 LEVEL OR ELEMENTARY ITEMS ONLY
種 類: ERROR
意 味: RESULTING COUNT 句をグループ項目指定の一部として使用することは認められない。
373
PRESENT IF MUST REFERENCE ELEMENTARY ITEM IN CURRENT MESSAGE
種 類: ERROR
意 味: PRESENT IF 句は、同一のメッセージに含まれる MESSAGE SECTION の基本項目を参照しな
ければならない。PRESENT IF 句は、レベル 01 項目、グループ項目、または OCCURS 句項目
を参照することができない。
374
PRESENT IF MAY NOT REFERENCE GROUP ITEM
種 類: ERROR
意 味: PRESENT IF 句は、指定の一部として PICTURE 句を指定しなければならないため、グループ
項目を参照することができない。
375
DELIMITER MUST BE QUOTED CHARACTER, OR NUMERIC IN 0-255 RANGE
種 類: ERROR
意 味: FIELD-DELIMITER 句または MESSAGE-DELIMITER 句で定義される区切り文字は、文字を引
用符で囲んで ( 例えば、"P") 指定するか、希望する ASCII または EBCDIC 文字の 10 進表記
( 例えば、80 = P, 3 = ETX) を指定しなければならない。
付録 C-60
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
376
ALLOWED ON 01 LEVEL ITEM ONLY
種 類: ERROR
意 味: MESSAGE FORMAT 句は、レベル 01 項目にだけ認められる。
377
PRESENT IF NOT ALLOWED FOR THIS MESSAGE FORMAT
種 類: ERROR
意 味: PRESENT IF 句は、DELIMITED フォーマットのメッセージにだけ認められる。
378
RESULTING COUNT MUST REFERENCE NUMERIC DATA ITEM
種 類: ERROR
意 味: RESULTING COUNT 句で参照されるワーキング・ストレージ・フィールドは、数字データ項
目でなければならない。
379
PIC 1 NOT ALLOWED WITH DELIMITED FIELDS
種 類: ERROR
意 味: DELIMITED フォーマットのメッセージは、区切り文字が OFF と指定されない限り、2 進デー
タ PICTURE 句 (PIC 1 フォーマット ) の項目を含むことができない。
380
DEPENDING NOT ALLOWED IN FIXED LENGTH MESSAGE
種 類: ERROR
意 味: FIXED-LENGTH のメッセージには、DEPENDING 句を指定してはならない。
426750-001J
付録 C-61
付録 C SCREEN COBOL コンパイラ診断メッセージ
381
PIC N NOT SUPPORTED IN MESSAGE
種 類: ERROR
意 味: MESSAGE SECTION で、PIC N データ項目を定義しようとした。
382
PIC N NOT ALLOWED UNLESS ’CHARACTER-SET IS KANJI-KATAKANA’
種 類: ERROR
意 味: ENVIRONMENT DIVISION で、CHARACTER-SET IS KANJI-KATAKANA 句を指定しないで
PIC N データ項目を定義しようとした。
383
DATA/SCREEN ITEM VALUE (PIC N) IS NOT A VALID DBCS
種 類: ERROR
意 味: PIC N として定義され、VALUE 属性を持っているデータ項目またはスクリーン項目は、有効
な 2 バイト文字を使用しなければならない。
384
SCREEN ITEM DECLARED AS ADVISORY CANNOT REFERENCE PIC N DATA
ITEM
種 類: ERROR
意 味: ADVISORY フィールドとして定義されたスクリーン項目は、PIC N として宣言されたデータ項
目を参照することができない。
385
SCREEN ITEM FILL CHARACTER (PIC N) IS NOT A VALID DBCS
種 類: ERROR
意 味: PIC N として定義され、FILL 属性を使用するスクリーン項目は、FILL 文字として有効な 2 バ
イト文字を使用しなければならない。
付録 C-62
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
386
SCREEN ITEM DECLARED WITH ILLEGAL FIELD ATTRIBUTE FOR PIC N
FIELD
種 類: ERROR
意 味: 2 バイトデータ項目をサポートしないスクリーン・フィールド属性を使用しようとした。
387
SCREEN ITEM ’FILL’ CHARACTER CAN NOT BE DBCS (PIC N ONLY)
種 類: ERROR
意 味: PIC N ではない項目に対して、2 バイト文字を使用している。
388
SCREEN ITEMS (PIC N) MUST DECLARE PIC BEFORE OTHER ATTRIBUTES
種 類: ERROR
意 味: PIC は属性の前に指定しなければならない。
389
REDEFINE IS NOT SUPPORTED FOR PIC N SCREEN ITEMS
種 類: ERROR
意 味: PIC N スクリーン項目に対して REDEFINES 句を使用しようとした。
390
SPECIFIED ATTRIBUTE COMBINATION IS ILLEGAL FOR THIS DEVICE TYPE
種 類: ERROR
意 味:アウトライン表示属性は、IBM 3270 ファミリの端末でだけ使用することができる。
426750-001J
付録 C-63
付録 C SCREEN COBOL コンパイラ診断メッセージ
391
PREVIOUS FOREGROUND OR BACKGROUND COLOR SETTING WILL BE RESET
種 類: WARNING
意 味:フォアグラウンド・カラーまたはバックグラウンド・カラーはリセットされる。
392
FOREGROUND AND BACKGROUND ARE THE SAME COLOR
種 類: WARNING
意 味:フォアグラウンド・カラーとバックグラウンド・カラーが同一である。
393
MNEMONIC NAME USED IN SCREEN SECTION MUST BE TYPE VIDEO
ATTRIBUTE
種 類: ERROR
意 味:呼び名では、サポートされている拡張フィールド属性を定義しなければならない。
394
OUTLINE ATTRIBUTES ARE ONLY ALLOWED FOR ELEMENTARY SCREEN ITEMS
種 類: ERROR
意 味:アウトライン表示属性は、基本スクリーン項目だけに指定することができる ( グループ項目で
はない )。
395
ILLEGAL ATTRIBUTE FOR OVERLAY AREA DEFINITION
種 類: ERROR
意 味:ビデオ表示属性またはアウトライン表示属性は、SCREEN SECTION のオーバーレイ領域に使
用することはできない。
付録 C-64
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
396
PIC 1 NOT ALLOWED WITH VARYING1/2 MESSAGE FORMAT
種 類: ERROR
意 味: VARYING1 および VARYING2 では、PIC 1 を使用することはできない。
397
OVERLAY SCREEN MUST HAVE SUBORDINATE ENTRIES (CAN’T BE EMPTY)
種 類: ERROR
意 味:オーバーレイ・スクリーンは、グループ項目ではない。
398
SCREEN ’AREA’ MUST NOT HAVE SUBORDINATE ENTRIES
種 類: ERROR
意 味:「AREA」は、グループ項目ではない。
399
SCREEN SECTION MUST HAVE 01 LEVEL ENTRY
種 類: ERROR
意 味: SCREEN SECTION は、レベル 01 項目で開始しなければならない。
400
TOO MANY ERRORS
種 類: FAILURE
意 味:エラー数の制限を超えた。
402
UNABLE TO OPEN $RECEIVE
種 類: FAILURE
意 味: $RECEIVE に対する OPEN の呼び出しが失敗した。
426750-001J
付録 C-65
付録 C SCREEN COBOL コンパイラ診断メッセージ
403
UNABLE TO OPEN COMMUNICATION FILE
種 類: FAILURE
意 味: SEND ファイルを開くことができない。
404
UNABLE TO OPEN LIST FILE
種 類: FAILURE
意 味: LIST ファイルに対する OPEN の呼び出しが失敗した。
405
UNABLE TO USE LIST FILE
種 類: FAILURE
意 味: LIST ファイルのレコード長が 40 バイトより短い。
406
UNABLE TO CREATE WORK FILE
種 類: FAILURE
意 味:ワーク・ファイルを作成しようとして、失敗した。
407
UNABLE TO OPEN WORK FILE
種 類: FAILURE
意 味:ワーク・ファイルを開こうとして、失敗した。
410
COMPILER COMMUNICATION LOST
種 類: FAILURE
意 味: 2 つのコンパイラ・プロセスの間の通信が失われた。
付録 C-66
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
411
LIST FILE WRITE FAILURE
種 類: FAILURE
意 味:行を書き込もうとして、失敗した。
414
UNABLE TO CREATE RUN UNIT FILE
種 類: FAILURE
意 味:ラン・ユニット・ファイルを作成しようとして、失敗した。
415
UNABLE TO OPEN RUN UNIT FILE
種 類: FAILURE
意 味:ラン・ユニット・ファイルを開こうとして、失敗した。
416
FAILURE IN USING OR ALLOCATING EXTENDED SEGMENT
種 類: FAILURE
意 味: ALLOCATESEGMENT の呼び出し、または USESEGMENT の呼び出しのいずれかが失敗した。
417
COMPILER LOGIC ERROR
種 類: FAILURE
意 味:原因が容易に特定できないエラーが発生したときに、このメッセージが発行される。
421
CONTROL DATA SPACE OVERFLOW
種 類: FAILURE
意 味:コンパイラのスタックが 32K ワードを超えた。
426750-001J
付録 C-67
付録 C SCREEN COBOL コンパイラ診断メッセージ
423
FILE ERROR ON RUN UNIT FILE
種 類: FAILURE
意 味:ラン・ユニット・ファイルでのファイル・オペレーションが、重大なエラーが発生するまで繰
り返された。
425
CODE FILE HAS EXCEEDED MAXIMUM POBJ CODE FILE SIZE
種 類: FAILURE
意 味: POBJ ファイルの最大サイズを超えた。
431
NOT SUPPORTED
種 類: FAILURE
意 味:サポートされない機能。
435
BLANK CONTINUATION LINE
種 類: WARNING
意 味:継続行が、すべて空白である。
436
ILLEGAL INDICATOR CHARACTER
種 類: WARNING
意 味:この行では、インジケータ文字は有効ではない。
440
INCORRECT NUMBER OF PARAMETERS
種 類: ERROR
意 味:正規のパラメータ・カウントと実際のパラメータ・カウントが一致しない
付録 C-68
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
441
NAME CONFLICT
種 類: ERROR
意 味: 2 つの一意名が同じ名前である。
442
AMBIGUOUS REFERENCE
種 類: ERROR
意 味: 2 つ以上のオブジェクトを示してしまう名前を使用して参照しようとした。
444
SYNTAX ERROR DETECTED AT TOKEN
種 類: ERROR
意 味:措置が不要な構文エラー。
445
SYNTAX ERROR - REPLACING UNEXPECTED TOKEN BY <token>
種 類: ERROR
意 味:現在のトークンを置き換えれば修復される構文エラー。
446
SYNTAX ERROR - INSERTING MISSING TOKEN
種 類: ERROR
意 味:欠落しているトークンを挿入すれば修復される構文エラー。
447
SYNTAX ERROR - DELETING UNEXPECTED TOKEN
種 類: ERROR
意 味:トークンを削除すれば修復される構文エラー。
426750-001J
付録 C-69
付録 C SCREEN COBOL コンパイラ診断メッセージ
448
PARSING RESUMED AT TOKEN
種 類: ERROR
意 味:バッファにあるトークンを現在のトークンまで廃棄すれば修復される構文エラー。
449
END-OF-FILE ENCOUNTERED DURING ERROR RECOVERY
種 類: ERROR
意 味:構文エラー。エラーを回復しようとしているときに、ファイルの終わりを見つけた。
453
ILLEGAL SENDING OR RECEIVING ITEM IN MOVE STATEMENT
種 類: ERROR
意 味:次のいずれかの状態が存在する。
□ 数字データ項目は、英字データ項目に転記することはできない。
□ 非整数数字データ項目は、英字データ項目に転記することはできない。
□ 英字データ項目は、数字データ項目に転記することはできない。
□ 2 バイト・データ項目は、1 バイト・データ項目に転記することはできない。
454
READ-ONLY SPECIAL REGISTER;
MAY NOT BE ALTERED
種 類: ERROR
意 味:次に示す特殊レジスタの内容を変更することができない。
PW-UNSOLICITED-MESSAGE QUEUED
PW-TCP-PROCESS-NAME
PW-TCP-SYSTEM-NAME.
455
UNABLE TO OPEN SCREEN COBOL LIBRARY FILE
種 類: ERROR
意 味:指定された SCREEN COBOL ライブラリにアクセスすることができない。このライブラリが存
在しない、またはコンパイル時に共有できない。
付録 C-70
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
456
UNABLE TO LIST LOAD MAP
種 類: ERROR
意 味:内部プロシージャ・ロード・マップを表示させるためにオブジェクト・ファイルを開こうとし
たが、開けない。
457
UNDEFINED DATA NAME
種 類: ERROR
意 味:参照されたデータ項目は、ENVIRONMENT DIVISION または DATA DIVISION のいずれにも
記述されていない。
458
ONLY A FILE NAME IS ALLOWED IN THIS CONTEXT
種 類: ERROR
意 味:ここには、有効な NSK オペレーティング環境ファイル名が必要である。
459
ONLY A MNEMONIC NAME IS ALLOWED IN THIS CONTEXT
種 類: ERROR
意 味:この文脈には、システム名 ( 呼び名 ) が必要である。
460
NO CORRESPONDING DATA NAMES
種 類: ERROR
意 味:指定されたグループ間に、対応するデータ名が見つからなかった。
426750-001J
付録 C-71
付録 C SCREEN COBOL コンパイラ診断メッセージ
461
UNDEFINED OR AMBIGUOUS PROCEDURE ACCESS
種 類: ERROR
意 味: PERFORM または GO TO ステートメントで参照されるプロシージャ名がソース・テキスト内
になかった、またはそのプロシージャ名の修飾が不十分なため一意に参照できない。
462
ILLEGAL ALTER CANDIDATE
種 類: ERROR
意 味:変更済みとマークされたプロシージャが、有効な変更の候補ではない。
463
INDEPENDENT SEGMENTS NOT SUPPORTED
種 類: ERROR
意 味: SCREEN COBOL では、独立セグメントをサポートしていない。
464
ILLEGAL DATA ITEM IN IF STATEMENT
種 類: ERROR
意 味:条件ステートメントの中にあるオペランドが、不正に定義されたデータ項目である。このオペ
ランドは数字変数データ項目として定義された、あるいは、IF ... DOUBLEBYTE ステートメン
トを使用して PIC N データ項目または PIC 9 数字データ項目のリテラルを比較しようとした。
465
ONLY A PROGRAM NAME IS ALLOWED IN THIS CONTEXT
種 類: ERROR
意 味:ここには、プログラム名が必要である。
付録 C-72
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
467
ONLY AN ALPHABET NAME IS ALLOWED IN THIS CONTEXT
種 類: ERROR
意 味:この文脈では、示された名前は英字名を参照しなければならない。
468
EMPTY GO TO NOT LABELED
種 類: ERROR
意 味:この形式の GO TO ステートメントは、ラベルを付けられた単一ステートメント段落でしか指定
できない。
470
EXPECT ELEMENTARY NUMERIC DATA ITEM IN THIS CONTEXT
種 類: ERROR
意 味:この文脈では、数字データ項目が必要である。
471
EXPECT GROUP DATA ITEM IN THIS CONTEXT
種 類: ERROR
意 味:この文脈では、グループ・データ項目だけを指定することができる。
472
INVALID TABLE SUBSCRIPT OR INDEX
種 類: ERROR
意 味:この項目は、データ項目ではない。指標 ( インデックス ) 付けすることは認められない。
426750-001J
付録 C-73
付録 C SCREEN COBOL コンパイラ診断メッセージ
473
TOO MANY OR TOO FEW PARAMETERS
種 類: ERROR
意 味: CALL ステートメントの USING 句で指定されたパラメータの数が、PROCEDURE DIVISION
の見出しの USING 句で指定されたパラメータの数と一致しない。
474
EXPECT A DATA WORD OR IDENTIFIER IN THIS CONTEXT
種 類: ERROR
意 味:クラス条件では、データ項目だけを使用することができる。
475
CATEGORY MUST BE ALPHANUMERIC OR ALPHABETIC
種 類: ERROR
意 味:この文脈では、データ項目のタイプは英数字または英字でなければならない。
476
CATEGORY MUST BE ALPHANUMERIC OR NUMERIC
種 類: ERROR
意 味:この文脈では、データ項目のタイプは英数字または数字でなければならない。
481
MISSING PROGRAM
種 類: ERROR
意 味:呼び出されたプログラムが、SCREEN COBOL プログラム・ライブラリにも、ソース・テキス
トにもない。
付録 C-74
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
485
EXPECT A TABLE SPECIFIER
種 類: ERROR
意 味:このデータ項目の記述には、OCCURS 句が含まれていなければならない。
486
INCORRECT NUMBER OF SUBSCRIPTS OR INDICES
種 類: ERROR
意 味:このデータ項目にアクセスするのに使用されている添え字の番号が正しくない ( ゼロは使用で
きない )。( 指標付けは認められない。)
487
REFERENCE DATA ITEM TOO LARGE
種 類: ERROR
意 味:データ項目に、32,000 を超える文字を指定した PICTURE 句がある。
488
ONLY AN INDEX NAME IS ALLOWED IN THIS CONTEXT
種 類: ERROR
意 味:この文脈では、指標名だけを使用できる。指標 ( インデックス ) として使用するのは、指標名で
なければならない。
489
AN UNEXPECTED ERROR OCCURRED WHILE BUILDING RUN UNIT
種 類: ERROR
意 味:オブジェクト・ファイルの作成中に回復不能な I/O エラーが発生した。コンパイルをリスター
トしなければならない。
490
EXPECT AN INDEX NAME OR INDEX DATA ITEM
種 類: ERROR
意 味:指標名または指標データ項目が必要である。
426750-001J
付録 C-75
付録 C SCREEN COBOL コンパイラ診断メッセージ
491
ILLEGAL USE OF INDEX NAME OR INDEX DATA ITEM
種 類: ERROR
意 味:指標名または指標データ項目は認められない。
495
INVALID VARYING ITEM
種 類: ERROR
意 味: PERFORM ステートメントの VARYING 一意名は、想定される小数点の右側に桁が存在しない
整数基本データ項目として記述しなければならない。
498
ILLEGAL COMPARISON BETWEEN DISPLAY AND COMPUTATIONAL DATA
種 類: ERROR
意 味:数字 COMP データ項目と非数字データ項目との比較は認められない。
499
NON-INTEGER OR CONTAINS P’S
種 類: ERROR
意 味:この文脈では、PICTURE 句に P が指定されていない整数データ項目が必要である。
500
EXPECT ALPHANUMERIC DATA ITEM
種 類: ERROR
意 味:このデータ項目は、明示的または暗黙的な英数字データ項目でなければならない。
付録 C-76
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
501
EXPECT DISPLAY USAGE
種 類: ERROR
意 味:このデータ項目は、USAGE として明示的または暗黙的な DISPLAY 指定がなければならない。
503
EXPECT LEVEL 01 OR 77 DATA ITEM
種 類: ERROR
意 味: CALL ステートメントの USING 指定には、レベル 01 およびレベル 77 データ項目だけを指定
することができる。
504
INVALID DISPLAY ITEM
種 類: ERROR
意 味: DATA DIVISION に項目が定義されていない。
507
INCONSISTENT OBJECT LIBRARY REFERENCES
種 類: ERROR
意 味:ライブラリが開かれていない、または間違っているため、ライブラリへの参照が無効である。
510
FEATURE NOT YET IMPLEMENTED
種 類: ERROR
意 味:プログラムが、まだ実装されていない機能を使用しようとした。
511
EXPECT A RECORD NAME
種 類: ERROR
意 味:ここには、レコード名が必要である。
426750-001J
付録 C-77
付録 C SCREEN COBOL コンパイラ診断メッセージ
515
INVALID OPERATOR OR OPERAND IN ARITHMETIC EXPRESSION
種 類: ERROR
意 味:算術式に + - / * ( プラス、マイナス、斜線、またはアスタリスク ) 以外の算術演算子または非数
字オペランドが含まれている。
516
INVALID OPERATOR OR OPERAND IN CONDITIONAL EXPRESSION
種 類: ERROR
意 味:条件式に間違った条件演算子またはオペランド ( 一意名の形式 ) が含まれている。
518
ILLEGAL TABLE OCCURRENCE NUMBER (BOUNDS VIOLATION)
種 類: ERROR
意 味:間違ったオカレンス番号が見つかった。
523
ONLY INTEGER EXPONENTS ARE ALLOWED
種 類: ERROR
意 味:べき乗の指数に整数以外が使用されている。
524
EXPONENT RANGE ERROR: ABS(EXPONENT) > 18
種 類: ERROR
意 味:べき乗の指数は、18 を超えてはならない。
525
RECORD MUST BE ASSOCIATED WITH SORT MERGE FILE
種 類: ERROR
意 味:レコードがソート・マージ・ファイルに関連付けられていない。
付録 C-78
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
526
ONLY A SORT MERGE FILE IS ALLOWED
種 類: ERROR
意 味:ここには、ソート・マージ・ファイルが必要である。
527
ONLY AN ELEMENTARY ALPHANUMERIC DATA ITEM IS ALLOWED
種 類: ERROR
意 味:この文脈では、参照されるデータ項目は英数字基本データ項目でなければならない。
528
ILLEGAL USING FILE IN SORT OR MERGE
種 類: ERROR
意 味: USING に指定されたファイルは、この文脈では無効である。
529
ILLEGAL DATA ITEM IN ARITHMETIC STATEMENT
種 類: ERROR
意 味:算術ステートメントのオペランドに間違って定義されたデータ項目がある。このオペランドは、
数字編集データ項目として定義しなければならない。
530
DIVIDE BY ZERO
種 類: ERROR
意 味: DIVIDE または COMPUTE ステートメントに、値がゼロのリテラルによる除算があった。
426750-001J
付録 C-79
付録 C SCREEN COBOL コンパイラ診断メッセージ
531
ONLY A NUMERIC LITERAL IS ALLOWED
種 類: ERROR
意 味:算術式を組み立てるときは、数字リテラルおよび数字データ項目だけを使用することができる。
540
VARIABLE LENGTH OR CONTAINS OCCURS CLAUSE
種 類: ERROR
意 味:ここには、OCCURS 項目を使用することができない。
544
INPUT AND OUTPUT PROCEDURES MUST BE SECTIONS
種 類: ERROR
意 味:入力または出力プロシージャは、SECTION でなければならない。
545
ILLEGAL PERFORM INVOCATION
種 類: ERROR
意 味:ステートメントが、相互に排他的な SECTION の間で、違法な暗黙的または明示的な制御移動
を生成する。このステートメントは、要求された処理が構文規則に沿っているかのようにコン
パイルされる。
545
ILLEGAL PERFORM INVOCATION
種 類: WARNING
意 味:ステートメントが、相互に排他的な SECTION の間で、違法な暗黙的または明示的な制御移動
を生成する。このステートメントは、要求された処理が構文規則に沿っているかのようにコン
パイルされる。次のいずれかの状態が存在する。
□ デバッグ節において、宣言プロシージャを PERFORM ステートメントで指定している。
□ 非デバッグ宣言節において、非デバッグ宣言プロシージャを PERFORM ステートメントで
指定している。
□ 非宣言節において、非デバッグ宣言プロシージャを PERFORM ステートメントで指定して
いる。
付録 C-80
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
546
ILLEGAL GO TO INVOCATION
種 類: ERROR
意 味:ステートメントが、相互に排他的な SECTION の間で、違法な暗黙的または明示的な制御移動
を生成する。このステートメントは、要求された処理が構文規則に沿っているかのようにコン
パイルされる。次のいずれかの状態が存在する。
□ GO TO ステートメントによって、宣言節と非宣言節の間で制御移動する。
□ GO TO ステートメントによって、デバッグ節と非デバッグ節の間で制御移動する。
546
ILLEGAL GO TO INVOCATION
種 類: WARNING
意 味:ステートメントが、相互に排他的な SECTION の間で、違法な暗黙的または明示的な制御移動
を生成する。このステートメントは、要求された処理が構文規則に沿っているかのようにコン
パイルされる。
551
MISSING USE STATEMENT
種 類: ERROR
意 味:ここには、USE ステートメントが必要である。
552
MULTIPLE USE DEBUGGING PROCEDURE ASSIGNMENT
種 類: ERROR
意 味:矛盾するデバッグ指定がある。
553
ILLEGAL ITEM FOR NUMERIC TEST
種 類: ERROR
意 味:ここでは、演算符号が従属する英字項目またはグループ項目は有効ではない。
426750-001J
付録 C-81
付録 C SCREEN COBOL コンパイラ診断メッセージ
554
THIS ITEM CAN NOT BE DEBUGGED
種 類: ERROR
意 味:この項目は、デバッグすることができない。
558
ALPHABETIC ITEM NOT ALLOWED
種 類: ERROR
意 味: ACCEPT ステートメントの対象となる項目に、英字項目は認められない。
559
TOO MANY VARYING PHRASES
種 類: ERROR
意 味: VARYING 指定の入れ子の階層が、深くなり過ぎている。
560
RECEIVING ITEM INCONSISTENT WITH SENDING ITEM
種 類: ERROR
意 味: MOVE ステートメントで、ソース・データ項目と宛先データ項目が矛盾している。
561
ONLY AN INTEGER ALLOWED IN THIS CONTEXT
種 類: ERROR
意 味:リテラルまたは添え字として、非整数が使用されている。
562
ITEM IS BOTH SUBSCRIPTED AND INDEXED
種 類: ERROR
意 味:添え字付けと標識付けは、相互に排他的である。
付録 C-82
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
563
INTEGER NOT IN EXPECTED RANGE
種 類: ERROR
意 味:これは、制限を超えた整数値に対する一般的なエラーである。なお、制限は文脈によって異なる。
564
EXPECT NUMERIC OR NUMERIC-EDITED DATA ITEM
種 類: ERROR
意 味:ここには、数字項目が必要である。
565
ACCESS TO DEBUG SPECIAL REGISTERS ALLOWED ONLY IN DEBUGGING
SECTIONS
種 類: ERROR
意 味: DEBUGGING SECTION 以外では、DEBUG 特殊レジスタへのアクセスは認められない。
567
DEBUGGING SECTIONS MUST BE FIRST
種 類: ERROR
意 味: DEBUGGING SECTION は、最初になければならない。
568
ADDRESSING RANGE EXCEEDED
種 類: ERROR
意 味: SEND ステートメントのワーキング・ストレージ変数のサイズは、32,000 バイトを超えてはな
らない。これは、送信に使用する変数のリストおよび応答を保管する変数のリストの両方に適
用される。それぞれのリストにあるサイズの合計は、32,000 バイトまで可能であるが、それを
超えてはならない。
426750-001J
付録 C-83
付録 C SCREEN COBOL コンパイラ診断メッセージ
569
SOURCE ITEM MAY NOT EXCEED 18 DIGITS
種 類: ERROR
意 味: MOVE ステートメントによって、18 文字を超える英数字リテラルを 1 つの数字項目に保管しよ
うとした。数字データは最大 18 桁に制限されている。
573
PROTECTION ATTRIBUTE MAY NOT BE CHANGED
種 類: ERROR
意 味: T16-6510 端末では、PROTECTED 属性を変更してはならない。
574
OVERLAY SCREEN LARGER THAN OVERLAY AREA
種 類: ERROR
意 味:オーバーレイ・スクリーンが、オーバーレイ領域より大きい。
575
ACCEPT TERMINATION MNEMONIC NAME MUST BE FUNCTION KEY
種 類: ERROR
意 味: ACCEPT ステートメントを終了するのに、表示属性を使用してはならない。
576
SERVER CLASS NAME MUST BE ALPHA OR ALPHANUMERIC
種 類: ERROR
意 味: PATHCOM は、数字のサーバ・クラス名を受け入れない。
577
TURN MNEMONIC NAME MUST BE DISPLAY ATTRIBUTE
種 類: ERROR
意 味: TURN ステートメントでは、ファンクション・キーは認められない。
付録 C-84
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
578
MUST BE SCREEN NAME
種 類: ERROR
意 味:この文脈では、グループ、オーバーレイ領域、およびフィールドは認められない。
579
MUST BE BASE SCREEN NAME
種 類: ERROR
意 味:この文脈では、オーバーレイ・スクリーンは使用してはならない。
580
MUST BE OVERLAY SCREEN NAME
種 類: ERROR
意 味:この文脈では、ベース・スクリーンを使用してはならない。
581
MUST BE SCREEN ITEM
種 類: ERROR
意 味:この文脈では、データ項目は認められない。
582
SCREEN ITEM TOO CLOSE TO START OF SCREEN
種 類: ERROR
意 味:最初のスクリーン項目の前に必要な間隔がない。スクリーン・フィールドの宣言の規則の詳細
については、
『Compaq NonStop Pathway/iTS TCP and Terminal Programming Guide』を参照して
下さい。
583
SCREEN ITEM TOO CLOSE TO END OF SCREEN
種 類: ERROR
意 味:最後のスクリーン項目の後に必要な間隔がない。
426750-001J
付録 C-85
付録 C SCREEN COBOL コンパイラ診断メッセージ
584
SCREEN ITEM SPANS NOT-FULLWIDTH OVERLAY AREA LINE
種 類: ERROR
意 味:オーバーレイ・スクリーンがベース・スクリーンより幅が狭い場合に、スクリーン項目がオー
バーレイ・スクリーン行を越えてはならない。
585
SCREEN ITEM OVERLAPS OR IS TOO CLOSE TO NEXT ITEM
種 類: ERROR
意 味:スクリーン要素間に必要な間隔がない。
586
SCREEN ITEM OVERLAPS OR IS TOO CLOSE TO PREVIOUS ITE
種 類: ERROR
意 味:スクリーン要素間に必要な間隔がない。
587
SCREEN ITEM WITHOUT OCCURS CLAUSE IS SUBSCRIPTED
種 類: ERROR
意 味:添え字付けは、OCCURS 句があるスクリーン項目だけに認められる。
588
SCREEN ITEMS MAY HAVE ONE (1) SUBSCRIPT ONLY
種 類: ERROR
意 味: OCCURS 句があるスクリーン項目は、1つの単一テーブルと見なされる。
589
SCREEN ITEM SUBSCRIPT TOO LARGE
種 類: ERROR
意 味:添え字の値が、スクリーン項目の数を超えている。
付録 C-86
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
590
SCREEN ITEM SUBSCRIPT MUST BE INTEGER
種 類: ERROR
意 味:添え字はすべて整数でなければならない。
591
MUST BE OVERLAY AREA SCREEN NAME
種 類: ERROR
意 味: DISPLAY OVERLAY ステートメントの AT 句に指定されたオーバーレイ領域が、オーバーレ
イ領域として定義されていない。
592
’LENGTH MUST BE’ VALUE MUST BE LESS THAN 256
種 類: ERROR
意 味: LENGTH MUST BE 句に指定することができる最大値は、255 である。
593
INCORRECT NUMBER OF OPERANDS IN ARITHMETIC EXPRESSION
種 類: ERROR
意 味:演算式に含まれるオペランドが、多過ぎるまたは少な過ぎる。
594
SCALE OF MUST BE VALUE EXCEEDS SCALE OF ASSOCIATED DATA ITEM
種 類: ERROR
意 味: MUST BE 句に指定された数字リテラルに、小数点以下の桁数が多過ぎる。
426750-001J
付録 C-87
付録 C SCREEN COBOL コンパイラ診断メッセージ
595
MUST BE VALUE TOO LARGE FOR ASSOCIATED DATA ITEM
種 類: ERROR
意 味: MUST BE 句に指定された数字リテラルは、PICTURE 句で定義したデータ項目の大きさを超え
ている。
596
TYPE OF MUST BE VALUE IS INCOMPATIBLE WITH ASSOCIATED DATA ITEM
種 類: ERROR
意 味: MUST BE 句に指定されたリテラルのタイプが、関連付けられたデータ項目のデータ・タイプ
と一致しない。数字リテラルは、数字データ項目に関連付けされなければならない。また、非
数字リテラルは、非数字データ項目に関連付けされなければならない。
597
QUALIFIED NAME TOO LONG - CROSSREF LINE WILL BE TRUNCATED
種 類: WARNING
意 味:コンパイル中に、SCOBOLX は CROSSREF に送信するための完全修飾の名前を構築する。名
前がバッファの長さを超えると、その名前は切り詰められた形で CROSSREF リストに現れる。
これは、多重レベルの修飾により発生する。
598
MUST NOT BE OVERLAY AREA NAME
種 類: ERROR
意 味:この文脈では、オーバーレイ領域は認められない。
599
EXPECT LEVEL 01 MESSAGE NAME
種 類: ERROR
意 味:コンパイラには、レベル 01 のメッセージ記述項またはデータ項目が必要である。このメッセー
ジまたはデータ項目のレベルが 01 より大きい。
付録 C-88
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
600
EXPECT DATA ITEM OR MESSAGE NAME
種 類: ERROR
意 味:コンパイラには、既存のレベル 01 のメッセージ記述項またはデータ項目を識別する名前が指定
されていることが必要である。
601
THIS VERB IS NOT LEGAL WHEN ’TERMINAL IS INTELLIGENT’
種 類: ERROR
意 味: Pathway 環境で SET TERM、SET PROGRAM、または RUN PROGRAM コマンドで端末タイプ
が INTELLIGENT に指定されている端末で稼動する SCREEN COBOL プログラムでは、この動
詞を使用することはできない。
602
THIS VERB IS NOT LEGAL WITHOUT ’TERMINAL IS INTELLIGENT’
種 類: ERROR
意 味:この動詞を使用するには、SET TERM、SET PROGRAM、または RUN PROGRAM コマンドで
端末タイプを INTELLIGENT に指定しなければならない。
603
MESSAGE FORMAT MUST BE THE SAME IN ALL REPLIES
種 類: ERROR
意 味:すべての応答は、同一のメッセージ・フォーマットでなければならない。
604
REPLY CODE FIELD MUST BE WORKING-STORAGE ITEM
種 類: ERROR
意 味: SEND MESSAGE ステートメントで指定された REPLY CODE FIELD IS 句が、ワーキング・ス
トレージにはないフィールドを参照した。
426750-001J
付録 C-89
付録 C SCREEN COBOL コンパイラ診断メッセージ
605
ITEMS IN TRANSFORM LIST MUST BE ALL OF THE SAME TYPE
種 類: ERROR
意 味: TRANSFORM ステートメントの入力リストまたは出力リストのいずれかに指定されているす
べての項目は、タイプが同じで、すべてが WORKING-STORAGE SECTION の項目であるか、
すべてが MESSAGE SECTION の項目でなければならない。
606
’MUST BE’ AGGREGATE LENGTHS GREATER THAN 768 BYTE MAXIMUM
種 類: ERROR
意 味: SCREEN SECTION の MUST BE 句で指定されたリテラルの合計の長さ ( バイト単位 ) に、各リ
テラルごとに 1 バイトを加算した数は 768 を超えてはならない。
607
VARYING1 255-BYTE MAXIMUM LENGTH EXCEEDED
種 類: ERROR
意 味: VARYING1 フォーマットのメッセージの最大の長さは、255 バイトである。
608
ILLEGAL FIGURATIVE CONSTANT SPECIFIED IN MOVE TO DBCS ITEM
種 類: ERROR
意 味: SPACE または SPACES 以外の表意定数を、2 バイト・データ項目に転送しようとした。
609
QUOTED LITERAL STRING CONTAINS NON-DBCS IN MOVE TO DBCS ITEM
種 類: ERROR
意 味: 2 バイト文字以外の文字を含む、引用符で囲まれたリテラル・ストリングを、PIC N データ項目
に転送しようとした。
付録 C-90
426750-001J
付録 C SCREEN COBOL コンパイラ診断メッセージ
610
ILLEGAL DATA ITEM OR LITERAL IN DOUBLEBYTE TEST
種 類: ERROR
意 味: IF ... DOUBLEBYTE ステートメントを、PIC X、PIC A、または PIC N 以外のデータ項目に対
して実行しようとした。
611
SCREEN ITEM REQUIRES ’AT <OVERLAY>’ QUALIFIER
種 類: ERROR
意 味:この文脈では、スクリーン項目には AT <OVERLAY> が必要である。
612
MUST BE ELEMENTARY SCREEN ITEM
種 類: ERROR
意 味:この文脈では、ベース・スクリーン項目だけが有効である。
613
SELECT or REPLY CODE ITEM HAS BEEN SYNCHRONIZED
種 類: WARNING
意 味: SELECT 項目または REPLY CODE 項目が同期している。
614
CURSOR WITHIN CLAUSE USED WITH SCREEN FIELD THAT WRAPS
種 類: WARNING
意 味:このスクリーン・フィールドは折り返されている。
615
MNEMONIC USED MUST BE A DISPLAY VIDEO ATTRIBUTE
種 類: ERROR
意 味:ここには、表示ビデオ属性が必要である。
426750-001J
付録 C-91
付録 C SCREEN COBOL コンパイラ診断メッセージ
616
’CODE OTHER’ MUST BE LAST STMT IN REPLY CODE LIST OF SEND
種 類: ERROR
意 味: 1 つの SEND ステートメントに属する YIELD グループのセットの中では、OTHER を含んでい
る YIELD グループは最後に指定されなければならない。
617
THERE CAN ONLY BE ONE ’CODE OTHER’ IN A SEND CLAUSE
種 類: ERROR
意 味: 1 つの SEND ステートメントに、2 つ以上の OTHER がある。
618
THERE IS AN ERROR IN THIS ACCEPT STATEMENT
種 類: ERROR
意 味:この ACCEPT ステートメントには、FROM、TO などの句が指定されていない。
619
A PROMPT IS NOT ALLOWED IN BLOCK MODE
種 類: ERROR
意 味:ブロック・モードのプログラムでは、PROMPT 句を使用してはならない。
620
THE MAXIMUM NUMBER OF REPLY CODES PER YIELD GROUP IS 255
種 類: ERROR
意 味:各 YIELD グループは、最大 255 の応答コードを持つことができる。
付録 C-92
426750-001J
付録 D MESSAGE SECTION ステートメントのエラー
付録 D MESSAGE SECTION ステートメントのエラー
この付録は、IDS (Intelligent Device Support) を使用する MESSAGE SECTION ステートメントの実行中
に発生するエラーを処理するために必要な情報を説明します。
MESSAGE SECTION ステートメントに ON ERROR 句が指定されているときにエラーが発生した場合
は、TERMINATION-STATUS 特殊レジスタがそのエラー番号に設定されます。この付録では、各エラー
番号について説明します。
ON ERROR 句が指定されていない場合は、TERMINATION-STATUS 特殊レジスタにエラー番号は設定
されず、システムは致命的なエラーとしてプログラムを中断します。TCP エラーについては、PATHMON
ログ・ファイルに記録されます。
TERMINATION-STATUS 1 Pathway Error 3161
I/O ERROR INTELLIGENT DEVICE
原 因:入力または出力オペレーションの実行中に、ファイル・システム・エラーが発生した。このエ
ラーは、以下のステートメントに適用される。
□ SEND MESSAGE ステートメント
□ RECEIVE UNSOLICITED MESSAGE ステートメント
□ REPLY TO UNSOLICITED MESSAGE ステートメント
結 果: TERMINATION-SUBSTATUS 特殊レジスタにファイル・システム・エラー番号が設定される。
ON ERROR 句が指定されている場合は、システムは致命的なエラーとしてプログラムを中断す
る。TCP エラーについては、PATHMON ログ・ファイルに記録される。
TERMINATION-STATUS 2 Pathway Error 3162
RECEIVED MESSAGE SMALLER THAN EXPECTED
原 因:このメッセージは、以下のいずれかの状態に適用される。
□ SEND MESSAGE ステートメントまたは TRANSFORM ステートメントにおいてエラーが発
生したときは、受信したメッセージが YIELDS リストで指定された応答メッセージより短
かった。
□ RECEIVE UNSOLICITED MESSAGE ステートメントにおいてエラーが発生したときは、
YIELDS の指定より UNSOLICITED メッセージが短かった。
結 果:このメッセージは、以下のいずれかが適用される。
□ SEND MESSAGE ステートメントまたは TRANSFORM ステートメントにおいてエラーが発
生したときは、TERMINATION-SUBSTATUS 特殊レジスタに受信したバイト数が入れられ
る。
426750-001J
付録 D-1
付録 D MESSAGE SECTION ステートメントのエラー
□ RECEIVE UNSOLICITED MESSAGE ステートメントにおいてエラーが発生したときは、
メッセージは拒否される。
TCP は、メッセージの送信元にエラー10 (COULD NOT DELIVER)
を返す。
ON ERROR 句が指定されていない場合は、システムは致命的なエラーとしてプログラムを中断
する。TCP エラーについては、PATHMON ログ・ファイルに記録される。
TERMINATION-STATUS 3 Pathway Error 3163
RECEIVED MESSAGE LARGER THAN EXPECTED
原 因:このメッセージは、以下のいずれかの状態に適用される。
□ SEND MESSAGE ステートメントまたは TRANSFORM ステートメントにおいてエラーが発
生したときは、受信したメッセージが YIELDS リストで指定された応答メッセージより長
かった。
□ RECEIVE UNSOLICITED MESSAGE ステートメントにおいてエラーが発生したときは、
メッセージは拒否される。
結 果:このメッセージは、以下のいずれかが適用される。
□ SEND MESSAGE ステートメントにおいてエラーが発生したときは、TERMINATION-
SUBSTATUS 特殊レジスタに受信したバイト数が入れられる。データ・オーバフロー I/O エ
ラーの性質により、受信したバイト数は送信されたバイト数より少なくなることがあること
に注意して下さい。
□ TRANSFORM ステートメントにおいてエラーが発生したときは、 TERMINATION-
SUBSTATUS 特殊レジスタに変換する <trans-rec-out> データのバイト数が入れられる。
□ RECEIVE UNSOLICITED MESSAGE ステートメントにおいてエラーが発生したときは、
メッセージは拒否される。
TCP は、メッセージの送信元にエラー10 (COULD NOT DELIVER)
を返す。
ON ERROR 句が指定されていない場合は、システムは致命的なエラーとしてプログラムを中断
する。TCP エラーについては、PATHMON ログ・ファイルに記録される。
TERMINATION-STATUS 4 Pathway Error 3164
REPLY CODE OF RECEIVED MESSAGE UNDEFINED
原 因:このメッセージは、以下のいずれかの状態に適用される。
□ SEND MESSAGE ステートメントまたは TRANSFORM ステートメントにおいてエラーが発
生したときは、受信したメッセージのコードがそれぞれ YIELDS または SELECT リストで
指定された応答コードまたは選択コードのいずれとも一致しない。
□ RECEIVE UNSOLICITED MESSAGE ステートメントにおいてエラーが発生したときは、受
信したコードが指定された受信コード値のいずれとも一致しない。
結 果: RECEIVE UNSOLICITED MESSAGE ステートメントにおいてエラーが発生したときは、
UNSOLICITED メッセージは拒否される。TCP は送信側にエラー 10 (COULD NOT DELIVER)
を返す。
付録 D-2
426750-001J
付録 D MESSAGE SECTION ステートメントのエラー
ON ERROR 句が指定されていない場合は、システムは致命的なエラーとしてプログラムを中断
する。TCP エラーについては、PATHMON ログ・ファイルに記録される。
TERMINATION-STATUS 5 Pathway Error 3165
EDIT ERROR OCCURRED ON MESSAGE INPUT
原 因:このメッセージは、以下のいずれかの状態に適用される。
□ SEND MESSAGE ステートメントまたは TRANSFORM ステートメントにおいてエラーが発
生したときは、入力で編集エラーが発生した。
□ RECEIVE UNSOLICITED MESSAGE ステートメントにおいてエラーが発生したときは、
UNSOLICITED メッセージの入力で編集エラーが発生した。
結 果:このエラーは、MESSAGE SECTION の中でマップされるメッセージに対してだけ返される。
RECEIVE UNSOLICITED MESSAGE ステートメントにおいてエラーが発生したときは、
UNSOLICITED メッセージは拒否される。TCP は UNSOLICITED メッセージの送信側にエラー
10 (COULD NOT DELIVER) を返す。ON ERROR 句が指定されていない場合は、システムは致
命的なエラーとしてプログラムを中断する。TCP エラーについては、PATHMON ログ・ファイ
ルに記録される。
TERMINATION-STATUS 6 Pathway Error 3166
RECEIVED MESSAGE EXCEEDS MAXIMUM ALLOWABLE SIZE
原 因:受信したメッセージが 32,000 バイトより長かった。このエラーは、以下のステートメントに適
用される。
□ SEND MESSAGE ステートメント
□ TRANSFORM ステートメント
結 果: ON ERROR 句が指定されていない場合は、システムは致命的なエラーとしてプログラムを中断
する。TCP エラーについては、PATHMON ログ・ファイルに記録される。
TERMINATION-STATUS 7 Pathway Error 3167
MESSAGE TO SEND EXCEEDS MAXIMUM ALLOWABLE SIZE
原 因:出力として想定されるメッセージが 32,000 バイトより大きかった。このエラーは、以下のス
テートメントに適用される。
□ SEND MESSAGE ステートメント
□ TRANSFORM ステートメント
結 果: ON ERROR 句が指定されていない場合は、システムは致命的なエラーとしてプログラムを中断
する。TCP エラーについては、PATHMON ログ・ファイルに記録される。
426750-001J
付録 D-3
付録 D MESSAGE SECTION ステートメントのエラー
TERMINATION-STATUS 8 Pathway Error 3168
DEVICE SUBCLASS INVALID
原 因: PATHCOM SET TERM コマンドで、
TYPE パラメータが terminal-type : terminal-
subtype に よ っ て 指定された。terminal-type が INTELLIGENT の場合は、
terminal-subtype が 0 または 1 以外の値であった。
このエラーは、SEND MESSAGE ステートメントに適用される。
結 果: ON ERROR 句が指定されていない場合は、システムは致命的なエラーとしてプログラムを中断
する。TCP エラーについては、PATHMON ログ・ファイルに記録される。
TERMINATION-STATUS 9 Pathway Error 3169
ILLEGAL TIMEOUT VALUE
原 因:このステートメントで、不正なタイムアウト値が指定された。不正な値とは、負の値または
21474836 より大きい値のいずれかです。このエラーは、以下のステートメントに適用される。
□ SEND MESSAGE ステートメント
□ RECEIVE UNSOLICITED MESSAGE ステートメント
結 果: ON ERROR 句が指定されていない場合は、システムは致命的なエラーとしてプログラムを中断
する。エラーについては、PATHMON ログ・ファイルに記録される。
TERMINATION-STATUS 10 Pathway Error 3170
INVALID END OF MESSAGE CHARACTER ENCOUNTERED
原 因:無効なメッセージの終了 (end-of-message) が見つかった。このエラーは、MESSAGE SECTION
の中でマップされるメッセージに対してだけ返される。このエラーは、以下のステートメント
に適用される。
□ SEND MESSAGE ステートメント
□ RECEIVE UNSOLICITED MESSAGE ステートメント
結 果: UNSOLICITED メッセージについては、メッセージは拒否される。UNSOLICITED メッセージ
の送信側は、エラー 10 (COULD NOT DELIVER) を返す。
ON ERROR 句が指定されていない場合は、システムは致命的なエラーとして当該のプログラ
ム・ユニットを中断する。TCP エラーについては、PATHMON ログ・ファイルに記録される。
付録 D-4
426750-001J
付録 D MESSAGE SECTION ステートメントのエラー
TERMINATION-STATUS 11 Pathway Error 3171
FIELD LENGTH EXCEEDS MAXIMUM ALLOWABLE
原 因:特定のメッセージ・フィールドにあるデータが、MESSAGE SECTION テンプレートの対応す
るフィールドの中でマップされるには大きすぎた。このエラーは、以下のステートメントに適
用される。
□ SEND MESSAGE ステートメント
□ TRANSFORM ステートメント
□ REPLY TO UNSOLICITED MESSAGE ステートメント
結 果: ON ERROR 句が指定されていない場合は、システムは致命的なエラーとして当該のプログラ
ム・ユニットを中断する。TCP エラーについては、PATHMON ログ・ファイルに記録される。
TERMINATION-STATUS 12 Pathway Error 3172
MESSAGE LENGTH EXCEEDS MAXIMUM ALLOWED
原 因:送信しようとしたメッセージが 12,288 バイトより長かった。このエラーは、以下のステートメ
ントに適用される。
□ SEND MESSAGE ステートメント
□ TRANSFORM ステートメント
結 果: ON ERROR 句が指定されていない場合は、システムは致命的なエラーとして当該のプログラ
ム・ユニットを中断する。TCP エラーについては、PATHMON ログ・ファイルに記録される。
TERMINATION-STATUS 13 Pathway Error 3173
I/O ERROR ON CONTROL-26 OPERATION
原 因: UNSOLICITED メッセージが到着した。処理中の READ オペレーションを終了しようとしてい
るときに、ファイル・システムが I/O エラーを報告した。このエラーは、SEND MESSAGE ス
テートメントに適用される。
結 果: TERMINATION-SUBSTATUS 特殊レジスタにエラー番号が設定される。ON ERROR 句が指定
されていない場合は、システムは致命的なエラーとして当該のプログラム・ユニットを中断す
る。TCP エラーについては、PATHMON ログ・ファイルに記録される。
426750-001J
付録 D-5
付録 D MESSAGE SECTION ステートメントのエラー
TERMINATION-STATUS 14 Pathway Error 3174
CONTROL-26 OPERATION DID NOT COMPLETE IN TIME
原 因:処理中の READ オペレーションまたはそれに関連する I/O の終了が、5 分以内に完了しなかっ
た。このエラーは、SEND MESSAGE ステートメントに適用される。
結 果: ON ERROR 句が指定されていない場合は、システムは致命的なエラーとして当該のプログラ
ム・ユニットを中断する。TCP エラーについては、PATHMON ログ・ファイルに記録される。
TERMINATION-STATUS 15 Pathway Error 3175
EDIT ERROR OCCURRED ON MESSAGE OUTPUT
原 因: TCP が出力メッセージを作成中に、編集エラーが見つかった。このエラーは、以下のステート
メントに適用される。
□ SEND MESSAGE ステートメント
□ TRANSFORM ステートメント
□ REPLY TO UNSOLICITED MESSAGE ステートメント
結 果: MESSAGE SECTION の中でマップされるメッセージについてだけ TERMINATION-
SUBSTATUS 特殊レジスタに 15 が設定される。ON ERROR 句が指定されていない場合は、シ
ステムは致命的なエラーとして当該のプログラム・ユニットを中断する。TCP エラーについて
は、PATHMON ログ・ファイルに記録される。
TERMINATION-STATUS 16 Pathway Error 3176
ATTEMPT TO RECEIVE UNSOLICITED MESSAGE WITH ONE NOT YET REPLIED
TO
原 因: UNSOLICITED メッセージを受信しようとしたが、前のメッセージに応答していない。このエ
ラーは、RECEIVE UNSOLICITED MESSAGE ステートメントに適用される。
結 果: ON ERROR 句が指定されていない場合は、システムは致命的なエラーとして当該のプログラ
ム・ユニットを中断する。TCP エラーについては、PATHMON ログ・ファイルに記録される。
当該の SCREEN COBOL プログラム・ユニットは、REPLY TO UNSOLICITED MESSAGE ス
テートメントを実行する必要がある。
付録 D-6
426750-001J
付録 D MESSAGE SECTION ステートメントのエラー
TERMINATION-STATUS 17 Pathway Error 3177
NO UNSOLICITED MESSAGE TO REPLY TO
原 因: REPLY TO UNSOLICITED MESSAGE ステートメントを実行しようとしたが、RECEIVE
UNSOLICITED MESSAGE ステートメントが発行されていない。このエラーは、REPLY TO
UNSOLICITED MESSAGE ステートメントに適用される。
結 果: ON ERROR 句が指定されていない場合は、システムは致命的なエラーとして当該のプログラ
ム・ユニットを中断する。TCP エラーについては、PATHMON ログ・ファイルに記録される。
TERMINATION-STATUS 18 Pathway Error 3178
ATTEMPT TO RECEIVE UNSOLICITED MESSAGE WHEN TERM MAXINPUTMSGS
= 0
原 因: PATHCOM の SET TERM コマンドの MAXINPUTMSGS パラメータが 0 ( デフォルト ) に設定
された。したがって、UNSOLICITED メッセージを受信しようとしたが、フロントエンド・プ
ロセスは UNSOLICITED メッセージをキューに入れていない。このエラーは、RECEIVE
UNSOLICITED MESSAGE ステートメントに適用される。
結 果: ON ERROR 句が指定されていない場合は、システムは致命的なエラーとして当該のプログラ
ム・ユニットを中断する。TCP エラーについては、PATHMON ログ・ファイルに記録される。
TERMINATION-STATUS 19 Pathway Error 3179
DATA LEFT OVER ON SCATTER TO WORKING STORAGE
原 因:出力 ( ソース ) レコードが、YIELDS リストで指定された入力 ( 宛先 ) レコードより長かった。
このエラーは、TRANSFORM ステートメントに適用される。
結 果: ON ERROR 句が指定されていない場合は、システムは致命的なエラーとして当該のプログラ
ム・ユニットを中断する。TCP エラーについては、PATHMON ログ・ファイルに記録される。
TERMINATION-STATUS 20 Pathway Error 3180
NOT ENOUGH DATA FOR SCATTER TO WORKING STORAGE
原 因:出力 ( ソース ) レコードが、YIELDS リストで指定された入力 ( 宛先 ) レコードより短かった。
このエラーは、TRANSFORM ステートメントに適用される。
結 果: ON ERROR 句が指定されていない場合は、システムは致命的なエラーとして当該のプログラ
ム・ユニットを中断する。TCP エラーについては、PATHMON ログ・ファイルに記録される。
426750-001J
付録 D-7
付録 D MESSAGE SECTION ステートメントのエラー
TERMINATION-STATUS 21 Pathway Error 3181
VARIABLE FIELD SIZE WOULD EXCEED DECLARED FIELD SIZE
原 因: MESSAGE SECTION フィールドの宣言されたサイズに関して、不正な RESULTING COUNT
値がある。このエラーは、以下のステートメントに適用される。
□ SEND MESSAGE ステートメント
□ TRANSFORM ステートメント
□ RECEIVE UNSOLICITED MESSAGE ステートメント
□ REPLY TO UNSOLICITED MESSAGE ステートメント
結 果:制限のあるフィールドの処理中に処理されるフィールドが宣言されたサイズより大きい場合
に、このエラーが返される。このエラーは、MESSAGE SECTION の中でマップされるメッセー
ジに対してだけ返される。
RECEIVE UNSOLICITED MESSAGE ステートメントにおいてエラーが発生したときは、当該
の RECEIVE UNSOLICITED MESSAGE ステートメントが受信しようとした UNSOLICITED
メッセージは拒否される。TCP は、メッセージの送信元にエラー 10 (COULD NOT DELIVER)
を返す。
ON ERROR 句が指定されていない場合は、システムは致命的なエラーとして当該のプログラ
ム・ユニットを中断する。TCP エラーについては、PATHMON ログ・ファイルに記録される。
TERMINATION-STATUS 23 Pathway Error 3183
DEPENDING VALUE IS OUT OF BOUNDS
原 因: OCCURS DEPENDING ON 句で定義されたフィールドについては、付随する変数によって指定
されるオカレンスの数が、OCCURS DEPENDING ON 句で宣言された範囲を外れている。この
エラーは、以下のステートメントに適用される。
□ SEND MESSAGE ステートメント
□ TRANSFORM ステートメント
□ RECEIVE UNSOLICITED MESSAGE ステートメント
□ REPLY TO UNSOLICITED MESSAGE ステートメント
結 果: ON ERROR 句が指定されていない場合は、システムは致命的なエラーとして当該のプログラ
ム・ユニットを中断する。TCP エラーについては、PATHMON ログ・ファイルに記録される。
付録 D-8
426750-001J
付録 D MESSAGE SECTION ステートメントのエラー
TERMINATION-STATUS 24 Pathway Error 3184
CONFLICT OF DATA TYPES DURING ’PRESENT IF’ PROCESSING
原 因: PRESENT IF 句が、制御フィールドの値に基づいてオプションとして発行されるメッセージ内
のフィールドを定義しているが、この制御フィールドにあるデータは、宣言されたデータ・タ
イプではない。( 例えば、数字データ項目に非数字データが含まれている。) このエラーは、以
下のステートメントに適用される。
□ SEND MESSAGE ステートメント
□ TRANSFORM ステートメント
□ RECEIVE UNSOLICITED MESSAGE ステートメント
□ REPLY TO UNSOLICITED MESSAGE ステートメント
結 果: ON ERROR 句が指定されていない場合は、システムは致命的なエラーとして当該のプログラ
ム・ユニットを中断する。TCP エラーについては、PATHMON ログ・ファイルに記録される。
TERMINATION-STATUS 25 Pathway Error 3185
FIELD OCCURRENCE EXCEEDS WORKING STORAGE MAXIMUM
原 因: MESSAGE フィールドのオカレンスが、関連する WORKING-STORAGE データ項目の最大オ
カレンスを超えている。
結 果: ON ERROR 句が指定されていない場合は、システムは致命的なエラーとして当該のプログラ
ム・ユニットを中断する。TCP エラーについては、PATHMON ログ・ファイルに記録される。
TERMINATION-STATUS 25 Pathway Error 3186
STATISTICS GATHERING SUSPENDED, FILE ERROR
原 因: 性能統計データ収集ファイルで、ファイル・システム・エラーが発生した。
結 果:性能統計データ収集プロセスが中断する。
TERMINATION-STATUS 25 Pathway Error 3187
STATISTICS GATHERING STARTED, OUTPUT FILE
原 因: TCP 統計データ収集プロセスが開始した。これは、START TCP または CONTROL <tcp-name>
MEASURE ON コマンドを発行した結果である。
結 果:なし。
426750-001J
付録 D-9
付録 D MESSAGE SECTION ステートメントのエラー
TERMINATION-STATUS 25 Pathway Error 3188
STATISTICS GATHERING STOPPED, OUTPUT FILE
原 因: TCP 統計データ収集プロセスが停止した。これは、処理中に CONTROL <tcp-name> MEASURE
OFF コマンドを発行した結果である。
結 果:なし。
付録 D-10
426750-001J
付録 E SCREEN COBOL 予約語 (Reserved Words)
付録 E SCREEN COBOL 予約語 (Reserved Words)
ABORT
ABORT-INPUT
ABORT-TRANSACTION
ABSENT
ACCEPT
ACCESS
ADD
ADVANCING
ADVISORY
AFTER
ALARM
ALL
ALPHABETIC
ALSO
ALTER
ALTERNATE
AND
APPROXIMATE
ARE
AREA
AREAS
ASCENDING
ASSIGN
AT
ATTR
AUDIBLE
AUTHOR
BASE
BE
BEFORE
BEGIN-TRANSACTION
BLANK
BLOCK
BOTTOM
BY
CALL
CANCEL
CD
CF
CH
CHARACTER
CHARACTERS
CHARACTER-SET
CHECKPOINT
CLEAR
CLOCK-UNITS
426750-001J
CLOSE
COBOL
CODE
CODE-SET
COLLATING
COLUMN
COLUMNS
COMMA
COMMUNICATION
COMP
COMPUTATIONAL
COMPUTE
CONFIGURATION
CONTAINS
CONTROL
CONTROLLED
CONTROLS
CONVERSATIONAL
CONVERSION
COPY
CORR
CORRESPONDING
COUNT
CROSSREF
CURRENCY
DATA
DATE
DATE-COMPILED
DATE-WRITTEN
DAY
DE
DEBUG-CONTENTS
DEBUG-ITEM
DEBUG-LINE
DEBUG-NAME
DEBUG-SUB-1
DEBUG-SUB-2
DEBUG-SUB-3
DEBUGGING
DECIMAL-POINT
DECLARATIVES
DELAY
DELETE
DELIMITED
DELIMITER
DEPENDING
DESCENDING
DESTINATION
DETAIL
DIAGNOSTIC-ALLOWED
DISABLE
DISPLAY
DIVIDE
DIVISION
DOUBLEBYTE
DOWN
DUPLICATES
DYNAMIC
EGI
ELSE
EMI
ENABLE
END
END-OF-INPUT
END-OF-PAGE
END-TRANSACTION
ENTER
ENVIRONMENT
EOP
EQUAL
ERROR
ERROR-ENHANCEMENT
ESCAPE
ESI
EVERY
EXCEPTION
EXCLUSIVE
EXIT
EXTEND
FD
FIELD-SEPARATOR
FILE
FILE-CONTROL
FILL
FILLER
FINAL
FIRST
FIXED-LENGTH
FOOTING
FOR
FROM
FULL
付録 E-1
付録 E SCREEN COBOL 予約語 (Reserved Words)
GENERATE
GENERIC
GIVING
GO
GREATER
GROUP
GROUP-SEPARATOR
LOCKFILE
LOGICAL-TERMINAL-NAME
LOW-VALUE
LOW-VALUES
LP-ATTENTION-KEY
LP-ENTER-KEY
LP-SELECTABLE
HEADING
HIGH-VALUE
HIGH-VALUES
MEMORY
MERGE
MESSAGE
MINIMUM-ATTR
MINIMUM-COLOR
MODE
MODEM
MODULES
MOVE
MULTIPLE
MULTIPLY
MUST
I-O
I-O-CONTROL
I-O-ERROR
IDENTIFICATION
IF
IN
INDEX
INDEXED
INDICATE
INITIAL
INITIATE
INPUT
INPUT-OUTPUT
INSPECT
INSTALLATION
INTO
INVALID
IS
JUST
JUSTIFIED
KANJI-KATAKANA
KEY
LABEL
LAST
LEADING
LEFT
LENGTH
LESS
LIKE
LIMIT
LIMITS
LINAGE
LINAGE-COUNTER
LINE
LINE-COUNTER
LINES
LINKAGE
LOCK
付録 E-2
NATIVE
NEGATIVE
NEW-CURSOR
NEW-CURSOR-COL
NEW-CURSOR-ROW
NEXT
NO
NOSHADOW
NOT
NUMBER
NUMERIC
NUMERIC-SHIFT
OBJECT-COMPUTER
OCCURS
OF
OFF
OFFSET
OLD-CURSOR
OLD-CURSOR-COL
OLD-CURSOR-ROW
OMITTED
ON
ONE
OPEN
OPTIONAL
OR
ORGANIZATION
OUTPUT
OVERFLOW
OVERLAY
PAGE
PAGE-COUNTER
PATHWAY
PERFORM
PF
PH
PIC
PICTURE
PLUS
POINTER
POSITION
POSITIVE
PRINT
PRINTING
PROCEDURE
PROCEDURES
PROCEED
PROGRAM
PROGRAM-ID
PROGRAM-STATUS
PROGRAM-STATUS-1
PROGRAM-STATUS-2
PROMPT
PROTECT
PW-INPUT-FIELDS-MISSING
PW-TCP-PROCESS-NAME
PW-TCP-SYSTEM-NAME
PW-TERMINALERROR-OCCURRED
PW-UNSOLICITEDMESSAGE-QUEUED
PW-USE-NEW-CURSOR
QUEUE
QUOTE
QUOTES
RANDOM
RD
READ
RECEIVE
RECEIVE-CONTROL
RECONNECT
RECORD
RECORDS
RECOVERY
REDEFINES
REDISPLAY
REEL
REFERENCES
RELATIVE
RELEASE
426750-001J
付録 E SCREEN COBOL 予約語 (Reserved Words)
426750-001J
REMAINDER
REMOVAL
RENAMES
REPLACING
REPLY
REPORT
REPORTING
REPORTS
RERUN
RESERVE
RESET
RESTART-COUNTER
RESTART-INPUT
RESTART-TRANSACTION
RETURN
REVERSED
REWIND
REWRITE
RF
RH
RIGHT
ROUNDED
RUN
SOURCE-COMPUTER
SPACE
SPACES
SPECIAL-NAMES
STANDARD
STANDARD-1
START
STARTBACKUP
STATUS
STOP
STOP-MODE
STRING
SUB-QUEUE-1
SUB-QUEUE-2
SUB-QUEUE-3
SUBTRACT
SUM
SUPPRESS
SYMBOLIC
SYNC
SYNCDEPTH
SYNCHRONIZED
SYSTEM
SAME
SCREEN
SCREEN-CONTROL
SCROLL
SD
SEARCH
SECTION
SECURITY
SEGMENT
SEGMENT-LIMIT
SELECT
SEND
SENTENCE
SEPARATE
SEQUENCE
SEQUENTIAL
SET
SHADOWED
SHARED
SIGN
SIZE
SKIP
SKIPPING
SORT
SORT-MERGE
SOURCE
TAB
TABLE
TAL
TALLYING
TAPE
TELL-ALLOWED
TEMP
TEMPORARY
TERMINAL
TERMINALINFO
TERMINAL-ERROROCCURRED
TERMINAL-FILENAME
TERMINAL-PRINTER
TERMINATE
TERMINATION-STATUS
TERMINATION-SUBSTATUS
TEXT
THAN
THROUGH
THRU
TIME
TIMEOUT
TIMES
TO
TOP
TRAILING
TRANSACTION-ID
TRANSFORM
TRANSPARENT
TURN
UNDER
UNIT
UNLOCK
UNLOCKFILE
UNLOCKRECORD
UNSOLICITED
UNSTRING
UNTIL
UP
UPON
UPSHIFT
USAGE
USE
USER
USING
VALUE
VALUES
VARYING
WHEN
WITH
WITHIN
WORDS
WORKING-STORAGE
WRITE
YIELDS
YYYYDDD
YYYYMMDD
ZERO
ZEROES
ZEROS
付録 E-3
付録 E SCREEN COBOL 予約語 (Reserved Words)
( 空白ページ )
付録 E-4
426750-001J
付録 F データ・タイプの対応と戻り値のサイズ
付録 F データ・タイプの対応と戻り値のサイズ
この章の表では、Compaq NonStop システム用の Compaq 言語コンパイラが各言語タイプごとに生成す
る戻り値のサイズを示します。アクセラレータの ReturnValSize オプションで値を指定する必要がある場合
に、この情報を使用して下さい。また、プログラムで別の言語のプログラムによって作成されたファイル
からデータを使用する場合、あるいは、プログラムが呼び出し可能な言語で書かれたプログラムにパラメー
タを渡す場合に、この表が役に立ちます。
SQL データ・タイプの対応の詳細なリストについては、適切な『Compaq NonStop SQL/MP プログラミ
ング・マニュアル』を参照して下さい。なお、この表に示した戻り値サイズは、SQL データ・タイプの記
憶領域のサイズには対応していないことに注意して下さい。
備考:「COBOL」という記述は、特に注記がない限り COBOL 74、COBOL85、および SCREEN COBOL の総称です。
データ定義言語 (DDL) ユーティリティを使用してファイルを記述する場合には、この表が必要になりま
す。詳細については、『Data Definition Language (DDL) Reference Manual』を参照して下さい。
表 F-1 整数型、その 1 ( 1 / 2 )
8 ビット整数型
16 ビット整数型
32 ビット整数型
C
char [1]
unsigned char
signed char
int
short
unsigned
long
unsigned long
COBOL
英字
数字 DISPLAY
英数字編集
英数字
数字編集
PIC S9(n) COMP または
PIC 9(n) COM
P または V なし、
1≦n≦4
指標データ項目 [2]
NATIVE-2 [3]
PIC S9(n) COMP または
PIC 9(n) COMP
P または V なし、
5≦n≦9
指標データ項目 [2]
NATIVE-4 [3]
FORTRAN
-
INTEGER [4]
INTEGER*2
INTEGER*4
[1]
[2]
[3]
[4]
426750-001J
符号なし整数。
指標データ項目は、COBOL 74 では 16 ビット整数、COBOL85 では 32 ビット整数です。
COBOL85 のみ。
通常、INTEGER は INTEGER*2 と等価です。コンパイラ指示語 INTEGER*4 および INTEGER*8 では、
INTEGER を再定義します。
付録 F-1
付録 F データ・タイプの対応と戻り値のサイズ
表 F-1 整数型、その 1 ( 2 / 2 )
8 ビット整数型
16 ビット整数型
32 ビット整数型
Pascal
BYTE
列挙データ型、
アンパック、
≦ 256 メンバ
部分範囲データ型、アン
パック、
n...m、0 ≦ n かつ
m ≦ 255
INTEGER
INT16
CARDINAL [1]
BYTE または CHAR 値
パラメータ
列挙データ型、アンパッ
ク
> 256 メンバ
部分範囲データ型、アン
パック、
n...m、-32768
≦ n かつ m ≦ 32767、
ただし、n または m は
少なくとも 0...255 の
範囲外であること
LONGINT
INT32
部分範囲データ型、アン
パック、
n...m、
-2147483648 ≦ n かつ
m ≦ 2147483647、
ただし、n または m は
少なくとも -32768..
32767 の範囲外である
こと
SQL
CHAR
NUMERIC(1)..
NUMERIC(4)
PIC 9(1) COMP...
PIC 9(4) COMP
SMALLINT
NUMERIC(5)...
NUMERIC(9)
PIC 9(1) COMP...
PIC 9(9) COMP
INTEGER
TAL
STRING
UNSIGNED(8)
INT
UNSIGNED(16
INT(32)
戻り値のサイズ
( ワード )
1
1
2
[1]
[2]
[3]
[4]
符号なし整数。
指標データ項目は、COBOL 74 では 16 ビット整数、COBOL85 では 32 ビット整数です。
COBOL85 のみ。
通常、INTEGER は INTEGER*2 と等価です。コンパイラ指示語 INTEGER*4 および INTEGER*8 では、
INTEGER を再定義します。
表 F-2 整数型、その 2 ( 1 / 2 )
64 ビット整数型
1 ~ 31 ビットのビット
整数型
10 進整数型
C
long long
-
-
COBOL
PIC S9(n) COMP または
PIC 9(n) COMP
P または V なし、
10 ≦ n ≦ 18
NATIVE-8 [1]
-
数字 DISPLAY
FORTRAN
INTEGER*8
-
-
[1] COBOL85 のみ。
付録 F-2
426750-001J
付録 F データ・タイプの対応と戻り値のサイズ
表 F-2 整数型、その 2 ( 2 / 2 )
64 ビット整数型
1 ~ 31 ビットのビット
整数型
10 進整数型
Pascal
INT64
UNSIGNED(n)、
1 ≦ n ≦ 16
INT(n)、1 ≦ n ≦ 16
DECIMAL
SQL
NUMERIC(10)...
NUMERIC(18)
PIC 9(10) COMP...
PIC 9(18) COMP
INTEGER
-
DECIMAL (n,s)
PIC 9(n) DISPLAY
TAL
FIXED(0)
UNSIGNED(n) 、
1 ≦ n ≦ 31
-
戻り値のサイズ
( ワード )
4
TAL では 1、1 または
2
1 または 2、宣言したポ
インタ・サイズによる
[1] COBOL85 のみ。
表 F-3 浮動型、固定型、および複素数型
426750-001J
32 ビット
浮動型
64 ビット
浮動型
64 ビット固定小数点型
64 ビット
複素数型
C
float
double
-
-
COBOL
-
-
PIC S9(n-s)v9(s) COMP または
PIC 9(n-s)v9(s) COMP、
10 ≦ n ≦ 18
-
FORTRAN
REAL
DOUBLE
PRECISION
-
COMPLEX
Pascal
REAL
LONGREAL
-
-
SQL
-
-
NUMERIC (n,s)
PIC 9(n-s)v9(s) COMP
-
TAL
REAL
REAL(64)
FIXED(s)、-19 ≦ s ≦ 19
-
戻り値のサイズ
( ワード )
2
4
4
4
付録 F-3
付録 F データ・タイプの対応と戻り値のサイズ
表 F-4 文字型
文字型
文字列型
可変長文字列型
C
signed char
unsigned char
char へのポインタ
struct {
int len;
char val [n]
};
COBOL
英字
数字 DISPLAY
英数字編集
英数字
数字編集
英字
数字 DISPLAY
英数字編集
英数字
数字編集
01 name.
03 len USAGE IS
NATIVE-2 [1]
03 val PIC X(n)
FORTRAN
CHARACTER
CHARACTER 配列
CHARACTER*n
-
Pascal
CHAR または BYTE 値パラメータ
列挙データ型、アンパック、
≦ 256 メンバ
部分範囲データ型、アンパック、
n...m、
0 ≦ n かつ m ≦ 255
PACKED ARRAY OF
CHAR
FSTRING(n)
STRING(n)
SQL
PIC X
CHAR
CHAR(n)
PIC X(n)
VARCHAR(n)
TAL
STRING
STRING 配列
-
戻り値の
サイズ
( ワード )
1
1 または 2、宣言した
ポインタ・サイズによ
る
1 または 2、宣言した
ポインタ・サイズによ
る
[1] COBOL85 のみ。
表 F-5 構造型、論理型、セット型、およびファイル型 ( 1 / 2 )
バイト・
アドレス構造
ワード・
アドレス構造
論理型 ( 真
または偽 )
ブール型
セット型
ファイル
型
C
-
struct
-
-
-
-
COBOL
-
レベル 01 の
RECORD
-
-
-
-
FORTRA
N
RECORD
-
LOGICAL [1]
-
-
-
Pascal
RECORD、
バイト桁寄せ
RECORD、
ワード桁寄せ
-
BOOLEAN
集合
データ型
ファイル・
データ型
[1] 通常、LOGICAL は 2 バイトとして定義されます。コンパイラ指示語 LOGICAL*2 および LOGICAL*4 では、
LOGICAL を再定義します。
付録 F-4
426750-001J
付録 F データ・タイプの対応と戻り値のサイズ
表 F-5 構造型、論理型、セット型、およびファイル型 ( 2 / 2 )
バイト・
アドレス構造
ワード・
アドレス構造
論理型 ( 真
または偽 )
ブール型
セット型
ファイル
型
SQL
-
-
-
-
-
-
TAL
バイト・アド
レス指定標準
STRUCT ポイ
ンタ
ワード・アド
レス指定標準
STRUCT ポイ
ンタ
-
-
-
-
戻り値の
サイズ
( ワード )
1 または 2、
1 または 2、
1 または 2、
1
1
1
宣言したポイ
ンタ・サイズ
による
宣言したポイ
ンタ・サイズ
による
コンパイラ指
示語による
[1] 通常、LOGICAL は 2 バイトとして定義されます。コンパイラ指示語 LOGICAL*2 および LOGICAL*4 では、
LOGICAL を再定義します。
表 F-6 ポインタ型
426750-001J
手順
ポインタ型
バイト・
ポインタ型
ワード・
ポインタ型
拡張ポインタ型
C
関数ポインタ
バイト・ポインタ
ワード・ポインタ
拡張ポインタ
COBOL
-
-
-
-
FORTRAN
-
-
-
-
Pascal
手続き
ポインタ
ポインタ、バイト・
アドレス
BYTEADDR
ポインタ、バイト・
アドレス
WORDADDR
ポインタ、拡張アド
レス
EXTADDR
SQL
-
-
-
-
TAL
-
16 ビット・ポインタ、 16 ビット・ポインタ、 32 ビット・ポインタ
バイト・アドレス
ワード・アドレス
戻り値の
サイズ
( ワード )
1 または 2、
宣言したポイ
ンタ・サイズ
による
1 または 2、宣言した
1 または 2、宣言した
ポインタ・サイズによ
る
ポインタ・サイズによ
る
1 または 2、宣言し
たポインタ・サイズ
による
付録 F-5
付録 F データ・タイプの対応と戻り値のサイズ
( 空白ページ )
付録 F-6
426750-001J
索 引
索 引
( 英数字 )
0 (PICTURE 記号 ) 5-48, 5-78
0 ( 編集用文字 ) 2-5
1 (PICTURE 記号 ) 5-78
2 バイト文字
混合データ項目 2-10
添字 2-27
2 バイト文字セット 2-4, 4-5
2 バイト文字 ( 編集用文字 ) 2-5
6510 端末 4-8, 5-54
6520 端末 4-8
6530 端末 4-8
6540 端末 4-8
9 (PICTURE 記号 ) 5-11, 5-48, 5-78
ADD ステートメント 6-16/6-18
ADD CORRESPONDING 6-16/6-18
ADD GIVING 6-16
ADD TO 6-16
ADVISORY 句 5-35
ADVISORY フィールド 5-35
ADVISORY メッセージ A-1/A-7
ADVISORY メッセージ・プロシージャ A-4
ADVISORY メッセージ・ルーチン A-4
ALL ( 表意定数 ) 2-9
AND ( 論理演算子 ) 2-21
ANSI コンパイラ・コマンド 7-7
ANSI 標準リファレンス・フォーマット 2-11
ASCII ( 編集用文字 ) 2-5
ASCII 文字セット 2-4
AT 句 5-35
A
A (PICTURE 記号 ) 5-11, 5-48, 5-78
A ( 編集用文字 ) 2-5
ABORT-INPUT 句 5-30
ABORT-TRANSACTION ステートメント 6-6
ACCEPT 6-7
ACCEPT DATE/DAY/TIME ステートメント 6-14
ACCEPT ステートメント 6-6/6-9, 6-14
ABORT-INPUT 句 5-30
END-OF-INPUT 句 5-31
ENTER ビット値 5-53
ESCAPE オプション 6-7
FIELD-SEPARATOR 句 5-31
GROUP-SEPARATOR 句 5-32
PROMPT 句 5-49
RESTART-INPUT 句 5-33
RETURN ビット値 5-53
TIMEOUT 6-8
UNTIL オプション 6-7
エラーの検出 6-12
会話モード 6-11
終了時のステータス 5-101
終了条件 6-8
データのチェック 6-12
426750-001J
B
B (PICTURE 記号 ) 5-48, 5-78
B ( 編集用文字 ) 2-5
BEGIN-TRANSACTION ステートメント 6-18/6-19
BLINK 4-8
BLUE 4-8
BOTTOMLINE 4-9, 4-10
BOXFIELD 4-9, 4-10
BRIGHT 4-8, 4-9
C
CALL ステートメント 6-20/6-29
TERMINATION-STATUS 特殊レジスタ 6-21
TERMINATION-SUBSTATUS 特殊レジスタ 6-21
エラー 6-21/6-29
CALL ステートメントに含まれる USING 句 5-3
CHARACTER-SET IS 句 2-4, 4-4
CHECKPOINT ステートメント 6-31
CLEAR システム名 4-8
CLEAR ステートメント 6-31, 6-32
COBOL 1-5
COD ファイル名接尾辞 7-2
COMPILE コンパイラ・コマンド 7-8
COMPUTATIONAL データ項目 2-29, 5-19
COMPUTATIONAL データ項目の記憶領域 2-29, 5-19
COMPUTE ステートメント 6-32
索 引 -1
索 引 CONFIGURATION SECTION 4-1/4-10
CONTROLLED 句 5-36
CONVERT BLANKS 句 5-40
COPYLIB 6-33
COPY ステートメント 6-32/6-34
COPY ステートメントを処理するときのデフォルトのラ
イブラリ 7-3
CR (PICTURE 記号 ) 5-49, 5-79
CR ( 編集用文字 ) 2-5
CROSSREF コンパイラ・コマンド 7-8
CURRENCY パラメータ 4-6
C 言語 1-5
D
DATA DIVISION 5-1/5-102
LINKAGE SECTION 5-2, 5-3
MESSAGE SECTION 5-2, 5-4
SCREEN SECTION 5-2, 5-4
WORKING-STORAGE SECTION 5-2
形式 5-1
定義 2-3
DATE-COMPILED 段落 3-2
DB (PICTURE 記号 ) 5-49, 5-79
DB ( 編集用文字 ) 2-5
DECIMAL-POINT IS COMMA 4-6
DELAY 6-35
DELAY ステートメント 6-35
DEVICEINFO ステートメント 6-36
DIAGNOSTIC-ALLOWED 特殊レジスタ 5-93
DIAGNOSTIC^MESSAGE プロシージャ B-2
DIM 4-8
DIR ファイル名接尾辞 7-2
DISPLAY BASE ステートメント 6-36/6-38
DISPLAY OVERLAY ステートメント 6-38/6-39
DISPLAY RECOVERY ステートメント 6-39
DISPLAY ステートメント 6-40/6-43
DIVIDE BY GIVING ステートメント 6-44
DIVIDE GIVING ステートメント 6-43
DIVIDE INTO ステートメント 6-43
DYNAMIC 参照子
CONTROLLED 句 5-36
DISPLAY BASE ステートメント 6-36/6-37
DISPLAY OVERLAY ステートメント 6-38/6-39
TURN ステートメント 6-105
索 引 -2
E
ENDIF コンパイラ・コマンド 7-10
END-OF-INPUT 句 5-31
END-TRANSACTION ステートメント 6-44
ENTER システム名 4-7
ENTER ビット 5-53/5-55, 6-12
ENVIRONMENT DIVISION
CONFIGURATION SECTION 4-1
INPUT-OUTPUT SECTION 4-10
OBJECT-COMPUTER 段落 4-2
SOURCE-COMPUTER 段落 4-2
SPECIAL-NAMES 段落 4-6
概要 4-1
定義 2-3
ERRORS コンパイラ・コマンド 7-10
ERROR-ENHANCEMENT オプション 4-10
EXIT PROGRAM ステートメント 6-45
EXIT ステートメント 6-45
F
FIELD STATUS 句と PRESENT IF 句 5-68
FIELD-DELIMITER 句 5-64
FIELD-SEPARATOR 句 5-31
FIELD-STATUS 句
シャドウ・データ項目 5-66
フィールドの編集エラー 5-68
FILLER
暗黙のバイト 5-17
使用法 5-61
スクリーン記述項
スクリーン・グループ 5-26
スクリーン・フィールド 5-27
フィールド特性句 5-33
制約 5-61
データ記述項 5-7
メッセージ記述項 5-60
FILL 句 5-40
FORTRAN 1-5
G
GO TO DEPENDING ステートメント 6-46
GO TO ステートメント 6-46
GREEN 4-8
GROUP-SEPARATOR 句 5-32
426750-001J
索 引
H
HEADING コンパイラ・コマンド 7-10
HIDDEN 4-8, 4-9
HIGH-VALUE/HIGH-VALUES ( 表意定数 ) 2-9
I
IBM 3270 端末
接続プリンタ 6-62
表示属性のシステム名 4-8
IDENTIFICATION DIVISION 2-3, 3-1/3-2
IDS 6-4
IF ... DOUBLEBYTE ステートメント 6-48
IF ... WITHIN ステートメント 6-48
IFNOT コンパイラ・コマンド 7-11
IF コンパイラ・コマンド 7-11
IF ステートメント 6-47
INPUT-OUTPUT SECTION 4-10
Inspect シンボリック・デバッガ 1-7
MESSAGE SECTION 5-2, 5-4
インテリジェント・デバイス 2-2
フィールドの編集エラー 5-68
MESSAGE-DELIMITER 句 5-70
MOVE CORRESPONDING ステートメント 6-51
MOVE ステートメント
規則 6-53
制約 6-53
MULTIPLY BY ステートメント 6-54
MULTIPLY GIVING ステートメント 6-55
MUST BE 句 5-42
N
M
N (PICTURE 記号 ) 5-11, 5-48
N ( 編集用文字 ) 2-5
NEW-CURSOR 特殊レジスタ 5-94, 6-91
nld ユーティリティ A-4
NOBLINK 4-8
NOBOTTOMLINE 4-9, 4-10
NOCROSSREF コンパイラ・コマンド 7-8
NOLEFTLINE 4-9, 4-10
NOLIST コンパイラ・コマンド 7-12
NOMAP コンパイラ・コマンド 7-12
NonStop システム名、SEND ステートメント
6-72
NOREVERSE 4-8
NORIGHTLINE 4-9, 4-10
NORMAL 4-8
NOSHOWCOPY コンパイラ・コマンド 7-15
NOSYMBOLS コンパイラ・コマンド 7-15
NOT ( 論理演算子 ) 2-21
NOTHIDDEN 4-8
NOTOPLINE 4-8, 4-10
NOUNDERLINE 4-8
NOWARN コンパイラ・コマンド 7-16
NUMERIC-SHIFT 4-8, 4-9
NUMERIC テスト 2-19
MAP コンパイラ・コマンド 7-12
MDT (modified data tag)
O
J
JUSTIFIED 句 2-9, 2-29, 5-8
K
KANJI-KATAKANA 2-4, 4-5
L
LEFTLINE 4-8, 4-10
LENGTH 句 5-41
LINES コンパイラ・コマンド 7-12
LINKAGE SECTION 5-2, 5-3
データ記述項 5-6
LIST コンパイラ・コマンド 7-12
LOGICAL-TERMINAL-NAME 特殊レジスタ 5-94
LOW-VALUE/LOW-VALUES ( 表意定数 ) 2-9
CLEAR ステートメント 6-31
SHADOW 句 5-53
Tab キー 5-40
説明 6-13
MDTOFF 4-8
MDTON 4-8, 4-9, 5-53
MESSAGE FORMAT 句 5-71
426750-001J
OBJECT-COMPUTER 段落 4-2/4-5
OCCURS DEPENDING ON 句
データ記述項 5-8/5-10
フィールド特性句 5-43/5-47
メッセージ記述項 5-74
索 引 -3
索 引 OCCURS 句
SUBTRACT CORRESPONDING ステートメント
6-97
SYNCHRONIZED 句 5-17
データ記述項 5-8/5-10
フィールド特性句 5-43/5-47
メッセージ記述項 5-74
OLD-CURSOR 特殊レジスタ 5-94
ON ERROR 句
CALL ステートメント 6-21
PRINT SCREEN ステートメント 6-60
SEND ステートメント 6-70
OPTION コンパイラ・コマンド 7-13
OR ( 論理演算子 ) 2-21
OUT パラメータ C-1
P
P (PICTURE 記号 ) 5-11, 5-48, 5-78
P ( 編集用文字 ) 2-5
PARAM SAMECPU 7-3
PARAM SWAPVOL 7-4
Pascal 1-5
PATHCOM
PICTURE 句
MESSAGE SECTION での制約 5-62
英数字入力 5-47
項目の大きさ 5-49
数字入力 5-47
データ記述項 5-10/5-13
フィールド特性句 5-47/5-49
編集用文字 2-5
メッセージ記述項 5-77/5-83
PINK 4-8
PRESENT IF 句 5-83
FIELD STATUS 句 5-68
使用に関する制約 5-63
PRINT SCREEN ステートメント
I/O 6-62
TERMINAL-PRINTER 特殊レジスタ 6-60
エラー・コード 6-61
構文 6-60
診断スクリーン 6-62
PRINT SCREEN ステートメントによる I/O 6-62
PROCEDURE DIVISION
USING 指定 6-1
形式 6-1, 6-113
SET TERM DIAGNOSTIC コマンド B-1
構成 6-1
説明 1-3
節 6-3
PATHMON プロセス
SEND ステートメント 6-72
説明 1-3
Pathway
宣言プロシージャ 6-2
アプリケーションの例 8-1/8-12
プロシージャ 6-4
コンポーネント 1-2/1-7
見出し 6-1
プログラム開発ツール 1-8
PROGRAM-ID 段落 3-1
PROMPT 句 5-49, 5-50
PROTECTED 4-8, 4-9
pTAL 1-5, A-4
PW-INPUT-FIELDS-MISSING 特殊レジスタ 5-94
PW-QUEUE-FKEY-TIMEOUT 特殊レジスタ 5-96
PW-QUEUE-FKEY-UMP 特殊レジスタ 5-95
PW-TCP-PROCESS-NAME 特殊レジスタ 5-96
PW-TCP-SYSTEM-NAME 特殊レジスタ 5-96
PW-TERMINAL-ERROR-OCCURRED 特殊レジスタ
5-97
PW-UNSOLICITED-MESSAGE-QUEUED 特殊レジスタ
5-97
PW-USE-NEW-CURSOR 特殊レジスタ 5-98
PERFORM ONE ステートメント 6-59
PERFORM TIMES ステートメント 6-57
PERFORM UNTIL ステートメント 6-57
PERFORM VARYING ステートメント 6-58
PERFORM ステートメント 6-56
PERFORM ステートメント、概要 6-55
PIC 1 フォーマット 5-78/5-81
PIC 9 フォーマット 5-11, 5-12, 5-78
PIC 9P フォーマット 5-11, 5-12, 5-78
PIC 9V フォーマット 5-11, 5-12, 5-78
PIC N フォーマット 4-5, 5-11, 5-12
PIC X フォーマット 5-11, 5-12, 5-78
PICTURE 記号
スクリーン・データ項目 5-48
データ記述項目 5-11
索 引 -4
センテンスとステートメント 6-3
段落 6-3
定義 2-3
426750-001J
索 引
Q
コンパイラ
QUOTE/QUOTES ( 表意定数 ) 2-9
実行 7-1
診断メッセージ C-1/C-92
R
RECEIVE FROM 句、TURN ステートメント 6-106
RECEIVE UNSOLICITED MESSAGE ステートメント
エラー・メッセージ D-1
説明 6-62
RECEIVE フィールド特性句 5-51
RECONNECT MODEM ステートメント 6-65
RED 4-8
REDEFINES 句
データ項目 5-13
データ項目の配置 5-18
フィールド特性句 5-52
REDISPLAY 特殊レジスタ 5-98
RENAMES 句 5-14/5-15
REPLY TO UNSOLICITED MESSAGE ステートメント
エラー・メッセージ D-1
説明 6-66
RESETTOG コンパイラ・コマンド 7-14
RESET ステートメント 6-67
RESTART-COUNTER 特殊レジスタ
BEGIN-TRANSACTION ステートメント 6-19
説明 5-100
RESTART-INPUT 句 5-33
RESTART-TRANSACTION ステートメント 6-70
RESULTING COUNT 句 5-88
RETURN KEY ファンクション・キー、6530 端末 4-7
RETURN ビット 5-53/5-55, 6-12
REVERSE 4-8
RIGHTLINE 4-9, 4-10
S
S (PICTURE 記号 ) 5-11
SAMECPU コマンド・インタープリタ・パラメータ 7-3
SCOBOLX と SCOBOLX2 プロセス 1-8
SCOBOLX の実行コマンド 7-1
SCREEN COBOL
COBOL との比較 1-3
SCOBOLX プロセス 1-8
SCOBOLX2 プロセス 1-8
SYMSERV プロセス 1-8
オペレーティング・モード 2-1
擬似コード 1-4
説明 1-8/1-9
使用される端末 2-1
診断スクリーン・メッセージ B-2
説明 1-1, 1-3
ソース・コード 1-4
ソース・プログラム 2-10
プログラム
DATA DIVISION 5-1/5-102
DIVISION 1-3
ENVIRONMENT DIVISION 4-1/4-11
IDENTIFICATION DIVISION 3-1/3-2
コンパイル 1-8, 7-1/7-6
デバッグ 1-7
メッセージ記述 1-6
文字セット 2-4
ユーティリティ・プログラム (SCUP) 1-10
予約語 E-1/E-3
ライブラリ 1-9
リクエストされた作業 1-1
SCREEN COBOL で使用される端末のタイプ 2-1, 4-3
SCREEN COBOL プログラムの Web クライアントへの
変換 1-10
SCREEN COBOL プログラムのデバッグ 1-7
SCREEN COBOL プログラムの編成 1-11
SCREEN SECTION 5-2, 5-4
SCROLL ステートメント 6-71
SECTION コンパイラ・コマンド 7-14
SELECT ビット 5-53, 5-55
SEND MESSAGE ステートメント
TERMINATION-STATUS 特殊レジスタ 5-101
TERMINATION-SUBSTATUS の値 6-91
エラー・メッセージ D-1/D-10
構文 6-84
編集 ADVISORY エラー 5-69
SEND ステートメント
TERMINATION-STATUS 特殊レジスタ 5-101
TERMINATION-STATUS の値 6-74, 6-80/6-83
エラー・コード 6-80/6-83
構文 6-71
例 6-76
SET MINIMUM-ATTR ステートメント 6-93
SET MINIMUM-COLOR ステートメント 6-95
SETTOG コンパイラ・コマンド 7-14
言語要素 2-4
語 (word) 2-6
426750-001J
索 引 -5
索 引 SET ステートメント
NEW-CURSOR 特殊レジスタ 6-91
説明 6-91
SHADOWED 句
DISPLAY ステートメント 6-41
TURN ステートメント 6-105
フィールド特性句 5-52/5-56
SHOWCOPY コンパイラ・コマンド 7-15
SIGN 句 5-16
SMAP コンパイラ・コマンド 7-15
SOURCE-COMPUTER 段落 4-2
SPACE/SPACES ( 表意定数 ) 2-9
SPECIAL-NAMES 段落 4-6/4-10
STOP RUN ステートメント 6-95
STOP-MODE 特殊レジスタ 5-100
SUBTRACT CORRESPONDING ステートメント 6-97
SUBTRACT GIVING ステートメント 6-96
SUBTRACT ステートメント 6-96
SWAPVOL コマンド・インタープリタ・パラメータ 7-4
SYMBOLS コンパイラ・コマンド 7-15
SYMSERV プロセス 1-8
SYM ファイル名接尾辞 7-2
SYNCHRONIZED 句 2-29, 5-16/5-18
SYNTAX コンパイラ・コマンド 7-16
T
TAL 1-5
TANDEM コンパイラ・コマンド 7-16
TCP
ADVISORY メッセージ・プロシージャ A-4
DIAGNOSTIC^MESSAGE プロシージャ B-2
サーバとの通信 1-7
端末の制御 2-1
リクエスタ 1-5
TELL-ALLOWED 特殊レジスタ 5-100
TELL メッセージ、発行 5-100
TERMINALINFO ステートメント 6-98
TERMINAL-FILENAME 特殊レジスタ 5-101
TERMINAL-PRINTER 特殊レジスタ
PRINT SCREEN ステートメント 6-60
説明 5-101
TERMINATION-STATUS、使用法 6-74
TERMINATION-STATUS 特殊レジスタ
BEGIN-TRANSACTION ステートメント 6-19
EXIT PROGRAM ステートメント 6-45
RECEIVE UNSOLICITED MESSAGE 6-65
REPLY TO UNSOLICITED MESSAGE 6-67
索 引 -6
SEND MESSAGE ステートメント 6-88
TRANSFORM ステートメント 6-102
説明 5-101
TERMINATION-STATUS の値
BEGIN-TRANSACTION ステートメント 6-20
CALL ステートメント 6-30
PRINT SCREEN ステートメント 6-58
RECEIVE UNSOLICITED MESSAGE ステートメント
D-1
REPLY TO UNSOLICITED MESSAGE ステートメン
ト D-1
SEND MESSAGE ステートメント D-1/D-10
SEND ステートメント 6-74, 6-80/6-83
SET MINIMUM-ATTR ステートメント 6-30
SET MINIMUM-COLOR ステートメント 6-30
TRANSFORM ステートメント D-1
TERMINATION-SUBSTATUS 特殊レジスタ 5-102
CALL ステートメント 6-21
EXIT PROGRAM ステートメント 6-45
TERMINATION-SUBSTATUS の値
SEND MESSAGE ステートメント 6-91
TOPLINE 4-8, 4-10
TO/FROM/USING 句 5-56, 5-90
TRANSACTION-ID 特殊レジスタ 5-102
TRANSFORM ステートメント 6-100
TERMINATION-STATUS 句 6-104, D-1
エラー・メッセージ D-1
TURN 6-105
TURN ステートメント 6-105
TURQUOISE 4-8
U
UMP ステートメント 6-5
UNDERLINE 4-8
UNPROTECTED 4-8
UNPROTECTED フィールド、クリア 6-31
UPSHIFT 句 5-57
USAGE 句 5-19
USASCII 以外の文字セット 4-4
USE FOR SCREEN RECOVERY ステートメント 6-109
USE FOR TERMINAL-ERRORS ステートメント 6-110
USER CONVERSION 句 5-57, 5-93
MESSAGESECTION での制約 5-63
426750-001J
索 引
V
( 特殊文字 )
V (PICTURE 記号 ) 5-11, 5-48, 5-78
V ( 編集用文字 ) 2-5
VALUE 句 5-20, 5-58
DISPLAY ステートメント 6-42
項目が数字 / 数字以外の場合 5-20
条件値の名前 5-20
制限 5-3, 5-20
! 5-55
" 5-55
" ( 句読文字 ) 2-5
$ 5-55
$ (PICTURE 記号 ) 5-49
$ ( 編集用文字 ) 2-5
% 5-55
& 5-55
( ( 句読文字 ) 2-5
( 空白 ) 2-4
) ( 句読文字 ) 2-5
* (PICTURE 記号 ) 5-49
* ( コメント文字 ) 2-12
* ( 編集用文字 ) 2-5
* ( 演算子 ) 2-14
** ( 演算子 ) 2-14
+ (PICTURE 記号 ) 5-48, 5-78
+ ( 編集用文字 ) 2-5
+ ( 演算子 ) 2-14
, (PICTURE 記号 ) 5-48, 5-78
, ( 編集用文字 ) 2-5
, ( 句読文字 ) 2-5
- (PICTURE 記号 ) 5-48, 5-78
- ( 編集用文字 ) 2-5
- ( 演算子 ) 2-14
. (PICTURE 記号 ) 5-48, 5-78
. ( 編集用文字 ) 2-5
. ( 句読文字 ) 2-5
/ (PICTURE 記号 ) 5-48, 5-78
/ ( コメント文字 ) 2-12
/ ( 編集用文字 ) 2-5
/ ( 演算子 ) 2-14
; ( 文字 ) 2-4
< ( 文字 ) 2-4
= ( 句読文字 ) 2-5
? ( コンパイラ・コマンド文字 ) 2-13
^ ( コンパイラ診断記号 ) C-1
W
WARN コンパイラ・コマンド 7-16
Web クライアント、SCREEN COBOL プログラムからの
変換 1-10
WHEN ABSENT/BLANK 句 5-58
WHEN FULL 句 5-59
WORKING-STORAGE SECTION 5-2
データ記述項 5-6
データ構造 5-4
X
X (PICTURE 記号 ) 5-11, 5-48, 5-78
X ( 編集用文字 ) 2-5
Y
YELLOW 4-8
YYYYDDD 6-15
YYYYMMDD 6-14
Z
Z (PICTURE 記号 ) 5-48, 5-78
Z ( 編集用文字 ) 2-5
ZERO/ZEROS/ZEROES ( 表意定数 ) 2-9
426750-001J
索 引 -7
索 引 ( 五十音順 )
同じ大きさのオペランド 2-21
オーバーレイ・スクリーン 5-22, 5-25
ア
アウトライン表示属性 6-93
アスタリスク (*) 2-14
アスタリスク (*) コメント文字 2-12
値の比較 2-20
アプリケーション 1-1
アプリケーションの例
会話モード 8-7
説明 8-1/8-12
ブロック・モード 8-3
暗黙の FILLER バイト 5-17
一意のデータ名 2-25
一意名 2-28
インテリジェント・デバイス
オーバーレイ領域の移動 6-71
オブジェクト・コード 1-8/1-10
オブジェクト・コードについての情報の表示 1-10
オブジェクト・コードの管理 1-10
オブジェクト・コードのコピー 1-10
オブジェクト・コードの削除 1-10
オブジェクト・ファイルの圧縮 1-10
オブジェクト・ファイルの一部のコピー 6-32
オプション・コマンド、コンパイラ 7-6
オペランドの比較 2-20
オペレーティング・モード 2-1
オンライン・トランザクション処理 1-1
カ
MESSAGE SECTION 2-2
外部 PATHMON プロセス、送信 6-76
説明 1-3
会話モード
インテリジェント・デバイス・サポート 4-3, 6-5
ACCEPT 処理 6-11
インテリジェント・モードのプログラム 2-2
DISPLAY BASE 6-36
英字 2-4
PROMPT 句 5-49
英字データ、PICTURE 句 5-12
コーディングの例 8-7
英数字データ
入力制御文字
PICTURE 句 5-12
入力制御文字句
英数字データ、入力編集規則 5-80
ABORT-INPUT 5-30
英数字文字 2-4
END-OF-INPUT 5-31
エラー
FIELD-SEPARATOR 5-31
BEGIN-TRANSACTION ステートメント 6-19
GROUP-SEPARATOR 5-32
CALL ステートメント 6-21/6-29
RESTART-INPUT 5-33
MESSAGE SECTION ステートメント D-1/D-10
プログラム 2-2
PRINT SCREEN ステートメント 6-61
会話モードで稼働する端末 4-2
SEND ステートメント 6-80/6-82
拡張フィールド属性 4-9
編集 ADVISORY、SEND MESSAGE ステートメント
5-69
組合せ 4-9
エラー後の端末表示の復元 6-110
加算記号 (+) 2-14
エラー後のプロシージャの割り当て 6-110
カタカナ文字 2-4, 4-5
エラーの検出、ACCEPT ステートメント 6-12
括弧 2-15
エラー・メッセージ
カラー表示属性 6-95
SCREEN COBOL コンパイラ C-1/C-92
漢字文字 2-4
診断スクリーン B-1/B-6
擬似コード 1-4
演算子、算術 2-14
規則
演算のステートメント 6-5
IF ステートメント 6-47
応答コード
MOVE CORRESPONDING ステートメント 6-51
使用法 6-74
基本項目 5-4
明記されていない 6-76
疑問符 (?) 2-13
応答の長さ 6-75, 6-77
キーワード、予約語 2-6
加算 2-14
同じ大きさでないオペランド、比較 2-21
索 引 -8
426750-001J
索 引
句
言語要素
ABORT-INPUT 5-30
句読文字 2-5
ADVISORY 5-35
分離符 2-3, 2-6
AT 5-35
編集用文字 2-5
CHARACTER SET IS 2-4, 4-4
文字セット 2-4
END-OF-INPUT 5-31
文字列 2-3
FIELD-DELIMITER 5-64
減算 (-) 2-14
FIELD-SEPARATOR 5-31
語
FILL 5-40
SCREEN COBOL 2-6/2-7
GROUP-SEPARATOR 5-32
システム名 2-7
JUSTIFIED 5-8
予約 E-1/E-3
LENGTH 5-41
公衆交換回線 6-65
MESSAGE FORMAT 5-71
項目の大きさ 5-49, 5-80
MESSAGE-DELIMITER 5-70
項目の繰り返し 5-8
MUST BE 5-42
互換性 6-30
OCCURS 5-8, 5-43, 5-74
小切手改変防止 ( 編集用文字 ) 2-5
OCCURS DEPENDING ON 5-9, 5-43, 5-74
固定小数点 2-5
PICTURE 5-10, 5-47, 5-77
コマンド行、コンパイラ 2-13
PRESENT IF 5-83
コメント 2-12
PROMPT 5-49
コメント行 2-12
REDEFINES 5-13, 5-52
コメント文字 2-12
RENAMES 5-14/5-15
混合データ項目 2-10
RESTART-INPUT 5-33
コンテキストのチェックポイント 6-66
RESULTING COUNT 5-88
コンパイラ、SCREEN COBOL
SHADOWED 5-52
概要 1-8
SIGN 5-16
コマンド 7-5/7-16
SYNCHRONIZED 5-16
コマンド行 2-13
TO/FROM/USING 5-56, 5-90
実行 7-1
UPSHIFT 5-57
ステートメントの種類 6-5
USAGE 5-19
制限事項 7-19
USER CONVERSION 5-57, 5-93
生成されるファイル 1-9, 7-3
VALUE 5-20, 5-58
停止 7-18
WHEN ABSENT/BLANK 5-59
ディスク・スペースの節約 7-18
WHEN FULL 5-59
統計 7-17
呼び名 (mnemonic-name) 5-42
コンパイラが報告するエラー C-1
空白挿入 ( 編集用文字 ) 2-5
コンパイラが報告する障害 C-1
空白フィールド 5-59
コンパイラの警告メッセージ C-1
句読文字 2-5
コンパイル
国別文字セット 4-5
OUT パラメータ C-1
組合せ条件と否定組合せ条件 2-22
診断メッセージ C-1/C-92
組合せ比較条件 2-22
コンマ ( 編集用文字 ) 2-5
位取り用小数点 2-5
クラス条件 2-19
サ
グループ項目 5-4
再定義、スクリーン・フィールド 5-52
クロスリファレンス・コマンド、コンパイラ 7-6
サーバ 1-1, 1-5
クロスリファレンス・リスト 1-9
サーバ・プロセス、TCP とのやり取り 6-71
継続行 2-13
算術演算 2-13/2-18
426750-001J
索 引 -9
索 引 算術演算子 2-14
条件名
算術式 2-13
VALUE 句 5-20
参照テーブルの要素、添字 2-26
説明 2-19
式
条件名、使用法 2-28
算術 2-13
乗算 2-14
条件 2-18
小数点 ( 編集用文字 ) 2-5
評価 2-15
除算 2-14
式の中の非互換データ 2-18
診断スクリーン 6-62, B-1/B-6
式の評価
診断スクリーン・メッセージ、代替ルーチン B-2
規則 2-15
シンボル・テーブル 1-7
算術データ 6-32
数字 2-4, 2-5
中間結果 2-16
オペランド、比較 2-20
非互換データ 2-18
データ、入力編集規則 5-80
複数の結果 2-15
リテラル 2-7
システム名
スクリーン・イメージのプリント 6-57
SPECIAL-NAMES 段落 4-6
スクリーン・オーバーレイ領域 5-24
定義 2-7
スクリーン型リクエスタ 4-3
表示属性 4-8
スクリーン記述項
ファンクション・キー 4-7
PICTURE 記号 5-48
実行中のプログラムの停止 6-95
オーバーレイ・スクリーン 5-25
斜線 (/) ( 編集用文字 ) 2-5
スクリーン・オーバーレイ領域 5-24
斜線 (/) コメント文字 2-12
スクリーン・グループ 5-26
シャドウ・データ項目 5-55, 5-66
スクリーン・フィールド 5-27
従属データ項目の規則 6-97
説明 5-22
充填文字
入力制御文字句 5-29
FIELD STATUS 句 5-67
フィールド特性句 5-33
FILL 句 5-40
ベース・スクリーン 5-24
終了条件 6-8
スクリーン・グループ 5-26
出力スクリーン・フィールド 5-28
スクリーン・データのフォーマット 2-5, 5-47
主ワーキング・ストレージ・データ項目 5-53
スクリーン・フィールド
条件
構文 5-27
組合せと否定 2-22
種類 5-28
クラス 2-19
説明 5-27
条件名 2-25
属性 5-42
正負 2-21
フィールド特性句 5-28
比較 2-20
スクリーン・フィールドのオカレンス 5-43
複合 2-21
スクリーン・フィールドの初期値 5-58
略記組合せ比較 2-22
ステートメント
条件式 2-18/2-23
ABORT-TRANSACTION 6-6
説明 2-18
ACCEPT 6-6
単純条件 2-18
ACCEPT DATE/DAY/TIME 6-14
評価の規則 2-23
ADD 6-16
複合条件 2-21
ADD CORRESPONDING 6-16
条件の真理値 2-23
ADD GIVING 6-16
条件のステートメント 6-5
ADD TO 6-16
条件評価の規則 2-23
BEGIN-TRANSACTION 6-18
CALL 6-20
索 引 -10
426750-001J
索 引
ステートメント ( 続き )
USE FOR SCREEN RECOVERY 6-110
CHECKPOINT 6-31
USE FOR TERMINAL-ERRORS 6-110
CLEAR 6-31
種類 6-5
COMPUTE 6-32
ステートメントの種類 6-5
COPY 6-32
スペース ( 句読文字 ) 2-5
DELAY 6-35
スラッシュ (/) ( 編集用文字 ) 2-5
DEVICEINFO 6-36
制御の移動 6-43
DISPLAY 6-40
制限
DISPLAY BASE 6-36
SCREEN COBOL コンパイラ 7-19
DISPLAY OVERLAY 6-38
スクリーン入力フィールドの文字数 5-41
DISPLAY RECOVERY 6-39
制限時間、インテリジェント・デバイスへの出力 6-85
DIVIDE 6-43
正負条件 2-21
END-TRANSACTION 6-44
ゼロ ( 編集用文字 ) 2-5
EXIT 6-45
ゼロ抑制 ( 編集用文字 ) 2-5
EXIT PROGRAM 6-45
宣言プロシージャ 6-2, 6-110
GO TO 6-46
GO TO DEPENDING 6-46
センテンスとステートメント、PROCEDURE DIVISION
6-3
IF 6-47
添字付け 2-26/2-27
IF ... DOUBLEBYTE 6-48
属性
IF ... WITHIN 6-48
スクリーン・フィールド属性の定義 5-42
MOVE CORRESPONDING 6-51
スクリーン・フィールド属性の変更 6-105
MULTIPLY BY 6-54
表示属性の復元 6-67
MULTIPLY GIVING 6-55
PERFORM 6-56
タ
PERFORM ONE 6-59
待機式 (CONTROL 26) 6-86, 6-90
PERFORM TIMES 6-57
代替の ADVISORY メッセージ・プロシージャ A-4
PERFORM UNTIL 6-57
脱字記号 (^) C-1
PERFORM VARYING 6-58
単項算術演算子 2-14
PRINT SCREEN 6-60
タンデム標準リファレンス・フォーマット 2-11
RECEIVE UNSOLICITED MESSAGE 6-62
端末 I/O のステートメント 6-5
RECONNECT MODEM 6-65
端末、SCREEN COBOL プログラムの制御 6-65
REPLY TO UNSOLICITED MESSAGE 6-66
端末制御プロセス
RESET 6-67
「TCP」を参照
RESTART-TRANSACTION 6-70
端末のコンテキスト、チェックポイント処理 6-31
SCROLL 6-71
端末のファイル名、内部形式 5-101
SEND 6-71
段落
SEND MESSAGE 6-84
DATE-COMPILED 3-2
SET 6-91
OBJECT-COMPUTER 4-2
SET MINIMUM-ATTR 6-93
PROCEDURE DIVISION 6-3
SET MINIMUM-COLOR 6-95
PROGRAM-ID 3-1
STOP RUN 6-95
SOURCE-COMPUTER 4-2
SUBTRACT 6-96
SPECIAL-NAMES 4-6
SUBTRACT CORRESPONDING 6-97
段落名の参照 2-25
SUBTRACT GIVING 6-96
チェイン編成のプログラム 1-12
TERMINALINFO 6-98
中間結果、算術演算 2-16
TRANSFORM 6-100
TURN 6-105
426750-001J
索 引 -11
索 引 通信
データ項目の大きさ 5-11
複数の PATHMON 環境間 1-7
データ項目の減算 6-96
プロセス間 1-7
データ参照の修飾 2-25
リクエスタとサーバの間 6-68
データの記述 5-4
定義
データの桁寄せ 2-29
スクリーン・フィールドの属性 5-42
データの自動的な割り付け 5-16
データ項目 5-2
データの送信、スクリーン・フィールド 6-40
レコード 5-2
データベースへのアクセス 1-1
定数、表意 2-9
テーブル
データ
OCCURS 句での記述 5-8
移動のステートメント 6-5
一般的な記述 2-24
記憶領域 2-29
要素、参照 2-26
桁寄せ 2-29
等号 ( 句読文字 ) 2-5
構造 5-4
独自の変換プロシージャ A-1
項目
特殊文字 2-4
COMPUTATIONAL 2-29
特殊レジスタ
DISPLAY 2-29
DIAGNOSTIC-ALLOWED 5-93
PICTURE 句での定義 5-10
LOGICAL-TERMINAL-NAME 5-94
混合 2-10
NEW-CURSOR 5-94
算術式 2-15
OLD-CURSOR 5-94
定義 5-2
PW-INPUT-FIELDS-MISSING 5-94
特性の定義 5-4
PW-QUEUE-FKEY-TIMEOUT 5-96
比較、MUST BE 句 5-42
PW-QUEUE-FKEY-UMP 5-95
参照 2-25/2-28
PW-TCP-PROCESS-NAME 5-96
種類 5-11
PW-TCP-SYSTEM-NAME 5-96
初期設定 5-20
PW-TERMINAL-ERROR-OCCURRED 5-97
スクリーン・フォーマット 5-47
PW-UNSOLICITED-MESSAGE-QUEUED 5-97
タイプの対応 F-1/F-5
PW-USE-NEW-CURSOR 5-98
チェック 6-12
REDISPLAY 5-98
名前、一意 2-25
RESTART-COUNTER 5-100
非互換 2-18
STOP-MODE 5-100
表現 2-29
TELL-ALLOWED 5-100
プログラム・ユニット間での引き渡し 5-3
TERMINAL-FILENAME 5-101
データ記述項目
TERMINAL-PRINTER 5-101
FILLER キーワード 5-7
TERMINATION-STATUS 5-101
JUSTIFIED 句 5-8
TERMINATION-SUBSTATUS 5-102
OCCURS 句 5-8
TRANSACTION-ID 5-102
OCCURS DEPENDING ON 句 5-9
説明 5-93
PICTURE 句 5-10
予約語 2-6
PICTURE ストリング記号 5-11
トグル・コマンド、コンパイラ 7-6
REDEFINES 句 5-13
トグル番号 7-10, 7-11
RENAMES 句 5-14
トランザクション
SIGN 句 5-16
終わり 6-44
SYNCHRONIZED 句 5-16
オンライン・トランザクション処理 1-1
USAGE 句 5-19
開始 6-18
VALUE 句 5-20
トランザクション管理のステートメント 6-5
形式 5-6
トランザクション管理ファシリティ (TMF) 1-2, 5-102
索 引 -12
426750-001J
索 引
トランザクションの終わり 6-44
フィールド
トランザクションの開始 6-18
可変長 5-88
トランザクション・モード 1-6
条件付きで存在 5-66, 5-83
BEGIN-TRANSACTION ステートメント 6-19
「スクリーン・フィールド」も参照
RECONNECT MODEM ステートメント 6-65
デリミタ 5-64
ドル記号 ( 編集用文字 ) 2-5
長さ 5-41
入出力 5-28
ナ
バイト・カウント 5-88
二項算術演算子 2-14
編集エラー 5-68
入出力スクリーン・フィールド 5-28
フィールド・エラー・データ項目 5-68
入力
フィールド特性句
スクリーン・フィールド 5-28, 5-41
ADVISORY 句 5-35
デバイス 5-51
AT 句 5-35
編集規則 5-80
CONTROLLED 句 5-38
入力制御
FILL 句 5-40
文字 5-23
LENGTH 句 5-41
文字句
MUST BE 句 5-42
ABORT-INPUT 5-30
OCCURS 句 5-43
END-OF-INPUT 5-31
PICTURE 句 5-47
FIELD-SEPARATOR 5-31
PROMPT 句 5-49
GROUP-SEPARATOR 5-32
RECEIVE 句 5-51
RESTART-INPUT 5-33
REDEFINES 句 5-52
入力の代替デバイス 5-51
SHADOWED 句 5-52
TO/FROM/USING 句 5-56
ハ
バイト 2-29
ハイライト表示属性 6-93
比較演算子 2-20
比較条件 2-20
非数字オペランド、比較 2-20
非数字リテラル 2-8
非請求メッセージ 6-62, 6-65
CONTROL 26 プロセス・インタフェース 6-90
SEND MESSAGE ステートメント 6-90
処理のステートメント 6-5
否定単純条件 2-22
表意定数 2-9
表示属性
カラー 6-92
システム名 4-8
表示属性の復元 6-67
表示に関する留意事項 5-46
標準外の桁寄せ 2-29
標準桁寄せ 2-29
ピリオド ( 編集用文字 ) 2-5
ファンクション・キー、システム名 4-7
426750-001J
UPSHIFT 句 5-57
USER CONVERSION 句 5-57
VALUE 句 5-58
WHEN ABSENT/BLANK 句 5-58
WHEN FULL 句 5-59
形式 5-34
出力スクリーン 5-28
スクリーン・フィールド 5-28
スクリーン・フィールドの種類 5-28
入出力スクリーン 5-28
入力スクリーン 5-28
呼び名 (mnemonic-name) 句 5-42
フィールドの反復 5-43
フォーマット、リファレンス 2-10
ANSI 標準 2-11
NonStop システム標準 2-11
負記号 ( 編集用文字 ) 2-5
複合条件 2-21
複写テキスト 2-25
複数のオカレンス
スクリーン・フィールド 5-43
メッセージ・フィールド 5-74
複数の結果、算術演算 2-15
索 引 -13
索 引 プリンタに関する留意事項 6-60
メッセージ記述項 5-60
プログラム
FIELD-DELIMITER 句 5-64
オペレーティング・モード 2-1/2-3
MESSAGE FORMAT 句 5-71
構成 2-3
MESSAGE-DELIMITER 句 5-70
処理ステップ 6-1
OCCURS DEPENDING ON 句 5-74
制御、移動 6-2
OCCURS 句 5-74
制御のステートメント 6-5
PICTURE 句 5-77
設計とロジック 1-11
PRESENT IF 句 5-83
プログラム間通信 6-5
RESULTING COUNT 句 5-88
プログラム間での制御の移動 6-20
TO/FROM/USING 句 5-90
プログラム制御の移動 6-1
USER CONVERSION 句 5-93
プログラムの実行 6-35
使用法 5-63
プログラムの実行の制御 6-32
メッセージ・フィールドの一般的タイプ 5-91
プログラムの実行の遅延 6-35
メッセージ・フィールドのオカレンス 5-74
プログラムのメニュー編成 1-11
メッセージ・フィールドのタイプ、関連する句 5-91
プログラム・ロジックの開発 1-11
文字 2-4/2-6
プロシージャの実行 6-55
文字セット 2-4, 4-4
プロセス間通信 1-7
文字の制限、スクリーン入力 5-41
プロセス間メッセージ
文字列 2-3
SEND の例 6-76
戻り値のサイズ F-1/F-5
対応 1-6
ブロック・モード
ヤ
ACCEPT 処理 6-9
ユーザ定義
DISPLAY BASE 6-37
語 2-7
コーディングの例 8-3
番号 5-57
プログラムの指定 4-2
ユリウス歴日付 6-15
分離符 2-3
呼び名 (mnemonic name) 4-6
べき乗 2-14
呼び名 (mnemonic name) 句 5-42
ベース・スクリーン 5-22, 5-24
予約語、SCREEN COBOL 2-6, E-1/E-3
編集 ADVISORY エラー番号 5-69
より小さい記号 (<) 2-4
編集用文字 2-5
補助ワーキング・ストレージ・データ項目 5-52
マ
ラ
リクエスタ 1-1, 1-5
リテラル
明記されていない応答コード 6-76
算術式 2-15
メッセージ
定義 2-7
「エラー・メッセージ」も参照
リテラル・スクリーン・フィールド 5-28
可変長 5-71
リファレンス・フォーマット 2-11
固定長 5-71
レコード、定義 5-2
デリミタ 5-70
レジスタ、特殊 5-93
非請求 6-62, 6-66
レベル番号 5-5
フィールド・オカレンス 5-74
論理演算子 2-21
メッセージ型リクエスタ 4-3
メッセージ記述 1-6
ワ
ワーキング・ストレージ項目の初期値 5-20
ワード
記憶領域 2-29
索 引 -14
426750-001J
Fly UP