SEWB+/CONSTRUCTION アプリケーション開発ガイド

手引・文法書

3020-3-B83

目　　次

前書き

はじめに

第1編　概要

1.　SEWB+/CONSTRUCTIONを使ったAP作成

1.1　開発の流れ

1.2　テンプレートとAP作成

1.2.1　テンプレートの役割

1.3　データ定義とAP作成

1.3.1　データ定義の役割

1.4　プログラム定義とAP作成

1.4.1　プログラム定義の役割

第2編　操作編

2.　データ定義

2.1　システム開発で使用するデータの決定

2.2　データ定義

2.2.1　データ定義種別の選択

2.2.2　データ定義の概要情報の記述－［サイン］タブ

2.2.3　各定義種別の定義情報の記述－各データ定義タブ

2.2.4　レコードの選択

2.3　レコード構成の定義

2.3.1　SEWB+/CONSTRUCTIONからレコードを更新するときの注意事項

2.4　クライアント側のインタフェーステーブル用レコードソースの生成

2.4.1　データ定義ウィンドウからの生成

2.4.2　コマンドでの生成（レコードソース）

2.5　データ定義のポイント

2.5.1　サーバAPのレコードソース

2.5.2　キャラクタ（文字列）ベースでのインタフェーステーブル作成

3.　プログラム定義

3.1　プログラム定義の準備

3.1.1　プログラム定義の起動

3.1.2　使用するテンプレートの選択

3.1.3　プログラム定義を始める前に確認しておくこと

3.2　プログラムの定義

3.2.1　プログラムの概要情報の記述－［サイン］タブ

3.2.2　CORBAの実装プログラムで使用するインタフェース項目の定義－［インタフェース］タブ

3.2.3　APで使用する入出力項目の定義－［入出力］タブ

3.2.4　テンプレート中の指示項目の設定－［パラメタ］タブ

3.2.5　APで使用する部品の定義－［部品］タブ

3.2.6　ユーザ処理の設定－［ユーザ処理］タブ

3.3　ソースプログラムの生成

3.3.1　プログラム定義ウィンドウからの生成

3.3.2　コマンドでの生成（ソースプログラム）

4.　コンパイルと単体テスト

4.1　COBOL開発マネージャでのコンパイル

4.1.1　COBOL開発マネージャ上でのコンパイルの手順

4.1.2　コンパイル時の注意事項

第3編　テンプレート記述言語編

5.　テンプレートとは

5.1　テンプレートとは

5.1.1　C/SシステムのAP作成に必要なテンプレート

5.1.2　テンプレートと各定義ファイルとの関係

5.2　SEWB+/CONSTRUCTIONで作成できるC/Sシステムのプログラム

5.2.1　バッチ処理のプログラム

5.2.2　オンライン処理のプログラム

5.3　SEWB+/CONSTRUCTIONでソースプログラムを生成する手順

5.3.1　テンプレート作成者とプログラム作成者の作業

5.3.2　テンプレート作成の考え方

5.4　テンプレートの作り方

5.4.1　テンプレートに記述する内容

5.4.2　テンプレートの定義

6.　テンプレートを使った例題

6.1　バッチ処理の例題

6.1.1　ファイル編集・帳票出力の例題

6.1.2　マスタ更新・追加出力の例題

6.2　オンライン処理の例題

6.2.1　データエントリの例題

6.2.2　伝票入力・訂正の例題

7.　テンプレート記述言語

7.1　テンプレート記述言語の概要

7.1.1　使用できる文字セット

7.1.2　トークン

7.1.3　定数

7.1.4　可変記号

7.1.5　配列の記述規則

7.1.6　部分参照の記述規則

7.1.7　予約語

7.1.8　展開文字列

7.1.9　分離記号

7.2　演算子

7.2.1　算術演算子

7.2.2　比較演算子

7.2.3　論理演算子

7.2.4　代入演算子

7.2.5　文字列連結演算子

7.2.6　優先順位と結合規則

7.3　式

7.3.1　算術式

7.3.2　条件式

7.3.3　代入式

7.3.4　連結式

7.3.5　記号生成式

7.4　注釈

7.5　テンプレート定義部の宣言

7.5.1　テンプレート定義部の構成

7.5.2　テンプレート概要定義部

7.5.3　インタフェース定義部

7.6　部品定義と部品の呼び出し

7.6.1　部品定義

7.6.2　部品の使用方法

7.6.3　部品の呼び出し

7.7　業務ルールの利用

7.7.1　テンプレート記述と業務ルール

7.7.2　業務ルールの展開と抽出条件

7.7.3　業務ルールの分割展開

7.7.4　展開制御文を使用した業務ルールの展開

7.8　XML文書の利用

7.8.1　XML文書とは

7.8.2　XML文書の構造

7.8.3　XML文書の参照方法

7.8.4　SEWB+/CONSTRUCTIONで取り込むことができるXMLファイル

7.9　文と関数

7.9.1　文と関数一覧

7.9.2　@@break文

7.9.3　@@columnlist関数

7.9.4　@@continue文

7.9.5　@@count関数

7.9.6　@@defined関数

7.9.7　@@diagram文

7.9.8　@@errorexit文

7.9.9　@@expand文

7.9.10　@@file文

7.9.11　@@foreach文

7.9.12　@@getdata関数

7.9.13　@@getdate関数

7.9.14　@@getmemo関数

7.9.15　@@getrfile関数

7.9.16　@@getsign関数

7.9.17　@@global文

7.9.18　@@if文

7.9.19　@@interface文

7.9.20　@@itemlist関数

7.9.21　@@lang文

7.9.22　@@leadbyte関数

7.9.23　@@length関数

7.9.24　@@lengthb関数

7.9.25　@@merge文

7.9.26　@@modify関数

7.9.27　@@msg文

7.9.28　@@parts文

7.9.29　@@pic関数

7.9.30　@@proc文

7.9.31　@@put文

7.9.32　@@reclen関数

7.9.33　@@rule文

7.9.34　@@set文

7.9.35　@@str関数

7.9.36　@@strb関数

7.9.37　@@switch文

7.9.38　@@uoc文

7.9.39　@@uocdefined関数

7.9.40　@@while文

7.9.41　@@xmap3common関数

7.9.42　@@xmap3objects関数

7.9.43　@@xmlattribute関数

7.9.44　@@xmlchildnodes関数

7.9.45　@@xmlelements関数

7.9.46　@@xmlfirstchild関数

7.9.47　@@xmllastchild関数

7.9.48　@@xmlnext関数

7.9.49　@@xmlparent関数

7.9.50　@@xmlprevious関数

付録

付録A　環境設定

付録A.1　SEWB+/CONSTRUCTIONの環境設定

付録A.2　プログラム定義で選択したファイル名の保存方法

付録B　障害対策

付録B.1　データ定義時に障害が起きた場合

付録B.2　プログラム定義時に障害が起きた場合

付録C　テンプレートおよび部品の紹介

付録C.1　バッチシステム向けテンプレート・部品

付録C.2　C/Sシステム向けテンプレート・部品

付録D　C/Sシステムサンプルプログラムの説明

付録D.1　C/Sシステムサンプルプログラムの全体の概要

付録D.2　C/Sシステムサンプルプログラムの詳細と構成

付録D.3　多様な開発環境に対応するC/Sシステムサンプルプログラムの詳細と構成

付録E　SEWB+/REPOSITORYで表示される名称

付録F　SEWB+/CONSTRUCTIONのインストールとアンインストール

付録G　前バージョンからの移行

付録G.1　バージョン3からバージョン4にバージョンアップする場合の移行

付録G.2　バージョン2からバージョン4にバージョンアップする場合の移行

付録H　XML形式ファイルのフォーマット

付録H.1　XML形式ファイルの出力方法

付録H.2　データ定義情報のXML形式ファイルへの出力

付録H.3　プログラム定義情報のXML形式ファイルへの出力

付録I　ファイルの互換性

付録J　このマニュアルの参考情報

付録J.1　関連マニュアル

付録J.2　このマニュアルでの表記

付録J.3　KB（キロバイト）などの単位表記について

付録K　用語解説

索引

[他社商品名称に関する表示]

All Rights Reserved. Copyright (C) 2012, Hitachi, Ltd.

前書き

■ 対象製品

P-2451-1444　 SEWB+ 基本開発環境セット　 04-00（適用OS：Windows XP，Windows Vista，Windows 7，Windows Server 2003，Windows Server 2003 x64※，Windows Server 2003 R2，Windows Server 2003 R2 x64※，Windows Server 2008，Windows Server 2008 x64※，Windows Server 2008 R2※）

注※　WOW64（Windows On Windows 64）環境だけで使用できます。

この製品は，ISO9001およびTickITの認証を受けた品質マネジメントシステムで開発されました。

■ 輸出時の注意

本製品を輸出される場合には，外国為替および外国貿易法ならびに米国の輸出管理関連法規などの規制をご確認の上，必要な手続きをお取りください。
なお，ご不明な場合は，弊社担当営業にお問い合わせください。

■ 商標類

CORBAは，Object Management Groupが提唱する分散処理環境アーキテクチャの名称です。
Microsoftは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
ODBCは，米国Microsoft Corporationが提唱するデータベースアクセス機構です。
OracleとJavaは，Oracle Corporation 及びその子会社，関連会社の米国及びその他の国における登録商標です。
Visual Basicは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
Visual C++は，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
Windowsは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
Windows Serverは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
Windows Vistaは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
その他記載の会社名，製品名は，それぞれの会社の商標もしくは登録商標です。

■ マイクロソフト製品の表記について

このマニュアルでは，マイクロソフト製品の名称を次のように表記しています。

表記 | 正式名称
VB | Microsoft(R) Visual Basic(R)
Visual C++ | Microsoft(R) Visual C++(R)
Windows | Windows XP | Microsoft(R) Windows(R) XP Home Edition Operating System
Microsoft(R) Windows(R) XP Professional Operating System
Windows Vista | Microsoft(R) Windows Vista(R) Business 日本語版(32ビット版)
Microsoft(R) Windows Vista(R) Enterprise 日本語版(32ビット版)
Microsoft(R) Windows Vista(R) Ultimate 日本語版(32ビット版)
Microsoft(R) Windows Vista(R) Business 日本語版(64ビット版)※
Microsoft(R) Windows Vista(R) Enterprise 日本語版(64ビット版)※
Microsoft(R) Windows Vista(R) Ultimate 日本語版(64ビット版)※
Windows 7 | Microsoft(R) Windows(R) 7 Home Premium 日本語版(32ビット版)
Microsoft(R) Windows(R) 7 Professional 日本語版(32ビット版)
Microsoft(R) Windows(R) 7 Ultimate 日本語版(32ビット版)
Microsoft(R) Windows(R) 7 Home Premium 日本語版(64ビット版)※
Microsoft(R) Windows(R) 7 Professional 日本語版(64ビット版)※
Microsoft(R) Windows(R) 7 Ultimate 日本語版(64ビット版)※
Windows Server | Windows Server 2003 | Microsoft(R) Windows Server(R) 2003, Standard Edition 日本語版
Microsoft(R) Windows Server(R) 2003, Enterprise Edition 日本語版
Windows Server 2003 x64 | Microsoft(R) Windows Server(R) 2003, Standard x64 Edition 日本語版※
Microsoft(R) Windows Server(R) 2003, Enterprise x64 Edition 日本語版※
Windows Server 2003 R2 | Microsoft(R) Windows Server(R) 2003 R2, Standard Edition 日本語版
Microsoft(R) Windows Server(R) 2003 R2, Enterprise Edition 日本語版
Windows Server 2003 R2 x64 | Microsoft(R) Windows Server(R) 2003 R2, Standard x64 Edition 日本語版※
Microsoft(R) Windows Server(R) 2003 R2, Enterprise x64 Edition 日本語版※
Microsoft(R) Windows Server(R) 2003 R2, Datacenter x64 Edition 日本語版※
Windows Server 2008 | Microsoft(R) Windows Server(R) 2008 Standard 32-bit 日本語版
Microsoft(R) Windows Server(R) 2008 Enterprise 32-bit 日本語版
Windows Server 2008 x64 | Microsoft(R) Windows Server(R) 2008 Standard 日本語版※
Microsoft(R) Windows Server(R) 2008 Enterprise 日本語版※
Windows Server 2008 R2 | Microsoft(R) Windows Server(R) 2008 R2 Standard 日本語版※
Microsoft(R) Windows Server(R) 2008 R2 Enterprise 日本語版※
Microsoft(R) Windows Server(R) 2008 R2 Datacenter 日本語版※

注※

64ビット版のWindowsです。

Windows Server 2003とWindows Server 2003 R2とで機能差がない場合，Windows Server 2003と表記しています。

■ 発行

2012年 7月　3020-3-B83

■ 著作権

All Rights Reserved. Copyright (C) 2012, Hitachi, Ltd.

はじめに

このマニュアルは，SEWB+ 基本開発環境セットのプログラム構築支援機能の概要，操作方法および文法について説明したものです。

SEWB+ 基本開発環境セットは，SEWB+ 基本開発環境とGroupmax Object Serverから構成されます。SEWB+ 基本開発環境は，次に示す機能から構成されます。

リポジトリ管理機能（SEWB+/REPOSITORY）

リポジトリブラウザ機能（SEWB+/REPOSITORY-BROWSERまたはリポジトリブラウザ）

プログラム構築支援機能（SEWB+/CONSTRUCTION）

レコード設計支援機能（SEWB+/RECORD DEFINER）

なお，このマニュアルでは，SEWB+ 基本開発環境のプログラム構築支援機能をSEWB+/CONSTRUCTIONと表記しています。

＜はじめにの構成＞

対象読者

読書手順

このマニュアルで使用している記号

構文の説明で使用する記号

このマニュアルで使用する画面図と操作説明について

COBOLについて

マニュアルとヘルプを効果的にお使いいただくために

対象読者

このマニュアルは，SEWB+/CONSTRUCTIONを使って，次の作業をする方を対象としています。

クライアントサーバシステムやバッチシステムのプログラムをSEWB+/CONSTRUCTIONで作るプログラマの方。

システム開発で共用できるテンプレートを設計し，作成して提供する方。

ソースプログラムは，任意の言語で生成できますが，このマニュアルでは例にCOBOLを使っていますので，その点をあらかじめご了承ください。

読書手順

このマニュアルは，利用目的に合わせて次の個所をお読みいただくことをお勧めします。

マニュアルを読む目的 | 記述個所
SEWB+/CONSTRUCTIONの概要について知りたい | 1章
データ定義方法，プログラム定義方法，およびコンパイルと単体テストについて知りたい | データ定義 | 2章
プログラム定義 | 3章
コンパイルと単体テスト | 4章
テンプレート記述言語について知りたい | テンプレートとは | 5章
テンプレートを使った例題 | 6章
テンプレート記述言語 | 7章
SEWB+/CONSTRUCTIONの環境設定について知りたい | 付録A
障害発生時の，各ファイルの実行情報の取り方について知りたい | 付録B
プログラム作成を効率良く進めるためにSEWB+で用意されている，テンプレートおよび部品について知りたい | 付録C
SEWB+/CONSTRUCTIONのサンプルプログラムについて知りたい | 付録D
SEWB+/CONSTRUCTIONの定義ファイルが，SEWB+/REPOSITORYに格納された場合に表示される名称について知りたい | 付録E
SEWB+/CONSTRUCTIONのインストールとアンインストールについて知りたい | 付録F
前バージョンからの移行について知りたい | 付録G
SEWB+/CONSTRUCTIONの定義ファイルをXML形式ファイルに出力する場合のファイル形式，およびXML形式ファイルの出力方法について知りたい | 付録H
SEWB+/CONSTRUCTIONで作成したファイルのバージョン間の互換性について | 付録I
このマニュアルの参考情報について知りたい | 付録J
このマニュアルで使用する用語について知りたい | 付録K

このマニュアルで使用している記号

このマニュアルで使用する記号を次のように定義します。

記号
意味

［　］メニュー
［　］ボタン
など
メニュータイトル，メニュー項目，ボタンなどを示します。

［A］－［B］
－の前に示した［A］メニューから［B］を選択することを示します。

構文の説明で使用する記号

文と関数の形式で使用している記号は表のとおりです。ただし，［　］｛　｝はテンプレート中でも文字そのものとして記述でき，特別な意味を持ちます。例えば，［　］は添字の配列を表すときに使います。また，｛　｝は一つのまとまりを示すときに使います。このように文字そのものを表しているときと，この表に記載された記号としての意味を持つときとを区別するために，このマニュアルでは，記号として使っている個所でその旨を記述しています。したがって，何も記述していないときは，文字そのものを表します。

記号 | 記号の意味
｜ | 横に並べられた複数の項目に対する項目間の区切りを示し，「または」を意味します。
［　］ | ［　］内の項目は省略できることを表します。また，［　］内に，複数の項目が並べてある場合は，すべてを省略するか，またはその中のどれか一つを選んで記述します。
｛　｝ | ｛　｝内に，複数の項目が並べてある場合は，その中のどれか一つを選択することを示します。記号｜で区切られている場合は，そのうちの一つを選択します。

このマニュアルで使用する画面図と操作説明について

このマニュアルでは特に断りのないかぎり，次に示すWindowsで表示される画面，メニュー名およびアイコンで操作を説明しています。これら以外のWindowsでは，画面，メニュー名およびアイコンが異なることがあります。詳細は，Windowsのドキュメントを参照してください。

機能名 | Windows
SEWB+/REPOSITORY | Windows Server 2003
SEWB+/REPOSITORY-BROWSER | Windows Vista
SEWB+/CONSTRUCTION
SEWB+/RECORD DEFINER

COBOLについて

このマニュアルの「4.　コンパイルと単体テスト」は，プログラミング言語にCOBOL2002を使用していることを前提に記載しています。COBOL2002以外で作成されたソースプログラムをコンパイル・テストする場合は，それぞれのコンパイラのマニュアルを参照してください。

マニュアルとヘルプを効果的にお使いいただくために

SEWB+/CONSTRUCTIONではオンラインヘルプ（以降，ヘルプと略します）を提供しています。利用の目的に応じて，マニュアルとヘルプを使い分けることをお勧めします。

マニュアルは，SEWB+/CONSTRUCTION全体の機能の使い方を理解したいときにお使いください。

ヘルプは，SEWB+/CONSTRUCTIONを操作中に機能の詳細を知りたいときにお使いください。ダイアログの操作方法，メニューバーの利用方法の詳細，注意事項などを参照できます。ヘルプでは次の内容を説明しています。

操作手順

用語およびダイアログやウィンドウの項目の説明

データ定義ウィンドウの操作方法

プログラム定義ウィンドウの操作方法

テンプレート記述言語と文法

また，マニュアルの6章で使用している例題のテンプレートとソースプログラムは，SEWB+/CONSTRUCTIONが提供しているサンプルプログラム中に「Manual Sample」として収められています。

1.　SEWB+/CONSTRUCTIONを使ったAP作成

SEWB+/CONSTRUCTIONはテンプレート，データ定義およびプログラム定義を使ってC/Sシステムやバッチシステムのプログラムを効率良く開発するための機能です。

この章では，SEWB+/CONSTRUCTIONを使ってAPを作成するための基本的な事柄について説明します。

＜この章の構成＞

1.1　開発の流れ

1.2　テンプレートとAP作成

1.3　データ定義とAP作成

1.4　プログラム定義とAP作成

1.1　開発の流れ

SEWB+/CONSTRUCTIONでは，TPモニタを使用するC/SシステムのサーバAPや，バッチシステムのAPを作成できます。

プログラムは，データ定義で定義したファイル・DBなどを利用し，テンプレートの記述に従って定義します。

ここでは，SEWB+/CONSTRUCTIONを使用してサーバAPを作成するときの開発の流れおよびデータの流れについて説明します。

図1-1　開発の流れ

SEWB+/REPOSITORY
システム分析やDB設計などの上流工程で抽出された，システム開発に必要な資源は，リポジトリで管理されています。
開発に必要な資源のうち，SEWB+/CONSTRUCTIONで利用する主なものを次に示します。

テンプレート・部品（ドキュメント）

辞書（データ項目・業務ルール※）

各種仕様書（ドキュメント）

注※

業務ルールとは，データ項目に着目して，データ項目特有の処理を部品化したものです。

SEWB+/RECORD DEFINER
データ定義で利用するレコード定義を作成します。また，クライアント側のインタフェーステーブル用にレコードソースを生成することもできます。

XMAP3（画面や帳票を使ったAPを作成する場合）
SEWB+/CONSTRUCTIONでは，XMAP3で作成した画面や帳票の定義情報をマップ定義ファイルから取得し，ソースプログラムを生成できます。

データ定義設計支援（データ定義）
SEWB+/CONSTRUCTIONでのAP作成に使用するファイルやDBを設計します。ファイルやDBの設計には，辞書のレコード定義（最上位結合項目）やSEWB+/RECORD DEFINERで作成したレコード定義を利用します。

WorkCoordinator Definer
SEWB+/CONSTRUCTIONでは，XMLファイルをソースプログラム生成のパラメタとして利用できます。WorkCoordinator Definerで作成したビジネスプロセス定義ファイルなどのXML形式ファイルが使用できます。WorkCoordinator Definerについては，マニュアル「WorkCoordinator Definer Version 3 ユーザーズガイド」を参照してください。

プログラム開発支援（プログラム定義）
プログラム定義でテンプレートを選び，必要な項目や業務ルールを定義します。また，必要に応じて，AP固有の処理のコーディング（ユーザ追加処理）を追加してプログラムを定義します。定義終了後，ソースプログラムを生成します。

1.2　テンプレートとAP作成

テンプレートはプログラムのひな型のようなものです。

テンプレートを利用することによって，AP作成の標準化や効率化を進められます。

＜この節の構成＞

1.2.1　テンプレートの役割

1.2.1　テンプレートの役割

テンプレートは，通常，業務システム全体を把握する専任者（テンプレート作成者）によって，テンプレート記述言語とプログラミング言語を使用して作成されます。テンプレートには，APにどんな処理をさせるか，それにはどんなデータ定義が必要かなどのプログラムの処理および構成が書かれています。テンプレートの内容は特定のAP用ではなく，類似したAPの作成に広く流用できるように，使用されているデータ項目やファイルの名前などは可変記号と呼ばれる仮の記号で書かれています。可変記号には，プログラム作成者が値を設定できます。これらは，プログラム定義で入力された情報を基に，ソースプログラム生成時に固有の情報に変更されます。

また，同じテンプレート記述言語とプログラミング言語で作成される部品には，RPCの処理やDBアクセスの処理など，複雑な処理や複数のAPで共用される処理を記述できます。

テンプレートや部品を使用すると，プログラム作成者が難しい処理をコーディングしたり，同じ処理を何度もコーディングしたりする手間が省けるので生産性と信頼性が向上し，プログラムの品質も均一にできます。標準的な業務処理のAPを作成する場合は，SEWB+/CS-FRAMEWORKやSEWB+/BATCH-FRAMEWORKを使用すると，効率良く作業を進められます。

なお，テンプレートの詳細は「第3編　5.　テンプレートとは」を参照してください。

1.3　データ定義とAP作成

SEWB+/CONSTRUCTIONでは，サーバAPのほかに，クライアント側のインタフェース用のテーブルを作成できます。

データ定義では，AP中で使用するファイルやDBの定義およびクライアント側のAPと連携するためのインタフェースを定義します。

＜この節の構成＞

1.3.1　データ定義の役割

1.3.1　データ定義の役割

データ定義では，必要に応じて次の情報の入力をプログラム作成者に促すことができます。

ファイル情報
ファイルの入出力に必要なファイル名，ファイルの編成方法，およびレコード構造を定義します。

RDB情報
RDBの入出力に必要な表名称，およびレコード構造を定義します。

DAM情報
DAM（Direct Access Method）ファイルの入出力に必要な論理ファイル名，入出力ブロックサイズ，およびレコード構造を定義します。DAMファイルは，分散トランザクション処理機能OpenTP1が提供する構造型ファイルサービスの一つです。ファイル内の相対位置を指定することによって，ブロック単位でダイレクトアクセスができる直接編成ファイルです。

TAM情報
TAM（Table Access Method）テーブルは，OpenTP1が提供する構造型ファイルサービスの一つです。主記憶に常駐してダイレクトアクセスができる直接編成ファイルです。このTAMテーブルの入出力に必要なテーブル名，TAMテーブルにアクセスするときのキー項目名，およびレコード構造を定義します。ただし，キー項目名は，COBOLソースプログラムやレコードには，直接生成されません。指定されたキー項目名の長さは，TAMテーブルの入出力時に，キーの長さを宣言する項目の領域長に反映されます。

RPC情報
リモートプロシジャコールで，SPP（Service Providing Program）へサービスを要求するときに必要な入力パラメタと，応答領域を定義します。SPPは，クライアントプログラムからのサービス要求を処理し，結果を返すサーバ側のサービス提供プログラムです。

メッセージ情報
WindowsマシンやUNIXマシン，端末，メインフレームなどとネットワークを介した他システムとのサービスの要求と提供を，メッセージを使って行う形態をメッセージ送受信形態といいます。メッセージはメッセージ処理プログラムMHP（Message Handling Program）が処理します。このMHPに対して送受信するメッセージを定義します。

ユーザジャーナル情報
ユーザジャーナルの出力に必要なユーザジャーナルコードおよびユーザジャーナルレコード構造を定義します。ユーザジャーナルは，障害発生時などのファイル回復や稼働統計情報を分析するために取得する情報です。

メッセージログ情報
メッセージログの出力に必要なメッセージログレコード構造を定義します。メッセージログは，オンラインシステムに障害が起きていないかどうかを監視するための情報です。

共通作業領域情報
プログラムの作業領域や，ほかのプログラムを呼び出すときのCALL文の引数に使用する連絡領域のレコード構造を定義します。

データ定義ウィンドウのファイル情報の定義例を次の図に示します。

図1-2　データ定義ウィンドウの例

このデータ定義ウィンドウで定義されたレコード構造は，ソースプログラム生成時に自動的に生成されます。また，COBOLで生成する場合はCOPYメンバとして，C言語で生成する場合はヘッダファイルとして生成される情報もあります。ただし，C言語の場合にレコード定義を参照しているときは，レコード構造は生成されません。

なお，データ定義の詳細は「第2編　2.　データ定義」を参照してください。

1.4　プログラム定義とAP作成

プログラム定義では，テンプレートおよびデータ定義情報を取り込んで，ソースプログラム生成に必要な情報を設定します。

＜この節の構成＞

1.4.1　プログラム定義の役割

1.4.1　プログラム定義の役割

テンプレートは幾つものプログラムを作成するときに共用できるように作るため，プログラム固有の情報を定義する仕掛けが必要です。それがプログラム定義です。プログラム作成者は，定義ごとのタブを持つプログラム定義ウィンドウで入出力やパラメタの定義，UOC（ユーザ追加処理）の記述および業務ルール処理の設定などをし，テンプレートだけでは不足している固有情報を定義します。

図1-3　プログラム定義ウィンドウの例

テンプレート作成者は，プログラム作成者に定義してもらいたい情報がプログラム定義ウィンドウに項目として表示されるように，テンプレート内にテンプレート記述言語を使って記述しておきます。プログラム作成者は，プログラム定義を終了したあとに，ソースプログラムを生成し，コンパイルします。

なお，プログラム定義の詳細は「第2編　3.　プログラム定義」を参照してください。

2.　データ定義

SEWB+/CONSTRUCTIONでは，サーバAP，およびクライアント側のインタフェース用のテーブルを作成できます。

データ定義では，APで使用するファイルやDBの定義およびクライアント側のAPと連携するためのインタフェースを定義します。

＜この章の構成＞

2.1　システム開発で使用するデータの決定

2.2　データ定義

2.3　レコード構成の定義

2.4　クライアント側のインタフェーステーブル用レコードソースの生成

2.5　データ定義のポイント

2.1　システム開発で使用するデータの決定

作成するAPで使用するファイルやDB（データ定義の種別），およびレコードの内容を決めておきます。

C/SシステムのAPを作成する場合は，データ定義種別を定義できます。それぞれのデータ定義種別とその内容，およびTPモニタとの相性を次の表に示します。

表2-1　C/SシステムのAP作成時に定義できるデータ定義種別と情報

種別 | 内容 | TPモニタを利用する | TPモニタを利用しない
ファイル | ファイルの入出力に必要な「ファイル名」，「ファイル編成」および「レコード構造※」を定義する。 | ○ | ○
RDB | RDBの入出力に必要な「表名称」および「レコード構造※」を定義する。 | ○ | ○
DAM | DAMファイルの入出力に必要な「DAMファイル名」，「入出力ブロックサイズ」および「レコード構造※」を定義する。 | ○ | ×
TAM | TAMテーブルの入出力に必要な「TAMテーブル名」および「レコード構造※」を定義する。 | ○ | ×
RPC入力パラメタ | リモートプロシジャコールに必要な「入力パラメタ※」を定義する。 | ○ | ×
RPC応答領域 | リモートプロシジャコールに必要な「応答領域※」を定義する。 | ○ | ×
メッセージ | メッセージ送受信に必要な「メッセージ※」を定義する。 | ○ | ○
ユーザジャーナル | ユーザジャーナルの取得に必要な「ユーザジャーナルコード」「ユーザジャーナルレコード構造※」を定義する。 | ○ | ×
メッセージログ | メッセージログの出力に必要な「メッセージログレコード構造※」を定義する。 | ○ | ×
共通作業領域 | AP間で共通の作業領域や，AP間のCALLの引数に使用する「レコード構造※」を定義する。 | ○ | ○

（凡例）

○：使用できる

×：使用できない

注※

レコード構造，RPC入力パラメタ，RPC応答領域，メッセージ，ユーザジャーナルレコード構造およびメッセージログレコード構造は，データ項目辞書の結合項目の構成機能，またはSEWB+/RECORD DEFINERで定義します。データ定義では，あらかじめ定義された結合項目の構成（レコード構造）を選んで，各定義情報に反映させます。

2.2　データ定義

データ定義では，辞書のレコード定義（最上位結合項目）またはSEWB+/RECORD DEFINERで作成したレコード定義を指定します。

作成するAPで使用するファイルやDBが決まったら，実際にAP中で使用するファイル名，DB名やレコード構造を定義します。これらの情報は，SEWB+/CONSTRUCTIONのデータ定義ウィンドウ上で定義できます。

データ定義で定義した情報はデータ定義ファイルに格納され，インタフェーステーブル用のレコードソースとして生成されます。また，データ定義情報はソースプログラム生成時に展開されてソースプログラムに反映されたり，プログラム定義ウィンドウからの要求に応じて，テンプレート中の可変記号の値として設定されたりします。

データ定義情報は，プログラム定義ウィンドウからの要求に応じて，変更できます。

＜この節の構成＞

2.2.1　データ定義種別の選択

2.2.2　データ定義の概要情報の記述－［サイン］タブ

2.2.3　各定義種別の定義情報の記述－各データ定義タブ

2.2.4　レコードの選択

2.2.1　データ定義種別の選択

データ定義を新しく定義する場合は，まずデータ定義種別を選んで指定します。

データ定義種別を選んだら，それぞれに対する情報を定義します。情報の定義はデータ定義ウィンドウで行います。定義ウィンドウは，［サイン］タブとデータ定義タブから構成されています。

2.2.2　データ定義の概要情報の記述－［サイン］タブ

［サイン］タブを次に示します。

［サイン］タブには，作成するデータ定義の名前，作成者名，および概要を指定します。

2.2.3　各定義種別の定義情報の記述－各データ定義タブ

データ定義種別に対応したデータ定義をします。ここでは，例としてファイルを定義するときのタブを次に示します。

ここでは，データ定義種別ごとのデータ定義タブについて説明します。

なお，各データ定義タブにある「生成時のレベル番号」および「生成時の初期値展開」はデータ定義情報がレコード生成されるときのレベルおよび初期値展開を指定するものです※。すべての定義タブに共通しているので，これ以降での説明は省略しています。

注※

プログラミング言語にCを使用している場合は，レベル番号および初期値展開は無視されます。

［ファイル］タブ
［ファイル］タブには，作成するファイルのファイル名，ファイル編成，キー名，レコード形式，EXTERNAL，長さ設定エリア，および使用するレコードを指定します。

［RDB］タブ
［RDB］タブには，作成するDBの表名称，および使用するレコードを指定します。表名称は，直接入力するか，または［表選択］ボタンをクリックして表示される［表選択］ダイアログから，表名称を選んで指定します。

［DAM］タブ
［DAM］タブには，作成するDAMファイルの論理ファイル名，入出力ブロックサイズ，および使用するレコードを指定します。

［TAM］タブ
［TAM］タブには，作成するTAMテーブルのTAMテーブル名，使用するレコードおよびキーを指定します。キーは，［ツール］－［キー項目の選択］を選んで［データ項目選択］ダイアログを表示させ，その中からキーとなる項目を選んで指定します。

［RPC入力パラメタ］タブ
［RPC入力パラメタ］タブには，作成するRPCインタフェースの入力パラメタに使用するレコードを指定します。

注

レコード定義に指定するレコードの構造に，入力パラメタ長格納領域は含まれません。

［RPC応答領域］タブ
［RPC応答領域］タブには，作成するRPCインタフェースの応答領域に使用するレコードを指定します。

注

レコード定義に指定するレコードの構造に，応答領域長格納領域は含まれません。

［メッセージ］タブ
［メッセージ］タブには，作成するMHPインタフェースのメッセージに使用するレコードを指定します。

注

メッセージ定義に指定するレコードの構造に，MCF（Message Control Facility）で使用するヘッダ領域は含まれません。

［ユーザジャーナル］タブ
［ユーザジャーナル］タブには，作成するユーザジャーナルのコードおよび使用するレコードを指定します。

注

ユーザジャーナル定義に指定するレコードの構造に，ユーザジャーナル長およびユーザジャーナルコード格納領域は含まれません。

［メッセージログ］タブ
［メッセージログ］タブには，作成するメッセージログに使用するレコードを指定します。

注

メッセージログ定義に指定するレコードの構造に，メッセージログ長格納領域は含まれません。

［共通作業領域］タブ
［共通作業領域］タブには，複数のAP間で共通に使用される作業領域のレコードを指定します。

2.2.4　レコードの選択

レコードとは，データ項目辞書のデータ項目の結合機能を利用して作成された，結合項目構成の最上位の結合項目，またはSEWB+/RECORD DEFINERで作成されたレコード定義のことを指します。

結合項目の場合：［ツール］－［最上位結合項目の検索］から表示される最上位結合項目を選んで指定します。

レコード定義の場合：［ツール］－［レコード定義の検索］から表示されるレコード定義を選んで指定します。

選択された最上位結合項目またはレコード定義は，結合項目名称/レコード定義名称欄に反映されます。

2.3　レコード構成の定義

レコードとは，データ項目辞書のデータ項目の結合機能を利用して作成された，結合項目構成の最上位の結合項目，またはSEWB+/RECORD DEFINERで作成されたレコード定義のことを指します。

各データ定義の「結合項目名称/レコード定義名称」で結合項目を指定した場合は，［ツール］－［結合項目の構成］で表示されるダイアログで結合項目の構成を変更できます。［結合項目の構成］ダイアログを次の図に示します。

図2-1　［結合項目の構成］ダイアログ

また，各データ定義の「結合項目名称/レコード定義名称」で，レコード定義を指定した場合は，SEWB+/RECORD DEFINERでレコードの構成を変更できます。レコード定義を次の図に示します。レコード定義の詳細は，マニュアル「SEWB+/RECORD DEFINER 操作ガイド」を参照してください。

図2-2　レコード定義

＜この節の構成＞

2.3.1　SEWB+/CONSTRUCTIONからレコードを更新するときの注意事項

2.3.1　SEWB+/CONSTRUCTIONからレコードを更新するときの注意事項

APで使用するデータ項目がレコード中にない場合，SEWB+/CONSTRUCTIONからデータ項目辞書を呼び出して，データ項目間に新しく関連を付けてレコードの内容を更新できます。データ項目に新しく関連を付けたいときは，［ツール］－［結合項目の構成］で表示されるダイアログを使用します。ただし，SEWB+/CONSTRUCTIONのデータ定義では，結合項目および構成項目の構成は変更できますが，最上位結合項目を作成することはできません。最上位結合項目を作成する場合は，SEWB+/REPOSITORY-BROWSERを使用します。最上位結合項目の作成方法については，マニュアル「SEWB+/REPOSITORY 辞書設計ガイド」およびリポジトリブラウザのヘルプを参照してください。

2.4　クライアント側のインタフェーステーブル用レコードソースの生成

SEWB+/CONSTRUCTIONでソースプログラムを生成する場合，レコード定義情報はソースプログラム中に展開します。また，クライアント側のAP，RPCおよびメッセージのサーバ側にアクセスするためのインタフェーステーブルは，データ定義から生成することによって，インタフェースの不一致を防げます。インタフェーステーブル用レコードソースは，データ定義ウィンドウまたはコマンドで生成できます。ただし，直接生成できるのは，CまたはCOBOLの場合です。それ以外の言語で生成する場合には，生成用のテンプレートを作成する必要があります。

＜この節の構成＞

2.4.1　データ定義ウィンドウからの生成

2.4.2　コマンドでの生成（レコードソース）

2.4.1　データ定義ウィンドウからの生成

［ファイル］－［生成］を選ぶと，［生成］ダイアログが表示されます。［生成］ダイアログの「生成先」および「生成言語」を指定し，［OK］ボタンをクリックするとレコードソースが生成されます。

2.4.2　コマンドでの生成（レコードソース）

レコードソースを生成するには，コマンド「CSDDGEN.EXE」を実行させます。

コマンドは，次のディレクトリに格納されています。

SEWB+ 基本開発環境の組み込み先パス名¥Construction

SEWB+ 基本開発環境の組み込み先パス名は，デフォルトでは次のように設定されています。システムドライブとは，Windowsが組み込まれているドライブです。

システムドライブ:¥Program Files¥HITACHI¥Sewb

注意

64ビット版のWindowsでの，デフォルトの組み込み先パス名を次に示します。

システムドライブ:¥Program Files (x86)¥HITACHI¥Sewb

形式

CSDDGEN.EXE△/i△入力ファイル名
　　　　　 △/o△出力ファイル名
　　　　　 △/l△{COBOL｜C}
　　　　　 △[/t△トレースファイル名]
　　　　　 △[/r]
　　　　　 △[/rp△レコード定義ファイルパス名]
　　　　　 △[/d△インデンテーション長]
　　　　　 △[/pi△PICTURE句などの生成位置]
　　　　　 △[/cf△COBOLソース正書法]
　　　　　 △[{/ds|/s}]
　　　　　 △[/si△一連番号初期値]
　　　　　 △[/sa△一連番号増分値]

（凡例）

△：1文字以上の空白を示します。

注

［　］は省略できることを示します。

｛　｝はどちらかを指定することを示します。

解説

/i△入力ファイル名：

データ定義ファイル（.csdまたは.cse）のファイル名を指定します。

/o△出力ファイル名：

生成するレコードソースの出力先のファイル名を指定します。ファイル名を指定する場合は，拡張子を指定できます。

/l△生成言語種別：

生成するレコードソースの言語種別を「COBOL」または「C」で指定します。

表2-2　生成言語種別の種類

生成言語種別 | 生成するソース
COBOL | COBOLのCOPYメンバを生成する
C | C言語のヘッダファイルを生成する※1

/t△トレースファイル名：

トレース情報の出力先ファイル名を指定します。

トレース情報には，プログラムの実行などの情報が出力されています。

/r：

データ定義ファイルを最新状態にする場合に指定します。

/rp△レコード定義ファイルパス名※²：

レコード定義ファイル（.csc）のファイルパス名を指定します。

/d△インデンテーション長※²：

インデンテーション長を0～8の範囲で指定します。

/pi△PICTURE句などの生成位置※²：

PICTURE句などの生成位置の範囲を指定します。

COBOLソースの形式が固定形式またはホスト向け固定形式の場合は8～60。

COBOLソースの形式がフリー形式の場合は1～60。

/cf△COBOLソース正書法※²：

COBOLソースの形式を「fix」，「free」または「hostfix」で指定します。「fix」はCOBOLソースを固定形式で生成します。「free」はCOBOLソースをフリー形式で生成します。「hostfix」はCOBOLソースをホスト向け固定形式で生成します。

注

ホスト向け固定形式では，2バイトコードがある場合，機能キャラクタ占有領域が考慮されます。また，項目名が30バイト（機能キャラクタ占有領域を含めて）を超えた場合，31バイト以降は切り捨てられます。

/ds※²：

COBOLソース正書法が固定形式またはホスト向け固定形式の場合に，一連番号を生成ソースに付加しないときに指定します。

/s※²：

COBOLソース正書法が固定形式またはホスト向け固定形式の場合に，一連番号を生成ソースに付加する場合に指定します。

/si△一連番号初期値※²：

一連番号を生成ソースに付加する場合に，一連番号の初期値を1～999999の範囲で指定します。

/sa△一連番号増分値※²：

一連番号を生成ソースに付加する場合に，一連番号の増分値を1～999999の範囲で指定します。

注

大文字と小文字は区別されません。

注※1

レコード定義ファイルを使用するときは，C言語のレコードソースは生成できません。C言語を指定してソースの生成を行った場合，メッセージが出力され生成が中止されます。

注※2

何も指定しない場合は，環境設定で定義されている情報が有効になります。

2.5　データ定義のポイント

＜この節の構成＞

2.5.1　サーバAPのレコードソース

2.5.2　キャラクタ（文字列）ベースでのインタフェーステーブル作成

2.5.1　サーバAPのレコードソース

ソースレコードの展開先
SEWB+/CONSTRUCTIONで用意されているサンプルプログラムでは，サーバ側のレコードソースは，生成ソースプログラム中に展開することを前提にしています。
ソースを管理しやすくするため，コンパイル環境の負荷を軽くするために，レコードソースをソースプログラム中に展開することをお勧めします。

レコードソースの変更
レコードソースがサーバ側の複数のAPで共用されている場合にレコードソースを変更しても，COBOL開発マネージャのリビルドを利用すると，インタフェースの不一致を避けられます。リビルドでは，データ定義の変更時に，そのデータ定義を使用しているすべてのプログラム定義が自動的に再生成されます。

注

サーバ側のAPにCOPYメンバを取り込むことができます。ただし，この場合は，テンプレート中に，COPYを展開させる位置を指示する記述が必要です。

2.5.2　キャラクタ（文字列）ベースでのインタフェーステーブル作成

インタフェーステーブルをキャラクタ（文字列）ベースで作成することで，次の場合に対処できます。

クライアント側とサーバ側で使用している言語が異なる場合
SEWB+/CONSTRUCTIONでは，COBOLとCのインタフェーステーブルを生成できますが，数値が入っていると言語によるバウンダリ調整の違いで，データが不一致になる場合があります。そのため，キャラクタ（文字列）ベースでインタフェーステーブルを作成することをお勧めします。

クライアント側とサーバ側のOSが異なる場合
インタフェーステーブルに数値が入っている場合，同じ言語でも，OSやマシン（ハードウェア）が違うと，テーブルの大きさが不一致になる場合があります。そのため，キャラクタ（文字列）ベースでインタフェーステーブルを作成することをお勧めします。
テンプレート中にあらかじめ，文字列と数値間の両方向への変換をする処理を組み込んでおくと便利です。

3.　プログラム定義

プログラム定義では，テンプレートおよびデータ定義情報を取り込んで，ソースプログラム生成に必要な情報を設定します。また，ユーザ追加処理をプログラム定義ファイルに取り込むことができます。

＜この章の構成＞

3.1　プログラム定義の準備

3.2　プログラムの定義

3.3　ソースプログラムの生成

3.1　プログラム定義の準備

プログラム定義では，作成したテンプレートやデータ定義情報を編集し，ソースプログラムを生成します。ソースプログラム生成に必要な情報のうち，次に示すものは，すでに定義されていなければなりません。

（テンプレートで定義されている情報）

入出力項目の宣言

インタフェースの宣言

指示項目の宣言

プログラムの処理

部品およびユーザ追加処理の挿入位置

業務ルール処理の挿入位置

（データ定義で定義されている情報）

ファイル情報

RDB仕様情報

インタフェース情報

共通作業領域

（マップ定義ファイルで定義されている情報）※

共通情報

オブジェクト情報

　プログラム定義では，これらの情報以外でソースプログラム生成に必要な情報を定義します。プログラム定義で定義するものを次に示します。

（プログラム定義で定義する情報）

使用するテンプレート

作成するプログラムの概要情報

使用するインタフェース項目

入出力項目

指示項目

使用する部品

ユーザ追加処理

使用する業務ルール処理

注※

XMAP3を利用したAPの開発に必要です。

＜この節の構成＞

3.1.1　プログラム定義の起動

3.1.2　使用するテンプレートの選択

3.1.3　プログラム定義を始める前に確認しておくこと

3.1.1　プログラム定義の起動

プログラム定義を起動すると，プログラム定義のメインウィンドウが表示されます。新規に起動する場合は，テンプレート選択ファイルが表示されます。「3.1.2　使用するテンプレートの選択」を参照して，テンプレートを選んでください。テンプレートを選ぶと，テンプレートに関する情報がメインウィンドウの［サイン］タブに反映されます。以降のプログラム定義の作業での目安にしてください。また，既存のプログラム定義を変更する場合， 入出力構成の情報がメインウィンドウに反映されます。メインウィンドウを次に示します。

＜この項の構成＞

(1)　次回作業時や，引き継ぎに役立つ情報

(2)　起動時の注意事項

(1)　次回作業時や，引き継ぎに役立つ情報

［サイン］タブ
［サイン］タブには，選んだテンプレートから作成したプログラムの情報を記述できます。プログラムの名称や，作成者名，およびプログラムの概要を書いておくと，次回に作業するときや，業務を引き継ぐときなどに参考になります。

入出力の欄
入出力の欄には，［入出力］タブでの設定を基にした入出力の構成図が表示されます。

(2)　起動時の注意事項

プログラム定義ファイルがないまたは内容が不正な場合（既存起動時）
既存のプログラム定義ファイルを使用する場合は，プログラム定義ファイルを入力して起動します。
ただし，指定されたプログラム定義ファイルがない場合，またはファイルの内容が不正な場合は，エラーダイアログを表示して，プログラム定義をファイル未入力で起動します。

テンプレートファイルまたはプログラム定義ファイルを入力できなかった場合（新規起動時または既存起動時）
新規起動または既存起動でテンプレートファイルまたはプログラム定義ファイルを入力できなかった場合は，ファイル未入力状態で起動します。この状態で起動した場合は，定義操作に関係のあるメニューおよびボタンは不活性状態になります。

3.1.2　使用するテンプレートの選択

プログラム定義ではまず，プログラムをどのテンプレートから作成するかを決めなければなりません。その後のプログラム定義は，すべてここで選んだテンプレートの情報が基になります。プログラム定義を新規に作成するときは，テンプレートを選ぶための［テンプレートファイル選択］ダイアログが表示されます。

［テンプレートファイル選択］ダイアログを次に示します。

＜この項の構成＞

(1)　効率良いテンプレートの検索

(2)　［パス選択］ダイアログ

(1)　効率良いテンプレートの検索

「環境設定」で設定する
［テンプレートファイル選択］ダイアログに初期表示されるフォルダは，「環境設定」で変更できます。また，「環境設定」でパスを複数指定していると，［パス選択］ダイアログが表示されます。［パス選択］ダイアログについては，「(2) ［パス選択］ダイアログ」を参照してください。

名前やプロパティ情報で判断する
テンプレートの概要は，名前から判断できます。また，テンプレートファイルのプロパティ情報を参照すると，名称，作成者および概要を見ることができます。

(2)　［パス選択］ダイアログ

［パス選択］ダイアログには，「環境設定」で指定したパス，および前回［テンプレートファイル選択］ダイアログで選択したファイルのパスが表示されます。ここでパスを選択すると，［テンプレートファイル選択］ダイアログの「ファイルの場所」に設定されます。

選択したパスがない場合，または［パス選択］ダイアログでパスを選択しなかった場合には，状況に応じて次の優先順位でパスが設定されます。

状況1

「環境設定」でパスが複数指定されていて，［パス選択］ダイアログでパスを選択した場合

優先順位 | パス
1 | ［パス選択］ダイアログで選択した検索パス
2 | 前回，［テンプレートファイル選択］ダイアログで選択したテンプレートファイルのパス
3 | カレントパス

状況2

「環境設定」でパスが複数指定されていて，［パス選択］ダイアログでパスを選択しなかった場合

優先順位 | パス
1 | 前回，［テンプレートファイル選択］ダイアログで選択したテンプレートファイルのパス
2 | 「環境設定」で指定されている最初のパス
3 | カレントパス

状況3

「環境設定」でパスが複数指定されていない場合

優先順位 | パス
1 | 「環境設定」で指定されているパス
2 | カレントパス

3.1.3　プログラム定義を始める前に確認しておくこと

テンプレートを選ぶと，プログラム定義を開始できます。ただし，プログラム定義をする前に次のことを確認しておきます。

＜この項の構成＞

(1)　適切な情報を選んでいること

(1)　適切な情報を選んでいること

生成されるソースプログラムの内容は，使用されるテンプレートやデータ定義などで決まります。そのため，選んだテンプレートファイルや，データ定義ファイルなどが適切かどうかを確認してください。確認するときの目安として，テンプレートやデータ定義などに付けられた名前があります。また，［リソースステータス］ダイアログを表示させると，現在プログラム定義に取り込んでいるテンプレートファイルとデータ定義ファイルなどの名前と最新の更新日時も確認できます。［リソースステータス］ダイアログは，［リソース］－［ステータス］で表示できます。

必要な情報を最新状態にしたい場合
選んだテンプレートファイルやデータ定義ファイルなどが更新・変更されている場合，プログラム定義で取り込んでいる情報を最新にする必要があります。取り込んだ情報を最新状態にする場合は，［リソース］－［再入力］を選んで変更します。

テンプレートを変更したい場合
テンプレートを変更したい場合，［リソース］－［テンプレートの変更］を選んで変更します。テンプレートを変更することで，現在の定義情報が削除される場合は，その旨を知らせるメッセージダイアログが表示されます。

辞書の情報を利用したい場合
辞書に格納されている情報を利用して処理をするかどうかを指定します。［リソース］メニューの［辞書の利用］をチェックすると，辞書を利用します。チェックしないと，辞書を利用しないで，既存の設定情報を利用して処理をします。

効率良くデータ定義ファイルを検索したい場合

「環境設定」で設定する
プログラム定義の［データ定義指示項目設定］ダイアログ中に初期表示されるドキュメントフォルダは，「環境設定」で変更できます。

名前やプロパティ情報で判断する
データ定義の定義内容の概要は，名前から判断できます。また，データ定義ファイルのプロパティ情報を参照すると，ファイル名，作成者および概要を見ることができます。

ユーザ追加処理を編集するエディタを変更したい場合
ユーザ追加処理はメモ帳（notepad.exe）上で編集します。ユーザ追加処理を編集するエディタを変更したい場合は，「環境設定」で変更できます。

3.2　プログラムの定義

＜この節の構成＞

3.2.1　プログラムの概要情報の記述－［サイン］タブ

3.2.2　CORBAの実装プログラムで使用するインタフェース項目の定義－［インタフェース］タブ

3.2.3　APで使用する入出力項目の定義－［入出力］タブ

3.2.4　テンプレート中の指示項目の設定－［パラメタ］タブ

3.2.5　APで使用する部品の定義－［部品］タブ

3.2.6　ユーザ処理の設定－［ユーザ処理］タブ

3.2.1　プログラムの概要情報の記述－［サイン］タブ

［サイン］タブを次に示します。

［サイン］タブには，作成するAPの名前，作成者名および概要を書きます。また，使用されているプログラミング言語が表示されます。

3.2.2　CORBAの実装プログラムで使用するインタフェース項目の定義－［インタフェース］タブ

注意

この説明は，旧バージョンとの互換用です。SEWB+ 基本開発環境セット 04-00以降では使用できません。

［インタフェース］タブでは，実装プログラムで使用するオブジェクトのインタフェース情報（IDLファイル，インタフェース項目，オペレーション項目）を定義します。インタフェース項目やオペレーション項目を定義するときの［インタフェース］タブとダイアログの関係を次の図に示します。

図3-1　［インタフェース］タブとダイアログの関係

＜この項の構成＞

(1)　［インタフェース］タブ

(2)　［インタフェース項目設定］ダイアログ

(3)　［論理設計図ファイル選択］ダイアログ

(4)　［指示項目設定］ダイアログ

(5)　［データ定義指示項目設定］ダイアログ

(1)　［インタフェース］タブ

［インタフェース］タブを次に示します。

［インタフェース］タブには，CORBAのオブジェクトのインタフェースとして定義されたインタフェース項目に対応している可変記号が表示されます。使用するインタフェースを選びます。

(2)　［インタフェース項目設定］ダイアログ

［インタフェース項目設定］ダイアログには，［インタフェース］タブで選ばれたIDLファイル名，インタフェース項目名，およびインタフェース中のオペレーション項目名が表示されます。［インタフェース項目設定］ダイアログを次に示します。

(3)　［論理設計図ファイル選択］ダイアログ

［論理設計図ファイル選択］ダイアログには，論理設計図ファイルの一覧が表示されているので，その中から，実装プログラムで使用するIDLファイル，インタフェース項目，またはオペレーション項目を含む論理設計図ファイルを選びます。

［インタフェース］タブでIDLファイルを選んだ場合
［IDLファイルの選択］ダイアログが表示されます。実装プログラムで使用するIDLファイルを選びます。

［インタフェース］タブでインタフェース項目を選んだ場合
［インタフェース選択］ダイアログが表示されます。実装プログラムで使用するインタフェース項目を選びます。

［インタフェース］タブでオペレーション項目を選んだ場合
［オペレーション選択］ダイアログが表示されます。実装プログラムで使用するオペレーション項目を選びます。

「環境設定」でパスが複数指定されている場合

「環境設定」で論理設計図のパスが複数指定されている場合，［論理設計図ファイル選択］ダイアログの「ファイルの場所」を選択する［パス選択］ダイアログが表示されます。［パス選択］ダイアログには，「環境設定」で指定したパスおよび前回［論理設計図ファイル選択］ダイアログで選択したパスが表示されます。［パス選択］ダイアログについては，「3.1.2(2)　［パス選択］ダイアログ」を参照してください。なお，「テンプレート」は「論理設計図」に置き換えてお読みください。

(4)　［指示項目設定］ダイアログ

［指示項目設定］ダイアログを次に示します。

［論理設計図ファイル選択］ダイアログで選ばれた論理設計図ファイルを修飾する情報（接頭語，接尾語）を設定します。

なお，テンプレートで値が定義されていれば，値の欄にリスト形式で値が表示され，そこから選択できます。

(5)　［データ定義指示項目設定］ダイアログ

指示項目がデータ定義を参照するとテンプレートで宣言されているときは，［データ定義指示項目設定］ダイアログが表示されます。［データ定義指示項目設定］ダイアログを次に示します。

3.2.3　APで使用する入出力項目の定義－［入出力］タブ

［入出力］タブではAPで使用する入出力項目を定義します。入出力項目を定義するときの［入出力］タブとダイアログの関係を次の図に示します。

図3-2　［入出力］タブとダイアログの関係

＜この項の構成＞

(1)　［入出力］タブ

(2)　［入出力項目設定］ダイアログ

(3)　［指示項目設定］ダイアログ

(4)　［データ定義指示項目設定］ダイアログ

(1)　［入出力］タブ

［入出力］タブを次に示します。

［入出力］タブには，APの入出力資源として使用されるデータ定義ファイルまたはXMAP3に対応している可変記号が表示されるので，これらの可変記号に値を設定します。［入出力］タブでは，値を設定したい可変記号を選びます。

(2)　［入出力項目設定］ダイアログ

［入出力項目設定］ダイアログを次に示します。

［入出力項目設定］ダイアログには，［入出力］タブで選ばれた入出力項目と，それに関する情報が表示されます。これらの情報を基に，AP中で使用するデータ定義ファイルを選びます。また，選んだデータ定義ファイルを修飾する情報も指定できます。

［データ定義ファイル選択］ダイアログ
［データ定義ファイル選択］ダイアログには，データ定義ファイルの一覧が表示されているので，その中からAP中で使用するものを選びます。

(3)　［指示項目設定］ダイアログ

［指示項目設定］ダイアログを次に示します。

［データ定義ファイル選択］ダイアログで選ばれたデータ定義ファイルを修飾する情報（外部装置名やアクセス種別など）を，設定します。［指示項目設定］ダイアログには，［入出力］タブで選ばれた指示項目が表示されます。この指示項目に対して，値を設定します。

なお，テンプレートで値が定義されていれば，値の欄にリスト形式で値が表示され，そこから選択できます。

「環境設定」でパスが複数指定されている場合

「環境設定」でデータ定義のパスが複数指定されている場合，［データ定義ファイル選択］ダイアログの「ファイルの場所」を選択する［パス選択］ダイアログが表示されます。［パス選択］ダイアログには，「環境設定」で指定したパスおよび前回［データ定義ファイル選択］ダイアログで選択したパスが表示されます。［パス選択］ダイアログについては，「3.1.2(2)　［パス選択］ダイアログ」を参照してください。なお，「テンプレート」は「データ定義」に置き換えてお読みください。

(4)　［データ定義指示項目設定］ダイアログ

指示項目がデータ定義を参照するとテンプレートで宣言されているときは，［データ定義指示項目設定］ダイアログが表示されます。［データ定義指示項目設定］ダイアログを次に示します。

［データ定義指示項目設定］ダイアログでは，［入出力］タブで選ばれた指示項目が表示されます。指示項目に設定する値は，データ定義ファイルの項目から選びます。ただし，［入出力］タブで定義されていないデータ定義ファイルは選べません。

3.2.4　テンプレート中の指示項目の設定－［パラメタ］タブ

［パラメタ］タブでは，テンプレート中の可変記号にプログラム生成時に使用するときの値を設定します。また，XML文書を使用する場合も，［パラメタ］タブで設定します。値を設定するときの［パラメタ］タブとダイアログの関係を次の図に示します。

図3-3　［パラメタ］タブとダイアログの関係

＜この項の構成＞

(1)　［パラメタ］タブ

(2)　［指示項目設定］ダイアログ

(3)　［データ定義指示項目設定］ダイアログ

(4)　指示項目（拡張指示項目）設定ダイアログ

(1)　［パラメタ］タブ

［パラメタ］タブを次に示します。

［パラメタ］タブには，AP中でデータ項目として使用される可変記号が表示されるので，これらの可変記号に対して値を設定します。［パラメタ］タブでは，値を設定したい可変記号を選びます。

(2)　［指示項目設定］ダイアログ

［指示項目設定］ダイアログを次に示します。

選ばれた指示項目に対する値を設定します。［指示項目設定］ダイアログには，［パラメタ］タブで選ばれた指示項目が表示されます。この指示項目に対して，値を設定します。

なお，テンプレートで値が定義されていれば，値の欄にリスト形式で値が表示され，そこから選択できます。

(3)　［データ定義指示項目設定］ダイアログ

指示項目がデータ定義を参照するとテンプレートで宣言されているときは，［データ定義指示項目設定］ダイアログが表示されます。

［データ定義指示項目設定］ダイアログを次に示します。

［データ定義指示項目設定］ダイアログでは，［パラメタ］タブで選ばれた指示項目が表示されます。指示項目に設定する値は，データ定義ファイルの項目から選びます。ただし，［入出力］タブで定義されていないデータ定義ファイルは選べません。

「環境設定」でパスが複数指定されている場合

「環境設定」でデータ定義のパスが複数指定されている場合，［データ定義ファイル選択］ダイアログの「ファイルの場所」を選択する［パス選択］ダイアログが表示されます。［パス選択］ダイアログには，「環境設定」で指定したパスおよび前回［データ定義ファイル選択］ダイアログで選択したパスが表示されます。［パス選択］ダイアログについては，「3.1.2(2)　［パス選択］ダイアログ」を参照してください。なお，「テンプレート」は「データ定義」に置き換えてお読みください。

(4)　指示項目（拡張指示項目）設定ダイアログ

テンプレートで，ATTRに設定がある場合，または修飾名のATTRに設定がある場合，次に示す［指示項目設定］ダイアログが表示されます。このとき表示される［指示項目設定］ダイアログを，［拡張指示項目設定］ダイアログと呼びます。

@@interface文で属性を設定した場合，［参照］ボタンをクリックすると，属性によって次のダイアログが表示されます。

［データ定義指示項目］ダイアログ
@@interface文でATTR=ITEMを指定している場合に表示されます。ここで，データ定義で定義された項目から対象となる項目を選択し，値を設定します。

［XMLファイル選択］ダイアログ
@@interface文でATTR=XMLを指定している場合に表示されます。ここで，使用するXMLファイルを選択します。

［属性値選択］ダイアログ
@@interface文で，修飾名にATTR=ELEMENTを指定している場合に表示されます。ここで，各指示項目に対する属性値（属性ノード）を選択します。属性値（属性ノード）については，「7.8.2　XML文書の構造」を参照してください。

3.2.5　APで使用する部品の定義－［部品］タブ

［部品］タブでは，APで使用する部品項目を定義します。部品項目を定義するときの［部品］タブとダイアログの関係を次の図に示します。

図3-4　［部品］タブとダイアログの関係

＜この項の構成＞

(1)　［部品］タブ

(2)　［展開部品項目設定］ダイアログ

(3)　［部品ファイル選択］ダイアログ

(4)　［プロシジャ選択］ダイアログ

(5)　［引数設定］ダイアログ

(6)　［引数値設定］ダイアログ

(7)　［可変記号選択］ダイアログ

(1)　［部品］タブ

［部品］タブを次に示します。

［部品］タブには，テンプレートで，APの部品として使用されると宣言された部品項目に対応している可変記号が表示されます。APで使用する部品を選びます。

(2)　［展開部品項目設定］ダイアログ

［展開部品項目設定］ダイアログを次に示します。

［展開部品項目設定］ダイアログには，展開される部品が表示されます。

(3)　［部品ファイル選択］ダイアログ

［部品ファイル選択］ダイアログを次に示します。

［部品ファイル選択］ダイアログには，部品ファイルの一覧が表示されます。この中から，すでに表示されている部品に追加する部品を選んだり，変更したりします。

「環境設定」でパスが複数指定されている場合

「環境設定」で部品のパスが複数指定されている場合，［部品ファイル選択］ダイアログの「ファイルの場所」を選択する［パス選択］ダイアログが表示されます。［パス選択］ダイアログには，「環境設定」で指定したパスおよび前回［部品ファイル選択］ダイアログで選択したパスが表示されます。［パス選択］ダイアログについては，「3.1.2(2)　［パス選択］ダイアログ」を参照してください。なお，「テンプレート」は「部品」に置き換えてお読みください。

(4)　［プロシジャ選択］ダイアログ

［プロシジャ選択］ダイアログを次に示します。

［部品ファイル選択］ダイアログで，プロシジャが記述されている部品を選択すると，［プロシジャ選択］ダイアログが表示されます。［プロシジャ選択］ダイアログでは，APで使用する部品に追加したいプロシジャを選びます。

(5)　［引数設定］ダイアログ

［引数設定］ダイアログを次に示します。

［引数設定］ダイアログには，［展開部品項目設定］ダイアログで選んだ部品のプロシジャの引数一覧が表示されます。引数に値を設定したい場合は，［引数値設定］ダイアログを表示します。

(6)　［引数値設定］ダイアログ

［引数値設定］ダイアログを次に示します。

選択された引数の値を設定します。テンプレートに定義された可変記号の値を参照するときは，［可変記号選択］ダイアログを表示します。

(7)　［可変記号選択］ダイアログ

［可変記号選択］ダイアログを次に示します。

［可変記号選択］ダイアログには，可変記号の一覧が表示されています。プロシジャの引数として使用したい可変記号を選びます。

3.2.6　ユーザ処理の設定－［ユーザ処理］タブ

［ユーザ処理］タブでは，ソースプログラム中で要求されているユーザ追加処理（UOC）の編集およびソースプログラム中で展開させる業務ルール処理の設定をします。また，ソースプログラム上で編集したユーザ追加処理をプログラム定義ファイルに取り込みます。

ユーザがソースプログラム中で要求されている処理をコーディングしたり（ユーザ追加処理の編集），ソースプログラム上で編集したユーザ追加処理をプログラム定義ファイルに取り込んだり（UOCリバース機能），自分でコーディングする代わりに，処理の書かれた業務ルールを設定したりする（業務ルール処理の設定）ときの［ユーザ処理］タブとダイアログの関係を次の図に示します。

図3-5　［ユーザ処理］タブとダイアログの関係

＜この項の構成＞

(1)　［ユーザ処理］タブ

(2)　要求されているユーザ処理を確認する

(3)　ユーザ追加処理の編集と業務ルール処理の設定

(4)　コマンドによるプログラム定義ファイルへの取り込み

(1)　［ユーザ処理］タブ

［ユーザ処理］タブを次に示します。

［ユーザ処理］タブには，ユーザ追加処理群および業務ルール処理群が表示されています。

(2)　要求されているユーザ処理を確認する

［ユーザ処理］タブには，ユーザ追加処理群および業務ルール処理群が表示されています。ソースプログラム中で要求されている処理をユーザがコーディングして展開させる場合は，表示されているユーザ追加処理群から，目的のユーザ追加処理を選んで作業を開始します。ソースプログラム中で要求されている処理について，業務ルールを設定して展開させる場合は，表示されている業務ルール処理群から，目的の業務ルール処理を選んで作業を開始します。

ユーザ処理の表示
ループなどが多い構造化されたテンプレートに含まれるユーザ追加処理や業務ルール処理は，階層化された一覧表で表示した方が理解しやすくなります。階層化された一覧表を表示させるには，テンプレートに@@diagram文を書きます。@@diagram文が書かれていない場合は，階層化されていない一覧表で表示されます。

注

ユーザ追加処理や業務ルール処理の内容，数および挿入位置は，［入出力］タブや［パラメタ］タブの内容で変わります。［入出力］タブまたは［パラメタ］タブを変更した場合は，［編成のリフォーム］ボタンで最新の情報を反映した状態にしておきます。

このとき，［編成のリフォーム］ボタンで反映されなかったユーザ追加処理や業務ルール処理を削除するかどうかを尋ねるダイアログが表示されます。反映されなかったユーザ追加処理や業務ルール処理を削除しない場合は［キャンセル］ボタンをクリックしてください。［編成のリフォーム］ボタンをクリックする前の状態に戻ります。

(3)　ユーザ追加処理の編集と業務ルール処理の設定

［ユーザ処理］タブに表示されているユーザ追加処理や業務ルール処理から必要なものを選び，それぞれ編集したり設定したりします。また，ソースプログラム上で編集したユーザ追加処理をプログラム定義ファイルに取り込みます（UOCリバース機能）。

(a)　ユーザ追加処理の編集

ソースプログラム上で要求されている処理を，ユーザが独自にコーディングし展開させる場合は，ユーザ追加処理を選びます。ユーザ追加処理を選んで［設定］ボタンをクリックすると，ユーザ追加処理を編集するためのエディタが表示されます。エディタ上で処理を編集してください。このとき，固定形式またはホスト向け固定形式でソースプログラムを生成する場合は，COBOLの固定形式またはホスト向け固定形式の規則に従ってユーザ追加処理を編集してください。

［ユーザ追加処理設定］ダイアログ
ユーザ追加処理を編集しているときに，［ユーザ追加処理設定］ダイアログが表示されます。このダイアログでは，ユーザ処理編成で選んだユーザ追加処理またはファイルを，エディタを起動させて表示させたり，編集したユーザ追加処理のソースプログラムをプログラム定義に取り込んだりできます。また，プレビューには，ユーザ処理編成で選んだユーザ追加処理の内容が表示されます。

(b)　ユーザ追加処理のプログラム定義ファイルへの取り込み

ソースファイル上で直接編集したユーザ追加処理を，プログラム定義ファイルのユーザ追加処理の中に取り込む（リバースする）ことができます。これをUOCリバース機能といいます。

UOCリバース機能を使うためには，ユーザ追加処理の開始と終了が判定できるUOCコメントが出力されている必要があります。UOCコメントを出力するには，次の二つの方法があります。

テンプレートファイルに@@lang文で指定する方法
@@lang文でUOCコメントの生成を指定する方法については，「7.9.21　@@lang文」を参照してください。

テンプレートファイルの@@uoc文の前後に直接コメントを書き込む方法
例を示します。

さらに，［SEWB+/CONSTRUCTION環境設定］ダイアログの［ユーザ追加処理］タブで，コメントの開始と終了を示す文字列を設定しておきます。

UOCリバース機能を使う場合，UOCコメントをユーザ追加処理ごとにユニークにすることをお勧めします。なお，ユーザ追加処理の開始／終了文字列が@@lang文とSEWB+/CONSTRUCTION環境設定の両方で指定された場合には，@@lang文で指定された文字列が優先されます。

［リバースファイル選択］ダイアログ
［ユーザ処理］タブの［リバース］ボタンをクリックすると，［リバースファイル選択］ダイアログが表示されます。ユーザ追加処理をリバースするファイルを選択します。デフォルトでは，プログラム定義が記憶している生成関連のローカルファイルがフルパスで表示されます。変更する場合は，［設定］ボタンをクリックして，［リバースファイル設定］ダイアログでファイルを選択します。

［リバースユーザ追加処理ステータス］ダイアログ
［リバースファイル選択］ダイアログでファイルを選んで［OK］ボタンをクリックすると，［リバースユーザ追加処理ステータス］ダイアログが表示されます。このダイアログには，ユーザ追加処理が一覧で表示され，変更されているかどうかなどのステータスが示されます。個々のユーザ追加処理について，プログラム定義ファイルに変更を取り込むかどうかを指定できます。［実行］ボタンをクリックすると，ソースファイルのユーザ追加処理の変更がプログラム定義ファイルのユーザ追加処理に取り込まれます。

(c)　業務ルール処理の設定

ソースプログラム上で要求されている処理を，業務ルールを使用して展開させる場合は，業務ルール処理を選びます。業務ルール処理を選んで［設定］ボタンをクリックすると，実際にソースプログラム上に展開させる業務ルールを選ぶためのダイアログが表示されます。また，選ばれた業務ルールを確認する場合は，業務ルール処理を選んで［参照］ボタンをクリックし，［業務ルール展開表示］ダイアログを表示させます。

［業務ルール展開設定］ダイアログ
ダイアログ中には，AP中で展開される業務ルールと展開されない業務ルールの一覧が表示されます。展開する業務ルールと展開しない業務ルールは［展開する］ボタンおよび［展開しない］ボタンで編集できます。また，展開する業務ルールが複数表示されている場合，上に表示されている業務ルールから先に展開されます。展開順は［上へ移動］ボタンおよび［下へ移動］ボタンで編集できます。なお，それぞれの業務ルールの概要は「説明」に表示されているので参考にしてください。「説明」には，SEWB+/REPOSITORYの業務ルール辞書に書かれたコメントが表示されます。［業務ルール展開設定］ダイアログを次に示します。

なお，業務ルールの詳細，およびスクリプトは，［適用項目詳細］ダイアログまたは［業務ルールスクリプト表示］ダイアログで見られます。

［適用項目詳細］ダイアログ

選んだ業務ルールの適用項目の一覧を表示します。

［業務ルールスクリプト表示］ダイアログ

選んだ業務ルールの処理内容を表示します。

注

［業務ルール展開参照］ダイアログは，［業務ルール展開設定］ダイアログと同じ形態です。ただし，［展開する］ボタン，［展開しない］ボタン，［上へ移動］ボタンおよび［下へ移動］ボタンはクリックできません。

(4)　コマンドによるプログラム定義ファイルへの取り込み

プログラム定義ファイルから生成されたソースファイルのユーザ追加処理をプログラム定義ファイルに反映させる場合，コマンド「CSPDREV.EXE」を実行させます。

コマンドは，次のディレクトリに格納されています。

SEWB+ 基本開発環境の組み込み先パス名¥Construction

SEWB+ 基本開発環境の組み込み先パス名は，デフォルトでは次のように設定されています。システムドライブとは，Windowsが組み込まれているドライブです。

システムドライブ:¥Program Files¥HITACHI¥Sewb

注意

64ビット版のWindowsでの，デフォルトの組み込み先パス名を次に示します。

システムドライブ:¥Program Files (x86)¥HITACHI¥Sewb

形式

CSPDREV.EXE△リバースファイル名
　　　　　　　[△/sp△ソースファイル検索パス名]
　　　　　　　[△/l△ログファイル名]
　　　　　　　[△/help]
　　　　　　　[△/?]

（凡例）

△：1文字以上の空白を示します。

解説

リバースファイル名：

ユーザ追加処理をリバースするプログラム定義ファイルのファイル名を指定します。ファイル名にはワイルドカードが指定できます。

/sp△ソースファイル検索パス名：

ソースファイルを検索するパスの名称を指定します。「検索パス」+「プログラム定義ファイルの生成ソースファイルパスから切り出したファイル名」で，ソースファイルを検索します。

/spの省略時は，プログラム定義ファイル生成ソースファイルパスで検索します。

/l△ログファイル名：

ログ情報の出力先ファイル名を指定します。

/help：

コマンドヘルプメッセージを表示します。

/? ：

コマンドヘルプメッセージを表示します。

3.3　ソースプログラムの生成

プログラム定義が終わったら，ソースプログラムを生成します。ソースプログラムは，プログラム定義のメインウィンドウから生成できます。

＜この節の構成＞

3.3.1　プログラム定義ウィンドウからの生成

3.3.2　コマンドでの生成（ソースプログラム）

3.3.1　プログラム定義ウィンドウからの生成

［生成］ボタンをクリックすると，ソースプログラムの生成を開始します。

@@FILEが有効で生成するファイル名が確定している場合には，［生成先パス設定］ダイアログが表示されます。生成するソースプログラムの出力先パス名を指定してください。生成先のフォルダがない場合，フォルダを作成してファイルを生成します。

@@FILEがない場合，または@@FILEが有効でない場合には，［生成ファイルの保存］ダイアログが表示されます。生成するソースプログラムの出力先のファイル名を指定してください。

3.3.2　コマンドでの生成（ソースプログラム）

ソースプログラムを生成する場合は，コマンド「CSPDGEN.EXE」を実行させます。

コマンドは，次のディレクトリに格納されています。

SEWB+ 基本開発環境の組み込み先パス名¥Construction

SEWB+ 基本開発環境の組み込み先パス名は，デフォルトでは次のように設定されています。システムドライブとは，Windowsが組み込まれているドライブです。

システムドライブ:¥Program Files¥HITACHI¥Sewb

注意

64ビット版のWindowsでの，デフォルトの組み込み先パス名を次に示します。

システムドライブ:¥Program Files (x86)¥HITACHI¥Sewb

形式

CSPDGEN.EXE△/i△入力ファイル名
　　　　　 △[/op△出力先パス名]
　　　　　 △[/o△出力ファイル名]
　　　　　 △[/t△トレースファイル名]
　　　　　 △[/u]
　　　　　 △[/r]
　　　　　 △[/tp△テンプレートファイルパス名]
　　　　　 △[/dp△データ定義ファイルパス名]
　　　　　 △[/pp△部品テンプレートファイルパス名]
　　　　　 △[/mp△XMLファイルパス名]
　　　　　 △[/xp△マップ定義ファイルパス名]
　　　　　 △[/rp△レコード定義ファイルパス名]
　　　　　 △[/d△インデンテーション長]
　　　　　 △[/pi△PICTURE句などの生成位置]
　　　　　 △[/cf△COBOLソース正書法]
　　　　　 △[{/f|/df}]
　　　　　 △[{/re|/dre}]
　　　　　 △[{/ud|/dud}]
　　　　　 △[{/us|/dus}]
　　　　　 △[{/s|/ds}]
　　　　　 △[/si△一連番号初期値]
　　　　　 △[/sa△一連番号増分値]

（凡例）

△：1文字以上の空白を示します。

注

［　］は省略できることを示します。

｛　｝はどちらかを指定することを示します。

解説

/i△入力ファイル名：

プログラム定義ファイル（.cspまたは.csq）のパス名またはファイル名を指定します。

/op△出力先パス名※¹：

生成するソースプログラムの出力先のパス名を指定します（@@FILE文が有効で，生成するファイル名が確定しているとき使用されます）。

/o△出力ファイル名※¹：

生成するソースプログラムの出力先のファイル名を指定します（@@FILE文がないか，または@@FILEが有効でないとき使用されます）。

/t△トレースファイル名：

トレース情報※²の出力先ファイル名を指定します。

/u：

テンプレートファイル，データ定義ファイル，レコード定義ファイルおよび辞書の更新によって，interface文の可変記号，ユーザ追加処理，および業務ルールの設定が削除される場合に，生成を中止します。

/r※³：

プログラム定義ファイルを最新状態にする場合に指定します。

/tp△テンプレートファイルパス名※⁴：

テンプレートファイル（.cst）の検索パス名を指定します。

/dp△データ定義ファイルパス名※⁴：

データ定義ファイル（.csdまたは.cse）の検索パス名を指定します。

/pp△部品テンプレートファイルパス名※⁴：

部品テンプレートファイル（.csr）の検索パス名を指定します。

/mp△XMLファイルパス名※⁴：

XMLファイルの検索パス名を指定します。

/xp△マップ定義ファイルパス名※⁴：

マップ定義ファイルの検索パス名を指定します。

/rp△レコード定義ファイルパス名※⁴：

レコード定義ファイルの検索パス名を指定します。

/d△インデンテーション長※⁴：

インデンテーション長を0～8の範囲で指定します。

/pi△PICTURE句などの生成位置※⁴：

PICTURE句などの生成位置の範囲を指定します。

COBOLソースの形式が固定形式またはホスト向け固定形式の場合は8～60。

COBOLソースの形式がフリー形式の場合は1～60。

/cf△COBOLソース正書法※⁴：

COBOLソースの形式を「fix/free/hostfix」で指定します。「fix」はCOBOLソースを固定形式またはホスト向け固定形式で生成します。「free」はCOBOLソースをフリー形式で生成します。「hostfix」はCOBOLソースをホスト向け固定形式で生成します。

/f※⁴：

プログラミング言語がCOBOLであり，ソースプログラムを自動清書※⁵させない場合に指定します。

/df※⁴：

プログラミング言語がCOBOLであり，ソースプログラムを自動清書※⁵させる場合に指定します。

/re※⁴：

@@rule文によって抽出されたすべての業務ルールを，無条件に展開させて生成させる場合に指定します。

/dre※⁴：

@@rule文によって抽出されたすべての業務ルールのうち，ユーザが選んだ業務ルールだけを展開させて，生成させる場合に指定します。

/ud※⁶：

データ項目辞書および業務ルール辞書を使用する場合に指定します。

/dud※⁶：

データ項目辞書および業務ルール辞書を使用しない場合に指定します。

/us※⁴：

プログラミング言語がCOBOLであり，ユーザ追加処理をそのまま生成※⁷するときに指定します。

/dus※⁴：

プログラミング言語がCOBOLであり，ユーザ追加処理を展開文と同じように扱って生成するときに指定します。

/s※⁴：

固定形式またはホスト向け固定形式のCOBOLソースプログラムに，一連番号を付加するときに指定します。

/ds※⁴：

固定形式またはホスト向け固定形式のCOBOLソースプログラムに，一連番号を付加しないときに指定します。

/si△一連番号初期値※⁴：

固定形式またはホスト向け固定形式のCOBOLソースプログラムに，一連番号を付加するとき，一連番号の初期値を1～999999の範囲で指定します。

/sa△一連番号増分値※⁴：

固定形式またはホスト向け固定形式のCOBOLソースプログラムに，一連番号を付加するとき，一連番号の増分値を1～999999の範囲で指定します。

注※1

出力先は，生成結果により/opまたは/oのどちらかが使用されます。/opの指定がない場合には，カレントパスが出力先パスになります。/oの指定がない場合には，カレントパスが出力先パスになり，プログラム定義ファイル名の拡張子をプログラミング言語の拡張子に置き換えた名称がファイル名になります。

注※2

トレース情報には，関数トレースなどの情報が出力されています。

注※3

ファイルの生成が成功した場合に有効となります。

注※4

何も指定しない場合（「/f，/df」「/re，/dre」「/us，/dus」「/s，/ds」については，どちらも指定しない場合）は，環境設定で定義されている情報が有効になります。

注※5

自動清書とは，ソースプログラムのインデンテーションなどを自動的に整え，見やすい形式で生成する機能です。

注※6

何も指定しない場合は，/dudが指定されていると見なされます。

注※7

COBOL正書法では，B領域を超える部分はコメントとして扱われます。 しかし，展開文に可変記号を使用する場合，生成したソースがB領域を超えないようなテンプレートや部品を作成するのは困難です。このため， SEWB+/CONSTRUCTIONでは，生成ソースがB領域を超える場合，複数行に分割してCOBOLソースを生成しています。

/usは，ユーザ追加処理をほかのテンプレートや部品から生成されるソースだけB領域を超えないよう分割し，ユーザ追加処理は指定されたまま生成する機能です。

戻り値

0：コマンドが正常に終了しました。

-1：コマンドが異常終了しました。または，テンプレート・部品のパラメタや可変記号が解決できません。

4.　コンパイルと単体テスト

SEWB+/CONSTRUCTIONで作成したソースプログラムを，COBOL開発マネージャ上でコンパイルします。また，COBOL2002のテストデバッガを利用して単体テストをします。

＜この章の構成＞

4.1　COBOL開発マネージャでのコンパイル

4.1　COBOL開発マネージャでのコンパイル

SEWB+/CONSTRUCTIONで作成したソースプログラムをコンパイルする場合，COBOL開発マネージャを利用します。なお，ここでは，COBOL2002のCOBOL開発マネージャを利用する場合について説明します。COBOL開発マネージャの詳細は，マニュアル「COBOL2002 操作ガイド」を参照してください。

＜この節の構成＞

4.1.1　COBOL開発マネージャ上でのコンパイルの手順

4.1.2　コンパイル時の注意事項

4.1.1　COBOL開発マネージャ上でのコンパイルの手順

COBOL開発マネージャでは，開発資源をプロジェクトおよびプロジェクトマスタ単位で管理します。また，ビルドおよびリビルド機能を利用する場合も，プロジェクトおよびプロジェクトマスタに登録されている開発資源の関連情報が必要です。

＜この項の構成＞

(1)　プロジェクトとプロジェクトマスタを作成する

(2)　ファイルの関連を登録する

(3)　ビルドまたはリビルドを実行する

(4)　単体テストをする

(5)　SEWB+/REPOSITORYに登録する

(1)　プロジェクトとプロジェクトマスタを作成する

COBOL開発マネージャでソースプログラムをコンパイルする場合は，ファイルなどの開発に必要な資源を一括して管理するためのプロジェクトと，複数のプロジェクトを一括して管理するためのプロジェクトマスタを作成します。

作成方法を，次に説明します。

プロジェクトマスタから新規に作成する場合

COBOL開発マネージャの［プロジェクトマスタ］－［新規作成］を選び，プロジェクトマスタとプロジェクトを作成します。

既存のプロジェクトマスタに追加する場合

COBOL開発マネージャの［プロジェクト］－［プロジェクトの作成］を選び，プロジェクトを作成します。

(2)　ファイルの関連を登録する

AP作成に使用するソースファイルおよびプログラム定義ファイルの関連を，次に説明する方法で登録します。

プロジェクトマスタから新規に作成する場合

COBOL開発マネージャの［プロジェクトマスタ］－［新規作成］を選びます。
次に示すダイアログでは，メインファイル名を指定しないで［完了］ボタンをクリックしてください。

注
Windows XPの場合に表示される画面を使用しています。

COBOL開発マネージャの［プロジェクト］－［ソースファイルの追加］を選び，プログラム定義ファイルを設定してください。プログラム定義ファイルとソースファイルの関連が登録されます。

既存のプロジェクトマスタに追加する場合

COBOL開発マネージャの［プロジェクト］－［ソースファイルの追加］を選び，プログラム定義ファイルを設定することで，プログラム定義ファイルとソースファイルの関連が登録されます。

登録したファイルをビルドすると，それぞれのソースファイルおよびプログラム定義ファイルで使用されたCOPYメンバ，データ定義ファイル，テンプレート，および部品の関連が付けられます。

各ファイルの関連を次の図に示します。

図4-1　各ファイルの関連

(3)　ビルドまたはリビルドを実行する

ビルドまたはリビルドを実行すると，プロジェクトに登録された資源から実行可能ファイル（.exe，.dll）が作成されます。

データ定義やプログラム定義の修正が起こった場合は，ビルドまたはリビルド機能で自動的にソースファイルを再生成させて，実行可能ファイルを作成できます。

(4)　単体テストをする

COBOL開発マネージャ上でテストをするにはCOBOL2002のテストデバッガを使用します。COBOL開発マネージャ上でのテストは単体テストなので，SEWB+/CONSTRUCTIONで作成したサーバ側のAPをテストする場合は，COBOL2002のシミュレーション機能を利用してください。クライアント側のAPをCOBOL2002言語で作成した場合は，クライアント側のAPもテストできます。

OpenTP1を使用しているシステムの場合は，OpenTP1のテスタ機能※を使用して，RPCおよびメッセージ送受信のサーバ側の定義部分をテストできます。

注※

OpenTP1をテストモードで動作させるオンラインテスタ（TP1/Online Tester），およびOpenTP1のAPIをテストするオフラインテスタ（TP1/Offline Tester）があります。

(5)　SEWB+/REPOSITORYに登録する

単体テスト後，プロジェクトマスタファイル，実行ファイルおよびカバレージファイルなど作成されたファイルをSEWB+/REPOSITORYに登録します。

4.1.2　コンパイル時の注意事項

＜この項の構成＞

(1)　プロジェクトマスタファイルをリポジトリに登録する場合

(2)　プリコンパイラを使用している場合（ORACLEを利用している場合など）

(3)　COBOL以外のソースがある場合

(4)　ソースファイルに修正が発生した場合

(5)　SEWB+/REPOSITORYで管理されているデータ定義ファイルを利用して，ビルドまたはリビルドを行う場合

(6)　XMAP3を使用している場合

(7)　辞書を参照してコンパイルする場合

(8)　プログラム定義ファイルを最新状態にする場合

(1)　プロジェクトマスタファイルをリポジトリに登録する場合

コンパイル・テスト後に作成されたファイルをリポジトリに登録する場合は，あらかじめ，COBOL開発マネージャで使用するファイルをドキュメント種別としてリポジトリに登録しておきます。ドキュメント種別の登録の詳細は，マニュアル「SEWB+/REPOSITORY 運用ガイド」を参照してください。

(2)　プリコンパイラを使用している場合（ORACLEを利用している場合など）

最初にプリコンパイラを実行させ，プリコンパイラが生成したソースプログラムをCOBOL開発マネージャに登録します。

(3)　COBOL以外のソースがある場合

TPモニタにOpenTP1を使用している場合，スタブソースが生成されます。スタブソースはC言語で作成されているため，あらかじめC言語のコンパイラでコンパイルしておきます。

このようにCOBOL以外のソースがある場合は，あらかじめ専用のコンパイラでコンパイルし，オブジェクトファイルにしてからCOBOL開発マネージャに登録します。

(4)　ソースファイルに修正が発生した場合

ソースファイルに修正が必要になった場合，ソースファイルの内容は修正しないでください。修正は，必ずソースファイルの生成元であるデータ定義およびプログラム定義に対して行います。データ定義やプログラム定義は，COBOL開発マネージャから起動できます。また，UOCリバース機能を使えば，ソースプログラム上で編集したユーザ追加処理をプログラム定義ファイルに取り込むこともできます。

テンプレートに修正が必要な場合は，テンプレート作成者に依頼してください。

注

ビルドを利用すると，定義情報が変更されたものだけを自動的に再生成します。

(5)　SEWB+/REPOSITORYで管理されているデータ定義ファイルを利用して，ビルドまたはリビルドを行う場合

ビルドまたはリビルドを行う前に，SEWB+/REPOSITORYでリポジトリ接続を起動させておく必要があります。

ただし，SEWB+/REPOSITORY-BROWSERが起動されている場合は，すでにSEWB+/REPOSITORYと接続されているため，特に作業する必要はありません。

(6)　XMAP3を使用している場合

マップ定義ファイルを更新した場合，マップファイルも保存してください。XMAP3ドローのメニューバーの［ファイル］から［上書き保存］または［ドローの終了］を選ぶと，マップファイルも保存されます。

運用の都合などでマップファイルを保存しない場合は，ビルド時にマップファイルが生成されないときがありますので，プロジェクトの編集で論理マップとマップ定義ファイルを関連づけてください。

(7)　辞書を参照してコンパイルする場合

COBOL開発マネージャの［プロジェクト］－［プロジェクトの設定］を選び，［プロジェクトの設定］ダイアログを起動します。［プロジェクトの設定］ダイアログのプロジェクト一覧でプログラム定義ファイルを選択したあと，コンパイラオプションに「/ud」を設定してください。「/ud」については，「3.3.2　コマンドでの生成（ソースプログラム）」を参照してください。

(8)　プログラム定義ファイルを最新状態にする場合

COBOL開発マネージャの［プロジェクト］－［プロジェクトの設定］を選び，［プロジェクトの設定］ダイアログを起動します。［プロジェクトの設定］ダイアログのプロジェクト一覧でプログラム定義ファイルを選択したあと，コンパイラオプションに「/r」を設定してください。「/r」については，「3.3.2　コマンドでの生成（ソースプログラム）」を参照してください。

5.　テンプレートとは

この章では，テンプレートを作成するために，まずは知っておかなければならない基本的な事柄について説明します。

＜この章の構成＞

5.1　テンプレートとは

5.2　SEWB+/CONSTRUCTIONで作成できるC/Sシステムのプログラム

5.3　SEWB+/CONSTRUCTIONでソースプログラムを生成する手順

5.4　テンプレートの作り方

5.1　テンプレートとは

C/Sシステムのサーバプログラムを作り，さらにクライアントプログラムに必要なサーバプログラムとのリンクのインタフェース（テーブル）を作り込むことは，複雑で面倒な仕事でした。その作業を軽減するためのツールがSEWB+/CONSTRUCTIONです。

SEWB+/CONSTRUCTIONはデータ定義という機能とテンプレート※を基にして，プログラム定義という機能を補助的に使うことによって，特にC/Sシステムのプログラムを効率良く作ることを目的にしています。

テンプレートとは，プログラムのひな型のようなものです。例えば，業務プログラムを作成するときに，検索や更新，帳票出力という処理ごとにテンプレートを用意しておけば，それだけ効率良くプログラムを作成できます。また，作成したプログラムは，テンプレートを使わない場合よりも標準化されます。このような考え方をベースに，業務の特徴やC/Sシステムの環境（オンライン処理なのか，リモート処理なのか，バッチ処理なのか，など）も考慮に入れてテンプレートを用意すれば，より効果的です。

さらに，SEWB+/CONSTRUCTIONは，テンプレートでは決定できない（プログラムによって変わる）部分を，ウィンドウに表示させて入力を促す機能を持っています。それがプログラム定義のウィンドウです。データ定義やプログラム定義のウィンドウで必要なデータを入力し，ソースプログラムを生成するのは，プログラム作成者です。

テンプレート作成者は，生成したいソースプログラムの言語（COBOLまたはC）と，テンプレート記述言語を使ってテキストエディタでテンプレートを作成します。COBOLのテンプレートの例（イメージ）を次の図に示します。

注※

バッチシステム向けおよびC/Sシステム向けのテンプレートと部品が用意されています。詳細は「付録C　テンプレートおよび部品の紹介」を参照してください。

図5-1　COBOLのテンプレートの例（イメージ）

＜この節の構成＞

5.1.1　C/SシステムのAP作成に必要なテンプレート

5.1.2　テンプレートと各定義ファイルとの関係

5.1.1　C/SシステムのAP作成に必要なテンプレート

SEWB+/CONSTRUCTIONでC/SシステムのAPを作成するためには，どのような内容のテンプレートが必要になるのかを示します。

＜この項の構成＞

(1)　サーバ側およびクライアント側のAPを作成するためのテンプレート

(1)　サーバ側およびクライアント側のAPを作成するためのテンプレート

サーバ側およびクライアント側のAPで，SEWB+/CONSTRUCTIONで作成することをお勧めしているAPと，それらのAP作成に必要なテンプレート中の記述を次の表に示します。

表5-1　作成するAPと必要なテンプレート記述例

SEWB＋/CONSTRUCTIONで作成することをお勧めするAP | テンプレート中に必要な記述
サーバ側のAP | 処理AP | DBアクセス，ファイルアクセスなどの制御処理※¹，※²
クライアント側からサーバ側にアクセスするためのインタフェーステーブル | メッセージ送受信の場合の制御処理
SPP（サービス提供プログラム）としての処理※²
DBやファイルの利用宣言※²，※³
メッセージなどのインタフェースの利用宣言※²，※³
クライアント側のAP | ODBCインタフェース，またはDBアクセス機能を利用して作成するクライアント側のAP | DBアクセス，ファイルアクセスなどの制御処理※¹
サーバ側にアクセスするAP（クライアント側のサーバアクセス用のAPをユーザが作成する） | サーバアクセスの処理
RPC（RPCの場合）※²
メッセージ送受信の場合は，SEND/RECEIVEの発行
SUP（サービス利用プログラム），CUP（クライアントユーザプログラム）としての処理DBやファイルの利用宣言※²，※³
メッセージなどのインタフェースの利用宣言※²，※³
GUIにXMAP3を利用して作成するクライアントAP | 画面入力データの取得処理

注※1

DBにアクセスする処理を部品として作成しておくと，複数のAP間で共用できます。

注※2

サンプルプログラム中に書かれています。

注※3

テンプレートの宣言部に書きます。

5.1.2　テンプレートと各定義ファイルとの関係

テンプレートの内容が，SEWB+/CONSTRUCTIONのそれぞれの定義に，どのように影響するかを示します。

＜この項の構成＞

(1)　TPモニタを利用するC/SシステムのAPを作成する場合

(2)　テンプレートと定義内容の関係

(1)　TPモニタを利用するC/SシステムのAPを作成する場合

TPモニタを利用するC/SシステムのAPを作成する場合に定義する情報，およびそれぞれの関係について説明します。

(a)　定義する情報

TPモニタを利用するC/SシステムのAPを作成する場合には，次の定義が必要です。

テンプレート作成（テンプレート作成者によってすでに作成されています）

データ定義

マップ定義

プログラム定義

(b)　各定義の関係

テンプレートの内容が，データ定義，マップ定義およびプログラム定義にどのように影響するかを次の図に示します。

図5-2　テンプレートと，データ定義，マップ定義，プログラム定義の関係

(2)　テンプレートと定義内容の関係

(a)　データ定義とテンプレート

データ定義では，APで使用するファイルやDB，およびメッセージなどを定義します。データ定義でレコードを使用する場合は，SEWB+/REPOSITORYで定義された最上位結合項目，またはSEWB+/RECORD DEFINERで定義されたレコード定義ファイルを参照して使用します。

また，TPモニタを利用する場合と利用しない場合とで，APで使用できるデータ定義種別が決まります。詳細は，「2.　データ定義」を参照してください。

データ定義での定義情報は，プログラム定義時にテンプレートからの要求に応じて，プログラム定義の入出力項目の定義またはパラメタの定義をする画面に表示されます。

テンプレートに@@rule文がある場合は，データ定義で定義されたデータ項目と関連のある業務ルールおよび同一項目用業務ルールが，SEWB+/REPOSITORYから抽出されてプログラム定義のユーザ処理を設定する画面に表示されます。業務ルールの詳細および同一項目用業務ルールの詳細は，マニュアル「SEWB+/REPOSITORY 辞書設計ガイド」を参照してください。

(b)　プログラム定義とテンプレート

プログラム定義ではテンプレートとデータ定義の情報を取り込み，プログラム生成に必要な情報を設定します。そのため，プログラム定義では次のような作業が必要になります。

APで使用する入出力項目の定義

テンプレートに書かれている指示項目の定義

AP固有の処理であるユーザ追加処理の編集

ソースプログラム中に展開させる業務ルール処理の設定

オブジェクトで使用するインタフェースの定義

APやオブジェクトで使用する部品の定義

注

プログラム作成者は，用意されたテンプレートの中から目的のAPを作成するために最適なテンプレートを選んで使用します。該当するテンプレートがない場合や，定義項目についての説明が不十分でデータ定義やプログラム定義に支障が生じる場合は，テンプレート作成者に修正を依頼してください。

(c)　ビジネスプロセス定義ファイル（XMLファイル）とテンプレート

WorkCoordinator Definerで作成したビジネスプロセス定義ファイル（XMLファイル）を使用してソースプログラムを生成する場合，テンプレートには，入力パラメタとなるビジネスプロセス定義ファイル（XMLファイル）を取り込むための@@interface文を記述します。プログラム定義では，ビジネスプロセス定義ファイル（XMLファイル）を基に，ソースプログラムに取り込む部分の項目を選択して，ソースプログラムを生成します。

(d)　マップ定義ファイルとテンプレート

XMAP3のドロー機能で作成した画面・帳票のレイアウト定義（マップ定義ファイル）を使用してソースプログラムを生成する場合，テンプレートには，定義情報を取得するための@@interface文を記述します。プログラム定義では，使用するマップ定義ファイルを選び，ソースプログラムを生成します。

5.2　SEWB+/CONSTRUCTIONで作成できるC/Sシステムのプログラム

SEWB+/CONSTRUCTIONで作成できるプログラムの仕様は，生成するソースプログラムの言語（COBOLやC）に依存しています。ここでは，テンプレートを使って作成できる業務処理の代表的な例を紹介します。テンプレートの作り方によって，より複雑な業務処理を作成できます。

＜この節の構成＞

5.2.1　バッチ処理のプログラム

5.2.2　オンライン処理のプログラム

5.2.1　バッチ処理のプログラム

SEWB+/CONSTRUCTIONで作成できるファイルやDB，帳票を使ったバッチ処理の代表的な例を示します。ここでは，帳票はCSV（Comma Separated Values）ファイルに出力することを想定しています。

＜この項の構成＞

(1)　分配

(2)　全件入力抽出

(3)　部分入力抽出

(4)　集計

(5)　更新

(6)　更新と追加

(7)　集計帳票作成

(8)　帳票作成

(9)　分割

(10)　照合

(1)　分配

(2)　全件入力抽出

(3)　部分入力抽出

(4)　集計

(5)　更新

(6)　更新と追加

(7)　集計帳票作成

(8)　帳票作成

(9)　分割

(10)　照合

5.2.2　オンライン処理のプログラム

SEWB+/CONSTRUCTIONで作成できる，画面を使ったオンライン処理の代表的な例を示します。ここでは，クライアントプログラムとサーバプログラムとの通信にTPモニタを使っていることを想定しています。使うTPモニタによって，このほかの処理を作成することもできます。

また，図中で使用している記号は次の意味を持っています。

＜この項の構成＞

(1)　業務振り分け

(2)　問い合わせ

(3)　更新

(4)　更新と帳票出力

(5)　データエントリ

(1)　業務振り分け

(2)　問い合わせ

(3)　更新

(4)　更新と帳票出力

(5)　データエントリ

5.3　SEWB+/CONSTRUCTIONでソースプログラムを生成する手順

＜この節の構成＞

5.3.1　テンプレート作成者とプログラム作成者の作業

5.3.2　テンプレート作成の考え方

5.3.1　テンプレート作成者とプログラム作成者の作業

テンプレート作成者とプログラム作成者の作業は次のように分かれます。

テンプレート作成者は業務内容を理解し，それをどのようなC/Sシステムとして構築するかを検討します。この検討結果を基に，テンプレートを設計し，作成します。作成したテンプレートはリポジトリに登録しておきます。

プログラム作成者は，作りたいプログラムに合うテンプレートをその中から選びます。そのあとは，データ定義，プログラム定義…と図のような手順で作業を進めます。

5.3.2　テンプレート作成の考え方

テンプレートを設計するとき，一つのプログラムに対して一つのテンプレートを作るのではテンプレートを利用するメリットがありません。一つのテンプレートで複数の業務に対応できるように，テンプレートを作ることが重要です。そのために，次の点をポイントにしてテンプレートを作成します。

プログラム構造に影響していない処理で，固定化している処理を抽出し，部品として作成する。

プログラム構造がパターン化していて，ファイル名やデータ項目名が異なっている業務処理を集め，テンプレートと部品を作成する。
同じ処理を複数のプログラムで使用したり，複数個所で使用したりする場合に，その同じ処理をテンプレートや部品として作成します。SEWB+/CONSTRUCTIONでは，部品もテンプレートとして記述します。テンプレートとして記述することによって，ソースプログラムを生成するときにテンプレート中から部品を呼び出し，処理を生成できます。
また，同じ処理でも使うファイルによって項目名だけが異なるとき，そのことをテンプレートや部品の中に定義します。SEWB+/CONSTRUCTIONを使うと，プログラム生成時に使うファイルの項目名を換えて展開できます。

条件によって一部の展開を変えるだけでパターン化できるような業務処理を集めてテンプレートと部品を作成する。

SEWB+/CONSTRUCTIONのテンプレートを使うと，与えられた条件（パラメタ）によって処理を選んで展開できます（生成するプログラムの処理内容そのものを変更できます）。

5.4　テンプレートの作り方

＜この節の構成＞

5.4.1　テンプレートに記述する内容

5.4.2　テンプレートの定義

5.4.1　テンプレートに記述する内容

テンプレートには，次のような記述をします。

図5-3　テンプレートに記述する内容

図5-3のAはテンプレート定義部です。まずテンプレートの概要を定義し（B），続いてデータ定義，プログラム定義とのインタフェースを定義します（C）。Cで定義した内容が，プログラム定義のウィンドウで入力を促す項目として表示されます。また，ここで記述したコメントもウィンドウ上に表示されます。テンプレート定義部で定義した処理は，直接ソースプログラムには生成されません。

A（B，C）の記述のあとに，そのままソースプログラムとして展開（生成）する処理を記述します（D）。生成したい言語を使い，その言語の記述規則に従って記述します。

5.4.2　テンプレートの定義

テンプレートとデータ定義，プログラム定義の関係について，例に沿って説明します（図5-4参照）。

図5-4　テンプレートとデータ定義，プログラム定義との関係

＜この項の構成＞

(1)　テンプレート概要定義部

(2)　インタフェース定義部

(3)　展開処理記述部

(1)　テンプレート概要定義部

1～4行目はテンプレート概要定義部です。ここにはテンプレートの概要を記述します。

＃NAME，#OWNER，#OUTLINEはテンプレートの予約語です。ここに記述した内容は，テンプレートファイルのプロパティ情報として表示され，プログラム作成者はテンプレートを開かなくてもテンプレートの内容を知ることができます。

ここで特に重要なのは，#OUTLINEに記述する内容です。プログラム作成者に，テンプレートの目的，指定する内容，注意事項などを明確に伝える必要があります。テンプレート作成者が#OUTLINEに記述した内容は，テンプレートのプロパティ情報としてそのまま表示されます（図5-4のA）。プログラム作成者がテンプレートを選ぶ際に，疑問を持たないような，詳細な内容，わかりやすい表現を心掛けてください。

(2)　インタフェース定義部

6～18行目は，データ定義，プログラム定義とのインタフェース定義部です。

6行目に@@interface @入力ファイルという記述があります。

@@interface @XXXXXX（この例の場合は「入力ファイル」）をテンプレートに記述することによって，プログラム定義ウィンドウにXXXXXX（この場合は「入力ファイル」）に対する指定を促す表示が出ます（図5-4のB）。そのため，ここをインタフェース定義部と呼びます。

@@で始まる文は制御文であり，@で始まる文は制御用の変数です。この変数は，プログラム作成者が値を設定できる可変記号です。

7～18行目は，テンプレート作成者が，プログラム作成者に対してデータ定義とプログラム定義で定義してほしい，可変記号についての情報（属性など）を定義します。ここで定義した内容は，プログラム定義のウィンドウに入力を促す項目として表示されます（図5-4のC）。

8行目のATTR=FILEのATTRは可変記号の種別を定義するATTRであり，この例では可変記号「@入力ファイル」の種別がファイルであることを表しています。このほかにも，データ定義で定義できる，DB，DAM，TAM，RPC_INPARM（RPC入力パラメタ），RPC_REPLY（RPC応答領域），MSG（メッセージ），UJ（ユーザジャーナル），MSGLOG（メッセージログ），WORK（共通作業領域）を記述できます。プログラム作成者は，プログラムのC/Sシステム形態（バッチ処理かオンライン処理か）や環境（使用するDBやデータ通信機能など）によって，データ定義で作成したファイル（図5-4のD）をプログラム定義で指定します。

また，11～13行目のATTR=FILE_NAMEなどで使われているATTRはプログラム作成者がデータ定義で指定した内容をプログラムに取り込むための予約語のATTRです（図5-4のE）。

14～17行目の修飾名（レコードキー，外部装置名，…）は，プログラム定義の［入出力項目設定］ダイアログで入力を促す項目として表示されます（図5-4のC）。このとき，修飾名に記述したCOMMENT=の内容が，ウィンドウの説明欄に表示されます。例えば，アクセスモードが選択状態になっていれば，説明欄にはアクセスモードに記述したCOMMENT=の内容が表示されるという具合に，表示内容が切り替わります。

(3)　展開処理記述部

19行目からは，ソースプログラムとして生成する処理を記述する展開処理記述部です。

19～21行目の@@＊は注釈です。

23行目の@@interface @PROG_IDはプログラム定義の［パラメタ］タブに，入力を促す項目として表示されます（図5-4のF）。

@@interfaceのATTRにデータ定義種別（ファイルやDB，DAM，TAMなど）の指定がある場合は，［入出力設定］タブに表示され，それ以外は［パラメタ］タブに表示されます。

さらに，図5-5でテンプレートの続きを説明します。

図5-5　テンプレートとプログラム定義（追加処理）の関係

47行目の@@UOC　"WORK-UOC"はユーザ追加処理に対する指定をプログラム定義のウィンドウで促すための制御文です。テンプレートに@@UOC　"UOC名 "を記述することによって，プログラム定義の［ユーザ処理］タブで，指定したユーザ追加処理を表示できます。なお，ユーザ追加処理の開始と終了コメントを設定する場合には，ソースファイル上で編集したユーザ追加処理をプログラム定義ファイルのユーザ追加処理の中に取り込む（UOCリバース）ときに，ユーザ追加処理の開始と終了を判定するためのUOCコメントを設定します。UOCコメントを出力するには次の二つの方法があります。

@@lang文でユーザ追加処理（@@UOC）の前後にUOCコメントを生成する指定をする。

@@uoc文の前後に直接UOCコメントを記述する。

また，85～86行目の@@rule "ルール1" WITH USAGE{{USAGE=IN REF=@入力ファイル}};は，SEWB+/REPOSITORYの業務ルール辞書に定義されている業務ルールを利用するための制御文です。業務ルールとは，データ項目に着目して，データ項目特有の処理を部品化したものです。業務ルールは，SEWB+/REPOSITORYの業務ルール辞書に格納されています。テンプレートに@@rule文"業務ルール展開名"を記述すると，プログラム定義の［ユーザ処理］タブに，使用できる業務ルール処理を表示できます。

次に，図5-6で再度テンプレートの続きを説明します。

図5-6　テンプレート（キー項目の指定）とプログラム定義の関係

121行目の@@interface @ブレークキーにATTR=ITEMの予約語を指定すると，REF= に指定した可変記号のレコード定義の内容がプログラム定義の［データ定義指示項目設定］ダイアログに表示されます。この例の場合，@入力ファイルに指定されたSHOUHINのレコードの内容が表示されます。プログラム作成者はブレークキーとして使用する項目をこの中から選びます。

このように，ブレークキーやマッチングキーなど，ファイルやDBの中から項目を選ばせたいときには，テンプレート中に前述のような指定をします。なお，REF= に指定する可変記号は，この指定より前に，データ定義種別が定義してあることが条件になります（定義していないと，レコードを表示できません）。この例では6～8行目（図5-4）に@入力ファイルが定義してあります。

このほかにも，展開処理記述部には部品を呼び出したり，部品中に記述された処理を任意の位置に埋め込んだり，といった指定ができます。部品の利用方法については，「6.1.2　マスタ更新・追加出力の例題」を参照してください。

6.　テンプレートを使った例題

一般的なバッチ処理とオンライン処理のプログラムを題材に，テンプレートの作り方を説明します。生成したソースプログラムの例も掲載していますが，対応しての見やすさを優先しているため，実際に生成されるものとは改行位置やインデンテーションなどに少し違いがあります。正確な生成ソースプログラムは，サンプルプログラム中の「Manual Sample」を参照してください。

＜この章の構成＞

6.1　バッチ処理の例題

6.2　オンライン処理の例題

6.1　バッチ処理の例題

「6.1.1　ファイル編集・帳票出力の例題」では基本的な作りのテンプレートの例題を，「6.1.2　マスタ更新・追加出力の例題」では工夫した作りの例題を紹介します。

＜この節の構成＞

6.1.1　ファイル編集・帳票出力の例題

6.1.2　マスタ更新・追加出力の例題

6.1.1　ファイル編集・帳票出力の例題

ここで紹介する例題は，テンプレートに可変記号を記述することでデータ定義やプログラム定義での入力を促すようにできる，SEWB+/CONSTRUCTIONの基本的な機能だけを使ったテンプレートの例題です。部品なども使わないで，生成したい処理をそのままテンプレートに記述して作ります。

＜この項の構成＞

(1)　例題テンプレートで作成できるプログラム

(2)　例題テンプレートの入出力構成

(3)　ファイル・DBのレコード形式

(4)　例題テンプレートの処理概要

(5)　例題テンプレートの記述のポイント

(6)　例題テンプレートと生成されたソースプログラム

(1)　例題テンプレートで作成できるプログラム

入力されたファイルのデータを，SQLを使ってRDBに出力し，さらに，CSVファイルの形式に変換して出力するプログラムが作成できます。CSVファイルの形式に変換してあれば，EURなどの帳票出力ツールを使って印刷できます。

(2)　例題テンプレートの入出力構成

(3)　ファイル・DBのレコード形式

例題で使用するファイル・DBのレコード形式を次に示します。

入力ファイル（受注ファイル），および出力DB（受注DB）

参照ファイル1（得意先ファイル）

参照ファイル2（商品ファイル）

CSVファイル（帳票CSV）

(4)　例題テンプレートの処理概要

(5)　例題テンプレートの記述のポイント

@@interface文を使って，入力ファイル，参照ファイル，出力DB，CSVファイルを使うことを宣言する。

プログラム作成者が，プログラム定義で入力ファイル，出力DB，CSVファイルの指定をしなかった場合に，エラーメッセージを出力し，ソースプログラムの生成を中止する処理を記述する（@@msg文や@@errorexit文を使用）。

参照ファイルの個数をプログラム作成者に指定させるため，その指定された個数を取得する処理を記述する（@@count関数を使用）。

@@expand文を使って，プログラム作成者がデータ定義で定義したレコードを展開する処理を記述する。

プログラム作成者がプログラム定義の［入出力］タブで指定した項目（修飾名。この例では外部装置名）と同じ領域を持った項目を定義する（@@pic関数を使用）。

プログラム作成者がデータ定義で定義した出力DBのレコードの項目を，埋め込み変数として使用するために，個々の項目に分割する（@@itemlist関数を使用）。

(6)　例題テンプレートと生成されたソースプログラム

以降，例題テンプレートとソースプログラム生成結果を順に示します。対応させて参照してください。

テンプレート（ファイル編集・帳票出力）1／10

テンプレート（ファイル編集・帳票出力）2／10

テンプレート（ファイル編集・帳票出力）3／10

ソースプログラム（ファイル編集・帳票出力）1／8

テンプレート（ファイル編集・帳票出力）4／10

ソースプログラム（ファイル編集・帳票出力）2／8

テンプレート（ファイル編集・帳票出力）5／10

ソースプログラム（ファイル編集・帳票出力）3／8

テンプレート（ファイル編集・帳票出力）6／10

ソースプログラム（ファイル編集・帳票出力）4／8

テンプレート（ファイル編集・帳票出力）7／10

ソースプログラム（ファイル編集・帳票出力）5／8

テンプレート（ファイル編集・帳票出力）8／10

ソースプログラム（ファイル編集・帳票出力）6／8

テンプレート（ファイル編集・帳票出力）9／10

ソースプログラム（ファイル編集・帳票出力）7／8

テンプレート（ファイル編集・帳票出力）10／10

ソースプログラム（ファイル編集・帳票出力）8／8

6.1.2　マスタ更新・追加出力の例題

ここで紹介する例題は，RDBにアクセスする処理を部品化し，テンプレートから呼び出して使えるようにしたものです。RDBを部品化することによって，使うRDBの差異に，呼び出す部品を変えることで対応できるため，一つのテンプレートを，より多くのプログラム作成に使うことができます。また，一部の処理を部品化することによって，その分，テンプレートでの記述が少なくて済み，見やすくなります。

＜この項の構成＞

(1)　例題テンプレートで作成できるプログラム

(2)　例題テンプレートの入出力構成

(3)　ファイル・DBのレコード形式

(4)　例題テンプレートの処理概要

(5)　部品の展開

(6)　例題テンプレートの記述のポイント

(7)　例題テンプレートと生成されたソースプログラム

(1)　例題テンプレートで作成できるプログラム

ジャーナルファイル（SAMファイル）のデータを基に，キーが存在すればDBを更新し，存在しない場合は新規に追加します。さらに，新規に追加したものだけをモニタファイル（SAMファイル）に出力します。

(2)　例題テンプレートの入出力構成

(3)　ファイル・DBのレコード形式

例題で使用するファイル・DBのレコード形式を次に示します。

入力ファイル（商品ジャーナルファイル）

更新ファイル（商品マスタDB）

モニタファイル（商品モニタファイル）

(4)　例題テンプレートの処理概要

(5)　部品の展開

例題を理解するために，部品を呼び出して展開する方法と，部品中に記述された処理をテンプレート中の任意の位置に埋め込む方法の2種類の部品の使い方を説明します。

(a)　部品の呼び出し

一つの部品にはプロシジャを複数指定できます。@@procプロシジャ名を記述して，プロシジャ宣言します。部品は，テンプレート中から@@＜ファイル名＞プロシジャ名で呼び出します。

使用例

ソースプログラムを生成する前に部品の検索パスを「環境設定」ウィンドウで指定する必要がある。

テンプレートTEMP1からは別ファイルの部品PART1.csrの@@proc Aが呼び出せる。

部品PART1の@@proc Aは自分のファイルの@@proc Bが呼び出せる。＜＞内に何も記述しない場合，自分のファイル名が仮定される。

部品PART1からは別ファイルの部品PART2.csrの@@proc Aが呼び出せる（ネストして呼び出すこともできる）。

部品PART1の中からもう一度自分自身（部品PART1）を呼び出せる（リカーシブルに呼び出しができる）。

(b)　部品の処理の埋め込み

@@merge文と@@put文を使って，部品中に記述された処理をテンプレート中の任意の位置に埋め込むことができます。この機能を使えば，例えば部品中でCOBOLの手続きを展開しながら，処理に必要なデータ定義をWORKING-STORAGE SECTIONやLINKAGE SECTIONの任意の位置に展開できます。

部品には@@put 可変記号名　＜＜を指定し，続けて埋め込みテキストを記述します。テンプレートには，テキストを埋め込みたい個所を指示する@@merge（可変記号名）を記述します。

使用例

テンプレートから呼ばれた部品中の処理は，呼ばれた位置に展開される。この例は，「(a) 部品の呼び出し」の例と同じである。

@@merge文で@M_PROC_Lの埋め込みを指定しているので，部品から@@put文で同じ可変記号名を指定してある処理がテンプレートの@@merge文の位置に展開される。

テンプレートから@@merge文で埋め込み指示された可変記号名と同じ名称の処理が，@@put文で複数実行された場合は，検索された順にテンプレートの@@merge文の位置に展開される。

(6)　例題テンプレートの記述のポイント

RDBアクセスの部品を使うことによって，見やすいテンプレートにできる。さらに，部品を変えることによってDBの差異を反映したソースプログラムを生成できる。

@@put文，@@merge文を使って，部品の各セクションを呼び出し，展開する。

モニタファイルへの出力指示の有無を判断し，展開を制御する（@@if文を使用）。

(7)　例題テンプレートと生成されたソースプログラム

以降，例題テンプレートとソースプログラム生成結果を順に示します。対応させて参照してください。

テンプレート（マスタ更新・追加出力）1／9

テンプレート（マスタ更新・追加出力）2／9

ソースプログラム（マスタ更新・追加出力）1／8

テンプレート（マスタ更新・追加出力）3／9

ソースプログラム（マスタ更新・追加出力）2／8

テンプレート（マスタ更新・追加出力）4／9

ソースプログラム（マスタ更新・追加出力）3／8

テンプレート（マスタ更新・追加出力）5／9

ソースプログラム（マスタ更新・追加出力）4／8

テンプレート（マスタ更新・追加出力）6／9

ソースプログラム（マスタ更新・追加出力）5／8

テンプレート（マスタ更新・追加出力）7／9

ソースプログラム（マスタ更新・追加出力）6／8

テンプレート（マスタ更新・追加出力）8／9

ソースプログラム（マスタ更新・追加出力）7／8

テンプレート（マスタ更新・追加出力）9／9

ソースプログラム（マスタ更新・追加出力）8／8

DBアクセス部品（RDBPARTS）テンプレート（マスタ更新・追加出力）1／5

DBアクセス部品（RDBPARTS）テンプレート（マスタ更新・追加出力）2／5

DBアクセス部品（RDBPARTS）テンプレート（マスタ更新・追加出力）3／5

DBアクセス部品（RDBPARTS）テンプレート（マスタ更新・追加出力）4／5

DBアクセス部品（RDBPARTS）テンプレート（マスタ更新・追加出力）5／5

6.2　オンライン処理の例題

「6.2.1　データエントリの例題」では基本的な作りのテンプレートの例題を，「6.2.2　伝票入力・訂正の例題」では少し工夫した作りの例題を紹介します。

＜この節の構成＞

6.2.1　データエントリの例題

6.2.2　伝票入力・訂正の例題

6.2.1　データエントリの例題

ここで紹介する例題は，OpenTP1を使ったC/Sシステムの標準的なプログラム構成であるSPPとSUP（Service Using Program），そしてDB登録プログラム（SVR01）を作るためのものです。使っているSEWB+/CONSTRUCTIONの機能は「6.1.1　ファイル編集・帳票出力の例題」と同様，基本的なものだけです。

＜この項の構成＞

(1)　例題テンプレートで作成できるプログラム

(2)　例題テンプレートの入出力構成

(3)　DB，RPCインタフェースレコードの形式

(4)　例題テンプレートの処理概要

(5)　例題テンプレートの記述のポイント

(6)　例題テンプレートと生成されたソースプログラム

(1)　例題テンプレートで作成できるプログラム

クライアントのプログラム（SUP）からRPCを発行し，サーバ側のプログラム（SPP）にデータを渡します。SPPは渡されたデータを，DB登録プログラムSVR01を使ってDBに登録します。SPP01，SUP01，SVR01のそれぞれに対して，テンプレートを作成します。

なお，この例題では，画面にXMAP3を使用しています。

(2)　例題テンプレートの入出力構成

(3)　DB，RPCインタフェースレコードの形式

例題で使用するDB，RPCインタフェースレコードの形式を次に示します。

顧客DB

RPCインタフェースレコード（SEND用入力パラメタ）

RPCインタフェースレコード（RECEIVE用応答領域）

(4)　例題テンプレートの処理概要

サーバプログラムが行う処理は，フロー中で明記しています。それ以外はクライアントプログラムが行う処理です。

(5)　例題テンプレートの記述のポイント

RPC発行プログラム用のテンプレートに，SPPへサービスを要求するときに必要な入力パラメタと応答領域（出力パラメタ）を，@@expand文を使って展開する。

RPC発行プログラム用のテンプレートに，@@reclen関数を使ってRPCのメッセージ長を記述する。

DB登録プログラム用のテンプレートに，@@expand文のprefixを使ってDBのワーク領域を記述する。

DB登録プログラム用のテンプレートに，RPCのメッセージ項目と同一のワーク項目を作成し，MOVE文を自動生成する処理を記述する。このように，データ項目が同じものに着目し，それを生かすことによって，テンプレートにも項目の加工処理を記述できる。

(6)　例題テンプレートと生成されたソースプログラム

以降，例題テンプレートとソースプログラム生成結果を順に示します。対応させて参照してください。

テンプレート（データエントリ，SPP）1／2

ソースプログラム（データエントリ，SPP）1／2

テンプレート（データエントリ，SPP）2／2

ソースプログラム（データエントリ，SPP）2／2

テンプレート（データエントリ，SUP）1／7

テンプレート（データエントリ，SUP）2／7

テンプレート（データエントリ，SUP）3／7

ソースプログラム（データエントリ，SUP）1／5

テンプレート（データエントリ，SUP）4／7

ソースプログラム（データエントリ，SUP）2／5

テンプレート（データエントリ，SUP）5／7

ソースプログラム（データエントリ，SUP）3／5

テンプレート（データエントリ，SUP）6／7

ソースプログラム（データエントリ，SUP）4／5

テンプレート（データエントリ，SUP）7／7

ソースプログラム（データエントリ，SUP）5／5

テンプレート（データエントリ，SVR01）1／4

ソースプログラム（データエントリ，SVR01）1／4

テンプレート（データエントリ，SVR01）2／4

ソースプログラム（データエントリ，SVR01）2／4

テンプレート（データエントリ，SVR01）3／4

ソースプログラム（データエントリ，SVR01）3／4

テンプレート（データエントリ， SVR01 ）4／4

ソースプログラム（データエントリ， SVR01）4／4

6.2.2　伝票入力・訂正の例題

ここで紹介する例題は，OpenTP1のTAM機能やDBの処理などを部品化することによって，テンプレートでの記述を少なくしたものです。これによってC/Sシステムのプログラムを，部品の変数を指定するだけで容易に作成できます。

＜この項の構成＞

(1)　例題テンプレートで作成できるプログラム

(2)　例題テンプレートの入出力構成

(3)　ファイルレコードの形式

(4)　例題テンプレートの処理概要

(5)　例題テンプレートの記述のポイント

(6)　例題テンプレートと生成されたソースプログラム

(1)　例題テンプレートで作成できるプログラム

クライアントプログラム（SUP）からのデータを基に，伝票の処理区分が登録であれば伝票採番テーブル（TAMレコード）から新しい伝票番号を取ってきます。その伝票番号に1を足して伝票番号ファイルを書き換え，クライアントプログラムに伝票番号を付けたデータを送ります。

伝票の処理区分が更新であれば，伝票DBの中から指定された伝票のデータを取ってきて更新し，更新後のデータをクライアントプログラムに送ります。

TAMは複数のプログラムで共通に，しかも高速にアクセスできるレコードとして使用できます。なお，TPモニタとしてOpenTP1を使い，TAMやDAMを使用する場合は，サーバはTP1/Server Baseを使用する必要があります。

(2)　例題テンプレートの入出力構成

(3)　ファイルレコードの形式

例題で使用するファイルレコードの形式を次に示します。

伝票採番テーブル（Y1）：伝票番号ファイル（TAM）

伝票DB（U1）：伝票ファイル

モニタファイル（M1）：モニタファイル

受信メッセージ

発信メッセージ

(4)　例題テンプレートの処理概要

サーバプログラムが行う処理は，フロー中で明記しています。それ以外はクライアントプログラムが行う処理です。

(5)　例題テンプレートの記述のポイント

TAMレコードにアクセスする処理を部品にする。

伝票の登録処理を生成するか，または伝票の更新処理を生成するかを，プログラム作成者がプログラム定義ウィンドウで入力するパラメタで制御する（@@if文を使用）。

ファイルやDBのアクセス処理，TAMアクセス処理の部品中のエラー処理をユーザ追加処理にする。エラー処理のプログラム固有の処理をプログラム作成者に記述させる（@@uoc文を使用）。

モニタファイルへの出力指示の有無を判断し，展開を制御する（@@if文を使用）。

@syscountを使用し，部品の呼び出しが1回目のときだけTAMのパラメタを展開する。

(6)　例題テンプレートと生成されたソースプログラム

クライアント，およびサーバのメインプログラムのテンプレートとソースプログラムは「6.2.1　データエントリの例題」を参考にしてください。ここでは，サーバ側のプログラム（売上入力）のテンプレートとソースプログラムを掲載します。なお，DBアクセス部品は「6.1.2　マスタ更新・追加出力の例題」で使用しているRDBPARTSと類似しているため，ここでは省略しています。

テンプレート（伝票入力・訂正）1／10

テンプレート（伝票入力・訂正）2／10

テンプレート（伝票入力・訂正）3／10

ソースプログラム（伝票入力・訂正）1／8

テンプレート（伝票入力・訂正）4／10

ソースプログラム（伝票入力・訂正）2／8

テンプレート（伝票入力・訂正）5／10

ソースプログラム（伝票入力・訂正）3／8

テンプレート（伝票入力・訂正）6／10

ソースプログラム（伝票入力・訂正）4／8

テンプレート（伝票入力・訂正）7／10

ソースプログラム（伝票入力・訂正）5／8

テンプレート（伝票入力・訂正）8／10

ソースプログラム（伝票入力・訂正）6／8

テンプレート（伝票入力・訂正）9／10

ソースプログラム（伝票入力・訂正）7／8

テンプレート（伝票入力・訂正）10／10

ソースプログラム（伝票入力・訂正）8／8

部品（伝票入力・訂正）1／3

部品（伝票入力・訂正）2／3

部品（伝票入力・訂正）3／3

7.　テンプレート記述言語

テンプレートを作成するとき，そのままソースプログラムとして生成したい内容は，生成したい言語を使い，その文法規則に従って記述します。これに対して，生成を制御する文や，データ定義，プログラム定義で定義される情報を設定する変数は，SEWB+/CONSTRUCTIONで用意されているテンプレート記述言語を使います。この章では，テンプレート記述言語の文法規則について説明します。

＜この章の構成＞

7.1　テンプレート記述言語の概要

7.2　演算子

7.3　式

7.4　注釈

7.5　テンプレート定義部の宣言

7.6　部品定義と部品の呼び出し

7.7　業務ルールの利用

7.8　XML文書の利用

7.9　文と関数

7.1　テンプレート記述言語の概要

＜この節の構成＞

7.1.1　使用できる文字セット

7.1.2　トークン

7.1.3　定数

7.1.4　可変記号

7.1.5　配列の記述規則

7.1.6　部分参照の記述規則

7.1.7　予約語

7.1.8　展開文字列

7.1.9　分離記号

7.1.1　使用できる文字セット

テンプレート記述言語で使用できる文字セットは次のとおりです。

英字
英大文字：A～Z
英小文字：a～z
アンダースコア：_

数字：0～9

特殊文字：＋－＊／（　）＝，'　"！＆｛　｝［　］　空白　｜（論理演算子）

漢字：2バイトの漢字コード

仮名：1バイトの仮名文字

空白とは，ブランク，水平のタブ，垂直のタブ，改行，および改ページのことです。

予約語に関しては大文字，小文字のどちらで記述しても予約語として解釈されますが，混在して指定することはできません。

展開文中で使用できる文字列は，展開する言語（COBOLやCなど）の仕様に従います。

7.1.2　トークン

トークンとは分離記号で分離したあとの字句の列のことです。テンプレートはSEWB+/CONSTRUCTIONによって字句が解析されたあと，次のトークンと文に分離されます。

トークン

識別子（可変記号名，プロシジャ名，配列の添字）

分離記号

演算子

展開文字列

キーワード

文

展開制御文：可変記号に対して演算や比較設定を行う文（@@set，@@ifなど）

展開文：ソースプログラムに展開される文（MOVE，includeなど）

7.1.3　定数

定数には数値定数と文字定数があります。

＜この項の構成＞

(1)　定数として解釈される場所

(2)　数値定数（numeric literal）

(3)　文字定数（string literal）

(1)　定数として解釈される場所

定数は展開制御文中（@@set文の代入値や，@@if文の条件式中など）に記述した場合だけ定数として解釈されます。展開文中に記述しても，単なる展開文字列としか解釈されません。

（例）

@@if (@START_MSG == "Yes")
 DISPLAY '**** PROGRAM STARTED  *****'
@@end;

このとき，条件中の「Yes」は展開制御文中に記述されているため，文字定数として解釈されます。しかし，DISPLAY文の'＊＊＊＊ PROGRAM STARTED ＊＊＊＊＊'は展開文中に記述されているため，文字定数ではなく，展開文の一部と見なされます。

(2)　数値定数（numeric literal）

数値定数は次の規則に従って数値を表現したものです。

整定数で記述する（小数は記述できない）。

数字の列で9けたまで指定できる。

（例）

123456       …10進数

(3)　文字定数（string literal）

文字定数は，文字の並びをアポストロフィ（'）かダブルクォーテーション（"）で囲んだものです。ただし，文字定数を囲む1組を，アポストロフィとダブルクォーテーションを混在して記述することはできません。

文字定数に可変記号を記述する場合は次の注意が必要です。

可変記号の内容を，文字定数として展開する場合にはダブルクォーテーションで囲む。可変記号を単なる文字列とする場合はアポストロフィで囲む。

（例）

@@set  @MSG = "****** START!! *****";
@@set  @START1 = "@MSG";     …ダブルクォーテーション
                              で囲まれているため@MSG
                              の内容"***** START!!
                              *****"が設定される。
@@set  @START2 = '@MSG';     …アポストロフィで囲まれ
                              ているため@MSGがそのま
                              ま設定される。

したがって，そのあとの展開文での指定によって，展開される内容は次のようになります。

DISPLAY '@START1'ならDISPLAY '＊＊＊＊＊ START!! ＊＊＊＊＊'が展開される。

DISPLAY '@START2'なら'@MSG'が展開される。

文字定数を，行をわたって記述する場合は，各行を文字定数として記述します。

（例）

@COMMENT = "入力ファイル1個,"
          "出力ファイル2個,"
          "DB1はHiRDBです。"

この指定は次のように1行で記述したのと同じです。

@COMMENT = "入力ファイル1個，出力ファイル2個，DB1はHiRDBです。"

文字定数内で改行や復帰などの出力できない文字や，アポストロフィやダブルクォーテーションなどの特別な意味を持つ文字を表すときは，￥記号とそれに続く文字の組み合わせを記述することによって表現できます。

表現したい内容 | 記述する文字
展開制御開始文字 | ¥@
改行 | ¥n
復帰 | ¥r
タブ | ¥t
円記号 | ¥¥
アポストロフィ | ¥'
ダブルクォーテーション | ¥"

7.1.4　可変記号

プログラム定義やデータ定義で定義された情報は@@interface文を使って可変記号と呼ばれる変数に設定されます。また，生成する処理中で@@set文を使って直接，可変記号に値を設定することもできます。

＜この項の構成＞

(1)　可変記号名の記述規則

(2)　@@set文による値の設定

(3)　可変記号のグローバル宣言

(4)　システム可変記号

(5)　可変記号を設定する文の組み合わせ

(1)　可変記号名の記述規則

可変記号名は次の規則に従って記述します。

先頭は展開制御開始文字@で始める。

名称の長さは30文字以下である。

英字の大文字と小文字は区別される。

特殊文字は使用できない。

（正しい例）

@i
@FILE_A
@001

（誤りの例）

@A=3   … 3番目の文字が特殊文字である。
@A-3   … 3番目の文字はハイフンとは判断されないで，演算子
         と判断される。

（展開例）

MOVE @XA TO B   … MOVE 8 TO B (@XAが8のとき)
X = @XA;        … X = 8;      (@XAが8のとき)

(2)　@@set文による値の設定

可変記号に値を設定するときは@@set文を使います。

可変記号には文字列，または数値が設定できます。

（例）

@@set @i = 1;
@@set @PROG_NAME = "PROG01";
可変記号に設定された値は文脈によって文字列，または数値として解釈される。
1  @@set @z = "ABC";    …@Zは文字列「ABC」と解釈さ
                         れる。
2  @@set @k = "0000";   …@kは文字列「0000」と解釈さ
                         れる。
3  @@set @q = @k + 1;   …@kは数値「0」と解釈され@qは
                        「1」になる。

(3)　可変記号のグローバル宣言

テンプレート中や部品中で共有して可変記号を参照したり更新したりする場合に@@global文で指定します。詳細は「7.9.17　@@global文」を参照してください。

(4)　システム可変記号

システム可変記号とは，SEWB+/CONSTRUCTIONが提供する可変記号です。

(a)　@syscount

部品のプロシジャごとに呼び出した通算の回数を表す可変記号です。

(5)　可変記号を設定する文の組み合わせ

可変記号を設定する場合，組み合わせて使用できる文には次の制限があります。

後 | 先
@@merge | @@put | @@global | @@set | @@interface | @@foreach
@@merge | ○ | ○ | × | × | × | ×
@@put | ○ | ○ | × | × | × | ×
@@global | × | × | ○ | × | × | ×
@@set | ○ | ○ | ○ | ○ | × | ○
@@interface | × | × | ○ | × | × | ×
@@foreach | ○ | ○ | ○ | ○ | ○ | ○

（凡例）

○：指定できる。

×：指定できない。

7.1.5　配列の記述規則

可変記号を配列として参照するとき，次の書き方に従って記述します。

可変記号［添字［，添字］…］

配列は値の集合を格納するときに使う変数（可変記号）です。配列は連想配列方式（associative array）です。配列の特定の値を参照するときに添字として，数値，文字列，または可変記号が使えます。

添字の指定はキーワード（文字列）で設定する方法（キーワード指定）と，数値で指定する方法（位置指定）の2とおりがあります。

＜この項の構成＞

(1)　キーワード指定

(2)　位置指定

(3)　配列の規則

(4)　配列の添字の規則

(1)　キーワード指定

添字にキーワード（文字列）で指定します。

（例）

@@set  @item = {name="KEY001", pic="X(4)"};
とすると，@itemは次のように参照される。
@item[name]          …KEY001
@item[pic]           …X(4)

また，次のように，添字に可変記号を使用することもできる。

（例1）1から3の順に設定されていった場合

1  @@set @TEST[a]=1;    …添字「a」の値は「1」
2  @@set @TEST[b]=2;    …添字「b」の値は「2」
3  @@set @i="a";

このとき，@TEST[@i]は1となる（@TEST[@i]は@TEST[a]のため）。

（例2）

@@set @WORKS={
  {level=1,name="ITM001"},
  {level=2,name="ITM002",pic="X(4)"},
  {level=2,name="ITM003",pic="9(4)"}
};
@@set @C = @WORKS[2];       … @Cには
                              {level=2,name="ITM002"
                              ,pic="X(4)"}が設定され
                              る。
@@set @D = @WORKS[3,name];  … @DにはITM003が設定さ
                              れる。
このとき，可変記号には次の値が設定されている。
@@count[@WORKS]    …3(@@countは配列の要素数を取り出
                    す関数)
@WORKS[1,name]     …ITM001
@WORKS[2,name]     …ITM002
@WORKS[2,pic]      …X(4)
@WORKS[3,name]     …ITM003
@WORKS[3,pic]      …9(4)
@C[name]           …ITM002
@C[pic]            …X(4)
@D[1]              …エラー(可変記号Dの内容が配列では
                    ないので構文エラーになる)

(2)　位置指定

{ }内に値を「，」で区切って並べると，一度に配列の値が設定できます。{ }内に値だけを並べた場合，その順番が配列の添字（1からの数字）になります。

（例）

@@set @Ar1={"a01","a02","a03"};
このとき
@Ar1[1]      …a01
@Ar1[2]      …a02
@Ar1[3]      …a03
@Ar1[4]      …値が設定されていないためエラーになる

(3)　配列の規則

初期化は次のように指定する。
文字列の場合，@@set @Arl[1] = "";
数値の場合，@@set @Arl[1] = 0;

配列の添字の指定，および初期化の指定で位置指定とキーワード指定は混在できない。

一度位置指定で初期化した配列は，キーワード指定で再度設定できない。

一度キーワード指定で初期化した配列は，位置指定で再度設定できない。

展開文中の可変記号に配列を指定する場合，可変記号と配列指定の記号の間に空白を指定してはならない。空白がある場合，テキストとして解釈され展開される。

（誤りの例）

MOVE  @Ar1  [1]    …可変記号と配列指定の間に空白がある。

(4)　配列の添字の規則

配列の添字は次の三つのうちのどれかを使用できます。

9けた以内の数字。

可変記号。

名称の長さが30文字以内の文字列。このとき，英字の大文字と小文字は区別される。

7.1.6　部分参照の記述規則

可変記号の一部を参照したいときに次の書き方に従って指定します。

@@str（可変記号，先頭位置［，文字列長］）

部分参照の規則は次のとおりです。

先頭位置および文字列長には，数字定数，算術式，または可変記号を指定する。

文字列長（文字数）の指定は省略できる。その場合，先頭位置から可変記号の右端までを文字列長とする。

データの文字列が2バイトコードの場合，データは1文字ずつ設定される。

指定された先頭位置にデータがない場合はエラーになる。

指定された文字列長よりもデータが少ない場合，データが入っているところまで設定される。

（例）

@@set @A001 = "ABCDE";
@@set @B001 = @@str(@A001,3,5);    …@B001の内容は
                                    'CDE'

7.1.7　予約語

展開制御開始文字を二つ連続した文字列「@@」で始まる文字列，および次の文字列は，予約語のため，別の用途で使用できません。

ARRAY_MAX

ASCEND

ATTR

ATTR_NAME

BASIC_ATTR

COMMENT

DESCEND

EQ

EXTENSION

FOR_REPOSITORY

GE

GT

IO

LE

LT

MODIFY_CONNECT

MODIFY_ORDER

NE

NOVALUE

OUTPUT_NAME

PARENT

PARSE_LEVEL

PREFIX

REF

START

START_POSITION

SUFFIX

SUPPRESS

TAG_NAME

TOP

TYPE

UOC_BEGIN

UOC_END

UP

USAGE

VALUE

WITH

7.1.8　展開文字列

展開文字列とは，展開文で可変記号以外の文字列を示します。空白や改行文字は展開文字列に含まれます。

7.1.9　分離記号

分離記号とは，文字列を区切るための記号です。テンプレートの展開制御文で使用します。

分離記号 | 名　　称 | 使　用　方　法
△ | 空白 | 演算子や予約語をほかの文字と区切る。文字列と文字列，文字列と分離記号および分離記号と分離記号の間に置いて，式や文を見やすくする。
， | コンマ | 関数の引数や添字の並びに区切りを付ける。
（ ） | 丸括弧 | 演算子の評価順序を示す。関数の引数となる文字列を囲む。
' | アポストロフィ | 文字定数を囲む。
" | ダブルクォーテーション | 文字定数を囲む。
== <= < >=> != | 比較演算子 | 比較演算子の左右の項を比較して，大小または等価を判定する。
+ － * / | 算術演算子 | 算術演算子の左右の項目を，指定された演算子で計算する。
{ } | 波括弧 | 構造体の要素を示す。
[ ] | 角括弧 | 配列の要素を示す。
なし | 改行，改ページ，水平タブ，垂直タブ | 改行，復帰，タブ（空白として扱う）
<< | テキスト代入子 | 可変記号にテキストを代入する。
&& || | 論理演算子 | 論理演算子の左右の項を論理演算する。

7.2　演算子

演算子には次の5種類があります。

算術演算子

比較演算子

論理演算子

代入演算子

文字列連結演算子

＜この節の構成＞

7.2.1　算術演算子

7.2.2　比較演算子

7.2.3　論理演算子

7.2.4　代入演算子

7.2.5　文字列連結演算子

7.2.6　優先順位と結合規則

7.2.1　算術演算子

算術演算子には次の4種類があります。

算術演算子 | 意　味
＋ | 左項の値に右項の値を足す
－ | 左項の値から右項の値を引く
＊ | 左項の値に右項の値を掛ける
／ | 左項の値を右項の値で割る

7.2.2　比較演算子

比較演算子には数値の比較用と文字列の比較用に，それぞれ6種類ずつあります。比較の結果が真なら1を，偽なら0を返します。

数値の比較用 | 文字列の比較用 | 意　味
＝＝ | eq | 左項の値が右項の値に等しいとき真になる
＞ | gt | 左項の値が右項の値より大きいときに真になる
＞＝ | ge | 左項の値が右項の値以上のときに真になる
＜＝ | le | 左項の値が右項の値以下のとき真になる
＜ | lt | 左項の値が右項の値より小さいときに真になる
！＝ | ne | 左項の値が右項の値と異なるときに真になる

比較演算子は結合できません。したがって，次のような式は誤りです。

（誤りの例）

@a < @b < @c

（正しい例）

@a < @b &&  @b < @c

7.2.3　論理演算子

論理演算子には&&，||，!の3種類があります。

(a)　論理積「＆＆」

左辺の条件と右辺の条件の論理積を表します。

左辺と右辺の条件とその論理積は次のとおりです。

左辺 | 右辺 | 論理積
真 | 真 | 真
真 | 偽 | 偽
偽 | 真 | 偽
偽 | 偽 | 偽

(b)　論理和「｜｜」

左辺の条件と右辺の条件の論理和を表します。

左辺と右辺の条件とその論理和は次のとおりです。

左辺 | 右辺 | 論理和
真 | 真 | 真
真 | 偽 | 真
偽 | 真 | 真
偽 | 偽 | 偽

(c)　条件の否定「！」

条件の否定を表します。

条件とその否定は次のとおりです。

条　件 | 否　定
真 | 偽
偽 | 真

7.2.4　代入演算子

代入演算子は，「＝」です。右辺の式を左辺に代入します。詳細は，「7.9.34　@@set文」を参照してください。

7.2.5　文字列連結演算子

文字列連結演算子は「．」です。連結演算子は可変記号と任意の文字列，または可変記号と可変記号を連結するときに使用します。

（例）

READ  @File_Name
AT END
 SET @File_Name.EOF TO TRUE       …@File_Name
END-REA                              に設定された
                                    文字列に
                                   「EOF TO TRUE」
                                    が結合される。

可変記号のすぐ後ろにピリオドを生成したいときは，ピリオドを二つ続けて記述します。

（例）

IDENTIFICATION DIVISION.
PROGRAM-ID. @Prog_Name..        …@Prog_Nameに
                                 「PROG001」が設定さ
                                  れていると，
                                  PROGRAM-IDは
                                 「PROG001.」。

詳細は「7.3.4　連結式」を参照してください。

7.2.6　優先順位と結合規則

演算子はすべて左から右へと結合されます。なお，優先順位は次のとおりです。

優先順位 | 演算子
1 | （　）内の演算子
2 | ＊ ／
3 | ＋ －
4 | ＜　＜＝　＞　＞＝　 lt le gt ge
5 | ＝＝　！＝　 eq ne
6 | &&
7 | ||

7.3　式

式には次の5種類があります。

算術式

条件式

代入式

連結式

記号生成式

＜この節の構成＞

7.3.1　算術式

7.3.2　条件式

7.3.3　代入式

7.3.4　連結式

7.3.5　記号生成式

7.3.1　算術式

形式

正負記号　　項

項　算術演算子　項

注

「正負記号　　項」「項　算術演算子　項」のどちらかの形式で指定します。

機能

四則演算をします。

規則

項には，次の4種類が指定できる。
算術式，可変記号，数字定数，数値関数
（数値関数には@@count，@@reclen，@@length，@@lengthbの4種類がある）

可変記号の値は，数字でなければならない。

可変記号には部分参照は指定できない。

可変記号が配列を持っている場合，添字を指定する。

算術演算の精度は整数9けたである。

一つの式の中に複数の算術演算子があるときは，表に示す順番で演算する。ただし，一つの算術式の中に優先順位の同じ算術演算子が複数あるときは，左の演算子から順に演算する。

優先順位 | 算術演算子
1 | （ ）内の算術式
2 | 算術演算子の「＊」および「／」
3 | 算術演算子の「＋」および「－」

使用例

+10
100 + 10
100 + -10
@A * @B
@B + 10
(@a+@B)  /  (@C+@D)
@A+@@reclen(@B)
算術式の評価中に可変記号の値が数値でないものがある場合は，エラーになる。
@@set @A ="A"
@@set @B =@A + 1   …@Aの値は0～9以外のためエラーに
                    なる。

7.3.2　条件式

条件式には，比較条件式と複合条件式があります。

＜この項の構成＞

(1)　比較条件式

(2)　複合条件式

(1)　比較条件式

形式

論理関数

項　比較演算子　項

注

「論理関数」「項　比較演算子　項」のどちらかの形式で指定します。

機能

比較条件式を挟む左側と右側の項の大小関係を比較し，成立または不成立を示します。

規則

論理関数には@@definedを指定できる。

項には次の3種類を指定できる。
算術式，可変記号，文字定数

比較演算子が文字列用のときは，文字コードや漢字コードの大小で比較される。

比較演算子が文字列用のとき，両側の文字数が異なるときは，左から順に1文字ずつ比較される。

使用例

HITACとHITACHIを比較したとき

HITAC

HITACHI

左からH，I，T，A，Cの順に比較される。このとき，Cの次の文字でヌル値と「H」が比較され，各文字コードの大小で比較条件が決まる。

(2)　複合条件式

形式

[!]　条件式

条件式　｜｜　条件式

条件式　＆＆　条件式

注

「[!]　条件式」「条件式　｜｜　条件式」「条件式　＆＆　条件式」のどれかの形式で指定します。

機能

処理の選択条件を示します。

規則

項には次の4種類を指定できる。
算術式，可変記号，数値定数，文字定数

条件式には，論理関数が指定できる。

一つの式の中に論理演算子が複数ある場合の判定の優先順位は次のとおりである。

判定の優先順位 | 論理演算子
1 | 括弧内の条件
2 | ！
3 | ＆＆
4 | ｜｜

条件が複数ある場合，条件を判定する順番は次の規則に従う。

括弧が多重の場合

条件はいちばん内側の括弧の中から，外側の括弧に向かって順番に判定される。

比較条件がある場合

条件は次の表の順番で判定される。

判定の優先順位 | 条　件
1 | 比較条件の中の算術式
2 | 比較演算子
3 | 論理演算子

使用例

(@A == 1) && (@B >= 100)

7.3.3　代入式

形式

可変記号　＝　式

機能

右辺の式を左辺の可変記号に代入します。

7.3.4　連結式

形式

可変記号．文字列

可変記号．可変記号

注

「可変記号．文字列」「可変記号．可変記号」のどちらかの形式で指定します。

機能

連結演算子（.）は，可変記号と任意の文字列，または可変記号と可変記号を連結するときに使用します。連結演算子は可変記号の直後にあるときだけ連結演算子として解釈されます。

使用例

@NAMが「A001」，@MODが「(1)」，@SUBが1のとき

@NAM.1       …A0011
@NAM@MOD     …A001(1)
@NAM.@MOD    …A001(1)
@NAM..@MOD   …A001.(1)
@NAM(@SUB)   …A001(1)

7.3.5　記号生成式

形式

@（可変記号）

@（連結式）

@（文字列［可変記号］）

注

「@（可変記号）」「@（連結式）」「@（文字列［可変記号］）」のどれかの形式で指定します。

機能

幾つかの可変記号と文字列から可変記号を生成できます。

使用例

@@set @TAB[1]="AAA";
@@set @TAB[2]="BB";
@@set @TAB[3]="C";
@@set @TAB[4]="1";
@@set @TAB[5]="A*B";

このとき@（@TAB［@I］001）は次の可変記号を生成する。

@Iが1のとき…

@AAA001

@Iが2のとき…

@BB001

@Iが3のとき…

@C001

@Iが4のとき…

@1001

@Iが5のとき…

@A＊B001となり，英数字でない文字があるのでエラーとなる。

7.4　注釈

注釈の記述は「@@＊」で始めます。注釈は文字列「@@＊」が現れた行の末尾で終了します。注釈は生成されるソースプログラムには展開されません。

生成する言語の注釈（COBOLの＊など）については，特別な解釈はされません。そのまま生成されます。

（例1）

@@* **入力ファイル読み込み展開**

とテンプレートに記述しても，ソースプログラムには何も生成されない。

（例2）

*入力ファイル　読み込み*

MOVE  @AA TO @BB
READ  @入力ファイル［ファイル名］

とテンプレートに記述すると，生成する言語の注釈のため次のように生成される。

*入力ファイル　読み込み*

MOVE  商品コード TO I1-商品コード
READ  SHOUHIN

ソースプログラム中に文字列@，または@@を展開させたい場合は，「@@」を記述した直後に記述します。

（例）

展開文の記述   →   展開結果
/* @@@@IF */        /* @@IF */
/* @@@PROG */       /* @PROG */

7.5　テンプレート定義部の宣言

＜この節の構成＞

7.5.1　テンプレート定義部の構成

7.5.2　テンプレート概要定義部

7.5.3　インタフェース定義部

7.5.1　テンプレート定義部の構成

テンプレート定義部は図のような構成で記述します。

7.5.2　テンプレート概要定義部

テンプレートに関する情報をテンプレート中に記述できます。記述できる情報はテンプレートの日本語名称，テンプレート作成者名，テンプレートの概要です。概要定義部はテンプレートの1行目の1カラム目から記述します。

記述した内容はプロパティ情報として見ることができます。したがって，テンプレートにこれらの定義がしてあれば，プログラム作成者はテンプレートを開いてそのつど処理の流れを読まなくても，プロパティ情報で簡単に内容を確認できます。

＜この項の構成＞

(1)　テンプレートの日本語名称

(2)　テンプレート作成者名

(3)　テンプレートの概要

(1)　テンプレートの日本語名称

形式

#NAME = '文字列'

規則

インタフェース定義部より前に記述する。

1カラム目から記述しなければならない。

使用例

#NAME='マスタファイル更新処理'

(2)　テンプレート作成者名

形式

#OWNER = '文字列'

規則

インタフェース定義部より前に記述する。

1カラム目から記述しなければならない。

使用例

#OWNER='日立太郎'

(3)　テンプレートの概要

形式

#OUTLINE = '文字列' ['文字列'…]

規則

1カラム目から記述しなければならない。

複数行記述する場合は，2行目からは1カラム目に#を記述したあとで，アポストロフィ（'）で囲んで記述する。

文字定数に可変記号を指定してはならない。

使用例

#OUTLINE = 'マスタファイルを更新する'

#'入力ファイルはSAM，またはISAM'

#'更新DBはHiRDB用'

7.5.3　インタフェース定義部

テンプレートとプログラム定義，データ定義，パラメタ，および部品との関係は，すべてテンプレートのインタフェース定義部で@@interface文を使って定義します。

また，@@lang文で，記述する言語の種別と生成規則を指定します。@@lang文の詳細は「7.9.21　@@lang文」を参照してください。

＜この項の構成＞

(1)　@@interface文の記述規則

(2)　データ定義識別子と内容

(1)　@@interface文の記述規則

形式1 データ定義を使用する場合（［入出力］タブ）

形式2 ［パラメタ］タブを使用する場合（［パラメタ］タブ）

形式3 XMLを使用する場合（［パラメタ］タブ）

形式4 部品を使用する場合（［部品］タブ）

形式5 マップ定義を使用する場合（［入出力］タブ）

規則

(a)　ATTR

可変記号に指定するATTR
@@interface文で指定した可変記号に対し，プログラム作成者が定義できるデータ定義の種別や文書などを指定します。また，データ定義の中の項目を選んでブレークキーやマッチングキーなどに使う場合は，ITEMを指定します（ITEMを指定する場合に，データ定義からレコード定義を参照しているときは，参照しているレコード定義での辞書参照の有無に関係なく，データ項目が選択できます）。

データ定義を使用する場合は，データ定義種別を次の表の中から指定する。

項番 | データ定義種別 | 内　　容
1 | FILE | ファイル情報
2 | DB | DB情報
3 | TAM | TAM情報
4 | DAM | DAM情報
5 | RPC_INPARM | RPC入力パラメタ情報
6 | RPC_REPLY | RPC応答領域情報
7 | MSG | メッセージ情報
8 | UJ | ユーザジャーナル情報
9 | MSGLOG | メッセージログ情報
10 | WORK | 共通作業領域情報

マップ定義を使用する場合は，XMAP3を指定する。

データ定義種別を指定した場合，プログラム定義の［入出力］タブの入出力項目欄に，可変記号から先頭の@が除かれたものが表示される。プログラム作成者はここで，プログラムで使用するデータ定義が格納されたファイルを指定する。

（例）

@@interface @マスタDB={ATTR=DB,IO=IN_OUT,COMMENT="集計結果に従い…"};
  :
@@interface @集計サービス={ATTR=RPC_INPARM,IO=IN,COMMENT="2集計元ファイルを…"};
  :
@@interface @集計作業ファイル={ATTR=FILE,IO=IN_OUT,COMMENT="売上げを…"};
  :
@@interface @参照ファイル={ATTR=FILE,IO=IN,ARRAY_MAX=7,COMMENT="マスタDBに…"};

このとき，プログラム定義の［入出力］タブの入出力項目一覧には次のように表示される。

ITEMは，指定された可変記号に，REFで指定されているデータ定義のレコードの項目からどれかを設定する場合に指定する。または，REFが省略されて@@interfaceで定義中のデータ定義の項目を指定する場合に使用する。

（例）

@@interface @入力ファイル={ATTR=DB,COMMENT="問い合わせ
                         データ…",IO=IN,表名
                         ={ATTR=TABLE_NAME}};
  :
@@interface @確認内容設定先={ATTR=ITEM,REF=@入力ファイ
                           ル,COMMENT="今回の確認内
                           容を…"};

このとき，プログラム定義の［パラメタ］タブの指示項目一覧には次のように表示される。

APで使用する部品をプログラム定義で指定する場合は，PARTSを指定する。

PARTSを指定した場合，プログラム定義の［部品］タブの展開部品項目欄に，可変記号から先頭の@が除かれたものが表示される。プログラム作成者は，ここで部品ファイルを選び，そのあとで展開するプロシジャおよび引数を選ぶ。

（例）

@@interface @追加部品={ATTR=PARTS,COMMENT="追加部品を選択する"};

マップ定義を使用する場合は，XMAP3を指定する。

XMAP3を指定した場合，プログラム定義の［入出力］タブの入出力項目欄に，可変記号から先頭の@が除かれたものが表示される。プログラム作成者は，ここでマップ定義ファイルを選ぶ。

XMLで記述されたXML文書をプログラム生成のパラメタとして利用する場合は，XMLを指定する。

XMLを指定した場合，プログラム定義の［パラメタ］タブの指示項目欄に，可変記号から先頭の@が除かれたものが表示される。プログラム作成者は，ここでXML文書を選ぶ。

ATTRを指定していない場合，プログラム作成者は，プログラム定義の［パラメタ］タブで文字列を入力してデータ種別を定義しなければならない。

修飾名に指定するATTR
プログラム作成者がデータ定義で定義しておく必要のある項目を修飾名として指定し，ATTR=の後ろに，その項目をデータ定義識別子で記述します。指定できるデータ定義識別子は「(2) データ定義識別子と内容」を参照してください。

データ定義識別子が指定されると，プログラム作成者がデータ定義で定義した値が直接取得され，ソースプログラムが生成される。したがって，修飾名は，プログラム定義の［入出力項目設定］ダイアログには表示されない。

ATTR=ELEMENTが指定されると，XML文書中のタグ名情報を取得する。

修飾名を指定して修飾名用ATTRを指定しなかった場合，および修飾名にATTR=ITEMを指定した場合は，プログラム定義の［入出力項目設定］ダイアログの指示項目欄に修飾名が表示される。ATTRにデータ定義識別子以外を設定しても構文エラーとはならない。プログラム生成時は，プログラム定義の［入出力項目設定］ダイアログで指定した文字列に変換される。

(b)　ARRAY_MAX

可変記号および修飾名に反復がある場合，反復の最大数を指定する。

ATTRにPARTSが指定されている場合，ARRAY_MAXは指定できない。

(c)　COMMENT

可変記号および修飾名に対する注釈を記述する。

ここで記述した注釈は，プログラム定義の定義ウィンドウやダイアログで「説明」欄に表示される。

(d)　REF

ATTRにITEMが指定されている場合だけ有効である。

テンプレート中でデータ定義種別が指定されている可変記号を指定する。

プログラム定義で指定したすべてのデータ定義の項目から選択する場合，＊を指定する。

(e)　IO

ATTRにデータ定義種別，またはXMAP3が指定されている場合だけ有効である。

データ定義，およびマップ定義ファイルの入出力の区分を指定する。

ここで定義した入出力の区分は，プログラム定義のメインウィンドウの「入出力」に表示される。

(f)　修飾名

可変記号を修飾する名称を指定する。

可変記号名と同じ規則で記述する。

テンプレートの展開処理記述部に記述する場合は，可変記号の添字として記述する（可変記号名［修飾名］）。

(g)　VALUE

ATTRの指定がない指示項目にだけ指定できる。

プログラム定義の指示項目設定では，VALUEに指定した値の中から選択できる。

(h)　PARSE_LEVEL

XML文書を解析するレベルを指定する。省略した場合は，PARSE_LEVEL=1を仮定する。

解析レベル | 意味
1 | 文書インスタンスだけを解析し，XML文書をテンプレートから参照できるようにする。
2 | 解析レベル1に加えて，DTD※を解析し，DTDで指定されたデフォルト値を挿入する。ただし，文書インスタンスとDTDの整合性は検証しない。

注※

DTDについては，「7.8.1(2)　DTD」を参照してください。

(i)　TAG_NAME

ATTRにELEMENTが指定されている場合は必ず指定する。ATTRにELEMENTが指定されている場合だけ有効である。

XML文書のタグ名を指定する。

(j)　ATTR_NAME

ATTRにELEMENTが指定されている場合は必ず指定する。ATTRにELEMENTが指定されている場合だけ有効である。

XML文書の属性名を指定する。

(2)　データ定義識別子と内容

プログラム作成者が，データ定義で定義しておく必要のある項目を修飾名として指定し，ATTR=のあとにその項目をデータ定義識別子で記述します。

データ定義識別子の指定によって，データ定義で定義した内容をテンプレート上で使用できます。修飾名用ATTRに指定できるデータ定義識別子の一覧を次の表に示します。

表7-1　データ定義識別子の一覧

データ定義種別
データ定義識別子
データ定義での定義個所
内　　　　　容

FILE
FILE_NAME
ファイル名
SELECT句，FD句のファイル名。
データ定義ウィンドウの［ファイル］タブのファイル名フィールドの指定値。

ORGANIZATION
ファイル編成
ORGANIZATION句の編成。
データ定義ウィンドウの［ファイル］タブのファイル編成の指示番号。
［1：順編成］［2：相対編成］
［3：索引編成］［4：索引順編成］
［5：テキスト編成］［6：CSV形式］
［7：直接編成］

RECORD_NAME
レコード定義※¹
FD句のレコード記述項にある，最初の01レベルのデータ項目名。
データ定義ウィンドウの［ファイル］タブの結合項目名称/レコード定義名称フィールドの結合項目の指定値，またはレコード定義の最初に定義さているデータ項目の名前※2。

KEY_NAME
キー名
プログラムで使用するキー名。
データ定義ウィンドウの［ファイル］タブのキー名フィールドの指定値。

RECORDING_MODE
レコード形式
レコードの形式。
データ定義ウィンドウの［ファイル］タブのレコード形式フィールドの指示番号。
［0:指定なし］［1:固定長］［2:可変長］

FILE_EXTERNAL
EXTERNAL
外部属性の有無の指定。
データ定義ウィンドウの［ファイル］タブのEXTERNALチェックボックスの指示番号。
［0:チェックOFF］［1:チェックON］

VSIZE_ITEM
長さ設定エリア
レコードの長さを設定する項目の名称。
データ定義ウィンドウの［ファイル］タブの長さ設定エリア名フィールドの指定値。

DB
TABLE_NAME
表名称
表名称。
データ定義ウィンドウの［RDB］タブの表名称フィールドの指定値。

RECORD_NAME
レコード定義
表に対応するテーブルにある，01レベルのデータ項目名。
データ定義ウィンドウの［RDB］タブの結合項目名称/レコード定義名称フィールドの結合項目の指定値，またはレコード定義の最初に定義さているデータ項目の名前※2。

DAM
FILE_NAME
ファイル定義
DAMファイル名。
データ定義ウィンドウの［DAM］タブのファイル名フィールドの指定値。

BLOCK_SIZE
入出力ブロックサイズ
アクセスするブロックの大きさ。
データ定義ウィンドウの［DAM］タブの入出力ブロックサイズの指定値。

RECORD_NAME
レコード定義
DAMアクセス時の入出力領域にある，01レベルのデータ項目名。
データ定義ウィンドウの［DAM］タブの結合項目名称/レコード定義名称フィールドの結合項目の指定値，またはレコード定義の最初に定義さているデータ項目の名前※2。

TAM
TABLE_NAME
テーブル定義
TAMテーブル名。
データ定義ウィンドウの［TAM］タブのテーブル名称フィールドの指定値。

KEY_SIZE
キー名称
キー項目のサイズ。
データ定義ウィンドウの［TAM］タブのキーフィールドに指定したデータ項目のサイズ。

RECORD_NAME
レコード定義
TAMアクセス時の入出力領域にある，01レベルのデータ項目名。
データ定義ウィンドウの［TAM］タブの結合項目名称/レコード定義名称フィールドの結合項目の指定値，またはレコード定義の最初に定義さているデータ項目の名前※2。

RPC入力パラメタ
RECORD_NAME
レコード定義
入力パラメタの02レベルのデータ項目名。
データ定義ウィンドウの［RPC］タブの入力パラメタ定義の結合項目名称/レコード定義名称フィールドの結合項目の指定値，またはレコード定義の最初に定義さているデータ項目の名前※2。

RPC応答領域
RECORD_NAME
レコード定義
応答領域の02レベルのデータ項目名。
データ定義ウィンドウの［RPC］タブの応答領域定義の結合項目名称/レコード定義名称フィールドの結合項目の指定値，またはレコード定義の最初に定義さているデータ項目の名前※2。

メッセージ
RECORD_NAME
レコード定義
入力メッセージの02レベルのデータ項目名。
データ定義ウィンドウの［メッセージ］タブの結合項目名称/レコード定義名称フィールドの結合項目の指定値，またはレコード定義の最初に定義さているデータ項目の名前※2。

ユーザジャーナル
USER_JOURNAL_CODE
コード
ユーザジャーナルのコード。
データ定義ウィンドウの［ユーザジャーナル］タブのコードフィールドの指定値。

RECORD_NAME
レコード定義
ユーザジャーナルアクセス時の出力領域にある，02レベルのデータ項目名。
データ定義ウィンドウの［ユーザジャーナル］タブの結合項目名称/レコード定義名称フィールドの結合項目の指定値，またはレコード定義の最初に定義さているデータ項目の名前※2。

メッセージログ
RECORD_NAME
レコード定義
メッセージログアクセス時の出力領域にある02レベルのデータ項目名。
データ定義ウィンドウの［メッセージログ］タブの結合項目名称/レコード定義名称フィールドの結合項目の指定値，またはレコード定義の最初に定義さているデータ項目の名前※2。

共通作業領域
RECORD_NAME
レコード定義※¹
共通作業領域の最初の01レベルのデータ項目名。
データ定義ウィンドウの［共通作業領域］タブの結合項目名称/レコード定義名称フィールドの結合項目の指定値，またはレコード定義ファイルの最初に定義さているデータ項目の名前※2。

注※1

データ定義で結合項目またはレコード定義ファイルが複数指定されている場合，次の点を考慮してください。

データ定義で選択されている結合項目またはレコード定義ファイルごとにレコードを生成する場合は，配列の要素に結合項目またはレコード定義ファイルの位置を指定します。なお，配列の要素は，修飾名の次に書きます。

結合項目またはレコード定義ファイルの位置には，データ定義の結合項目名称/レコード定義名称のリストに表示される結合項目の順序を，数値で指定します。
ただし，データ定義に表示されるすべての結合項目またはレコード定義ファイルのレコード名を生成する場合は，結合項目またはレコード定義ファイルの位置を省略します。

（例）@入力ファイルの2番目のレコード名を参照する。

@@interface @入力ファイル ={ATTR = FILE,

レコード名 =

{ATTR=RECORD_NAME}};

:

@入力ファイル[レコード名,2]

注※2

名前が指定されていない場合はデータ項目名になります。

7.6　部品定義と部品の呼び出し

＜この節の構成＞

7.6.1　部品定義

7.6.2　部品の使用方法

7.6.3　部品の呼び出し

7.6.1　部品定義

＜この項の構成＞

(1)　部品の構成

(2)　部品概要定義部

(3)　プロシジャ宣言部

(4)　部品関連出力部

(5)　展開処理記述部

(1)　部品の構成

部品は図のような構成で記述します。

(2)　部品概要定義部

テンプレート概要定義部と同じように記述します（「7.5.2 テンプレート概要定義部」を参照）。

(3)　プロシジャ宣言部

一つの部品の中にプロシジャは複数宣言できます。

(a)　プロシジャ名

テンプレートに展開したいプロシジャの名称を指定します。プロシジャ名称は次の規則に従って記述します。

特殊文字は使用できない。

名称の長さは30文字以下であること。

英字の大文字と小文字は区別される。

数字だけの指定はできない。

(b)　引数

部品の展開内容を変更するために，テンプレートからプロシジャに引き渡す変数です。引数には可変記号だけが指定できます。

(4)　部品関連出力部

部品で特有の作業領域や，部品で展開されるセクションの呼び出し部分の展開などが必要な場合，@@merge文，および@@put文の記述規則に従って定義します。

(5)　展開処理記述部

展開する処理を記述します。

引数やグローバル宣言された可変記号を使用することで，各種の文および関数を使うことができます。

7.6.2　部品の使用方法

部品を使用する方法は，次の二つの場合で異なります。

テンプレート作成時に使用する部品が確定している場合

テンプレート作成時に使用する部品が確定していない場合

＜この項の構成＞

(1)　テンプレート作成時に使用する部品が確定している場合

(2)　テンプレート作成時に使用する部品が確定していない場合

(1)　テンプレート作成時に使用する部品が確定している場合

テンプレート作成時にAP中で使用する部品が確定している場合は，テンプレート中に部品名と引数を指定して，部品を呼び出します。詳細は「7.6.3　部品の呼び出し」を参照してください。

(2)　テンプレート作成時に使用する部品が確定していない場合

テンプレート作成時にAP中で使用する部品が確定していない場合は，@@interface文を使用して，プログラム定義の［部品］タブで，プログラム作成者に部品を選ばせます。プログラム定義の［部品］タブでは，プログラム作成者がAP中で使用する部品ファイルや，プロシジャ，および引数を指定します。この方法でのテンプレート作成については，「7.5.3　インタフェース定義部」および「7.9.28　@@parts文」を参照してください。

7.6.3　部品の呼び出し

＜この項の構成＞

(1)　部品の呼び出し方法

(2)　部品ファイルの検索方法

(1)　部品の呼び出し方法

部品はテンプレート，業務ルールのルールスクリプトまたは部品中から呼び出せます。

形式

@@＜部品ファイル名＞プロシジャ名（［引数1［，引数2…］］）

規則

部品ファイル名には，パスの指定もできる。

プロシジャ名は，「7.6.1(3)(a) プロシジャ名」の規則に従う。

部品を使用する場合は，必ず環境設定で部品の検索パスを指定しておかなければならない。

引数には，可変記号を指定する。

引数の数は，部品の呼び出しと部品の定義で一致しなければならない。

引数の可変記号には配列を指定できる。部分参照は指定できない。

部品はネストして呼び出すことができる。また，リカーシブルに自分自身を呼び出すこともできる。

同じ部品ファイル中の部品（プロシジャ名）を呼び出す場合，部品ファイル名を省略できる。

(2)　部品ファイルの検索方法

テンプレート，業務ルールのルールスクリプトまたは部品中に指定された部品ファイルは「環境設定」で指定された検索パスに従って検索されます。

同一名称の部品（部品ファイル，プロシジャ名）が存在する場合は，検索パス中で先に見つかったものが呼び出されます。

部品の検索をネットワークドライブのディレクトリパスや，ローカルファイルのディレクトリパスに設定できます。

部品を検索するパスを指定する方法として次の3種類があります。

SEWB+/REPOSITORYから常に参照する（部品の開発が完了している）場合
リポジトリのネットワークドライブ名を指定します。

リポジトリまたはプログラム開発中のディレクトリから参照する（部品の開発が並行して進んでいる）場合
リポジトリのネットワークドライブ名とカレント（プログラム定義やテンプレート）のディレクトリ名を指定します。

開発中のディレクトリを参照する（開発の初期段階の）場合
カレント（プログラム定義やテンプレート）のディレクトリ名だけを指定します。

注

パスについては，「付録A　環境設定」を参照してください。

7.7　業務ルールの利用

＜この節の構成＞

7.7.1　テンプレート記述と業務ルール

7.7.2　業務ルールの展開と抽出条件

7.7.3　業務ルールの分割展開

7.7.4　展開制御文を使用した業務ルールの展開

7.7.1　テンプレート記述と業務ルール

SEWB+/REPOSITORYで業務ルールと関連づけられているデータ項目を含むレコードを，SEWB+/CONSTRUCTIONの@@interface文で指定すると，業務ルールを利用できます。業務ルールとはデータ項目に着目して，チェック条件や編集処理など，データ項目特有の処理を汎用的なルールとして業務ルール辞書に格納したものです。そのため，業務ルールを利用すると，それぞれのデータ項目に対する処理をユーザが書く手間が省けます。業務ルールをソースプログラム上に展開させたい場合は，テンプレート中に@@rule文を書きます。

なお，業務ルールの記述にテンプレート記述言語を使用できます。使用できるテンプレート記述言語の詳細は，「7.9.1　文と関数一覧」を参照してください。

テンプレート記述と業務ルール，データ定義の関係を次の図に示します。

図7-1　SEWB+/CONSTRUCTIONでの業務ルールの仕組み（データ定義を使用した場合）

データ定義種別を指定した可変記号の宣言
作成するプログラムで使用するデータ定義種別の可変記号を，@@interface文で宣言します。

業務ルール使用の宣言
テンプレートだけでは不足している情報は，ユーザが追加します（ユーザ処理）。ユーザ処理には，UOCを書く場合と，業務ルールを使用する場合とがあります。業務ルールを使用する場合は，テンプレートのユーザ処理の位置に@@rule文を書きます。@@rule文には「業務ルール展開名」と「抽出条件」を書きます。「抽出条件」には，業務ルールを抽出するための条件と，その条件の対象になるデータ項目が含まれているデータ定義種別の可変記号を書きます。
UOCを書く場合については，「7.9.38　@@uoc文」を参照してください。

データ項目と業務ルールの定義（SEWB+/REPOSITORY）
プログラムで使用するデータ項目と業務ルールが定義されています。また，これらの間の関連や，業務ルールの適用条件も定義されています。適用条件とは，ルールスクリプト※中のデータ項目がどのような条件（処理の入力，出力）であるときに，その業務ルールを適用させるかという情報です。

注※

ルールスクリプトとは，業務ルールの処理内容のことです。

データ定義
データ定義では，プログラムで使用するファイル，DBおよびクライアントとサーバ間の通信インタフェースを定義します。データ定義でレコードを使用するときは，SEWB+/REPOSITORYで定義された最上位結合項目，またはSEWB+/RECORD DEFINERで作成されたレコード定義を参照して定義されます。

業務ルールの抽出と絞り込み
業務ルールの抽出では， テンプレートの@@rule文に書かれている抽出条件の「IN」「OUT」が，業務ルール辞書で定義されている適用条件「入力」「出力」と照会され，条件が一致する業務ルールがSEWB+/CONSTRUCTIONのプログラム定義画面に表示されます。
このような，適用条件と抽出条件による業務ルールの抽出を，「業務ルールの絞り込み」といいます。
図7-1では，マスタファイルのレコードを構成するデータ項目（データ項目1，2）は，業務ルール1と関連づけられています。また，@@rule文の抽出条件と業務ルールの適用条件が一致しています（3.参照）。したがって，@@rule文にマスタファイル名を指定すると，抽出条件に従って，業務ルール1が抽出されます。
適用条件の詳細は，マニュアル「SEWB+/REPOSITORY 辞書設計ガイド」を参照してください。

業務ルールの表示と選択
抽出された業務ルールは，プログラム定義の業務ルール展開設定画面に表示されます。プログラム作成者は，その中からソースプログラムに展開させたい業務ルールを選びます。

ソースプログラムの生成
プログラム定義で選択された業務ルールが，ソースプログラム中に展開されます。

7.7.2　業務ルールの展開と抽出条件

プログラム作成者が適切な業務ルールを効率良く確実に探せるように，テンプレート作成者は@@rule文にコメントを書いたり，業務ルールを検索する条件を定義したりします。

また，プログラム上の連続しない個所への定義が必要な場合は，業務ルールを分割して展開させることができます。

＜この項の構成＞

(1)　@@rule文の記述規則

(1)　@@rule文の記述規則

ここでは，抽出条件を指定して，抽出される業務ルールを限定する@@rule文の書き方，抽出条件を指定しないで広い範囲から業務ルールを抽出する@@rule文の書き方，およびそれらの両方を合わせた@@rule文の書き方を示します。

形式1　－抽出条件を指定する書き方

抽出条件を指定する書き方です。業務ルール辞書で定義されている適用条件と合わせて業務ルールの絞り込みをするので，抽出される業務ルールは限定されます。

注

太字の文字は表記どおりに記述することを表します。｛　｝の中に，縦に複数の項目がある場合は，その中のどれか一つを選んで記述します。[ ]に囲まれた項目は省略できることを表します。形式中の数字は，「規則」の説明文と対応しています。

形式2　－抽出条件を省略する書き方

抽出条件を省略する書き方です。抽出される業務ルールの範囲は，形式1の書き方より広くなります。

注

太字の文字は表記どおりに記述することを示します。｛　｝の中に，縦に複数の項目がある場合は，その中のどれか一つを選んで記述します。[ ]に囲まれた項目は省略できることを示します。形式中の数字は，「規則」の説明文と対応しています。

形式3　－限定された抽出と幅広い抽出を同時に行う書き方

形式1のように，抽出条件を利用して業務ルールを抽出する書き方と，形式2のように抽出条件を利用しないで業務ルールを抽出する書き方を混在させて書くことができます。

注

太字の文字は表記どおりに記述することを示します。｛　｝の中に，縦に複数の項目がある場合は，その中のどれか一つを選んで記述します。[ ]に囲まれた項目は省略できることを示します。形式中の数字は，「規則」の説明文と対応しています。

規則

（a）業務ルール展開名

1.@@rule "業務ルール展開名"

業務ルール展開名は，文字定数または可変記号で指定します。ここで指定した名前は，プログラム定義画面の［ユーザ処理］タブに表示されます。

（b）抽出条件

2.WITH USAGE{抽出条件}

抽出条件を指定する場合
業務ルールを抽出する条件を{　}で囲んで記述します。この括弧は，形式の一部なので必ず書いてください。

抽出条件を省略する場合
抽出条件を省略する場合，WITH USAGE句は書きません。抽出条件を省略した場合，業務ルールで使用されているデータ項目が， REF句に書いたデータ定義に含まれていることが，抽出の条件になります。

業務ルール辞書で定義されている適用条件の中で，どの適用条件の業務ルールを抽出するのかを指定します。

「IN」を指定した場合，適用条件が「入力」である業務ルールが抽出されます。

「OUT」を指定した場合，適用条件が「出力」である業務ルールが抽出されます。

REF句の指定までを{　}で囲んで記述します。この{　}は，形式の一部なので必ず書いてください。

データ定義種別，オブジェクト定義（ATTR=INTERFACE），またはオペレーション定義（ATTR=OPERATION）の可変記号を書きます。

PREFIX句
ルールスクリプト中のキーワード※がデータ項目に置き換えられる際に付けられる接頭語を，文字定数または可変記号で指定します。
接頭語はルールスクリプト中のキーワード（@MODIFY）で展開される修飾付きデータ項目にも付けられます。
REFに繰り返しのある（ARRAY_MAX指定のある）可変記号を指定する場合，PREFIXに指定する可変記号を配列にすると，繰り返しごとの接頭語を指定できます。

SUFFIX句
ルールスクリプト中のキーワード※がデータ項目に置き換えられる際に付けられる接尾語を，文字定数または可変記号で指定します。
接尾語はルールスクリプト中のキーワード（@MODIFY）で展開される修飾付きデータ項目にも付けられます。
REFに繰り返しのある（ARRAY_MAX指定のある）可変記号を指定する場合，SUFFIXに指定する可変記号を配列にすると，繰り返しごとの接尾語を指定できます。

TOP句
ルールスクリプト中のキーワード（@MODIFY）で展開される修飾付きデータ項目のうち最も上位となるデータ項目名を別の文字列に変換する場合，その文字列を文字定数または可変記号で最上位項目名に指定します。
REFに繰り返しのある（ARRAY_MAX指定のある）可変記号を指定する場合，TOPに指定する可変記号を配列にすると，繰り返しごとの最上位項目名を指定できます。

注※

業務ルールのキーワードの詳細は，マニュアル「SEWB+/REPOSITORY 辞書設計ガイド」を参照してください。

可変記号および修飾名に反復がある場合（@@interface文のARRAY_MAXに値が指定されている場合），PREFIX，SUFFIXまたはTOPには，@@set文で作成した反復の可変記号を指定します。

（例）

@@interface文の内容

@@interface @FILE01 = {
          ATTR=FILE,
          ARRAY_MAX=3,
          COMMENT="ファイルを指定してください"
     };

反復の可変記号の作成

@@set @AFIX[1] = "I1-";
@@set @AFIX[2] = "I2-";
@@set @AFIX[3] = "I3-";

@@rule文での指定

@@rule "業務ルール展開名"{ REF=@FILE01 PREFIX=@AFIX };

TYPE句
REF句にオブジェクト定義またはオペレーション定義を指定した場合に，指定できます。オブジェクト定義またはオペレーション定義から特定の項目を引き当てる場合に指定します。REF句にオブジェクト定義を指定した場合は，属性（ATTRIBUTES）が指定できます。REF句にオペレーション定義を指定した場合は，引数（ARGUMENTS），例外（EXCEPTIONS）または戻り値の型（RETURNTYPE）が指定できます。
指定しない場合は，REF句に指定したオブジェクト定義またはオペレーション定義のすべての項目が対象となります。

IO句
REF句にオペレーション定義を指定し，TYPE句に引数（ARGUMENTS）を指定した場合に指定できます。オペレーション定義の引数の入出力区分を指定してデータ項目を引き当てる場合に指定します。
「IN」を指定した場合，入出力区分が「in」である引数が引き当てられます。
「OUT」を指定した場合，入出力区分が「out」である引数が引き当てられます。
「IN_OUT」を指定した場合，入出力区分が「inout」である引数が引き当てられます。
指定しない場合は，すべての引数が対象となります。

（c）抽出補助項目

5.USAGE句の{ }外のREF句

（b）の抽出条件での指定内容を補助するために指定します。 USAGE句の{ }内に書かれた抽出条件に合っている業務ルールが抽出される場合，その業務ルールで使用されているデータ項目すべてが，USAGE句の {　}内のREF句に書かれたデータ定義のデータ項目であれば，その業務ルールは抽出されます。

しかし，業務ルールで使用されているデータ項目の中に， USAGE句の{ }内のREF句に書かれたデータ定義には含まれていないデータ項目や，入出力の指定が違うものがある場合は，その業務ルールは抽出されません。

このようなとき，抽出補助項目を書いておけば，そのREF句に書かれた可変記号が示すデータ定義中のデータ項目を無条件に使用できるので，業務ルールを抽出できます。なお，{　}外のREF句に書く可変記号は，データ定義種別の可変記号として@@interface文で宣言されていなければなりません。

（例）

テンプレート中に，入れ替え処理の業務ルールを展開させたい場合，テンプレート作成者は次のような文を書きます。

ファイルの内容と業務ルールおよびSEWB+/REPOSITORYの適用条件は次のようになっています。業務ルールのルールスクリプト中では，汎用性を持たせるため先頭に「@」が付けられた文字列（キーワード）が使用されます。

このようなとき，テンプレートの@@rule文のREF句に指定されているデータ定義中のデータ項目を使用している業務ルールとして，業務ルール01および02が引き当てられます。ここまでは，これらの業務ルールは@@rule文の抽出条件に合っています。しかし，それぞれの業務ルールの中には，「X」と「WA」という，ファイル1には指定されていないデータ項目が含まれています。そこで，上の@@rule文の最後に抽出補助項目「REF=@ファイル2」を追加してみます。

このようにすると，業務ルール01中の「X」が抽出補助項目のREF句に指定されたファイル2のデータ項目として指定されるので，業務ルール01で使用されているデータ項目が，すべて@@rule文で指定されたことになります。したがって，この@@rule文では業務ルール01が抽出されます。ファイル2のデータ項目に対して，どのように使用されているかという抽出条件は指定されていないので，データ項目の入出力は意識されません。

（d）抽出条件以外の指定

6.PARENT　"親ブロック名"

PARENT句には，親ブロック名を指定します。親ブロック名について次に示します。

親ブロック名は，プログラム定義の［ユーザ処理］タブで業務ルールの一覧をツリー形式で表示させるときに，指定した業務ルール展開名の親になるブロック名を指定する。

親ブロック名は，可変記号で指定できる。

ループ内で@@rule文を繰り返し実行する場合には，業務ルール名の値を変化させて，それぞれの業務ルール展開名を区別する。

親ブロック名を指定すると，ここで指定した業務ルール展開名は，この親ブロックの下に位置づけられる。

親ブロック名を省略すると，ツリーの最上位の階層に位置づけられる。ただし，@@rule文が@@parts文から展開されている場合，@@parts文のブロックの下に位置づけられる。

親ブロック名が存在しなかった場合，ツリーの最上位の階層に位置づけられる。

プログラム定義で，業務ルールが選択されていない場合，ソースプログラムへは展開されない。

7.COMMENT　"コメント文字列"

プログラム作成者が，適切な業務ルールを選択できるような注釈を書きます。ここに書いた注釈は，プログラム定義画面の［ユーザ処理］タブに表示されます。

使用例

SEWB+/REPOSITORYのデータ項目辞書の内容，プログラムで使用するファイル中のデータ項目の内容およびテンプレートの@@rule文の内容を照らし合わせながら，業務ルールを抽出する仕組みを説明します。

プログラムで使用するファイルの内容

データ項目と業務ルールの関連

業務ルールのルールスクリプト

テンプレート中の@@rule文の内容と抽出される業務ルールの関係

（例1）

テンプレートの@@rule文

@@rule文の見方

@@rule　"GYOMU1"………このルールの名前。
WITH USAGE……………{　}の記述を抽出条件であると
                    宣言する。
{{USAGE=IN ……………適用条件が「入力」でデータ項
                    目と関連づけられている業務ル
                    ールを抽出する。
REF=@入力ファイル}};…業務ルール中で使用されてい
                     るデータ項目は，@入力ファイ
                     ルのデータ定義に含まれてい
                     るものである。

例1の@@rule文の抽出状況

業務ルール | 抽出状況 | 理　　由
S01 | ○ | @入力ファイルのデータ項目「A」と適用条件「入力」で関連づけられている。また，適用条件が定義されていない「C」は@入力ファイルに格納されている。
S02 | × | @入力ファイルのデータ項目「A」と適用条件「入力」で関連づけられているが，「B」と適用条件「出力」で関連づけられている。
S03 | × | @入力ファイルのデータ項目「B」と適用条件「出力」で関連づけられている。また，S03では@入力ファイルにないデータ項目「D」が使用されている。
S04 | × | @入力ファイルのデータ項目「A」と適用条件「出力」で関連づけられている。また，@入力ファイルにはないデータ項目「E」が使用されている。

（凡例）

○：抽出される。

×：抽出されない。

（例2）

テンプレートの@@rule文

@@rule文の見方

@@rule "GYOMU2"………このルールの名前。
WITH USAGE……………{　}の記述を抽出条件であると
                    宣言する。
{{USAGE=IN REF=@入力ファイル}
          ……………適用条件が「入力」でデータ項
                    目と関連づけられている業務ル
                    ールを抽出する。データ項目は，
                    @入力ファイルのデータ定義に
                    含まれているものである。
{USAGE=OUT REF=@入力ファイル}};
          ……………適用条件が「出力」でデータ項
                    目と関連づけられている業務ル
                    ールを抽出する。データ項目は，
                    @入力ファイルのデータ定義に
                    含まれているものである。

例2の@@rule文の抽出状況

業務ルール | 抽出状況 | 理　　由
S01 | × | @入力ファイルのデータ項目「A」と適用条件「入力」で関連づけられているが，適用条件「出力」で関連づけられているデータ項目がない。
S02 | ○ | @入力ファイルのデータ項目「A」「B」と適用条件「入力」および「出力」で関連づけられている。
S03 | × | @入力ファイルのデータ項目「A」「B」と適用条件「入力」および「出力」で関連づけられているが，S03では@入力ファイルにないデータ項目「D」が使用されている。
S04 | × | @入力ファイルのデータ項目「A」「B」と適用条件「入力」および「出力」で関連づけられているが，S04では@入力ファイルにないデータ項目「E」が使用されている。

（凡例）

○：抽出される。

×：抽出されない。

（例3）

テンプレートの@@rule文

@@rule文の見方

@@rule "GYOMU3"……このルールの名前。
WITH USAGE…………{　}の記述を抽出条件であると宣
                  言する。
{{USAGE=IN REF=@入力ファイル}
         …………適用条件が「入力」でデータ項目
                  と関連づけられている業務ルール
                  を抽出する。データ項目は，@入力
                  ファイルのデータ定義に含まれて
                  いるものである。
{USAGE=OUT REF=@入力ファイル}
          …………適用条件が「出力」でデータ項目
                  と関連づけられている業務ルール
                  を抽出する。データ項目は，@入力
                  ファイルのデータ定義に含まれてい
                  るものである。
REF=@Xファイル};…{　}内のWITH USAGE句の定義を
                  補助する。

例3の@@rule文の抽出状況

業務ルール | 抽出状況 | 理　　由
S01 | × | @入力ファイルのデータ項目「A」と適用条件「入力」で関連づけられているが，適用条件「出力」で関連づけられているデータ項目がない。
S02 | ○ | @入力ファイルのデータ項目「A」「B」と適用条件「入力」および「出力」で関連づけられている。
S03 | ○ | @入力ファイルのデータ項目「A」「B」と適用条件「入力」および「出力」で関連づけられている。S03では@入力ファイルにないデータ項目「D」も使用されているが，抽出補助項目として書かれている@Xファイル中に「D」が格納されている。
S04 | ○ | @入力ファイルのデータ項目「A」「B」と適用条件「入力」および「出力」で関連づけられている。S04では@入力ファイルにないデータ項目「E」も使用されているが，抽出補助項目として書かれている@Xファイル中に「E」が格納されている。

（凡例）

○：抽出される。

×：抽出されない。

（例4）

テンプレートの@@rule文

@@rule文の見方

@@rule "GYOMU4"…………このルールの名前。
{ REF=@入力ファイル};…抽出条件は，業務ルールの中
                      で，@入力ファイルのデータ
                      項目が使用されているかどう
                      かという点だけ。

例4の@@rule文の抽出状況

業務ルール | 抽出状況 | 理　　由
S01 | ○ | 適用条件を意識しないデータ項目「A」「C」が使用されている。
S02 | ○ | 適用条件を意識しないデータ項目「A」「B」が使用されている。
S03 | × | 適用条件を意識しないデータ項目「A」「B」が使用されているが，S03では@入力ファイルにないデータ項目「D」が使用されている。※
S04 | × | 適用条件を意識しないデータ項目「A」「B」が使用されているが，S04では@入力ファイルにないデータ項目「E」が使用されている。※

（凡例）

○：抽出される。

×：抽出されない。

注※

「D」および「E」を持つファイルを抽出補助項目として指定すると，すべての業務ルールが抽出されます。

7.7.3　業務ルールの分割展開

業務ルールは必要に応じて，プログラムのコード上，連続していない複数の個所へ展開できます。業務ルールを分割して展開させるには，@@section文と@@merge文を使用します。@@section文は業務ルール中に，@@merge文はテンプレート中に書きます。なお，@@section文の詳細は，マニュアル「SEWB+/REPOSITORY 辞書設計ガイド」を参照してください。

＜この項の構成＞

(1)　@@section文と@@merge文との関係

(2)　可変記号を指定するときの注意事項

(3)　@@section文の制限事項

(1)　@@section文と@@merge文との関係

業務ルールの定義内容は，通常は，テンプレートで@@rule文が書かれている個所に展開されます。ただし，業務ルールの中に@@section文が書かれている場合は，その部分が，テンプレート中の@@merge文が書かれている個所に展開されます。業務ルールでの記述とテンプレートでの記述，および展開先の場所の関係を次の表に示します。

表7-2　展開場所ごとの業務ルールの記述

業務ルールの記述
テンプレートでの記述
展開場所

@@section　MAIN

業務ルールに@@sectionを書かない

@@rule"業務ルール展開名"が書かれている
@@rule文を書いた場所

@@section　コード名

@@merge　可変記号が書かれている

注

@@section文のコード名と@@merge文の可変記号が一致している※

@@merge文を書いた場所

注※

可変記号は先頭に「@」が付けられるので，「@コード名」となります。可変記号の先頭から「@」を削除した部分と，@@section文のコード名が同一ならば，これらは一致していると見なされます。

表7-2に示されているような展開の仕組みを利用して，一つの業務ルールを分割して展開させることができます。次に分割展開の例を示します。

（例）

（凡例）

実線：@@merge文の位置に展開される場合を示しています。

@@section文には，テンプレート中に書かれた@@merge文に指定されている可変記号の，「@」以降の文字列と同じコード名を書きます。

可変記号については，「(2) 可変記号を指定するときの注意事項」を参照してください。

@@section文が展開される範囲は，別の@@section文が現れるまで有効です。

破線：@@rule文の位置に展開される場合を示しています。

@@section MAINを書くと，テンプレート中の@@rule文が書かれた位置に，@@section文の内容が展開されます。@@section文が展開される範囲は，別の@@section文が現れるまで有効です。

(2)　可変記号を指定するときの注意事項

業務ルールを分割展開させるときには，業務ルール中の「@@section文 コード名」のコード名と，テンプレート中の「@@merge文 可変記号」の先頭の「@」を除いた部分が一致していなければなりません。このため，テンプレート作成者とデータ項目辞書作成者は，どこにどのような可変記号とコード名を使うかを，あらかじめ決めておく必要があります。

(3)　@@section文の制限事項

業務ルール中に@@section文を使用した場合，@@section文以降には展開制御文を使用できません。

7.7.4　展開制御文を使用した業務ルールの展開

業務ルールのルールスクリプトに展開制御文を使用できます。展開制御文を使用すると，さまざまな業務ルールを作成できます。

例えば，業務ルールを分割して展開させるには，@@section文と@@merge文を使用する方法以外に，展開制御文を使用する方法もあります。「7.7.3　業務ルールの分割展開」の例での業務ルール内容を，@@section文を使用しないで@@put文で記述した例を次に示します。

（例1）

（凡例）

実線：@@merge文の位置に展開される場合を示しています。

破線：@@rule文の位置に展開される場合を示しています。

7.8　XML文書の利用

XMLには，タグを定義しデータ構造を階層化して表現できるという特徴があります。SEWB+/CONSTRUCTIONでは，WorkCoordinator Definerで作成したビジネスプロセス定義のXMLで記述された文書を，プログラム生成のためのパラメタとして利用できます。WorkCoordinator Definerについては，マニュアル「WorkCoordinator Definer Version 3 ユーザーズガイド」を参照してください。

＜この節の構成＞

7.8.1　XML文書とは

7.8.2　XML文書の構造

7.8.3　XML文書の参照方法

7.8.4　SEWB+/CONSTRUCTIONで取り込むことができるXMLファイル

7.8.1　XML文書とは

XML文書は，XML宣言，DTD，および文書インスタンスで構成されています。

テンプレートでは，文書インスタンスの内容を参照できます。XML宣言やDTDの内容は参照できません。

＜この項の構成＞

(1)　ＸＭＬ宣言

(2)　DTD

(3)　文書インスタンス

(1)　ＸＭＬ宣言

XML宣言では，XMLのバージョンや文字コードを宣言します。 XMLのバージョンを宣言する場合，version="1.0"を指定します。 XML文書をSJISで作成している場合，encoding="Shift_JIS"を指定する必要があります。なお， XML宣言は省略できます。

(2)　DTD

DTDでは，要素の型や属性リストを宣言します。 DTDの扱いは，@@interface文で指定する解析レベル（PARSE_LEVEL）によって異なります。なお，DTDは省略できます。

解析レベル | 意味
1 | 文書インスタンスだけを解析し，XML文書をテンプレートから参照できるようにする。
2 | 解析レベル1に加えて，DTDを解析し，DTDで指定されたデフォルト値を挿入する。ただし，文書インスタンスとDTDの整合性は検証しない。

注1

XML文書の解析時間は，解析レベル1が短く，解析レベル2が長くなります。

注2

@@interface文で解析レベルを指定しない場合は，1が仮定されます。

(3)　文書インスタンス

文書インスタンスは，タグ付きの文書で記述されます。この内容は，テンプレートにXML関数を記述することで参照できます。また，解析レベル2を指定すると，XML文書が持っているDTDのデフォルト値が入っている内容も参照できます。

7.8.2　XML文書の構造

タグを付けたデータを階層化して表現するXML文書は，テンプレートで参照する場合，木構造で表現されます。木構造はノードで表現され，ノード同士が親子関係や包含関係を結んで形成します。情報を検索するときは，この木構造をたどります。テンプレートから参照する場合のXML文書の階層構造の考え方を次に示します。

＜この項の構成＞

(1)　ノードの種類

(2)　ノード同士の関係

(1)　ノードの種類

XML文書のタグ，タグの属性およびタグを付けられたテキストをそれぞれノードとして扱います。ノードには次の3種類があります。

要素ノード
XML文書のタグに対応し，タグ名で表現されます。なお，ここでは要素ノードを次のような記号で表します。

属性ノード
XMLの属性リストに対応し，属性名および属性値で表現されます。なお，ここでは属性値を次のような記号で表します。

テキストノード
XML文書の開始タグと終了タグで囲まれたテキストに対応します。なお，ここではテキストノードを次のような記号で表します。

(2)　ノード同士の関係

ノード同士の関係を次に示します。

(a)　親子関係（要素ノードと要素ノード，または要素ノードとテキストノード）

要素ノードと要素ノード，または要素ノードとテキストノードは，親と子供の関係で表現します。親子関係の例を次に示します。この場合，要素ノードが「親ノード」，テキストノードが「子供ノード」となります。

（例1）

(b)　包含関係（要素ノードと属性ノード）

要素ノードと属性ノードは包含関係で表現します。包含関係の例を次に示します。

（例2）

(c)　ノード構造の例

ノードは，親子関係と包含関係で構成されています。ノード構造の例を次に示します。なお，構造中で最上位に位置するノードをルートノードと呼びます。テンプレートからXML文書を参照する場合，必ずルートノードから参照を始めます。

（例3）親子関係と包含関係の混在

7.8.3　XML文書の参照方法

テンプレートでXML文書を参照する方法を説明します。

＜この項の構成＞

(1)　ルートノードの設定

(2)　ノードの内容の参照

(3)　XML文書の木構造をたどる

(1)　ルートノードの設定

テンプレートでXML文書を参照する場合，必ずルートノードから参照を始めることになります。テンプレートではATTR=XMLを指定した@@interface文の可変記号に，ルートノードが設定されます。

（例）可変記号 @XmlDocにルートノードを設定する。

@@interface @XmlDoc = {ATTR=XML};

(2)　ノードの内容の参照

可変記号に設定されたノードの内容は，可変記号に添字を指定して参照します。ノードの種類によっては参照される情報が異なります。なお，ノードの種類はキーワードのTypeで判断できます。

ノードの種類 | 添字に指定するキーワード
Type | Name | Value
要素ノード | 2※¹ | タグ名※² | 長さが0の文字列が設定される。
属性ノード | 3※¹ | 属性名※² | 属性値※²
テキストノード | 6※¹ | #text※¹ | テキスト※²

注※1

固有の値が参照されます。

注※2

XML文書で指定された値が参照されます。

（例）ルートタグ名をメッセージウィンドウに表示する。

@@interface @XmlDoc = {ATTR=XML};

@@msg "ルートのタグ名は @XmlDoc[NAME] です。";

(3)　XML文書の木構造をたどる

XML関数を使用すると，木構造をたどって目的のノード情報を参照できます。

項番
関数名
機能
取得されるノード

要素
テキスト
属性

1
@@xmlparent
（可変記号）
親ノード情報を取得する。
○
×
×

2
@@xmlchildnodes
（可変記号）
すべての子供ノードの情報を取得する。
この関数は複数のノードを配列で返す。
○
○
×

3
@@xmlfirstchild
（可変記号）
先頭の子供のノード情報を取得する。
○
○
×

4
@@xmllastchild
（可変記号）
最後の子供ノード情報を取得する。
○
○
×

5
@@xmlprevious
（可変記号）
同じ親を持つ直前のノード情報を取得する。
○
○
×

6
@@xmlnext
（可変記号）
同じ親を持つ直後のノード情報を取得する。
○
○
×

7
@@xmlelements
（可変記号，"タグ名"）
指定されたタグ名を持ち，下位に位置するすべての要素ノードの情報を取得する。この関数は，複数のノードを配列で返す。タグ名に'*'を指定した場合，すべての要素ノードを返す。
○
×
×

8
@@xmlattribute
（可変記号，"属性名"）
指定された属性名を持つ属性ノード情報を取得する。属性名に'*'は指定できない。
×
×
○

（凡例）

○：取得できる。

×：取得できない。

これらの関数を展開したとき，「基準となるノード」を起点にして，どのように木構造が検索されて，ノード情報が取得されるかを次の図に示します。

なお，図中の番号は「(3) XML文書の木構造をたどる」の表の項番と対応しています。

7.8.4　SEWB+/CONSTRUCTIONで取り込むことができるXMLファイル

SEWB+/CONSTRUCTIONで使用できるXMLファイルの条件を次に示します。

＜この項の構成＞

(1)　ファイル形式が確定し，公開されている

(2)　構文にエラーがない

(1)　ファイル形式が確定し，公開されている

テンプレートを作成するためには，取り込むXMLファイルの形式（タグ名称，属性名など），構造を知っておく必要があります。タグ名称，属性名が不明または誤っていると，取り込み部分の選択が正しく表示されなかったり，基点となる属性ノードが定まらないで，生成するときに属性エラーになったりします。また，取り込み内容を展開するコーディングがXMLファイルの構造に一致していないと，生成するときに，構文エラーになります。

(2)　構文にエラーがない

SEWB+/CONSTRUCTIONは，取り込むXMLファイルに対してファイルを解析するため，未完成のXMLファイルなど，構文にエラーのあるXMLファイルを取り込むことができません。XMLファイルの選択で，構文にエラーのあるXMLファイルを選択すると，エラーダイアログが表示されます（エラー詳細は，エラーファイルに出力されます）。

7.9　文と関数

＜この節の構成＞

7.9.1　文と関数一覧

7.9.2　@@break文

7.9.3　@@columnlist関数

7.9.4　@@continue文

7.9.5　@@count関数

7.9.6　@@defined関数

7.9.7　@@diagram文

7.9.8　@@errorexit文

7.9.9　@@expand文

7.9.10　@@file文

7.9.11　@@foreach文

7.9.12　@@getdata関数

7.9.13　@@getdate関数

7.9.14　@@getmemo関数

7.9.15　@@getrfile関数

7.9.16　@@getsign関数

7.9.17　@@global文

7.9.18　@@if文

7.9.19　@@interface文

7.9.20　@@itemlist関数

7.9.21　@@lang文

7.9.22　@@leadbyte関数

7.9.23　@@length関数

7.9.24　@@lengthb関数

7.9.25　@@merge文

7.9.26　@@modify関数

7.9.27　@@msg文

7.9.28　@@parts文

7.9.29　@@pic関数

7.9.30　@@proc文

7.9.31　@@put文

7.9.32　@@reclen関数

7.9.33　@@rule文

7.9.34　@@set文

7.9.35　@@str関数

7.9.36　@@strb関数

7.9.37　@@switch文

7.9.38　@@uoc文

7.9.39　@@uocdefined関数

7.9.40　@@while文

7.9.41　@@xmap3common関数

7.9.42　@@xmap3objects関数

7.9.43　@@xmlattribute関数

7.9.44　@@xmlchildnodes関数

7.9.45　@@xmlelements関数

7.9.46　@@xmlfirstchild関数

7.9.47　@@xmllastchild関数

7.9.48　@@xmlnext関数

7.9.49　@@xmlparent関数

7.9.50　@@xmlprevious関数

7.9.1　文と関数一覧

テンプレート，部品および業務ルールの記述で使用できる文と関数の一覧を次の表に示します。

表7-3　文と関数の一覧

項番
文および関数
内　容
使用できる場所

テンプレート
部品
業務
ルール

1
@@break；
ループ処理からの脱出
○
○
○

2
@@columnlist（可変記号）
列名を配列の値として取得
○
○
○

3
@@continue；
ループ処理ジャンプ
○
○
○

4
@@count（可変記号）
配列個数参照
○
○
○

5
@@defined（可変記号）
未定義値の判定
○
○
○

6
@@diagram "ブロック名"
[ PARENT="親ブロック名"]
[ COMMENT="説明文字列"];
ユーザ追加処理および業務ルール処理の一覧をツリー形式で表示
○
△
×

7
@@errorexit；
プログラム生成の中止
○
○
○

8
@@expand 可変記号
[修飾名[，位置]]
[ PREFIX=文字定数]
[ SUFFIX=文字定数]
[ START=開始値][UP=増分値]
[ START_POSITION=開始位置]
[ {VALUE | NOVALUE}] ;
データ定義のレコードの展開
○
○
○

9
@@file文 "ブロック名"
OUTPUT_NAME="出力ファイル名"
[ PARENT="親ブロック名"]
[ COMMENT="説明文字列"];
生成ファイルを指定
○
×
×

10
@@foreach 可変記号1 (可変記号2)
文
@@end;
リスト処理
○
○
○

11
@@getdata(可変記号
[ {,"リポジトリの言語区分"
[,BASIC_ATTR] | ,,BASIC_ATTR} ] )
可変記号のソース生成属性を取得
○
○
○

12
@@getdate（）
日付と時刻を取得
○
○
○

13
@@getmemo（）
［メモ］タブの情報を取得
○
○
○

14
@@getrfile（）
リソースステータスの［ファイル］タブの情報を取得
○
○
○

15
@@getsign（）
［サイン］タブの情報を取得
○
○
○

16
@@global　可変記号；
グローバル宣言
○
○
○

17
@@if (条件式1)
文1
[[@@elseif (条件式2)
文2],…]
[@@else
文3]
@@end;
判定
○
○
○

18
@@interface　可変記号 {};
データ定義，プログラム定義とのインタフェースの指定
○
×
×

19
@@itemlist（可変記号）
列名の埋め込み変数を配列の値として取得
○
○
○

20
@@lang { COBOL | C | "言語種別" }
[ FOR_REPOSITORY =
"リポジトリの言語区分"]
[ EXTENSION = "拡張子"]
[ MODIFY_CONNECT = "連結文字"]
[ MODIFY_ORDER =
{ DESCEND | ASCEND}]
[ UOC_BEGIN= "ユーザ追加処理の先頭に挿入する文字列"]
[ UOC_END = "ユーザ追加処理の末尾に挿入する文字列"];
生成言語種別の指定
○
×
×

21
@@leadbyte（可変記号）
2バイトコードのリードバイトの判定
○
○
○

22
@@length（可変記号）
文字列長を文字数で求める
○
○
○

23
@@lengthb（可変記号）
文字列長をバイト数で求める
○
○
○

24
@@merge　可変記号；
可変記号マージ
○
○
○

25
@@modify(可変記号[,[接頭語]
[,[接尾語][,[最上位項目名]]]])
修飾情報付きデータ項目名展開
○
○
○

26
@@msg　文字定数；
メッセージ出力
○
○
○

27
@@parts"ブロック名"
REF=可変記号
[ PARENT="親ブロック名"]
[ COMMENT="説明文字列"]
プログラム定義で指定した部品の挿入位置
○
×
×

28
@@pic（可変記号）
PICTURE文字列の取得
○
○
○

29
@@proc プロシジャ名
([引数[COMMENT="引数の説明"]]…)
文
部品内プロシジャ宣言
×
○
×

30
@@put 可変記号 <<
文
@@end;
テキストの設定
○
○
○

31
@@reclen（可変記号［修飾名］）
レコード長の取得
○
○
○

32
@@rule "業務ルール展開名"
WITH USAGE
{
{USAGE= {IN | OUT}
REF=データ項目可変記号
[PREFIX= {文字定数 | 可変記号}]
[SUFFIX= {文字定数 | 可変記号}]
[TOP= {文字定数 | 可変記号}]
[TYPE= {ATTRIBUTES |
ARGUMENTS |
EXCEPTIONS |
RETURNTYPE } ]
[IO= {IN | OUT | IN_OUT}]…
}…
}…
[PARENT="親ブロック名"]
[COMMENT="コメント文字列"];
…
}…
[PARENT="親ブロック名"]
[COMMENT="コメント文字列"];
業務ルールの抽出および展開位置の指定
○
△
×

33
@@set 可変記号 = 代入式;
値設定
○
○
○

34
@@str（可変記号，先頭位置［，文字列長］）
文字単位での可変記号の部分参照
○
○
○

35
@@strb（可変記号）
バイト単位での可変記号の部分参照
○
○
○

36
@@switch (可変記号)
@@case 値1:
文1
[[@@case 値2:
[文2]]…]
[@@default:
文3]
@@end;
選択
○
○
○

37
@@uoc "UOC名"
[ PARENT="親ブロック名"]
[ COMMENT="説明文字列"]
[ SUPPRESS];
ユーザ追加処理の位置指定
○
△
×

38
@@uocdefined　（"UOC名"）
ユーザ追加処理がプログラム定義で入力されているか判定
○
○
○

39
@@while (条件式)
文
@@end;
ループ
○
○
○

40
@@xmap3common（可変記号）
マップ定義の共通情報を取得
○
○
○

41
@@xmap3objects（可変記号）
マップ定義のオブジェクト情報を取得
○
○
○

42
@@xmlattribute（可変記号，"属性名"）
属性名をキーにした属性ノードを取得
○
○
○

43
@@xmlchildnodes（可変記号）
すべての子供ノードを取得
○
○
○

44
@@xmlelements（可変記号，"タグ名"）
タグ名をキーにした要素ノードを取得
○
○
○

45
@@xmlfirstchild（可変記号）
最初の子供ノードを取得
○
○
○

46
@@xmllastchild（可変記号）
最後の子供ノードを取得
○
○
○

47
@@xmlnext（可変記号）
同じ親を持つ直後のノードを取得
○
○
○

48
@@xmlparent（可変記号）
親ノードを取得
○
○
○

49
@@xmlprevious（可変記号）
同じ親を持つ直前のノードを取得
○
○
○

（凡例）

○：使用できる。

△：使用できる。ただし，業務ルールから呼び出される場合は使用できない。

×：使用できない。

注

［　］は省略できることを示します。

｛　｝は項目のどれか一つを記述することを示します。

7.9.2　@@break文

形式

@@break;

機能

@@foreach文，@@switch文，または@@while文のループの実行を終了し，ループ外の次の文を実行するときに使用します。

@@foreach文，@@switch文，@@while文がネストしている場合，@@break文が指定されているループの最も外側のネストとなる文までの実行を終了します。

規則

ループ中でない場合は次の文を実行する。

使用例

7.9.3　@@columnlist関数

形式

@@columnlist（可変記号）

機能

表・ビューを構成する列名を配列の値として取得するときに使用します。

規則

@@set文の右辺に指定する。

可変記号は@@interface文でATTR=DB（RDB定義）を指定した可変記号を指定する。

言語種別がSQLの場合，データ項目の名前※1が取得できる。
データ定義で結合項目を取り込んでいる場合，最上位結合項目の言語別の名前※1が取得できる。
データ定義でレコード定義ファイル※2を取り込んでいる場合，2番目のデータ項目※3と同じレベル番号が指定されたデータ項目の名前※1が取得できる。

注※1

SQLの名前が指定されていない場合は，データ項目名が取得されます。

注※2

SEWB+/RECORD DEFINERで定義したレコード定義ファイル（.csc）を指します。

注※3

SEWB+/RECORD DEFINERのレコード定義では，項番2の項目に該当します。

使用例

7.9.4　@@continue文

形式

@@continue;

機能

@@continue文は，@@foreach文，または@@while文中の@@continue文が記述された文のループの実行を終了し，そのループの条件式を実行します。ネストしていない文で記述された場合は，直後の文を実行します。

規則

@@continue文が実行されると，ループの条件式が実行する文に制御が移される。

ネストしていない文中では，次の文を実行する。

使用例

7.9.5　@@count関数

形式

@@count（可変記号）

機能

@@count関数は9けたの正の整数を示す数値関数です。配列の要素数を取り出すときに使用します。

規則

可変記号が配列の構造を持たないときは，値が1となる。

可変記号の添字がキーワードでない場合，要素の数となる。

配列の途中を飛ばして値が設定されている場合，値が設定されているところまでの配列数を返す。

使用例

（例1）

@@* 指定されたファイルの数を求める
@@set @CNT = @@count(@参照ファイル);　…参照ファイルに
　　　　　　　　　　　　　　　　　　　　指定された値が
　　　　　　　　　　　　　　　　　　　　[2]までのため，
　　　　　　　　　　　　　　　　　　　　@CNTには2が設定
　　　　　　　　　　　　　　　　　　　　される。

（例2）

@@set @A[1] = 1 ;
@@set @A[100] = 10 ;
@@set @CNT = @@count(@A) ;  …@CNTには100が入る。

（例3）

@@set @B[a] = 'A' ;
@@set @B[abc] = 'B' ;
@@set @CNT = @@count(@B) ; …@Bの添字の要素が2
                            個のため@CNTには2
                            が入る。

7.9.6　@@defined関数

形式

@@defined（可変記号）

機能

@@defined関数は，可変記号が未定義値かどうかを判定するときに使用する論理関数です。可変記号が未定義とは，文字列値も数値も設定されていない状態です。

規則

@@merge文，@@put文，@@global文に指定された可変記号には真を返す。

@@interface文で指定された可変記号に修飾名を指定しない場合，真を返す。

@@interface文で指定された可変記号に修飾名を指定し，プログラム定義でデータ定義ファイルを選択したときは真を返し，データ定義ファイルを選択しないときは偽を返す。

@@set文で可変記号に値が設定されているときには真を返し，@@set文で値が設定されていないときは，偽を返す。

@@defined関数は条件式中でしか使用できない。

使用例

7.9.7　@@diagram文

形式

@@diagram "ブロック名"[ PARENT = "親ブロック名"]

　　　　　　　 [COMMENT = "説明文字列"];

注

［　］は省略できることを示します。

機能

プログラム定義の［ユーザ処理］タブでのユーザ追加処理（UOC）および業務ルール処理の一覧を，ツリー形式で表示させるときに使用します。@@diagram文を使って生成するソースプログラムの構造を表現し，さらに@@uoc文や@@rule文を使って，その中でユーザ追加処理や業務ルール処理を使う位置に配置します。これによって，プログラム作成者がユーザ追加処理や業務ルール処理を開いて見なくてもおおよその内容がわかるようにできます。

規則

ブロック名には，処理のブロック（処理の単位）を識別するための文字列を指定する。

ブロック名，親ブロック名の文字列には可変記号を指定する。

ループの中で@@diagram文を繰り返し実行する場合には，ブロック名に可変記号を指定してユニークにし，それぞれのブロックを区別する。

親ブロック名を指定した場合，ブロック名は親ブロックの子ブロックとして位置づけられる。

親ブロック名を省略すると，最上位の階層に位置づけられる。ただし，@@diagram文が@@parts文から展開されている場合，@@parts文のブロックの下に展開される。

説明文字列は［ユーザ処理］タブの説明欄に表示される。

親ブロック名が存在しない場合は，最上位の階層に位置づけられる。

使用例

このとき，［ユーザ処理］タブには，次のようにユーザ追加処理（UOC）および業務ルール処理の一覧が表示されます。

7.9.8　@@errorexit文

形式

@@errorexit;

機能

プログラム生成を中止するときに使用します。処理を中止し，プログラム生成中にエラーがあったという生成中止のメッセージをエラーウィンドウに表示します。

規則

「errorexit文の実行により生成処理を中止しました。」というメッセージが出力される。

使用例

7.9.9　@@expand文

形式

@@expand 可変記号 [修飾名 [，位置] ]

　　　　　[ PREFIX=文字定数] [SUFFIX=文字定数]

　　　　　[ START=開始値] [UP=増分値]

　　　　　[ START_POSITION=開始位置]

　　　　　[ {VALUE | NOVALUE} ] ;

注

［　］は省略できることを示します。

｛　｝は項目のどちらか一つを記述することを示します。

機能

データ定義のレコードの生成を指示するときに使用します。

規則

言語種別がC，またはCOBOLの場合に指定する。

言語種別がCOBOLの場合，レコード定義を参照するデータ定義が指定できる。

可変記号名は@@interface文のATTRでデータ定義種別を指定した可変記号を指定する。

修飾名は，データ定義識別子がRECORD_NAMEでなければならない。

データ定義で結合項目またはレコード定義ファイルが複数指定されている場合，生成したい結合項目またはレコード定義ファイルの位置（データ定義で指定した結合項目の順序）を指定する。すべての結合項目およびレコード定義ファイルをレコード生成の対象にする場合，結合項目の位置を省略する。

（例）

データ定義で指定した2番目の結合項目のレコード生成を行う。

@@expand @入力ファイル[レコード名，2]；

PREFIXには，生成するデータ項目名の先頭に付ける文字列を文字定数で指定する。

SUFFIXには，生成するデータ項目名の末尾に付ける文字列を文字定数で指定する。

PREFIXおよびSUFFIXの指定は，言語種別がCOBOLでデータ項目名がFILLERの場合，無視される。

レベル番号の開始値または増分値の指定がない場合，データ定義で定義された開始値または増分値で展開される。

STARTは，言語種別がCOBOLの結合項目のレコード生成のときだけ有効である。ほかの場合は無視する。なお，COBOLのレコード定義ファイルのレコード生成の場合は，レコード定義ファイルで指定されたレベル番号で生成される。

STARTには，COBOLのレベル番号の開始値を数値定数または可変記号で指定する。開始値は1～49の範囲で指定する。

UPは，言語種別がCOBOLのときだけ有効である。多言語の場合は無視する。

UPには，COBOLのレベル番号の増分値を数値定数または可変記号で指定する。増分値は1～48の範囲で指定する。

STARTおよびUPは，結合項目のレコード生成の場合だけ有効である。レコード定義ファイルのレコード生成の場合は無視され，レコード定義ファイルで指定されたレベル番号で生成される。

レコード定義ファイルにコピー文（タイプ@）の指定がある場合，COPY文で展開する。

COPY文で展開する場合，PREFIXおよびSUFFIXの指定値を，COPY文のPREFIX句およびSUFFIX句に生成する。

START_POSITIONには，レコード生成を開始するカラム位置を数字定数または可変記号で指定する。カラム位置は1～99の範囲で指定する。省略した場合は2が仮定される。

言語種別がCOBOLで，環境変数のCOBOLソース正書法が固定形式またはホスト向け固定形式の場合， START_POSITIONの値に6を加えたカラム位置から生成する。

レベル番号が49を超えた場合はエラーメッセージを出力し，レコードの展開を中止する。

展開時に，データ項目の重複チェックおよびデータ項目名長のチェックは行われない。

VALUE，およびNOVALUEは，言語種別がCOBOLのときだけ有効である。他言語の場合は無視する。

VALUEはデータ項目の初期値を生成するときに指定する。NOVALUEのときにはデータ項目の初期値を生成しない。VALUE，およびNOVALUEの指定がない場合にはNOVALUEを仮定する。

レコード生成をするデータ項目のタイプには，リポジトリに最初から登録されているCまたはCOBOL用のタイプだけ使用できる。

生成規則

レコードの生成規則を次の表に示します。

表7-4　レコード生成時に有効に使用されるデータ項目の定義情報

項番
区分
データ項目定義情報
COBOL
C

1
名称
データ項目名
○※¹
○※¹

2
標準名称
×
×

3
振り仮名
×
×

4
属性
分類
×
○

5
けた数
○
○

6
小数部けた数
○
○

7
反復回数
○
○

8
付加情報
フィールド1～20
×
×

9
コメント
×
×

10
言語別
詳細情報
名前
○
○

11
タイプ
○
○

12
数字編集文字列
○
×

13
初期値
○※²
×

14
言語別フィールド
×
×

15
取りうる値
○
○

（凡例）

○：使用する。

×：使用しない。

注※1

言語別詳細情報の名前が指定されていない場合，使用します。

注※2

@@expand文にVALUEの指定がある場合，使用します。

表7-5　COBOL用レコード生成キーワード表

項番 | 辞書属性（タイプ） | レコード生成キーワード
1 | X（英数字項目） | データ項目名 PIC X（けた数） OCCURS 反復回数 VALUE 初期値
2 | Z（数字編集項目） | データ項目名 PIC 数字編集文字列 OCCURS 反復回数 VALUE 初期値
3 | N（漢字項目） | データ項目名 PIC N（けた数） OCCURS 反復回数 VALUE 初期値
4 | 9（符号なし外部10進項目） | データ項目名 PIC 9（けた数－小数部けた数） V9（小数部けた数） OCCURS 反復回数 VALUE 初期値
5 | S（符号付き外部10進項目） | データ項目名 PIC S9（けた数－小数部けた数） V9（小数部けた数） OCCURS 反復回数 VALUE 初期値
6 | U（符号なし内部10進項目） | データ項目名 PIC 9（けた数－小数部けた数） V9（小数部けた数） USAGE PACKED-DECIMAL OCCURS 反復回数 VALUE 初期値
7 | P（符号付き内部10進項目） | データ項目名 PIC S9（けた数－小数部けた数） V9（小数部けた数） USAGE PACKED-DECIMAL OCCURS 反復回数 VALUE 初期値
8 | BU（符号なし2進項目） | データ項目名 PIC 9（けた数－小数部けた数） V9（小数部けた数） USAGE BINARY OCCURS 反復回数 VALUE 初期値
9 | B（符号付き2進項目） | データ項目名 PIC S9（けた数－小数部けた数） V9（小数部けた数） USAGE BINARY OCCURS 反復回数 VALUE 初期値
10 | E（外部浮動小数点項目） | データ項目名 PIC 数字編集文字列 OCCURS 反復回数
11 | D（内部浮動小数点項目） | データ項目名 COMP-1またはCOMP-2 OCCURS 反復回数 VALUE 初期値
12 | 1　（内部ブール項目） | データ項目名 PIC 1（けた数）USAGE BIT OCCURS 反復回数 VALUE 初期値
13 | 8（外部ブール項目） | データ項目名 PIC 1（けた数）USAGE DISPLAY OCCURS 反復回数 VALUE 初期値
14 | T（アドレスデータ項目） | データ項目名 USAGE ADDRESS OCCURS 反復回数 VALUE 初期値
15 | フリー定義 | データ項目名 フリー定義

注1

日立COBOL2002以外の言語種別を使用している場合は，レコード生成キーワードのカスタマイズが必要になる場合があります。レコード生成キーワードのカスタマイズについては，マニュアル「SEWB+/REPOSITORY 辞書設計ガイド」の環境構築ユティリティについての記述を参照してください。

注2

「取りうる値」が定義されている場合，表中の生成に続けて，次に示す形式でレコード生成されます。ただし，値が指定されていない場合，その値を含む「88記号　VALUE値」は生成されません。

表7-6　C言語用生成規則

項番 | 辞書属性（タイプ） | 生成キーワード
1 | char（文字型） | char データ項目名 ［反復回数］［けた数］※
2 | char*（文字型） | char* データ項目名 ［反復回数］
3 | short（符号付き短整数型） | short データ項目名 ［反復回数］
4 | unsigned short（符号なし短整数型） | unsigned short データ項目名 ［反復回数］
5 | int（符号付き整数型） | int データ項目名 ［反復回数］
6 | unsigned int（符号なし整数型） | unsigned int データ項目名 ［反復回数］
7 | long（符号付き長整数型） | long データ項目名 ［反復回数］
8 | unsigned long（符号なし長整数型） | unsigned long データ項目名 ［反復回数］
9 | float（単精度浮動小数点型） | float データ項目名 ［反復回数］
10 | double（倍精度浮動小数点型） | double データ項目名 ［反復回数］
11 | long double（拡張精度浮動小数点型） | long double データ項目名 ［反復回数］
12 | フリー定義 | フリー定義 データ項目名

注

「取りうる値」が定義されている場合，表中の生成に続けて，次に示す形式でレコード生成されます。ただし，値が指定されていない場合，その値を含む「＝値」は生成されません。

注※

けた数は，辞書で指定したけた数に文字列の末尾を示す1文字分を追加した値で生成されます。また，データ項目の分類が漢字項目の場合，けた数は2倍して生成されます。

使用例

（例1）言語種別がCOBOLのとき

（例2）言語種別がC言語のとき

（例3）取りうる値の例

言語種別がCOBOLのとき

言語種別がC言語のとき

7.9.10　@@file文

形式

@@file "ブロック名" OUTPUT_NAME="出力ファイル名"

[ PARENT="親ブロック名"]

[ COMMENT="説明文字列"];

注

［　］は省略できることを示します。

機能

1テンプレート中に複数の出力先を明記することで，1回の生成操作で複数のファイルを生成できます。ただし，この機能を使用するとCOBOL開発支援との連携はできません。

規則

@@file文から次の@@file文まで（または最後まで）を，指定した出力ファイル名で生成する。

ブロック名には，処理のブロック（処理の単位）を識別するための文字列を指定する。

出力ファイル名には，ドライブ名は指定できない。

出力ファイル名に存在しないディレクトリを指定した場合，ディレクトリを作成する。

OUTPUT_NAME句は，ブロック名の直後に指定する。

ブロック名，親ブロック名，出力ファイル名の文字列には可変記号を指定できる。

ブロック名は［ユーザ処理］タブに表示される。

ブロック名は@@diagram文，@@uoc文，@@rule文のPARENTに指定できる。

親ブロック名は，プログラム定義の［ユーザ処理］タブでファイルの一覧をツリー形式で表示させるときに，指定したブロック名の親になるブロック名を指定する。

親ブロック名を指定した場合，ブロック名は親ブロックの子ブロックとして位置づけられる。

親ブロック名を省略すると，最上位の階層に位置づけられる。

親ブロック名が存在しない場合は，最上位の階層に位置づけられる。

説明文字列は［ユーザ処理］タブの説明欄に表示される。

最初の@@file文以前に次の文は記述できない。
・展開文
・@@uoc文
・@@rule文
・@@merge文
・@@put文に記述されていない@@expand文

使用例

7.9.11　@@foreach文

形式

@@foreach 可変記号1 (可変記号2)

文

@@end;

機能

可変記号2の配列中の要素を可変記号1に一つずつ取り出して，処理を繰り返して実行するときに使用します。

規則

可変記号1には可変記号2の配列の値が順に設定されて，配列の要素がなくなるまで文が繰り返し実行される。

可変記号1は@@foreach文だけで使用され，@@foreach文のループの外側に同一の可変記号名があった場合，別の可変記号として扱われる。

可変記号2が配列の要素を持たない場合，1個の要素として処理される。

可変記号2の添字が位置指定（数字）の場合，1から要素の最後までループする。

可変記号の添字がキーワード指定（文字）の場合，設定された順序で最後までループする。

使用例

7.9.12　@@getdata関数

形式

@@getdata( 可変記号 [ { ,"リポジトリの言語区分" [,BASIC_ATTR]

| ,,BASIC_ATTR } ] )

注

［　］は省略できることを示します。

｛　｝は項目のどちらか一つを記述することを示します。

機能

@@interface文で指定した可変記号からデータ項目の定義情報を取得するときに使用します。データ定義ファイルからレコード定義を参照している場合，レコード定義で定義されたデータ項目の情報も取得できます。

規則

@@set文の右辺に指定する。

可変記号には@@interface文でATTR=ITEMを指定した修飾名，またはATTRでデータ定義種別を指定した可変記号を指定できる。

リポジトリの言語区分によって，言語別詳細情報の対象言語を選択できる。

リポジトリの言語区分はSEWB+/REPOSITORYに登録されている言語区分を文字定数で指定する。省略した場合，@@lang文のFOR_REPOSITORY句の指定に従う。

BASIC_ATTRを指定すると，データ項目の基本属性タブ情報の取得ができる。

データ項目の定義情報は，@@set文の左辺の可変記号に二次元の配列で設定される。

一次元目の配列はデータ項目ごとに確保され，その要素数は下位のデータ項目を含めた数と同じ。一次元の配列の添字には，数値を指定する。

二次元目の配列は，データ項目の定義情報ごとに確保される。二次元の配列の添字には，キーワードを指定する。

基本属性タブ情報の標準名称，振り仮名，コメント，およびフィールドは，辞書での指定順に三次元の配列として設定される。

三次元の配列の要素には，各定義情報の定義順を数値で指定する。

レコード定義ファイルにコピー文（タイプ@）の指定がある場合，下位のレコード定義情報は参照できない。

取得できるデータ項目の定義情報は，データ定義に結合項目が指定されている場合と，レコード定義が指定されている場合で異なります。データ項目の定義情報を次の表に示します。

表7-7　データ項目の定義情報（データ定義に結合項目が指定されている場合）

データ項目の定義情報 | 添字に指定するキーワード
名称 | データ項目名 | DataItemName
属性 | 分類 | Type※¹
けた数 | Digit※²※³
小数部けた数 | FloatDigit※²※³
反復回数 | RepeatLevel※²
言語別詳細情報 | 名前 | SourceName
タイプ／フリー定義 | SourceType※⁴
タイプ修飾情報 | TypeModifyInfo
初期値 | InitValue
フィールド | Field
取りうる値の定義数 | AvailableCount ※⁵
取りうる値の記号 | AvailableName ※⁶
取りうる値の値 | AvailableValue ※⁶
データ項目の結合関係を表す情報 | レベル | Level※⁷
上位の項目の位置 | ParentRow※⁸
基本属性タブ情報 | 国語別情報の定義数 | LangTypeCount※⁹
標準名称 | StdName※¹⁰
振り仮名 | Furigana※¹⁰
コメント | Comment※¹⁰
フィールドの定義数 | FieldCount※¹¹
フィールド | BasicField※¹²

表7-8　データ項目の定義情報（データ定義にレコード定義ファイルが指定されている場合）

データ項目の定義情報 | 添字に指定するキーワード | 辞書参照なし | 辞書参照あり
名称 | データ項目名 | DataItemName | ○ | ○
属性 | 分類 | Type※1 | × | ○
けた数 | Digit※2※3 | ○ | ○
小数部けた数 | FloatDigit※2※3 | ○ | ○
反復回数 | RepeatLevel※2 | ○※19 | ○
言語別詳細情報 | 名前 | SourceName | ○ | ○
タイプ／フリー定義 | SourceType※4 | ○ | ○
タイプ修飾情報 | TypeModifyInfo | ○※19 | ○
初期値 | InitValue | ○※19 | ○
フィールド | Field | × | ○
取りうる値の定義数 | AvailableCount ※5 | × | ○
取りうる値の記号 | AvailableName ※6 | × | ○
取りうる値の値 | AvailableValue ※6 | × | ○
データ項目の結合関係を表す情報 | レベル | Level※7 | ○ | ○
上位の項目の位置 | ParentRow※8 | ○ | ○
基本属性タブ情報 | 国語別情報の定義数 | LangTypeCount※9 | ○ | ○
標準名称 | StdName※10 | ○ | ○
振り仮名 | Furigana※10 | × | ○
コメント | Comment※10 | ○ | ○
フィールドの定義数 | FieldCount※11 | × | ○
フィールド | BasicField※12 | × | ○
レコード定義固有の情報 | CHARCTER TYPE | CharcterType※13 | ○※19 | ○
CHARCTER TYPE値 | CharcterTypeValue | ○※19 | ○
指標名 | Index | ○※19 | ○
可変反復回数項目名 | RepeatLevelName | ○※19 | ○
可変反復回数最小値 | RepeatMini | ○※19 | ○
アドレス名 | AddressName | ○※19 | ○
再定義名 | RedefineName | ○※19 | ○
EXTERNAL | External※14 | ○※19 | ○
SYNC | Sync※15 | ○※19 | ○
JUST | Just※16 | ○※19 | ○
BLANK ZERO | BlankZero※17 | ○※19 | ○
辞書参照 | Dict※18 | ○※19 | ○

（凡例）

○：定義情報を取得できる

×：常に0文字の文字列が設定される

注

SourceType，Level，ParentRow以外はSEWB+/REPOSITORYで定義した値になります。

注※1

Typeの値は，SEWB+/REPOSITORYの属性の分類で選択した値が設定されます。設定値を次に示します。

結合データ

英数字文字列データ

日本語文字列データ

整数データ

正整数データ

実数データ

日付データ

時刻データ

分類なし

注※2

数値を指定する項目の定義情報が未指定の場合，0文字の文字列が設定されます。

注※3

結合データの場合，設定される値は不定です。

注※4

SourceTypeの値は，ルールスクリプト中のキーワード（@TYPE）の値と同じになります。ルールスクリプト中のキーワードについてはマニュアル「SEWB+/REPOSITORY 辞書設計ガイド」を参照してください。

データ項目のタイプが集団項目の場合，SourceTypeの値は0文字の文字列が設定され，タイプ「@コピー文」が指定された場合，SourceTypeの値は「@」が設定されます。

注※5

AvailableCountの値は，AvailableNameとAvailableValueの三次元目の配列要素の数が設定されます。

注※6

AvailableNameとAvailableValueの値は，データ項目辞書で指定された順に三次元目の配列要素として設定されます。

注※7

Levelの値は，可変記号に指定されたデータ項目を1として，結合関係の階層の深さが設定されます。

注※8

ParentRowの値は，上位のデータ項目の配列の位置が設定されます。上位のデータ項目が最上位結合項目の場合は，0が設定されます。

注※9

LangTypeCountの値は，StdName，Furigana，およびCommentの三次元の配列要素の数が設定されます。要素数は，常に4（日本語，英語，未設定1，未設定2）です。

注※10

StdName，Furigana，およびCommentの値は，国語別で指定された順に三次元の配列要素として設定されます。

注※11

FieldCountの値は，BasicFieldの三次元の配列要素の数が設定されます。要素数は，常に20です。

注※12

BasicFieldの値は，データ項目辞書で指定された順（フィールド1～フィールド20）に三次元の配列要素として設定されます。

注※13

レコード定義で選択したCHARCTER TYPEが設定されます。

注※14

レコード定義でEXTERNALが選択されている場合，「EXTERNAL」が設定されます。選択されていない場合，0文字の文字列が設定されます。

注※15

レコード定義でSYNCが選択されている場合，「SYNC」が設定されます。選択されていない場合，0文字の文字列が設定されます。

注※16

レコード定義でJISTが選択されている場合，「JIST」が設定されます。選択されていない場合，0文字の文字列が設定されます。

注※17

レコード定義でBLANK WHEN ZEROが選択されている場合，「BLANK WHEN ZERO」が設定されます。選択されていない場合，0文字の文字列が設定されます。

注※18

辞書参照の場合，「参照」または「構成」が設定されます。辞書を参照していない場合，0文字の文字列が設定されます。

注※19

言語種別がSQLの場合は，常に0文字の文字列が設定されます。

使用例1（BASIC_ATTRオペランド指定なし）

@@getdata関数で取得されるデータ項目の定義情報（言語区分は「COBOL又はOOCOBOL」） 1／2

項番 | Level | DataItemName | Type | Digit | FloatDigit | RepeatLevel | ParentRow
1 | 1 | 社員情報 | 結合データ | ※ | ※ |  | 0
2 | 2 | 社員番号 | 英数字文字列データ | 15 |  |  | 1
3 | 2 | 氏名 | 結合データ | ※ | ※ |  | 1
4 | 3 | 氏 | 英数字文字列データ | 30 |  |  | 3
5 | 3 | 名 | 英数字文字列データ | 30 |  |  | 3
6 | 2 | 入社年 | 整数データ | 4 |  |  | 1
7 | 2 | 在職コード | 英数字文字列データ | 1 |  |  | 1

定義情報の続き 2／2

項番
Source
Name
SourceType
TypeModifyInfo
InitValue
Field
AvailableCount
AvailableName
AvailableValue

1
社員情報_CBL

2
社員番号_CBL
X

3
氏名_CBL

4
氏_CBL
X

5
名_CBL
X

6
入社年_CBL
9

7
在職コード_CBL
X

2
在職
SPACE

退職
'A'

注

表中のキーワードは説明上，付けているものです。また，空欄は，画面上で値が設定されていないことを示します。

注※

結合データのけた数（Digit）小数けた数（FloatDigit）の値は不定です。

テンプレート

●可変記号に最上位結合項目を指定した場合

@@set文

@RECの内容

@RECの値はSEWB+/REPOSITORYでの定義内容が展開されます。

生成ソース

●可変記号に結合項目（氏名）を指定した場合

@@set文

@RECの内容 1／2

項番 | Level | DataItemName | Type | Digit | FloatDigit | RepeatLevel | ParentRow
1 | 1 | 氏名 | 結合データ | ※ | ※ |  | 0
2 | 2 | 氏 | 英数字文字列データ | 30 |  |  | 1
3 | 2 | 名 | 英数字文字列データ | 30 |  |  | 1

@RECの内容の続き 2／2

項番 | SourceName | SourceType | TypeModifyInfo | InitValue | Field
1 | 氏名_CBL |  |  |  |
2 | 氏_CBL | X |  |  |
3 | 名_CBL | X |  |  |

注

表中のキーワードは説明上，付けているものです。また，空欄は，画面上で値が設定されていないことを示します。

注※

結合データのけた数（Digit）小数けた数（FloatDigit）の値は不定です。

生成ソース

●可変記号に単項目（氏）を指定した場合

@@set文

@RECの内容 1／2

Level | DataItemName | Type | Digit | FloatDigit | RepeatLevel | ParentRow
1 | 氏 | 英数字文字列データ | 30 |  |  | 0

@RECの内容の続き 2／2

SourceName | SourceType | TypeModifyInfo | InitValue | Field
氏_CBL | X |  |  |

注

表中のキーワードは説明上，付けているものです。また，空欄は，画面上で値が設定されていないことを示します。

生成ソース

●可変記号にレコード定義ファイルを指定した場合

@@set文

@RECの内容

@RECの値はSEWB+/RECORD DEFINERで定義したレコード定義ファイルの内容が展開されます。

レコード定義ファイル

項番 | レベル | データ項目名 | 名前 | タイプ | けた数 | 少数けた数 | EXTERNAL | 辞書参照
1 | 1 | 社員情報 | 社員情報_CBL |  |  |  | オン |
2 | 2 | 社員番号 | 社員番号_CBL | X | 15 |  | オフ | 参照
3 | 2 | 氏名 | 氏名_CBL |  |  |  | オフ | 参照
4 | 3 | 氏 | 氏_CBL | X | 30 |  | オフ | 構成
5 | 3 | 名 | 名_CBL | X | 30 |  | オフ | 構成

注

表中のキーワードは説明上，付けているものです。また，空欄は，画面上で値が設定されていないことを示します。

生成ソース

使用例2（BASIC_ATTRオペランド指定あり）

@@getdata関数で取得されるデータ項目の定義情報（言語区分は「COBOL又はOOCOBOL」） 1／3

項番 | Level | DataItemName | Type | Digit | FloatDigit | RepeatLevel | ParentRow
1 | 1 | 社員情報 | 結合データ | ※¹ | ※¹ |  | 0
2 | 2 | 社員番号 | 英数字文字列データ | 15 |  |  | 1
3 | ： | ： | ： |  |  |  |

@@getdata関数で取得されるデータ項目の定義情報の続き 2／3

項番
Source
Name
SourceType
TypeModifyInfo
InitValue
Field
AvailableCount
AvailableName
AvailableValue

1
社員情報_CBL

2
社員番号_CBL
X

3
：

@@getdata関数で取得されるデータ項目の定義情報の続き 3／3

項番
LangTypeCount
StdName
Furigana
Comment
FieldCount
BasicField

1
4
社員情報
シャインジョウホウ※2
社員情報ファイル
20
フィールド01

clerk_data

clerk_data_file
フィールド02

フィールド03

：
：

フィールド20

2
4
社員番号
シャインバンゴウ※2

20

3
：

：

注

表中のキーワードは説明上，付けているものです。

注※1

結合データのけた数（Digit）小数けた数（FloatDigit）の値は不定です。

注※2

半角で表示されます。

テンプレート

●可変記号に最上位結合項目またはレコード定義ファイルを指定した場合

@@set文

@RECの内容

@RECの値は，SEWB+/REPOSITORYおよびレコード定義での定義内容が展開されます。

生成ソース

7.9.13　@@getdate関数

形式

@@getdate（）

機能

@@getdateが実行された日付を取得するときに使用します。

規則

@@set文の右辺に指定する。

日時は，@@set文の左辺に指定した可変記号に，次の形式で格納される。
YYYY/MM/DD　HH：MM：SS

使用例

7.9.14　@@getmemo関数

形式

@@getmemo（）

機能

プログラム定義の［メモ］タブで定義したメモの内容を取得するときに使用します。

規則

@@set文の右辺に指定する。

メモの内容は@@set文の左辺の可変記号に，一次元の配列で設定される。

［メモ］タブの改行ごとに別の配列が確保される。

使用例

7.9.15　@@getrfile関数

形式

@@getrfile（）

機能

プログラム定義の［リソースステータス］ダイアログの［ファイル］タブ情報を取得するときに使用します。

規則

@@set文の右辺に指定する。

［ファイル］タブの情報は，@@set文の左辺の可変記号に，二次元の配列で設定される。

一次元目は位置指定の配列で，ファイル単位で確保される。
配列の設定順序を次に示します。利用するファイル種別（利用種別）ごとに設定されます。

テンプレートファイル

データ定義ファイル

部品ファイル

マップ定義ファイル

XML文書ファイル

二次元目はキーワード指定の配列で，ファイル情報ごとに確保される。

内容
添字に指定するキーワード

ファイル名（フルパス）
FullPath

ファイル名
（ディレクトリ名を含まない）
FileName

利用種別
Kind

更新日時
Date

また，利用種別には，次の値が設定されます。

利用種別 | 設定値
テンプレートファイル | CST
データ定義ファイル | CSD
部品ファイル | CSR
マップ定義ファイル | IMP
XML文書ファイル | XML

更新日時は次の形式で設定される。
YYYY/MM/DD　HH：MM：SS

使用例

7.9.16　@@getsign関数

形式

@@getsign（）

機能

プログラム定義の［サイン］タブで定義した名称，作成者および概要を取得するときに使用します。

規則

@@set文の右辺に指定する。

［サイン］タブの情報は，@@set文の左辺の可変記号に設定される。

可変記号の添字には次のキーワードを指定する。

内容 | 添字に指定するキーワード
名称 | Name
作成者 | Owner
概要 | Outline

概要は二次元の配列で，改行ごとに別の配列が確保される。

使用例

7.9.17　@@global文

形式

@@global 可変記号；

機能

可変記号をテンプレートやテンプレートから呼び出される部品のプロシジャまたは部品のプロシジャ間で共通に使用できる（参照や更新が相互にできる）ように宣言するときに使用します。

部品内で@@global宣言した可変記号はその部品から呼び出されたほかの部品のプロシジャで参照・更新ができます。テンプレートやその部品が呼び出される以前の部品では参照・更新できません。

規則

可変記号に配列や生成式は指定できない。

可変記号は@@global文の宣言が実行されてから有効となる。

テンプレート中ですでに定義済みの（使用されている）可変記号を@@global文で宣言することはできない。したがって，@@interface文や@@set文で可変記号を使用する以前に@@global文で宣言しなければならない。

@@interface文や@@set文で使用する可変記号に配列を指定する場合，@@global文では配列を指定しない可変記号を指定する。

使用例

7.9.18　@@if文

形式

@@if (条件式1)

文1

[[@@elseif (条件式2)

文2],…]

[@@else

文3]

@@end;

注

［　］は省略できることを示します。

機能

条件式の真偽により，処理の実行を制御するときに使用します。

規則

@@if文の条件式1が真のときに，文1が実行される。

@@if文の条件式1が偽のときは，@@elseifの条件式2が実行される。

@@if文の条件式1，および@@elseifの条件式2がすべて偽のときは，@@elseの文3が実行される。

使用例

@@if (@MESSAGE eq "AC")  @@* メッセージ出力オプションありのとき
 ACCEPT START-DATE FROM DATE
 DISPLAY ' @PROG_ID: STARTED ' START-DATE
@@elseif (@MESSAGE eq "96")
 MOVE  '96-03-18' TO START-DATE
@@else
 MOVE  '95-02-27' TO START-DATE
@@end;

7.9.19　@@interface文

「7.5.3　インタフェース定義部」を参照してください。

7.9.20　@@itemlist関数

形式

@@itemlist（可変記号）

機能

表・ビューを構成する列名の埋め込み変数を配列の値として取得するときに使用します。

データ定義で最上位項目を取り込んでいる場合，最上位項目を直接構成しているデータ項目の言語別の名前が取得できます。このとき，言語別の名前が指定されていない場合は，データ項目名が取得されます。

また，データ定義でレコード定義ファイルを取り込んでいる場合，2番目のデータ項目（項番2の項目が該当します）と同じレベル番号が指定されたデータ項目の言語別の名前が取得できます。言語別の名前が指定されていない場合は，データ項目名が取得されます。

規則

言語種別がC，またはCOBOLの場合に指定する。

@@set文の右辺に指定する。

可変記号は@@interface文でATTR=DB（RDB定義）を指定した可変記号を指定する。

言語種別がCの場合，レコード定義を参照するデータ定義は指定できない。

使用例

7.9.21　@@lang文

形式

@@lang { COBOL | C | "言語種別" }

[ FOR_REPOSITORY = "リポジトリの言語区分"]

[ EXTENSION = "拡張子"]

[ MODIFY_CONNECT = "連結文字"]

[ MODIFY_ORDER = { DESCEND | ASCEND } ]

[ UOC_BEGIN = "ユーザ追加処理の先頭に挿入する文字列"]

[ UOC_END = "ユーザ追加処理の末尾に挿入する文字列"];

注

｛　｝は項目のどれか一つを記述することを示します。

［　］は省略できることを示します。

機能

言語種別と言語種別に関連する生成規則を指定します。

規則

@@lang文中では可変記号は使用できない。

テンプレート概要定義部の直後に記述しなければならない。

テンプレートに1回だけ指定できる。

部品のテンプレートには指定できない。

@@lang文がテンプレート概要定義部の直後に指定されないでインタフェース定義部の記述が始まっている場合，COBOLを仮定する。

言語種別は，COBOL，C以外の任意の生成言語種別を指定する。

リポジトリの言語区分は，@@getdata関数，@@modify関数，@@rule文でのSEWB+/REPOSITORYアクセス時の言語区分を指定する。

FOR_REPOSITORY句を省略した場合，言語種別から仮定する。

言語種別 | FOR_REPOSITORYの言語区分
指定あり | 指定なし
COBOL | 指定値でアクセス | COBOL，またはOOCOBOLでアクセス
C | 指定値でアクセス | C，またはC++でアクセス
"言語種別" | 指定値でアクセス | REPOSITORYアクセスできない
@@lang文なし（COBOL） | 該当しない | COBOL，またはOOCOBOLでアクセス

拡張子は，生成ソース出力時の拡張子を"."付きで指定する。

EXTENSION句を省略した場合，言語種別，および環境設定に沿った拡張子で出力する。

言語種別 | EXTENSIONの拡張子
指定あり | 指定なし
COBOL | 指定値で出力 | ソース正書法に従う（.CBL，または.CBFで出力）
C | 指定値で出力 | .Cで出力
"言語種別" | 指定値で出力 | 拡張子なしで出力

連結文字は，@@modify関数，およびルールスクリプト中の@MODIFYキーワードを生成するときの，修飾情報（データ項目名）の連結文字を指定する。ルールスクリプト中のキーワードについてはマニュアル「SEWB+/REPOSITORY 辞書設計ガイド」を参照してください。

MODIFY_CONNECT句を省略した場合は言語種別から連結文字を仮定する。

言語種別 | MODIFY_CONNECTの連結文字
指定あり | 指定なし
COBOL | 指定値で連結 | 「OF」で連結
C | 指定値で連結 | 「.」で連結
"言語種別" | 指定値で連結 | 連結文字を仮定しない

MODIFY_ORDER句は，@@modify関数，およびルールスクリプト中の@MODIFYキーワードを生成するときの，修飾情報（データ項目名）の修飾順序を指定する。ルールスクリプト中のキーワードについてはマニュアル「SEWB+/REPOSITORY 辞書設計ガイド」を参照してください。

MODIFY_ORDER句を省略した場合は言語種別から修飾順序を仮定する。

言語種別 | MODIFY_ORDERの指定
指定あり | 指定なし
COBOL | 指定値の順序 | ASCEND（下位から上位）を仮定
C | 指定値の順序 | DESCEND（上位から下位）を仮定
"言語種別" | 指定値の順序 | DESCEND（上位から下位）を仮定

UOC_BEGINには，ユーザ追加処理の先頭に挿入する文字列を指定する。

UOC_ENDには，ユーザ追加処理の末尾に挿入する文字列を指定する。

ユーザ追加処理の前後に挿入する文字列には，ユーザ追加処理のブロック名が展開する可変記号「@uocname」を指定できる。
可変記号「@uocname」はユーザ追加処理中，つまりUOC_BEGINとUOC_ENDに指定する文字列の中でだけ有効な可変記号です。

言語種別がCOBOLで，かつ環境設定のCOBOLソース正書法が固定形式またはホスト向け固定形式の場合，UOC_BEGINとUOC_ENDで指定した文字列の先頭に6文字の空白が追加される。

UOCリバース機能を使う場合は，UOC_BEGINとUOC_ENDに次の形式の文字列を指定する必要がある。

UOC_BEGIN="UOCの開始を意味する文字列[@可変記号][任意の文字列]"
UOC_END  ="UOCの終了を意味する文字列[@可変記号][任意の文字列]"

なお，次のように指定すると，UOCコメントをUOC単位でユニークにできる。この指定を推奨する。

UOC_BEGIN="UOCの開始を意味する文字列 @uocname [任意の文字列]"
UOC_END  ="UOCの終了を意味する文字列 @uocname [任意の文字列]"

@uoc文にSUPPRESSが指定してある場合は，UOC_BEGINとUOC_ENDで指定した文字列は生成されない。したがって，UOCリバース機能を使う場合，@uoc文にSUPPRESSを指定してはならない。

使用例

7.9.22　@@leadbyte関数

形式

@@leadbyte（可変記号，位置）

機能

可変記号に設定されている文字列について，位置で指定されたコードが2バイトコードのリードバイト（先頭の1バイト）かどうかを判定するときに使用します。

規則

リードバイトの場合は真を返す。リードバイト以外の場合は偽を返す。

可変記号の内容が配列のときは，添字を指定する。

判定するコードの先頭からのバイト位置を位置に指定する。

可変記号に数値を指定している場合は，その数値のけた数を返す。

使用例

可変記号に設定された長い文字列を，80バイト改行して生成します。80バイト目がリードバイトの場合は，79バイトで区切ります。

7.9.23　@@length関数

形式

@@length（可変記号）

機能

可変記号に文字列または数値が設定されている場合，設定されている文字列の長さまたはけた数を返す数値関数として使用します。この関数は，文字列の長さを文字単位で返します。

規則

可変記号の内容が配列のときは，添字を指定する。

可変記号に文字列を設定している場合は，その文字列長（文字数）を返す。

可変記号に数値を指定している場合は，その数値のけた数を返す。

使用例

@@set @A = "ABC";
@@set @B = 1234 ;
@@set @C = 01234 ;
@@set @D = "いずみ中央";
@@set @A_LEN = @@length(@A);    @A_LENには,「3」が設
                               定される。
@@set @B_LEN = @@length(@B);    @B_LENには,「4」が設
                               定される。
@@set @C_LEN = @@length(@C);    @C_LENには,「5」が設
                               定される。
                               けた数なので「01234」
                               の5けたとなる。
@@set @D_LEN = @@length(@D);    @D_LENには,「5」が設
                               定される。
                               2バイトコードで5文字
                               のため5けたとなる。

7.9.24　@@lengthb関数

形式

@@lengthb（可変記号）

機能

可変記号に文字列または数値が設定されている場合，設定されている文字列の長さまたはけた数を返す数値関数として使用します。この関数は，文字列の長さをバイト単位で返します。

規則

可変記号の内容が配列のときは，添字を指定する。

可変記号に文字列を指定している場合は，その文字列長（バイト数）を返す。

可変記号に数値を指定している場合は，その数値のけた数を返す。

使用例

@@set @A = "ABC";
@@set @B = 1234 ;
@@set @C = 01234 ;
@@set @D = "いずみ中央";
@@set @A_LEN = @@lengthb(@A);    @A_LENには,「3」が設
                               定される。
@@set @B_LEN = @@lengthb(@B);    @B_LENには,「4」が設
                               定される。
@@set @C_LEN = @@lengthb(@C);    @C_LENには,「5」が設
                               定される。
                               けた数なので「01234」
                               の5けたとなる。
@@set @D_LEN = @@lengthb(@D);    @D_LENには,「10」が設
                               定される。
                               2バイトコードで5文字
                               のため10バイトとなる。

7.9.25　@@merge文

形式

@@merge　可変記号;

機能

@@merge文は，@@put文に定義されている文字列を生成ソースに展開するときに使用します。また，テンプレートで抽出した業務ルールに書かれている，@@section文に定義されている文字列を生成ソースに展開させるのにも使用します。

@@put文に関しては「7.9.31　@@put文」を参照してください。

@@section文に関しては，マニュアル「SEWB+/REPOSITORY 辞書設計ガイド」を参照してください。

規則

@@merge文の可変記号には，@@put文に書かれた可変記号，または@@section文に書かれたコード名の先頭に「@」を付けたものを指定する。

@@merge文に書かれた可変記号は，グローバル宣言されたものとして処理される。

@@put文で可変記号に値が設定されていない場合，何も展開されない。

@@section文に書かれたコード名と，@@merge文の可変記号から「@」を削除した部分が異なる場合，何も展開されない。

@@section文に「MAIN」が設定されている場合，@@section文に定義されている文字列は，@@rule文の位置に展開される。

可変記号には配列が指定されている可変記号は指定できない。

使用例

部品中の@@put文に書かれた可変記号をテンプレートで呼び出し，@@put文に定義されている文字列を生成ソースに展開させます。

また，業務ルール中の@@section文に指定されたコード名をテンプレートで呼び出し，@@section文に定義されている文字列を生成ソースに展開させます。プログラムのコード上，連続していない個所に，業務ルールを分割して展開させるときに使用します。

なお，@@put文を使用しても同様に， 業務ルールを分割して展開できます。

@@put文と@@merge文の使用

@@section文と@@merge文の使用

注意事項

@@merge文に書かれた可変記号と同じものが，@@put文にも@@section文にもある場合※，@@put文と@@section文がそれぞれ展開されます。このように指定内容が重複していると，不要な文字列が展開され，プログラムの処理の内容を変えてしまうことがあるので注意してください。特に，@@section文を呼び出すためのコード名は，データ項目辞書作成者とテンプレート作成者の間で統一してください。

注※

@@section文の場合は，@@merge文に書かれた可変記号の先頭から「@」を削除した部分と，@@section文のコード名が同一ならば，これらは一致していると見なされます。

7.9.26　@@modify関数

形式

@@modify（可変記号[，[接頭語][，[接尾語][，[最上位項目名]]]]）

注

［ ］は省略できることを示します。

機能

@@interface文で指定されたデータ項目の修飾（全パスの項目名）付き項目名を取得する場合に使用します。

規則

@@set文の右辺に指定する。

可変記号は@@interface文でATTR=ITEMを指定した可変記号を指定する。

@@interface文で指定されたデータ項目またはその上位の項目に繰り返しがある場合はエラーになる。

接頭語，接尾語，および最上位項目名はそれぞれ省略できるが，コンマだけの指定はできない。指定した場合はエラーになる。

接頭語は，修飾付きデータ項目名の先頭に付ける文字列を文字定数で指定する。

接尾語は，修飾付きデータ項目名の末尾に付ける文字列を文字定数で指定する。

最上位項目名は，修飾名付きデータ項目名のうち最も上位となるデータ項目名を別の名称に置き換える場合，その名称を文字定数で指定する。

言語種別がCOBOL以外の場合，可変記号にレコード定義のデータ項目を指定できない。

取得する修飾情報（項目名）の順序は@@lang文のMODIFY_ORDER句の指定※に従う。

取得する修飾情報（項目名）の言語区分は，@@lang文のFOR_REPOSITORY句の指定に従う。指定された言語区分用のデータ項目名が定義されていない場合には，言語区分に依存しない共通のデータ項目名となる。指定された言語区分がリポジトリに登録されているものと一致しない場合は，生成時にエラーになる。

修飾情報の連結文字は，@@lang文のMODIFY_CONNECT句の指定に従う。言語種別がC，COBOL以外の場合には，修飾情報（データ項目名）がそのまま連結される。

注※

MODIFY_ORDER句がDESCENDなら，上位レベル項目から下位レベル項目の順序で修飾されます。MODIFY_ORDER句がASCENDなら，下位レベル項目から上位レベル項目の順序で修飾されます。

使用例

データ構造

テンプレート（COBOL）

生成ソース（COBOL）

テンプレート（C）

生成ソース（C）

7.9.27　@@msg文

形式

@@msg　文字定数;

機能

ソースの展開中に，指定された文字列をメッセージファイル（メッセージウィンドウ）に出力するときに使用します。

展開ログ情報，展開部品の使用上の注意事項などを出力します。

規則

文字定数は継続して指定できる。

メッセージを出力しても生成の終了コードは変化しない。

使用例

7.9.28　@@parts文

形式

@@parts "部品ブロック名"

REF=可変記号名

[PARENT="親ブロック名"]

[COMMENT="説明文字列"];

注

［　］は省略できることを示します。

機能

プログラム定義で選んだ部品を展開するときに使用します。

規則

可変記号名には，@@interface文でATTR=PARTSを指定した可変記号を指定する。

部品ブロック名には，部品展開位置の名前を，可変記号または文字定数で指定する。

@@parts文の位置には，プログラム定義の［部品］タブで選んだ部品が展開される。

親ブロック名には，ユーザ追加処理の一覧をツリー形式で表示させるときに，指定した部品ブロック名の親になるブロック名を指定する。

部品ブロック名，親ブロック名には可変記号を指定できる。

親ブロック名を指定すると，@@parts文の直後に書いた部品ブロック名は，指定した親ブロックの下の該当する部品ブロック名に位置づけられる。

親ブロック名を省略すると，ツリーの最上位の階層に位置づけられる。

親ブロックが存在しなかった場合，ツリーの最上位の階層に位置づけられる。

説明文字列は，プログラム定義の［追加処理］タブの説明欄に表示される。

使用例

7.9.29　@@pic関数

形式

@@pic（可変記号）

機能

@@interface文で指定されたデータ定義のデータ項目と同じタイプと長さを持つデータ項目を定義する場合に使用します。データ定義から参照しているレコード定義ファイルのデータ項目にも使用できます。

規則

言語種別がCOBOLの場合に指定できる。

@@set文の右辺に指定する。

可変記号は@@interface文でATTR=ITEMを指定した可変記号を指定する。

属性と長さの生成規則は「7.9.9 @@expand文」を参照のこと。

データ項目のタイプが集団項目または@コピー文の場合，0文字の文字列が展開される。

定義できるデータ項目のタイプは，SEWB+/REPOSITORYが標準で提供しているCOBOL用のタイプだけ使用できる。

使用例

7.9.30　@@proc文

形式

@@proc プロシジャ名

([引数[COMMENT="引数の説明"] ]…)

文

注

［　］は省略できることを示します。

機能

部品内のプロシジャを定義するときに使用します。

規則

@@proc文から次の@@proc文またはファイルの終了までの間に部品の処理を記述する。

プロシジャ名は次の規則に従って記述する。
名称の長さが30文字以内の文字列。ただし，数字だけで記述することはできない。
英字の大文字と小文字は区別される。
引数には可変記号だけが指定できる。

COMMENTに指定した引数の説明は，プログラム定義の［部品］タブから部品のパラメタを指定するとき，コメントとして表示される。

使用例

一つのRDBPARTSという部品ファイルに，DECLAREとCONNECTのプロシジャを持っている例です。

7.9.31　@@put文

形式

@@put 可変記号 ＜＜

文

@@end;

機能

ソースの生成時に，@@merge文で記述されている同じ可変記号の個所に，@@put文で代入された文の内容が展開されます。

規則

文には，@@expand文以外の制御文は記述できない。

可変記号にすでにテキストが設定されているとき，文は設定済みの文の後ろに追加設定される。

@@put文に指定した可変記号は，グローバル宣言されたものとして処理される。

埋め込みテキスト（＜＜文）中の可変記号は，@@put文が実行されたときの値で展開される。

@@merge文と対で使用される。

使用例

「7.9.25　@@merge文」の使用例を参照してください。

7.9.32　@@reclen関数

形式

@@reclen（可変記号［修飾名］）

注

［　］は省略できることを示します。

機能

レコード長を取得する数値関数です。

規則

言語種別がCOBOLの場合に指定できる。

可変記号名は@@interface文のATTRでデータ定義種別を指定した可変記号を指定する。

修飾名は，データ定義識別子がRECORD_NAMEでなければならない。

レコード中の項目の属性（タイプ）がZ（数字編集項目），E（外部浮動小数点項目），D（内部浮動小数点項目），またはフリー定義がある場合は指定できない。

@@set文の右辺に指定する。

データ項目のタイプには，SEWB+/REPOSITORYに最初から登録されているCOBOL用のタイプだけ使用できる。

レコード定義ファイルで定義されたレコードは指定できない。

使用例

@@set @レコード長 = @@reclen（@入力ファイル［レコード名］）；

MOVE @レコード長 TO メッセージ長.

生成結果

@入力ファイルに指定したレコード長が60なので，生成結果は次のようになる。

7.9.33　@@rule文

「7.7　業務ルールの利用」を参照してください。

7.9.34　@@set文

形式

@@set　可変記号 = 式；

機能

可変記号に値を設定するときに使用します。

規則

式には，算術式，文字定数，連結式が指定できる。

右辺をコンマ（，）で区切って{ }内に並べると，配列のすべての要素に値が設定できる。

配列の要素は{ }内の順番で設定される。添字は「1」から始まる。また，値を「キーワード＝値」で指定したときは，キーワードが添字になる。

値の指定で，位置指定とキーワード指定は混在できない。

一度，位置指定で値を設定した配列は，キーワード指定で再度値の設定はできない。

一度，キーワード指定で値を設定した配列は，位置指定で再度値の設定はできない。

使用例

7.9.35　@@str関数

形式

@@str（可変記号，先頭位置［，文字列長］）

注

［　］は省略できることを示します。

機能

可変記号の一部を参照したいときに使用します。この関数は，文字列を文字単位で操作します。

規則

先頭位置，および文字列長には，数値定数，算術式，または可変記号を指定する。

文字列長（文字数）の指定は省略できる。その場合，先頭位置から可変記号の右端までを文字列長とする。

データの文字列が2バイトコードの場合，データは1文字ずつ設定される。

指定された先頭位置にデータがない場合はエラーになる。

指定された文字列長よりもデータが少ない場合，データが入っているところまで設定される。

使用例

7.9.36　@@strb関数

形式

@@strb（可変記号，先頭位置［，文字列長］）

注

［　］は省略できることを示します。

機能

可変記号の一部を参照したいときに使用します。この関数は，文字列をバイト単位で操作します。

規則

先頭位置，および文字列長には，数値定数，算術式，または可変記号を指定する。

文字列長（バイト数）の指定は省略できる。その場合，先頭位置から可変記号の右端までを文字列長とする。

2バイトコードの途中で切る場合はエラーとなる。2バイトコードの判定については「7.9.22　@@leadbyte関数」を参照のこと。

指定された先頭位置にデータがない場合はエラーになる。

指定された文字列長よりもデータが少ない場合，データが入っているところまで設定される。

使用例

7.9.37　@@switch文

形式

@@switch (可変記号)

@@case 値1:

文1

[[@@case 値2:

[文2]]…]

[@@default:

文3]

@@end;

注

［　］は省略できることを示します。

機能

変数の値によって複数の異なる処理の中から該当する処理を選ぶときに使用します。

規則

@@caseを少なくとも一つは記述しなければならない。

値式に指定できるのは，可変記号，文字定数または数値定数である。

@@caseの値は上から順に評価され，可変記号と一致するときに@@caseの次の文が処理される。

@@switch文を抜けるには，@@break文を使用する。@@break文がないときは，次の@@caseに制御が移る。

変数に一致する@@caseの値がないときは，@@defaultの文3が実行される。予測できない値が可変記号に代入されたときに備えて，@@defaultは記述しておいた方がよい。

使用例

7.9.38　@@uoc文

形式

@@uoc "UOC名"

[ PARENT="親ブロック名"]

[ COMMENT="説明文字列"]

[ SUPPRESS];

注

［　］は省略できることを示します。

機能

ソース生成中に展開させるユーザ追加処理の位置を指定するときに使用します。

規則

UOC名は，ユーザ追加処理の名前を文字定数で指定する。

@@uoc文の位置には，プログラム定義の［ユーザ処理］タブで選んだユーザ追加処理の内容が取り込まれる。

親ブロック名は，プログラム定義の［ユーザ処理］タブでユーザ追加処理の一覧をツリー形式で表示させるときに，指定したUOC名の親になるブロック名を指定する。

UOC名，親ブロック名の文字列には可変記号を指定できる。ループの中で@@uoc文を繰り返し実行する場合には，UOC名の値を変化させて，それぞれのUOC名を区別する。

親ブロック名を指定すると，ここで指定したUOC名は，この親ブロックの下に位置づけられる。

親ブロック名を省略すると，ツリーの最上位の階層に位置づけられる。ただし，@@uoc文が@@parts文から展開されている場合，@@parts文のブロックの下に位置づけられる。

親ブロック名が存在しなかった場合，最上位の階層に位置づけられる。

説明文字列は［ユーザ処理］タブの説明欄に表示される。

SUPPRESSを指定すると，@@lang文で指定したユーザ追加処理の前後に挿入する文字列は生成されない。したがって，UOCリバース機能を使用する場合はSUPPRESSを指定してはならない。

プログラム定義でユーザ追加処理の内容が指定されていない場合，ソースへは生成されない。ただし，@@lang文でユーザ追加処理の前後に文字列を挿入する指定がある場合，挿入する文字列は生成される。

使用例

@@uoc "初期値設定"  COMMENT="出力レコードのデフォルト値を設ける場合に記述してください。";
@@set  @i = 1;
@@while  (@i <= 3)
@@uoc "変換処理@i"  COMMENT="レコードの内容を出力するときの変換処理を記述してください。";
@@set  @i = @i + 1;
@@end;

このとき，［ユーザ処理］タブには，次のようにユーザ追加処理の一覧が表示されます。

ツリー形式で表示するときの指定は「7.9.7　@@diagram文」を参照してください。

7.9.39　@@uocdefined関数

形式

@@uocdefined（"UOC名"）

機能

ユーザ追加処理がプログラム定義で作成されているか判定するときに使用します。

規則

UOC名は，@@uoc文で指定したユーザ追加処理の名前を可変記号または文字定数で指定する。

指定されたUOC名を持つユーザ追加処理が，プログラム定義で作成されている場合は，真を返す。それ以外の場合は偽を返す。

使用例

@@uoc"初期値設定"  COMMENT="必ず指定します。";
@@if (!@uocdefined("初期値設定"))
 @@msg "ユーザ追加処¥'初期値設定¥'は必須です。"
@@end;

7.9.40　@@while文

形式

@@while（条件式）

文

@@end;

機能

指定する条件式が成立する間，文を繰り返して展開するときに使用します。

規則

条件式が成立するとき，文が処理される。条件式の比較は文の処理前に行われる。

使用例

7.9.41　@@xmap3common関数

形式

@@xmap3common（可変記号）

機能

@@interface文でXMAP3を指定した可変記号からマップ定義の共通情報を取得するときに使用します。なお，XMAP3の詳細は次のマニュアルを参照してください。

画面・帳票サポートシステム XMAP3 プログラミングガイド 画面編※1

画面・帳票サポートシステム XMAP3 プログラミングガイド 帳票編※1

XMAP3 Version 5 画面・帳票サポートシステム XMAP3 開発ガイド※2

XMAP3 Version 5 画面・帳票サポートシステム XMAP3 プログラミングガイド※2

注※1

XMAP3 Version 3およびXMAP3 Version 4の場合に参照してください。

注※2

XMAP3 Version 5の場合に参照してください。

規則

@@set文の右辺に指定する。

可変記号には，@@interface文でATTR=XMAP3を指定した可変記号を指定する。

マップ定義の共通情報は，@@set文の左辺の可変記号に一次元の配列で設定される。

配列は，情報の種類ごとに確保される。配列の添字には，キーワードを指定する。
取得できるマップ定義の共通情報を次に示します。

マップ定義の情報 | 添字に指定するキーワード
マップ名 | シート名
定義対象 | 定義対象※
物理マップの名称 | 物理マップ名
出力論理マップ名称 | 出力論理マップ名
入力論理マップ名称 | 入力論理マップ名

注

キーワードの仮名文字は，半角仮名文字を使用します。

注※

定義対象には，次の表の値が設定されます。

定義対象の設定値 | 意味
G1 | GUI画面（1次）
G2 | GUI画面（2次）
CU | CUI画面
SR | けい線帳票
PR | プレプリント帳票
LP | 網掛け帳票
GR | グラフィック帳票

注

定義対象は，半角英数字で設定されます。

使用例

論理マップの展開と画面入出力処理の例です。

7.9.42　@@xmap3objects関数

形式

@@xmap3objects（可変記号）

機能

@@interface文でXMAP3を指定した可変記号からマップ定義のオブジェクト情報を取得するときに使用します。

規則

@@set文の右辺に指定する。

可変記号は@@interface文でATTR=XMAP3を指定した可変記号を指定する。

データ項目の定義情報は，@@set文の左辺の可変記号に二次元の配列で設定される。

一次元の配列は，マップ定義のオブジェクト情報ごとに確保される。一次元の配列の添字には，数値を指定する。

二次元の配列は，マップ定義のオブジェクト情報の種類ごとに確保される。二次元の配列の添字には，キーワードを指定する。
取得できるデータ項目の定義情報を次に示します。

マップ定義の情報 | 添字に指定するキーワード
オブジェクトの位置（行） | 行
オブジェクトの位置（列） | 列
オブジェクトの種類（大分類） | 種別※¹
オブジェクトの区分（小分類） | 区分※²
オブジェクトの使用目的 | 使用目的※³
データ名（接頭語・接尾語なし） | データ名
動的変更 | 動的変更※⁴
出力用のデータ長 | データ長出
出力用のデータ型 | データ型出※⁵
入力用のデータ長 | データ長入
入力用のデータ型 | データ型入※⁵
反復回数（縦） | 反復縦
反復回数（横） | 反復横
反復間隔（縦） | 間隔縦
反復間隔（横） | 間隔横
数字編集文字列 | 数字編集文字
コメント | コメント
固定テキストのテキスト/初期値/トグル種別※⁶ | テキスト

注

キーワードの仮名文字と英数字は，半角文字を指定します。

注※1

「種別」に設定される値については「表7-9 種別に設定される値」を参照してください。

注※2

「区分」に設定される値については「表7-10 区分に設定される値」を参照してください。

注※3

「使用目的」に設定される値については「表7-11 使用目的に設定される値」を参照してください。

注※4

「動的変更」に設定される値については「表7-12 動的変更に設定される値」を参照してください。

注※5

「データ型出」，および「データ型入」に設定される値については「表7-13 データ型出，およびデータ型入に設定される値」を参照してください。

注※6

「トグル種別」に設定される値については「表7-14 トグル種別に設定される値」を参照してください。

表7-9　種別に設定される値

種類の設定値
XMAP3のオブジェクトの種類
（大分類）

隠し
隠しフィールド

固定
固定テキスト/フィールド

出力
出力テキスト/出力日付テキスト/出力時刻テキスト/出力フィールド/出力日付フィールド/出力時刻フィールド

出力従
出力テキスト/出力日付テキスト/出力時刻テキスト/出力フィールド/出力日付フィールド/出力時刻フィールド/スピンボックス/出力バーコード/出力OCRの下位項目，または入出力テキスト/入出力日付テキスト/入出力時刻テキスト/入出力フィールド/入出力日付フィールド/入出力時刻フィールドの出力項目の下位項目

入力
入出力テキスト/入出力日付テキスト/入出力時刻テキスト/入出力フィールド/入出力日付フィールド/入出力時刻フィールド

入力従
入出力テキスト/入出力日付テキスト/入出力時刻テキスト/入出力フィールド/入出力日付フィールド/入出力時刻フィールド/スピンボックスの入力項目の下位項目

スピン
スピンボックス

固POP
固定ポップアップ/フィールド

可POP
可変ポップアップ/フィールド

固コンボ
固定コンボボックス

可コンボ
可変コンボボックス

単リスト
単一選択リストボックス

複リスト
複数選択リストボックス

プッシュ
プッシュボタン

固ラジオ
固定ラジオボタン

可ラジオ
可変ラジオボタン

固チェック
固定チェックボタン

可チェック
可変チェックボタン

フィールド
フィールドボックス

固グラフ
固定グラフィック

出グラフ
出力グラフィック

アイコン
アイコン

出BCD
出力バーコード

出OCR
出力OCR

トグル
トグルフィールド

フレーム
フレーム

グループ
グループボックス

予約
予約テキスト/予約フィールド

注

設定値の仮名文字と英数字は，半角文字で設定されます。

表7-10　区分に設定される値

区分の設定置
XMAP3のオブジェクトの区分
（小分類）

BOX
ボックス

メニュー
メニュー

ボタン
ボタン

スタート
フレームのスタート

エンド
フレームのエンド

注

設定値の仮名文字と英数字は，半角文字で設定されます。

表7-11　使用目的に設定される値

使用目的の設定値 | 対応するXMAP3の使用目的
文字 | 日本語
数字 | 数字
英数 | 英数
カナ | カナ
数値 | 数値
パス | パスワード
MCR | MCR
金額 | 金額
日付 | 日付
時刻 | 時刻
手数 | POP（手動－数字）
手英 | POP（手動－英数）
手カナ | POP（手動－カナ）
手日 | POP（手動－日本語）
自英 | POP（自動－英数）
自日 | POP（自動－日本語）
ファイル | メニューデータをファイル指定する可変ポップアップ
LAB | ラベル
COD | 通知コード
KEY | アクセスキー
TXT | 選択ラベル
FLD | 可変チェックボタンボックス/複数選択リストボックスの選択データ
CD39 | CODE39（バーコード）
JN13 | JAN（13）（バーコード）
JAN8 | JAN（8）（バーコード）
ITF | ITF（バーコード）
NW7 | NW7（バーコード）
カスタマ | カスタマ（バーコード）

注

設定値の仮名文字と英数字は，半角文字で設定されます。

表7-12　動的変更に設定される値

使用目的の設定値 | XMAP3での動的変更の指定
Y | 動的変更あり
N | 動的変更なし

注

設定値の仮名文字と英数字は，半角文字で設定されます。

表7-13　データ型出，およびデータ型入に設定される値

データ型の設定値 | XMAP3でのデータ型の指定
X | 文字
N | 漢字
9 | 数字または数字編集

注

設定値の仮名文字と英数字は，半角文字で設定されます。

表7-14　トグル種別に設定される値

トグル種別の設定値 | XMAP3でのトグル種別の指定
チェック | チェック（トグル）
O/X | O/X（トグル）
Y/N | Y/N（トグル）

注

設定値の仮名文字と英数字は，半角文字で設定されます。

使用例

XMAP3で定義しているオブジェクトの種類，使用目的，データ名および動的変更の有無を展開します。

7.9.43　@@xmlattribute関数

形式

@@xmlattribute（可変記号，"属性名"）

機能

可変記号に設定された要素ノードから，「属性名」と一致する属性名を持つ属性ノードを取得するときに使用します。

規則

@@set文の右辺に指定する。

可変記号には，要素ノードが設定された可変記号を指定する。

属性ノードの定義情報は，@@set文の左辺の可変記号に一次元の配列で設定される。

配列は属性ノードの情報の種類ごとに確保される。配列の添字には，キーワードを指定する。

添字に指定するキーワード | 属性ノードの情報
Type | タイプ（固定値：3）
Name | 属性名
Value | 属性値

属性ノードが取得できたかどうかは，@@count関数を使用して判定する。@@count関数は，取得できない場合には0を返し，取得できた場合には1以上を返す。

使用例

@@xmlattribute関数を使用して，属性名がName2の属性ノードを取得します。

7.9.44　@@xmlchildnodes関数

形式

@@xmlchildnodes（可変記号）

機能

可変記号に設定されているノードの，すべての子供ノードを取得するときに使用します。要素ノードおよびテキストノードが取得の対象となります。

規則

@@set文の右辺に指定する。

可変記号はノードを示す可変記号を指定する。

一次元の配列は子供ノードごとに確保される。配列の添字には数値を指定する。

二次元の配列は，要素ノードの情報の種類ごとに確保される。配列の添字には，キーワードを指定する。

要素ノードの場合，次の情報が取得できる。

添字に指定するキーワード | 要素ノードの情報
Type | タイプ（固定値：2）
Name | タグ名

テキストノードの場合，次の情報が取得できる。

添字に指定するキーワード | テキストノードの情報
Type | タイプ（固定値：6）
Name | 名前　（固定値：#text）
Value | タグで囲まれた文字列

子供ノードが取得できたかどうかは，@@count関数を使用して判定する。@@count関数は，取得できない場合には0を返し，取得できた場合には子供ノードの数を返す。

使用例

@@xmlchildnodes関数を使用して，Sampleノードのすべての子供ノードを取得します。

7.9.45　@@xmlelements関数

形式

@@xmlelements（可変記号，"タグ名"）

機能

「タグ名」と一致するタグ名を持つ要素ノードを取得するときに使用します。可変記号に設定されている要素ノードの下位にあるすべての要素ノードが，検索の対象となります。

規則

@@set文の右辺に指定する。

可変記号には，要素ノードを示す可変記号を指定する。

タグ名に'*'を指定した場合，下位のすべてのノードが取得される。

データ項目の定義情報は，@@set文の左辺の可変記号に二次元の配列で指定される。

一次元の配列は，指定されたタグ名に該当する要素ノードごとに確保される。一次元の配列の添字には，数値を指定する。

二次元の配列は，要素ノードの情報の種類ごとに確保される。二次元の配列の添字には，キーワードを指定する。

添字に指定するキーワード | 要素ノードの情報
Type | タイプ（固定値：2）
Name | タグ名

要素ノードが取得できたかどうかは，@@count関数を使用して判定する。@@count関数は，取得できない場合には0を返し，取得できた場合には要素ノードの数を返す。

使用例

@@xmlelements関数を使用して，タグ名がTag2の要素ノードを取得します。

7.9.46　@@xmlfirstchild関数

形式

@@xmlfirstchild（可変記号）

機能

可変記号に設定されているノードの最初の子供ノードを取得するときに使用します。

規則

@@set文の右辺に指定する。

可変記号にはノードを示す可変記号を指定する。

取得したノードの情報は，@@set文の左辺の可変記号に一次元の配列で設定される。

配列は，ノードの情報の種類ごとに確保される。配列の添字には，キーワードを指定する。

取得できたノードの種類は，ノード情報のタイプで判断する。

要素ノードの場合，次の情報が取得できる。

添字に指定するキーワード | 要素ノードの情報
Type | タイプ（固定値：2）
Name | タグ名

テキストノードの場合，次の情報が取得できる。

添字に指定するキーワード | テキストノードの情報
Type | タイプ（固定値：6）
Name | 名前　（固定値：#text）
Value | タグで囲まれた文字列

ノードが取得できたかどうかは，@@count関数を使用して判定する。@@count関数は，取得できない場合には0を返し，取得できた場合には1以上を返す。

使用例

@@xmlfirstchild関数を使用して，Sampleノードから最初の子供ノードを取得します。

7.9.47　@@xmllastchild関数

形式

@@xmllastchild（可変記号）

機能

可変記号に設定されているノードの最後の子供ノードを取得するときに使用します。

規則

@@set文の右辺に指定できる。

可変記号にはノードを示す可変記号を指定する。

取得したノードの情報は，@@set文の左辺の可変記号に一次元の配列で設定される。

配列はノードの情報の種類ごとに確保される。配列の添字には，キーワードを指定する。

取得したノードの種類はノード情報のタイプで判断する。

要素ノードの場合，次の情報が取得できる。

添字に指定するキーワード | 要素ノードの情報
Type | タイプ（固定値：2）
Name | タグ名

テキストノードの場合，次の情報が取得できる。

添字に指定するキーワード | テキストノードの情報
Type | タイプ（固定値：6）
Name | 名前　（固定値：#text）
Value | タグで囲まれた文字列

ノードが取得できたかどうかは，@@count関数を使用して判定する。@@count関数は，取得できない場合には0を返し，取得できた場合には1以上を返す。

使用例

@@xmllastchild関数を使用して，Sampleノードから最後の子供ノードを取得します。

7.9.48　@@xmlnext関数

形式

@@xmlnext（可変記号）

機能

可変記号に設定されているノードと同じ親ノードを持つ直後のノードを取得するときに使用します。

規則

@@set文の右辺に指定する。

可変記号にはノードを示す可変記号を指定する。

取得したノードの情報は，@@set文の左辺の可変記号に一次元の配列で設定される。

配列は，ノードの情報の種類ごとに確保される。配列の添字には，キーワードを指定する。

取得できたノードの種類はノード情報のタイプで判断する。

要素ノードの場合，次の情報が取得できる。

添字に指定するキーワード | 要素ノードの情報
Type | タイプ（固定値：2）
Name | タグ名

テキストノードの場合，次の情報が取得できる。

添字に指定するキーワード | テキストノードの情報
Type | タイプ（固定値：6）
Name | 名前　（固定値：#text）
Value | タグで囲まれた文字列

ノードが取得できたかどうかは，@@count関数を使用して判定する。@@count関数は，取得できない場合には0を返し，取得できた場合には1以上を返す。

使用例

@@xmlnext関数を使用して，Tag2ノードから直後のノードを取得します。

7.9.49　@@xmlparent関数

形式

@@xmlparent（可変記号）

機能

可変記号に設定されているノードの親ノードを取得するときに使用します。

規則

@@set文の右辺に指定する。

可変記号にはノードを示す可変記号を指定する。

取得したノードの情報は，@@set文の左辺の可変記号に一次元の配列で設定される。

配列は，ノードの情報の種類ごとに確保される。配列の添字には，キーワードを指定する。

次の情報が取得できる。

添字に指定するキーワード | 要素ノードの情報
Type | タイプ（固定値：2）
Name | 名前

ノードが取得できたかどうかは，@@count関数を使用して判定する。@@count関数は，取得できない場合には0を返し，取得できた場合には1以上を返す。

使用例

@@xmlparent関数を使用し，Tag2ノードから親ノードを取得します。

7.9.50　@@xmlprevious関数

形式

@@xmlprevious（可変記号）

機能

可変記号に設定されているノードと同じ親を持つ直前のノードを取得するときに使用します。

規則

@@set文の右辺に指定する。

可変記号にはノードを示す可変記号を指定する。

取得したノードの情報は，@@set文の左辺の可変記号に一次元の配列で設定される。

配列は，ノードの情報の種類ごとに確保される。配列の添字には，キーワードを指定する。

取得できたノードの種類はノード情報のタイプで判断する。

要素ノードの場合，次の情報が取得できる。

添字に指定するキーワード | 要素ノードの情報
Type | タイプ（固定値：2）
Name | タグ名

テキストノードの場合，次の情報が取得できる。

添字に指定するキーワード | テキストノードの情報
Type | タイプ（固定値：6）
Name | 名前　（固定値：#text）
Value | タグで囲まれた文字列

ノードが取得できたかどうかは，@@count関数を使用して判定する。@@count関数は，取得できない場合には0を返し，取得できた場合には1以上を返す。

使用例

@@xmlprevious関数を使用し，Tag2ノードから直前のノードを取得します。

付録

＜この付録の構成＞

付録A　環境設定

付録B　障害対策

付録C　テンプレートおよび部品の紹介

付録D　C/Sシステムサンプルプログラムの説明

付録E　SEWB+/REPOSITORYで表示される名称

付録F　SEWB+/CONSTRUCTIONのインストールとアンインストール

付録G　前バージョンからの移行

付録H　XML形式ファイルのフォーマット

付録I　ファイルの互換性

付録J　このマニュアルの参考情報

付録K　用語解説

付録A　環境設定

＜この節の構成＞

付録A.1　SEWB+/CONSTRUCTIONの環境設定

付録A.2　プログラム定義で選択したファイル名の保存方法

付録A.1　SEWB+/CONSTRUCTIONの環境設定

SEWB+/CONSTRUCTIONの環境設定を，次に示します。環境情報を設定したり更新したりする場合は，環境設定ダイアログを利用してください。

表A-1　SEWB+/CONSTRUCTIONの環境設定

ダイアログ中での表示名
設定内容
該当個所
省略時の値

エディタの指定
ユーザ処理でのUOC編集時や編成のリフォーム使用時，または生成時に，ソースプログラムを表示させるエディタ。
プログラム定義
notepad.exe

インデントサイズ
ソースプログラム生成時のインデンテーションの長さ。0～8の範囲で指定する。
（COBOLだけ有効）
ソースプログラム生成
レコードソース生成
2

COBOLソース正書法※¹
ソースプログラム生成およびレコードソース生成時のソース形式。
（固定形式／フリー形式／ホスト向け固定形式）
（COBOLだけ有効）
ソースプログラム生成
レコードソース生成
固定形式

データ定義およびレコード定義で辞書の自動再入力をしない
レコード定義がチェックインされている場合に，レコード定義ファイルを参照するデータ定義やプログラム定義が，レコード定義ファイルに辞書の変更内容が反映されたように動作するかどうかの設定。
また，データ定義がチェックインされている場合に，データ定義ファイルを参照するプログラム定義が，データ定義ファイルに辞書変更内容が反映されたように動作するかどうかの設定。
データ定義
レコード定義
データ定義およびレコード定義で辞書の自動再入力をする

テンプレートファイルパス
プログラム定義で利用するテンプレートファイルを検索するパス。複数のパスを指定できる。
プログラム定義
カレントパス

データ定義ファイルパス
プログラム定義で利用するデータ定義ファイルを検索するパス。複数のパスを指定できる。
プログラム定義
カレントパス

部品ファイルパス
ソースプログラム生成時に，部品を検索するパス。複数のパスを指定できる。
ソースプログラム生成
カレントパス

XMLファイルパス
プログラム定義で利用するXMLファイルを検索するパス。複数のパスを指定できる。
プログラム定義
カレントパス

マップ定義ファイルパス
プログラム定義で利用するマップ定義ファイルの検索パス。複数のパスを指定できる。
プログラム定義
カレントパス

レコード定義ファイルパス
データ定義で利用するレコード定義ファイルの検索パス。複数のパスを指定できる。
SEWB+/RECORD DEFINERのインストールの有無に関係なく指定できる。
データ定義
カレントパス

PIC句生成開始位置※²
PICTURE句，OCCURS句およびVALUE句の開始位置。COBOLソース正書法がフリー形式の場合は1～60，固定形式またはホスト向け固定形式の場合は8～60の範囲で指定できる。
ソースプログラム生成
レコードソース生成
41

すべての業務ルールを無条件に展開
業務ルール展開設定を無条件に展開しない（ユーザが選択する）か，無条件に展開する（全選択にする）かの設定。
プログラム定義
無条件に展開しない

ソースプログラムを自動清書しない※³
プログラム定義からソースプログラムを生成するときに清書するか，清書しないかの設定。
（COBOLだけ有効）
ソースプログラム生成
レコードソース生成
自動清書する

ユーザ追加処理をそのまま生成する※⁴
ソースプログラム生成時にユーザ追加処理を指定されたとおりにそのまま生成するか，展開文と同じように扱って生成するかの設定。
（COBOLだけ有効）
ソースプログラム生成
ユーザ追加処理を展開文と同じように扱って生成する。

一連番号の付加
ソースプログラム生成およびレコードソース生成時に，一連番号を付加するかどうかの設定。
（COBOLだけ有効）
ソースプログラム生成
レコードソース生成
付加しない

初期値
一連番号を付加する場合の初期値。1～999999の範囲で指定する。「一連番号の付加」をチェックしていない場合は，不活性になる。
（COBOLだけ有効）
ソースプログラム生成
100

増分値
一連番号を付加する場合の増分値。1～999999の範囲で指定する。「一連番号の付加」をチェックしていない場合は，不活性になる。
（COBOLだけ有効）
ソースプログラム生成
100

開始コメント※⁵
ユーザ追加処理のリバースで，ソースプログラムからユーザ追加処理を検索するときに使用するユーザ追加処理の開始コメントを指定する。
ユーザ追加処理のリバース
なし

終了コメント※⁵
ユーザ追加処理のリバースで，ソースプログラムからユーザ追加処理を検索するときに使用するユーザ追加処理の終了コメントを指定する。
ユーザ追加処理のリバース
なし

プログラム定義ファイルの新規格納形式
プログラム定義でファイルを保存する場合に，バイナリ形式（*.csp）にするかXML形式（*.csq）にするかを指定する。
プログラム定義
バイナリ形式（*.csp）

データ定義ファイルの新規格納形式
データ定義でファイルを保存する場合に，バイナリ形式（*.csd）にするかXML形式（*.cse）にするかを指定する。
データ定義
バイナリ形式（*.csd）

注※1

固定形式またはホスト向け固定形式でソースプログラムを生成する場合は，COBOLの固定形式またはホスト向け固定形式の規則に従ってユーザ追加処理を編集してください。

ホスト向け固定形式では，2バイトコードがある場合，機能キャラクタ占有領域が考慮されます。また，項目名が30バイト（機能キャラクタ占有領域を含めて）を超えた場合，31バイト以降は切り捨てられます。

注※2

データ項目名が，指定されたPICTURE句の生成開始位置を超えている場合，PICTURE句生成開始位置の指定は無視されます。PICTURE句は，データ項目名から1文字分のスペースを空けて生成されます。

また，データ項目名とPICTURE句が同行に入らない場合は，PICTURE句は改行されて生成されます。そのときの生成位置は，次の行のレベル番号と同じ位置です。なお，OCCURS句，VALUE句の場合も同様です。

注※3

「ソースプログラムを自動清書しない」の設定に関係なく，「PIC句生成開始位置」および「インデントサイズ」はデータ定義のレコード生成時（プログラム定義の@@expand文の展開を含む）に有効です。

注※4

COBOL正書法では，B領域を超える部分はコメントとして扱われます。しかし，展開文に可変記号を使用する場合，生成したソースがB領域を超えないようなテンプレートや部品を作成するのは困難です。このため，SEWB＋/CONSTRUCTIONでは，生成ソースがB領域を超える場合，複数行に分割してCOBOLソースを生成しています。

「ユーザ追加処理をそのまま生成する」オプションは，ユーザ追加処理をほかのテンプレートや部品から生成されるソースだけB領域を超えないよう分割し，ユーザ追加処理は指定されたまま生成する機能です。

注※5

@@lang文にUOC_BEGIN／UOC_ENDが指定されている場合は無効になります。

付録A.2　プログラム定義で選択したファイル名の保存方法

プログラム定義で選択したファイルの格納場所を保存する場合，そのファイルを相対パスで検索したか絶対パスで検索したかによって保存方法が異なります。

＜この項の構成＞

(1)　相対パスと絶対パス

(2)　絶対パスから相対パスへの変換

(3)　複数パスの指定

(4)　複数パス設定の注意事項

(1)　相対パスと絶対パス

相対パスでの保存
環境設定でパスを指定した場合，フォルダを除いた形（相対パス）でファイル名を保存します。相対パスでの保存をお勧めします。

絶対パスでの保存
環境設定でパスを指定しない場合，ドライブ名およびコンピュータ名を含むファイル名（絶対パス）で保存します。

注

絶対パスから相対パスに変更する場合は，コマンド「CSPDCNVP.EXE」を実行する必要があります。コマンド「CSPDCNVP.EXE」については，「(2) 絶対パスから相対パスへの変換」を参照してください。

環境設定で指定するパスの下にフォルダを置くこともできます。データ定義は，定義種別ごとにサブフォルダを分けた方が便利な場合もあります。

(2)　絶対パスから相対パスへの変換

プログラム定義ファイルに格納されているテンプレートファイル，データ定義ファイルなどのファイルパスを絶対パスから相対パスに変換する場合，コマンド「CSPDCNVP.EXE」を実行させます。

コマンドは，次のディレクトリに格納されています。

SEWB+ 基本開発環境の組み込み先パス名¥Construction

SEWB+ 基本開発環境の組み込み先パス名は，デフォルトでは次のように設定されています。システムドライブとは，Windowsが組み込まれているドライブです。

システムドライブ:¥Program Files¥HITACHI¥Sewb

注意

64ビット版のWindowsでの，デフォルトの組み込み先パス名を次に示します。

システムドライブ:¥Program Files (x86)¥HITACHI¥Sewb

形式

CSPDCNVP.EXE△変換元ファイル名
　　　　　　　{[△/o△変換先ファイル名] | [△/op△変換先ファイル出力先パス名]}
　　　　　　　 [△/t△トレースファイル名]
　　　　　　　 [△/help]
　　　　　　　 [△/?]

（凡例）

△：1文字以上の空白を示します。

注

｛　｝はどちらかを指定することを示します。

解説

変換元ファイル名：

パスを変換するプログラム定義ファイルのファイル名※¹を指定します。

/o△変換先ファイル名※²：

パスが変換されたプログラム定義ファイルを保存するパスの名称を指定します。

/op△変換先ファイル出力先パス名※²：

パスが変換されたプログラム定義ファイルを保存するパスの名称を指定します。ファイル名は，変換元ファイル名となります。

/t△トレースファイル名：

トレース情報の出力先ファイル名を指定します。

/help：

コマンドヘルプメッセージを表示します。

/? ：

コマンドヘルプメッセージを表示します。

注※1

ワイルドカードの指定ができます。ファイル名にワイルドカードを指定した場合，/oは指定できません。

注※2

/oまたは/opの指定がない場合，パス変換されたプログラム定義ファイルは，変換元ファイルに上書きされます。

(3)　複数パスの指定

環境設定では，検索パスとして複数のパスを指定できます。複数のパスを指定しておくと，プロジェクトで共用しているテンプレートファイルやデータ定義を修正して確認する場合に便利です。

例えば，データ定義ファイルを修正して確認するために，修正前または修正中のファイルと修正後のファイルを別々のパスで保管します。それぞれのパスを検索したい順番に従って環境設定に設定※しておくと，設定した順番にプログラム定義で使用されます。次に複数パスの設定を利用した作業手順を示します。

注※

SEWB+/CONSTRUCTION環境設定ダイアログの検索パスの欄で，検索したい順番に従って上から順に設定してください。

データ定義を修正するために，修正作業用のフォルダ「Work」をローカルに作る。
このとき，リポジトリには次のドキュメントが格納されていると仮定します。これらはリポジトリのフォルダ「Fix」に格納されています。

D1：修正するデータ定義ファイル

D2：修正しないデータ定義ファイル

P1：D1，D2を参照するプログラム

環境設定で「Work」「Fix」の順番で複数パスを設定しておく。
「Work」はローカルパスで，「Fix」はネットワークパスでそれぞれ設定します。修正作業用のフォルダを必ず最初に設定してください。

リポジトリから修正したいデータ定義を「Work」にチェックアウトして，修正する。

修正が終わったら，修正したデータ定義の妥当性をテストするために，プログラム定義を起動させる。
複数パスの設定で先に「Work」が設定されているため，必ず「Work」のデータ定義が参照されます。「P1」が参照する「D1」は修正された「Work」フォルダのものが参照され，「D2」はリポジトリの「Fix」フォルダのものがネットワーク参照されます。

テストでデータ定義の妥当性が確認されたら，「Work」のデータ定義を「Fix」にチェックインします。
以降，プログラム定義を起動すると，複数パスの最初に設定された「Work」には該当するデータ定義がないため，2番目に設定された「Fix」のデータ定義を参照するようになります。

(4)　複数パス設定の注意事項

環境設定で複数のパスを設定した場合，先に設定されたパスが優先されます。例えば，「C:¥修正中データ定義」「¥¥NET¥データ定義」の順番に設定されている場合，「¥¥NET¥データ定義」のファイルを参照したい場合でも，同じ名前のファイルが「C:¥修正中データ定義」にあれば，そちらのファイルが参照されます。

付録B　障害対策

SEWB+/CONSTRUCTIONでの作業中に障害が起きた場合はトレース出力ファイルに実行情報を出力し，保守員に連絡してください。

＜この節の構成＞

付録B.1　データ定義時に障害が起きた場合

付録B.2　プログラム定義時に障害が起きた場合

付録B.1　データ定義時に障害が起きた場合

データ定義時に障害が起きた場合は，コマンド「CSDDDEF.EXE」または「CSDDGEN.EXE」でデータ定義ファイルを実行させ，実行情報をトレースファイルに出力させます。

コマンドは，次のディレクトリに格納されています。

SEWB+ 基本開発環境の組み込み先パス名¥Construction

SEWB+ 基本開発環境の組み込み先パス名は，デフォルトでは次のように設定されています。システムドライブとは，Windowsが組み込まれているドライブです。

システムドライブ:¥Program Files¥HITACHI¥Sewb

注意

64ビット版のWindowsでの，デフォルトの組み込み先パス名を次に示します。

システムドライブ:¥Program Files (x86)¥HITACHI¥Sewb

＜この項の構成＞

(1)　データ定義の起動

(2)　レコードソース生成

(1)　データ定義の起動

形式

CSDDDEF.EXE△[入力ファイル名]
　　　　　 △/t△トレースファイル名

（凡例）

△：1文字以上の空白を示します。

注

［　］は省略できることを示します。

解説

入力ファイル名：

データ定義ファイル（.csdまたは.cse）のファイル名を指定します。

/t△トレースファイル名：

トレース情報※の出力先ファイル名を指定します。

注※

トレース情報には，データ定義ファイルの実行情報などの情報が出力されます。

(2)　レコードソース生成

コマンド「CSDDGEN.EXE」については，「2.4.2　コマンドでの生成（レコードソース）」を参照してください。

付録B.2　プログラム定義時に障害が起きた場合

プログラム定義時に障害が起きた場合は，コマンド「CSPDDEF.EXE」または「CSPDGEN.EXE」でプログラム定義ファイルを実行させ，実行情報をトレースファイルに出力させます。

コマンドは，次のディレクトリに格納されています。

SEWB+ 基本開発環境の組み込み先パス名¥Construction

SEWB+ 基本開発環境の組み込み先パス名は，デフォルトでは次のように設定されています。システムドライブとは，Windowsが組み込まれているドライブです。

システムドライブ:¥Program Files¥HITACHI¥Sewb

注意

64ビット版のWindowsでの，デフォルトの組み込み先パス名を次に示します。

システムドライブ:¥Program Files (x86)¥HITACHI¥Sewb

＜この項の構成＞

(1)　プログラム定義の起動

(2)　ソースプログラムの生成

(1)　プログラム定義の起動

形式

CSPDDEF.EXE△[入力ファイル名]
　　　　　 △/t△トレースファイル名

（凡例）

△：1文字以上の空白を示します。

注

［　］は省略できることを示します。

解説

入力ファイル名：

プログラム定義ファイル（.cspまたは.csq）のファイル名を指定します。

/t△トレースファイル名：

トレース情報※の出力先ファイル名を指定します。

注※

トレース情報には，プログラムの実行情報などの情報が出力されます。

(2)　ソースプログラムの生成

コマンド「CSPDGEN.EXE」については，「3.3.2　コマンドでの生成（ソースプログラム）」を参照してください。

付録C　テンプレートおよび部品の紹介

SEWB+では，信頼性の高いプログラムを効率良く作成するために，標準的なプログラム作成用のテンプレートと部品の組み合わせを用意しています。

バッチシステムのプログラムを作成するためのバッチシステム向けテンプレート・部品，およびC/Sシステムのプログラムを作成するためのC/Sシステム向けテンプレート・部品があります。

＜この節の構成＞

付録C.1　バッチシステム向けテンプレート・部品

付録C.2　C/Sシステム向けテンプレート・部品

付録C.1　バッチシステム向けテンプレート・部品

バッチシステムのプログラム作成に利用できるテンプレート・部品を，次に示します。

＜この項の構成＞

(1)　テンプレート（バッチシステム）

(2)　部品（バッチシステム）

(1)　テンプレート（バッチシステム）

バッチシステム向けテンプレートを次に示します。これらのテンプレートの詳細は，マニュアル「SEWB+ バッチシステム向けアプリケーションフレームワーク・部品 使用の手引」を参照してください。

ファイルの変換

ファイルの分配

レコードの抽出

レコードの集計

ファイルのマージ

シーケンシャルファイルの照合

シーケンシャルファイルの更新（エラー）

シーケンシャルファイルの更新（追加）

ランダムファイルの更新（エラー）

ランダムファイルの更新（追加）

項目チェック

突合チェック

(2)　部品（バッチシステム）

バッチシステム向け部品を次に示します。これらの部品の詳細は，マニュアル「SEWB+ バッチシステム向けアプリケーションフレームワーク・部品 使用の手引」を参照してください。

プログラム情報部品

ファイル入出力部品

付録C.2　C/Sシステム向けテンプレート・部品

C/Sシステムのプログラム作成に利用できるテンプレート・部品を，次に示します。

＜この項の構成＞

(1)　テンプレート（C/Sシステム）

(2)　部品（C/Sシステム）

(1)　テンプレート（C/Sシステム）

C/Sシステム向けテンプレートを次に示します。

サービス提供プログラム（SPP）用テンプレート
SPPメインプログラム
アプリケーション起動SPP（EXECAP処理SPP）
メッセージ送受信SPP（SEND-RECV処理SPP）
デバイスアクセスSPP

メッセージ処理プログラム（MHP）用テンプレート
MHPメインプログラム
デバイスアクセスMHP

(2)　部品（C/Sシステム）

C/Sシステム向け部品を次に示します。

OpenTP1部品
リモートプロシジャコール部品（RPC部品）
トランザクション制御部品
メッセージ制御部品（MCF部品）
OpenTP1専用ユーザファイルの操作部品（DAM，TAM操作部品）

RDB操作部品
RDB操作部品

SECTION生成部品
デバイスアクセスSECTION生成部品

付録D　C/Sシステムサンプルプログラムの説明

SEWB+/CONSTRUCTIONでは，実際の業務処理を想定したC/Sシステムサンプルプログラムが用意されています。SEWB+/CONSTRUCTIONを使用してプログラム開発をする場合の，テンプレート作成や，プログラム定義およびデータ定義を，例題を通して見ることができます。また，このサンプルプログラムを，実際のテンプレートの作成およびプログラムの設計をする場合のガイドとして利用することもできます。

なお，C/Sシステムサンプルを使用したり実行させたりする場合に必要な環境設定については，Readme.TXTを参照してください。

＜この節の構成＞

付録D.1　C/Sシステムサンプルプログラムの全体の概要

付録D.2　C/Sシステムサンプルプログラムの詳細と構成

付録D.3　多様な開発環境に対応するC/Sシステムサンプルプログラムの詳細と構成

付録D.1　C/Sシステムサンプルプログラムの全体の概要

C/Sシステムサンプルプログラムの業務処理システムは，クライアント側に作成したGUI画面からデータを入力し，サーバ側の処理APを起動させて処理を実行し，その結果をGUI画面に出力したり，帳票として出力したりするものです。C/Sシステムサンプルプログラムの全体の概要を次に示します。

図D-1　C/Sシステムサンプルプログラムの全体の概要

付録D.2　C/Sシステムサンプルプログラムの詳細と構成

C/Sシステムサンプルプログラムの二つの処理1.登録作業処理，2.商品受注処理について，それぞれの処理内容とシステムの詳細を示します。

＜この項の構成＞

(1)　登録作業処理

(2)　商品受注処理

(3)　C/Sシステムサンプルプログラムの構成

(1)　登録作業処理

登録作業処理には，会社情報を登録する場合，顧客情報を登録する場合および商品情報を登録する場合があり，それぞれアクセスするサーバが異なります。また，この処理では，それぞれの情報を検索する機能も利用できますが，この場合も検索する情報によってアクセスするサーバが異なります。

(a)　登録作業処理の内容

ここでは登録作業処理の内容について示します。なお，図に示されているのは会社情報の登録作業です。顧客情報登録および商品情報登録の場合も，アクセスするサーバファイルや設定する情報が異なるだけで，処理内容は同じです。

図D-2　登録作業処理の内容

クライアント側のGUI画面には，会社情報登録画面と顧客情報登録画面および商品登録画面があります。それぞれ営業課，人事課，および在庫管理課のサーバにアクセスします。どのサーバにアクセスするかは，動作環境の設定ダイアログで設定します。

会社情報登録画面から登録依頼をすると，サーバプログラムが起動され，会社情報登録処理が実行されます。会社情報ファイルのレコードが追加され，登録番号がGUI画面に返されます。

会社情報登録画面から検索依頼をすると，サーバプログラムが起動され，会社情報検索処理が実行されます。会社情報ファイルが検索され，会社情報がGUI画面に返されます。

(b)　登録処理システムの詳細

ここでは，会社情報登録処理の詳細を示します。顧客情報登録処理や，商品情報登録処理のシステムも同じ構造です。

図D-3　会社情報登録処理システムの詳細

(2)　商品受注処理

商品受注処理では，受注情報を登録します。また商品受注では，画面から入力された商品IDをキーに商品情報ファイルを検索して，商品名や単価を表示します。

(a)　商品受注処理の内容

図D-4　商品受注処理の内容

クライアント側のGUI画面には，商品受注画面があり，営業課のサーバにアクセスします。

商品受注画面から受注情報の追加をクリックすると，サーバプログラムが起動され，商品情報検索処理が実行されます。検索された商品情報の商品名称や単価，および合計などがGUI画面に表示されます。

商品受注画面から受注をクリックすると，サーバプログラムが起動され，受注情報追加処理が実行されます。受注情報ファイルが更新され，受注番号がGUI画面に返されます。

(b)　商品受注処理システムの詳細

ここでは，商品受注処理の詳細を示します。

図D-5　商品受注処理システムの詳細

(3)　C/Sシステムサンプルプログラムの構成

サンプルフォルダの構成を示します。

付録D.3　多様な開発環境に対応するC/Sシステムサンプルプログラムの詳細と構成

付録D.2で説明しているサンプルプログラムでは，プログラミング言語にCOBOL，データ管理にISAMを使用して，OpenTP1環境下で動作するプログラムを開発します。

SEWB+/CONSTRUCTIONでは，C言語やRDBを使用するプログラム開発を対象にしたサンプルプログラムも用意しています。

多様な開発環境に対応するC/Sシステムサンプルプログラムを，次に示します。

表D-1　多様な開発環境に対応するC/Sシステムサンプルプログラム

サンプル名称
通信管理
言語
データ管理
GUI
備考

C/Sシステムサンプル
OpenTP1
COBOL
順編成ファイル
VB

C言語-HiRDB　サンプル
OpenTP1
C
HiRDB
VB
※

COBOL-HiRDB　サンプル
OpenTP1
COBOL
HiRDB
VB
※

TPBroker-C言語　サンプル
TPBroker
C
HiRDB
Web Page
Generator
※

XMAP3-COBOL言語サンプル
OpenTP1
COBOL
順編成ファイル
XMAP3
※

注※

C/Sシステムサンプルの会社情報レコード追加・検索処理だけに提供されています。

C/Sシステムサンプルは，次に示すフォルダに格納されています。

SEWB+ 基本開発環境の組み込み先パス名¥Construction¥Sample

SEWB+ 基本開発環境の組み込み先パス名は，デフォルトでは次のように設定されています。システムドライブとは，Windowsが組み込まれているドライブです。

システムドライブ:¥Program Files¥HITACHI¥Sewb

注意

64ビット版のWindowsでの，デフォルトの組み込み先パス名を次に示します。

システムドライブ:¥Program Files (x86)¥HITACHI¥Sewb

サンプルフォルダの詳細は，「(5) 多様な開発環境に対応するC/Sシステムサンプルプログラムの構成」を参照してください。

＜この項の構成＞

(1)　C言語-HiRDBサンプルの登録作業処理

(2)　COBOL-HiRDBサンプルの登録作業処理

(3)　TPBroker-C言語サンプルの登録作業処理

(4)　XMAP3-COBOLサンプルの登録作業処理

(5)　多様な開発環境に対応するC/Sシステムサンプルプログラムの構成

(1)　C言語-HiRDBサンプルの登録作業処理

C言語-HiRDBサンプルの会社情報登録処理を示します。

(2)　COBOL-HiRDBサンプルの登録作業処理

COBOL-HiRDBサンプルの会社情報登録処理を示します。

(3)　TPBroker-C言語サンプルの登録作業処理

TPBroker-C言語サンプルの会社情報登録処理を示します。

(4)　XMAP3-COBOLサンプルの登録作業処理

XMAP3-COBOLサンプルの会社情報登録処理を示します。

(5)　多様な開発環境に対応するC/Sシステムサンプルプログラムの構成

サンプルプログラムの構成を示します。

付録E　SEWB+/REPOSITORYで表示される名称

SEWB+/CONSTRUCTIONの各定義ファイルが，SEWB+/REPOSITORYに格納された場合，表示される名称を次に示します。

表E-1　SEWB+/REPOSITORYで表示される名称

表示される名称※ | ドキュメント種別名 | 拡張子
SEWB+ プログラム定義 | CONSTRUCTION_PROGRAMDOC | .csp
SEWB+ テンプレート | CONSTRUCTION_TEMPLATEDOC | .cst
SEWB+ ファイル定義 | CONSTRUCTION_FILEDOC | .csd
SEWB+ RDB定義 | CONSTRUCTION_RDBDOC
SEWB+ DAM定義 | CONSTRUCTION_DAMDOC
SEWB+ TAM定義 | CONSTRUCTION_TAMDOC
SEWB+ RPC入力パラメタ定義 | CONSTRUCTION_RPCINPUTPARMDOC
SEWB+ RPC応答領域定義 | CONSTRUCTION_RPCREPLYPARMDOC
SEWB+ メッセージ定義 | CONSTRUCTION_MESSAGEDOC
SEWB+ ユーザジャーナル定義 | CONSTRUCTION_USERJOURNALDOC
SEWB+ メッセージログ定義 | CONSTRUCTION_MESSAGELOGDOC
SEWB+ 共通作業領域定義 | CONSTRUCTION_COMMONWORKAREADOC
SEWB+ プログラム定義（XML形式） | CONSTRUCTION_XML_PROGRAMDOC | .csq
SEWB+ ファイル定義（XML形式） | CONSTRUCTION_XML_FILEDOC | .cse
SEWB+ RDB定義（XML形式） | CONSTRUCTION_XML_RDBDOC
SEWB+ DAM定義（XML形式） | CONSTRUCTION_XML_DAMDOC
SEWB+ TAM定義（XML形式） | CONSTRUCTION_XML_TAMDOC
SEWB+ RPC入力パラメタ定義（XML形式） | CONSTRUCTION_XML_RPCINDOC
SEWB+ RPC応答領域定義（XML形式） | CONSTRUCTION_XML_RPCREPLYDOC
SEWB+ メッセージ定義（XML形式） | CONSTRUCTION_XML_MESSAGEDOC
SEWB+ ユーザジャーナル定義（XML形式） | CONSTRUCTION_XML_USERJOURNALDOC
SEWB+ メッセージログ定義（XML形式） | CONSTRUCTION_XML_MESSAGELOGDOC
SEWB+ 共通作業領域定義（XML形式） | CONSTRUCTION_XML_COMMONWORKDOC
SEWB+ 部品 | CONSTRUCTION_PARTSDOC | .csr
SEWB+ レコード定義 | CONSTRUCTION_RECORDDOC | .csc

注※

SEWB+/REPOSITORY-BROWSERのウィンドウに表示されます。

付録F　SEWB+/CONSTRUCTIONのインストールとアンインストール

SEWB+/CONSTRUCTIONのインストールとアンインストールの方法について説明します。

＜この節の構成＞

(1)　SEWB+/CONSTRUCTIONのインストール

(2)　SEWB+/CONSTRUCTIONのアンインストール

(3)　SEWB+/CONSTRUCTIONの環境設定情報の保持

(1)　SEWB+/CONSTRUCTIONのインストール

SEWB+/CONSTRUCTIONは，SEWB+ 基本開発環境のインストールを実行することで，インストールされます。SEWB+ 基本開発環境のインストール手順などの詳細は，マニュアル「SEWB+/REPOSITORY 運用ガイド」を参照してください。

インストール後の環境設定については，「付録A　環境設定」を参照してください。

(2)　SEWB+/CONSTRUCTIONのアンインストール

SEWB+/CONSTRUCTIONは，SEWB+ 基本開発環境のアンインストールを実行することで，アンインストールされます。SEWB+ 基本開発環境のアンインストール手順などの詳細は，マニュアル「SEWB+/REPOSITORY 運用ガイド」を参照してください。

(3)　SEWB+/CONSTRUCTIONの環境設定情報の保持

SEWB+/CONSTRUCTIONを再インストールする場合，環境設定情報を保持できます。

付録G　前バージョンからの移行

前バージョンからバージョンアップする場合の移行について説明します。

＜この節の構成＞

付録G.1　バージョン3からバージョン4にバージョンアップする場合の移行

付録G.2　バージョン2からバージョン4にバージョンアップする場合の移行

付録G.1　バージョン3からバージョン4にバージョンアップする場合の移行

SEWB+ 基本開発環境のSEWB+/CONSTRUCTIONをバージョンアップした場合，前バージョンのSEWB+/CONSTRUCTION※使用時にユーザが設定していた環境設定情報は，引き継がれます。

SEWB+/CONSTRUCTIONをバージョンアップする手順については，マニュアル「SEWB+/REPOSITORY 運用ガイド」を参照してください。

注※

前バージョンのSEWB+/CONSTRUCTIONとは次に示す製品です。

P-2451-1434　SEWB+ 基本開発環境セット　03-nn（nn：数字）

付録G.2　バージョン2からバージョン4にバージョンアップする場合の移行

前バージョンのSEWB+/CONSTRUCTION※からSEWB+ 基本開発環境のSEWB+/CONSTRUCTIONにバージョンアップした場合，前バージョンのSEWB+/CONSTRUCTION使用時にユーザが設定していた環境設定情報は，引き継がれます。

SEWB+/CONSTRUCTIONをバージョンアップする手順については，マニュアル「SEWB+/REPOSITORY 運用ガイド」を参照してください。

注※

前バージョンのSEWB+/CONSTRUCTIONとは次に示す製品です。

P-2651-8324　SEWB+/CONSTRUCTION　02-nn（nn：数字）

P-2451-8F24　SEWB+/CONSTRUCTION Server　02-nn（nn：数字）

付録H　XML形式ファイルのフォーマット

SEWB+/CONSTRUCTIONでは，データ定義およびプログラム定義の情報をXML形式ファイルに出力できます。

出力されるファイルのファイル形式，および出力方法について説明します。

＜この節の構成＞

付録H.1　XML形式ファイルの出力方法

付録H.2　データ定義情報のXML形式ファイルへの出力

付録H.3　プログラム定義情報のXML形式ファイルへの出力

付録H.1　XML形式ファイルの出力方法

＜この項の構成＞

(1)　データ定義情報の出力方法

(2)　プログラム情報の出力方法

(1)　データ定義情報の出力方法

(a)　データ定義で出力する場合

環境設定の「データ定義ファイルの格納形式」で，格納形式を「XML形式」に設定する

XML形式ファイルを出力するデータ定義ファイルを開く

データ定義ファイルを保存する

(b)　コマンドで出力する場合

データ定義ファイルのフォーマットをXML形式のフォーマットに変更する場合，コマンド「CSDDCNVX.EXE」を実行させます。

コマンドは，次のディレクトリに格納されています。

SEWB+ 基本開発環境の組み込み先パス名¥Construction

SEWB+ 基本開発環境の組み込み先パス名は，デフォルトでは次のように設定されています。システムドライブとは，Windowsが組み込まれているドライブです。

システムドライブ:¥Program Files¥HITACHI¥Sewb

注意

64ビット版のWindowsでの，デフォルトの組み込み先パス名を次に示します。

システムドライブ:¥Program Files (x86)¥HITACHI¥Sewb

形式

CSDDCNVX.EXE△変換元ファイル名
　　　　　　　{ [△/o△変換先ファイル名] | [△/op△変換先ファイル出力先パス名] }
　　　　　　　[△/t△トレースファイル名]
　　　　　　　[△/help]
　　　　　　　[△/?]

（凡例）

△：1文字以上の空白を示します。

注

［　］は省略できることを示します。

｛　｝はどちらかを指定することを示します。

解説

変換元ファイル名：

フォーマットを変換するプログラム定義ファイルのファイル名※¹を指定します。

/o△変換先ファイル名※²：

フォーマットが変換されたファイルを保存するパスの名称を指定します。

/op△変換先ファイル出力先パス名※²：

フォーマットが変換されたファイルを保存するパスの名称を指定します。ファイル名は，「変換元ファイル名（拡張子なし）」+「.cse」となります。

/t△トレースファイル名：

トレース情報の出力先ファイル名を指定します。

/help：

コマンドヘルプメッセージを表示します。

/? ：

コマンドヘルプメッセージを表示します。

注※1

ワイルドカードの指定ができます。ファイル名にワイルドカードを指定した場合，/oは指定できません。

注※2

/oまたは/opの指定がない場合，変換元ファイルと同一フォルダに「変換元ファイル名（拡張子なし）」+「.cse」で作成されます。

(2)　プログラム情報の出力方法

(a)　プログラム定義で出力する場合

環境設定の「プログラム定義ファイルの格納形式」で，格納形式を「XML形式」に設定する

XML形式ファイルを出力するプログラム定義ファイルを開く

プログラム定義を保存する

(b)　コマンドで出力する場合

プログラム定義ファイルのフォーマットをXML形式のフォーマットに変更する場合，コマンド「CSPDCNVX.EXE」を実行させます。

コマンドは，次のディレクトリに格納されています。

SEWB+ 基本開発環境の組み込み先パス名¥Construction

SEWB+ 基本開発環境の組み込み先パス名は，デフォルトでは次のように設定されています。システムドライブとは，Windowsが組み込まれているドライブです。

システムドライブ:¥Program Files¥HITACHI¥Sewb

注意

64ビット版のWindowsでの，デフォルトの組み込み先パス名を次に示します。

システムドライブ:¥Program Files (x86)¥HITACHI¥Sewb

形式

CSPDCNVX.EXE△変換元ファイル名
　　　　　 { [△/o△変換先ファイル名] | [△/op△ 変換先ファイル出力先パス名] }
　　　　　 [△/t△トレースファイル名]
　　　　　 [△/help]
　　　　　 [△/?]

（凡例）

△：1文字以上の空白を示します。

注

［　］は省略できることを示します。

｛　｝はどちらかを指定することを示します。

解説

変換元ファイル名：

フォーマットを変換するプログラム定義ファイルのファイル名※¹を指定します。

/o△変換先ファイル名※²：

フォーマットが変換されたファイルを保存するパスの名称を指定します。

/op△変換先ファイル出力先パス名※²：

フォーマットが変換されたファイルを保存するパスの名称を指定します。ファイル名は，「変換元ファイル名（拡張子なし）」+「.csq」となります。

/t△トレースファイル名：

トレース情報の出力先ファイル名を指定します。

/help：

コマンドヘルプメッセージを表示します。

/? ：

コマンドヘルプメッセージを表示します。

注※1

ワイルドカードの指定ができます。ファイル名にワイルドカードを指定した場合，/oは指定できません。

注※2

/oまたは/opの指定がない場合，変換元ファイルと同一フォルダに「変換元ファイル名（拡張子なし）」+「.csq」で作成されます。

付録H.2　データ定義情報のXML形式ファイルへの出力

＜この項の構成＞

(1)　ファイルフォーマット

(2)　DTD（Document Type Definition）

(1)　ファイルフォーマット

データ定義をXML形式ファイルに出力するときのファイルフォーマットを，次に示します。

表H-1　データ定義ファイル（.cse）のファイルフォーマット

タグ種

含まれるタグ
要素型名
タグ出現回数
設定可能値
説明
備考

データ定義パッケージ：Construction

データ定義ファイル情報
File
1
－

データ定義情報
Data
1
－

データ定義ファイル情報：File

ID
ID
1
"P-2651-8324"
PP型名

種別
Type
1
"DATADEFINITION"
データ定義ファイルのファイル種別

バージョン
Version
1
"01"
ファイルバージョン

ステータス
Status
1
文字列
ファイルステータス

データ定義情報：Data

データ定義名称
Name
0または1
文字列
名称（［サイン］タブ）の内容

作成者
Author
0または1
文字列
作成者（［サイン］タブ）の内容

概要
Outline
0または1
文字列（改行を含む）
概要（［サイン］タブ）の内容

種別
Type
1
"FILE"：ファイル
"RDB"：RDB
"DAM"：DAM
"TAM"：TAM
"RPCIN"：RPC入力パラメタ
"RPCREPLY"：RPC応答領域
"MESSAGE"：メッセージ
"USERJOURNAL"：ユーザジャナル
"MESSAGELOG"：メッセージログ
"WORK"：ワーク
定義種別（定義種別選択ダイアログで選択）

結合項目数
ItemNum
1
文字列
結合項目（レコード定義）の数

レベル開始値
InitialLevel
1
文字列
生成時のレベル番号開始の値

レベル増分値
IncrementLevel
1
文字列
生成時のレベル番号増分の値

初期値生成
InitValue
1
"TRUE"：する
"FALSE"：しない
生成時の初期値展開の値

COBOLソースパス
CobolSourcePath
1
文字列
生成先パス（生成ダイアログ オプションがCOBOL）の値

Cソースパス
CSourcePath
1
文字列
生成先パス（生成ダイアログ オプションがC）の値

ファイル名
FileName
1
文字列
ファイル名（［ファイル］タブ）の内容
ファイル情報

ファイル種別
FileType
1
"SEQUENTIAL"：順編成
"RELATIVE"：相対編成
"INDEX"：索引編成
"INDEXEDSEQUENTIAL"：索引順編成
"TEXT"：テキスト編成
"CSV"：CSV編成
ファイル編成（［ファイル］タブ）の内容
ファイル情報

レコード形成
FlRecForm
1
"FIXED"：固定長
"VARIABLE"：可変長
レコード形式（［ファイル］タブ）の内容

キー名
FlKeyName
1
文字列
キー（［ファイル］タブ）の内容

キー名OID
FlKeyObjectId
1
文字列
キー（［ファイル］タブ）のOID

キー名日付
FlKeyUpdateTime
1
文字列
キー（［ファイル］タブ）の日付

長さ設定エリア
AreaName
1
文字列

EXTERNAL
External
1
文字列

テーブル名
TableName
1
文字列
表名称（［RDB］タブ）の内容
RDB情報

DAMファイル名
DamFileName
1
文字列
ファイル名（［DAM］タブ）の内容
DAM情報

ブロックサイズ
BlockSize
1
文字列
ブロックサイズ（［DAM］タブ）の内容
DAM情報

TAMテーブル名
TamTableName
1
文字列
テーブル名称（［TAM］タブ）の内容
TAM情報

キー項目名
KeyName
1
文字列
キー（［TAM］タブ）の内容
TAM情報

キー項目OID
KeyObjectId
1
文字列
キー（データ項目）のOID
TAM情報

キー項目更新日付
KeyUpdateTime
1
文字列
テーブル名称（［TAM］タブ）の内容
TAM情報

ユーザジャーナルコード
UserJournalCode
1
文字列
コード（［ユーザジャーナル］タブ）の内容
ユーザジャーナル情報

定義種別
DefinitionType
1
"0"：結合項目名称
"1"：レコード定義名称
結合項目名称，またはレコード定義名称の区分

最上位結合項目名称
HighOrderKeyName
1
文字列
最上位結合項目（レコード定義）の名称

最上位結合項目OID
HighOrderKeyObjectId
1
文字列
最上位結合項目のOID

最上位結合項目更新日時
HighOrderKeyUpdateTime
1
文字列
最上位結合項目（レコード定義）の更新日時

パス使用有無
UsePath
1
"USE"：利用する
"NOUSE"：利用しない

レコードファイル名フルパス
RecFlName
1
文字列

キー名使用有無
KeyUse
1
"1"：利用する
"0"：利用しない

生成キーワード情報
GenerateKeyword
1
－

結合項目下位情報
Record
1
－
辞書（レコード定義）の情報

生成キーワード情報：GenerateKeyword

英数字項目
CobolX
1
文字列

辞書情報

数字編集項目
CobolZ
1
文字列

辞書情報

漢字項目
CobolN
1
文字列

辞書情報

符号なし外部10進項目
Cobol9
1
文字列

辞書情報

符号付き外部10進項目
CobolS
1
文字列

辞書情報

符号なし内部10進項目
CobolU
1
文字列

辞書情報

符号付き内部10進項目
CobolP
1
文字列

辞書情報

符号なし2進項目
CobolBU
1
文字列

辞書情報

符号付き2進項目
CobolB
1
文字列

辞書情報

外部浮動小数点項目
CobolE
1
文字列

辞書情報

内部浮動小数点項目
CobolD
1
文字列

辞書情報

内部ブール項目
Cobol1
1
文字列

辞書情報

外部ブール項目
Cobol8
1
文字列

辞書情報

時刻項目
CobolXT
1
文字列

辞書情報

日付項目
CobolXD
1
文字列

辞書情報

アドレスデータ項目
CobolT
1
文字列

辞書情報

フリー定義
CobolFree
1
文字列

辞書情報

文字型
Cchar
1
文字列

辞書情報

文字型（ポインタ）
Cpchar
1
文字列

辞書情報

符号付き短整数型
Cshort
1
文字列

辞書情報

符号なし短整数型
Cushort
1
文字列

辞書情報

符号付き整数型
Cint
1
文字列

辞書情報

符号なし整数型
Cuint
1
文字列

辞書情報

符号付き長整数型
Clong
1
文字列

辞書情報

符号なし長整数型
Culong
1
文字列

辞書情報

単精度浮動小数点型
Cfloat
1
文字列

辞書情報

倍精度浮動小数点型
Cdouble
1
文字列

辞書情報

拡張精度浮動小数点型
ClongDouble
1
文字列

辞書情報

時刻型
Cchart
1
文字列

辞書情報

日付型
Cchard
1
文字列

辞書情報

フリー定義
Cfree
1
文字列

辞書情報

ユーザ定義型
UserCustomType
0以上
文字列

辞書情報

結合項目下位情報：Record※

結合項目OID
ObjectId
1
文字列

辞書情報

データ項目数
DataItemNum
1
文字列

辞書情報

データ項目情報
DataItem
1
－

データ項目情報：DataItem※

データ項目名
Nname
1
文字列

辞書情報

データ項目OID
ObjectId
1
文字列

辞書情報

データ項目種別
Kind
1
文字列

辞書情報

データ項目レベル番号
Level
1
文字列

辞書情報

標準名称
StandardName
4
文字列
標準名称
辞書情報

フリガナ
Kana
4
文字列

辞書情報

コメント
Comment
4
文字列

辞書情報

フィールド
Field
20
文字列

辞書情報

分類
TypeGroup
1
文字列

辞書情報

分類文字数
TypeGroupString
1
文字列

辞書情報

けた数
Total
1
文字列

辞書情報

小数部けた数
DecimalPart
1
文字列

辞書情報

反復回数
Repeat
1
文字列

辞書情報

辞書参照状態
DictStatus
1
文字列

データ項目更新日付
Date
1
文字列

辞書情報
Dict
12
－
辞書（レコード定義）の情報

生成キーワード
Keyword
2
－

レコード属性
RecordAttribute
2
－

辞書情報：Dict※

言語区分
Lang
0または1
文字列

辞書情報

データ項目名
Name
0または1
文字列

辞書情報

タイプ
Type
0または1
文字列

辞書情報

タイプ文字列
TypeString
0または1
文字列

辞書情報

フリー定義文字列
FreeString
0または1
文字列

辞書情報

編集文字列
EditString
0または1
文字列

辞書情報

初期値
InitValue
0または1
文字列

辞書情報

フィールド
Field
0または1
文字列

辞書情報

生成キーワード：Keyword※

@DATAITEM
DataItem
0または1
文字列

辞書情報

@LEN
Len
0または1
文字列

辞書情報

@PLEN
Plen
0または1
文字列

辞書情報

@ILEN
Ilen
0または1
文字列

辞書情報

@DLEN
Dlen
0または1
文字列

辞書情報

@VALUE
Value
0または1
文字列

辞書情報

@OCCURS
Occurs
0または1
文字列

辞書情報

@EDITCHAR
Editchar
0または1
文字列

辞書情報

@COMP
Comp
0または1
文字列

辞書情報

@FREE
Free
0または1
文字列

辞書情報

レコード属性：RecordAttribute

CHARCTER TYPE
CharType
0または1
文字列

CHARCTER TYPE値
CharTypeVal
0または1
文字列

指標名
Index
0または1
文字列

可変反復回数項目名
ValOccursName
0または1
文字列

可変反復回数最小値
ValOccursMini
0または1
文字列

アドレス名
Address
0または1
文字列

再定義名
Redefine
0または1
文字列

EXTERNAL句
External
0または1
文字列

SYNC句
Sync
0または1
文字列

JUST句
Just
0または1
文字列

BRANK ZERO句
BrankZero
0または1
文字列

注1

斜体で表記している要素型名の設定可能値については，対応するタグ種を参照してください。

注2

属性値に含まれる「<」「&」「"」，および内容（文字データ）に含まれる「<」「&」は，それぞれ次のように置換します。

<：&lt;

&：&amp;

"：&quot;

注※

備考に「辞書情報」と記載しているタグ情報でも，レコード定義ファイルを使用している場合には，レコード定義の内容によってレコード定義情報が設定されます。

(2)　DTD（Document Type Definition）

データ定義ファイルのDTDを次に示します。

<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE XMI [
<!ELEMENT XMI.content (Construction.File,Construction.Data)>
<!ELEMENT Construction.File (Construction.File.ID,Construction.File.Type,Construction.File.Version,Construction.File.Status)>
<!ELEMENT Construction.File.ID (#PCDATA)>
<!ELEMENT Construction.File.Type (#PCDATA)>
<!ELEMENT Construction.File.Version (#PCDATA)>
<!ELEMENT Construction.File.Status (#PCDATA)>
<!ELEMENT Construction.Data (Construction.Data.Name?,Construction.Data.Author?,
                            Construction.Data.Outline?,Construction.Data.Type,
                            Construction.Data.ItemNum,Construction.Data.InitialLevel,
                            Construction.Data.IncrementLevel,Construction.Data.InitValue,
                            Construction.Data.CobolSourcePath,Construction.Data.CSourcePath,
                            Construction.Data.FileName,Construction.Data.FileType,
                            Construction.Data.FlKeyName,Construction.Data.FlKeyObjectId,
                            Construction.Data.FlKeyUpdateTime,Construction.Data.AreaName,
                            Construction.Data.External,Construction.Data.TableName,
                            Construction.Data.DamFileName,Construction.Data.BlockSize,
                            Construction.Data.TamTableName,Construction.Data.KeyName,
                            Construction.Data.KeyObjectID,Construction.Data.KeyUpdateTime,
                            Construction.Data.UserJournalCode,Construction.Data.HighOrderKeyName*,
                            Construction.Data.HighOrderKeyObjectID*,Construction.Data.HighOrderKeyUpdateTime*,
                            Construction.Data.generatekeyword,Construction.Data.record*)>
<!ELEMENT Construction.Data.Name (#PCDATA)>
<!ELEMENT Construction.Data.Author (#PCDATA)>
<!ELEMENT Construction.Data.Outline (#PCDATA)>
<!ELEMENT Construction.Data.Type (#PCDATA)>
<!ELEMENT Construction.Data.ItemNum (#PCDATA)>
<!ELEMENT Construction.Data.InitialLevel (#PCDATA)>
<!ELEMENT Construction.Data.IncrementLevel (#PCDATA)>
<!ELEMENT Construction.Data.InitValue (#PCDATA)>
<!ELEMENT Construction.Data.CobolSourcePath (#PCDATA)>
<!ELEMENT Construction.Data.CSourcePath (#PCDATA)>
<!ELEMENT Construction.Data.FileName (#PCDATA)>
<!ELEMENT Construction.Data.FileType (#PCDATA)>
<!ELEMENT Construction.Data.TableName (#PCDATA)>
<!ELEMENT Construction.Data.DamFileName (#PCDATA)>
<!ELEMENT Construction.Data.BlockSize (#PCDATA)>
<!ELEMENT Construction.Data.TamTableName (#PCDATA)>
<!ELEMENT Construction.Data.KeyName (#PCDATA)>
<!ELEMENT Construction.Data.KeyObjectID (#PCDATA)>
<!ELEMENT Construction.Data.KeyUpdateTime (#PCDATA)>
<!ELEMENT Construction.Data.UserJournalCode (#PCDATA)>
<!ELEMENT Construction.Data.DefinitionType (#PCDATA)>
<!ELEMENT Construction.Data.HighOrderKeyName (#PCDATA)>
<!ELEMENT Construction.Data.HighOrderKeyObjectID (#PCDATA)>
<!ELEMENT Construction.Data.HighOrderKeyUpdateTime (#PCDATA)>
<!ELEMENT Construction.Data.UsePath (#PCDATA)>
<!ELEMENT Construction.Data.RecFlName (#PCDATA)>
<!ELEMENT Construction.Data.KeyUse (#PCDATA)>
<!ELEMENT Construction.Data.generatekeyword (Construction.GenerateKeyword)>
<!ELEMENT Construction.GenerateKeyword (Construction.GenerateKeyword.CobolX,Construction.GenerateKeyword.CobolZ,
                                       Construction.GenerateKeyword.CobolN,Construction.GenerateKeyword.Cobol9,
                                       Construction.GenerateKeyword.CobolS,Construction.GenerateKeyword.CobolU,
                                       Construction.GenerateKeyword.CobolP,Construction.GenerateKeyword.CobolBU,
                                       Construction.GenerateKeyword.CobolB,Construction.GenerateKeyword.CobolE,
                                       Construction.GenerateKeyword.CobolD,Construction.GenerateKeyword.Cobol1,
                                       Construction.GenerateKeyword.Cobol8,Construction.GenerateKeyword.CobolXT,
                                       Construction.GenerateKeyword.CobolXD,Construction.GenerateKeyword.CobolT,
                                       Construction.GenerateKeyword.CobolFree,Construction.GenerateKeyword.CChar,
                                       Construction.GenerateKeyword.CPChar,Construction.GenerateKeyword.CShort,
                                       Construction.GenerateKeyword.CUShort,Construction.GenerateKeyword.CInt,
                                       Construction.GenerateKeyword.CUInt,Construction.GenerateKeyword.CLong,
                                       Construction.GenerateKeyword.CULong,Construction.GenerateKeyword.CFloat,
                                       Construction.GenerateKeyword.CDouble,Construction.GenerateKeyword.CLongDouble,
                                       Construction.GenerateKeyword.CCharT,Construction.GenerateKeyword.CCharD,
                                       Construction.GenerateKeyword.CFree,Construction.GenerateKeyword.UserCustomType*)>
<!ELEMENT Construction.GenerateKeyword.CobolX (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.CobolZ (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.CobolN (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.Cobol9 (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.CobolS (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.CobolU (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.CobolP (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.CobolBU (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.CobolB (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.CobolE (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.CobolD (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.Cobol1 (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.Cobol8 (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.CobolXT (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.CobolXD (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.CobolT (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.CobolFree (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.CChar (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.CPChar (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.CShort (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.CUShort (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.CInt (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.CUInt (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.CLong (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.CULong (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.CFloat (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.CDouble (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.CLongDouble (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.CCharT (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.CCharD (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.CFree (#PCDATA)>
<!ELEMENT Construction.GenerateKeyword.UserCustomType (#PCDATA)>
<!ELEMENT Construction.Data.record (Construction.Record)>
<!ELEMENT Construction.Record (Construction.Record.ObjectID,Construction.Record.DataItemNum,Construction.Record.dataitem)>
<!ELEMENT Construction.Record.ObjectID (#PCDATA)>
<!ELEMENT Construction.Record.DataItemNum (#PCDATA)>
<!ELEMENT Construction.Record.dataitem (Construction.DataItem+)>
<!ELEMENT Construction.DataItem (Construction.DataItem.Name,Construction.DataItem.ObjectID,
                                       Construction.DataItem.Kind,Construction.DataItem.Level,
                                       Construction.DataItem.StandardName+,Construction.DataItem.Kana+,
                                       Construction.DataItem.Comment+,Construction.DataItem.Field+,
                                       Construction.DataItem.TypeGroup,Construction.DataItem.TypeGroupString,
                                       Construction.DataItem.Total,Construction.DataItem.DecimalPart,
                                       Construction.DataItem.Repeat,Construction.DataItem.RepeatSet,
                                       Construction.DataItem.dictstate,Construction.DataItem.date,
                                       Construction.DataItem.dict,Construction.DataItem.keyword,
                                       Construction.DataItem.recordattribute)>
<!ELEMENT Construction.DataItem.Name (#PCDATA)>
<!ELEMENT Construction.DataItem.ObjectID (#PCDATA)>
<!ELEMENT Construction.DataItem.Kind (#PCDATA)>
<!ELEMENT Construction.DataItem.Level (#PCDATA)>
<!ELEMENT Construction.DataItem.StandardName (#PCDATA)>
<!ELEMENT Construction.DataItem.Kana (#PCDATA)>
<!ELEMENT Construction.DataItem.Comment (#PCDATA)>
<!ELEMENT Construction.DataItem.Field (#PCDATA)>
<!ELEMENT Construction.DataItem.TypeGroup (#PCDATA)>
<!ELEMENT Construction.DataItem.TypeGroupString (#PCDATA)>
<!ELEMENT Construction.DataItem.Total (#PCDATA)>
<!ELEMENT Construction.DataItem.DecimalPart (#PCDATA)>
<!ELEMENT Construction.DataItem.Repeat (#PCDATA)>
<!ELEMENT Construction.DataItem.RepeatSet (#PCDATA)>
<!ELEMENT Construction.DataItem.DictState (#PCDATA)>
<!ELEMENT Construction.DataItem.Date (#PCDATA)>
<!ELEMENT Construction.DataItem.dict (Construction.Dict)>      
<!ELEMENT Construction.Dict (Construction.Dict.Lang,Construction.Dict.Name?,
                            Construction.Dict.Type?,Construction.Dict.TypeString?,
                            Construction.Dict.FreeString?,Construction.Dict.EditString?,
                            Construction.Dict.InitValue?,Construction.Dict.Field?)*>
<!ELEMENT Construction.Dict.Lang (#PCDATA)>
<!ELEMENT Construction.Dict.Name (#PCDATA)>
<!ELEMENT Construction.Dict.Type (#PCDATA)>
<!ELEMENT Construction.Dict.TypeString (#PCDATA)>
<!ELEMENT Construction.Dict.FreeString (#PCDATA)>
<!ELEMENT Construction.Dict.EditString (#PCDATA)>
<!ELEMENT Construction.Dict.InitValue (#PCDATA)>
<!ELEMENT Construction.Dict.Field (#PCDATA)>
<!ELEMENT Construction.DataItem.keyword (Construction.Keyword)>
<!ELEMENT Construction.Keyword (Construction.Keyword.DataItem,
                               Construction.Keyword.Len?,
                               Construction.Keyword.PLen?,
                               Construction.Keyword.ILen?,
                               Construction.Keyword.DLen?,
                               Construction.Keyword.Value?,
                               Construction.Keyword.Occurs?,
                               Construction.Keyword.Editchar?,
                               Construction.Keyword.Comp?,
                               Construction.Keyword.Free?)*>
<!ELEMENT Construction.DataItem.recordattribute (Construction.RecordAttribute)>
<!ELEMENT Construction.RecordAttribute (Construction.RecordAttribute.CharType?,
                               Construction.RecordAttribute.CharTypeVal?,
                               Construction.RecordAttribute.Index?,
                               Construction.RecordAttribute.ValOccursName?,
                               Construction.RecordAttribute.ValOccursMini?,
                               Construction.RecordAttribute.Address?,
                               Construction.RecordAttribute.Redefine?,
                               Construction.RecordAttribute.External,
                               Construction.RecordAttribute.Sync,
                               Construction.RecordAttribute.Just,
                               Construction.RecordAttribute.BrankZero)*>
<!ELEMENT Construction.Keyword.DataItem (#PCDATA)>
<!ELEMENT Construction.Keyword.Len (#PCDATA)>
<!ELEMENT Construction.Keyword.PLen (#PCDATA)>
<!ELEMENT Construction.Keyword.ILen (#PCDATA)>
<!ELEMENT Construction.Keyword.DLen (#PCDATA)>
<!ELEMENT Construction.Keyword.Value (#PCDATA)>
<!ELEMENT Construction.Keyword.Occurs (#PCDATA)>
<!ELEMENT Construction.Keyword.Editchar (#PCDATA)>
<!ELEMENT Construction.Keyword.Comp (#PCDATA)>
<!ELEMENT Construction.Keyword.Free (#PCDATA)>
]>

付録H.3　プログラム定義情報のXML形式ファイルへの出力

＜この項の構成＞

(1)　ファイルフォーマット

(2)　DTD（Document Type Definition）

(1)　ファイルフォーマット

プログラム定義をXML形式ファイルに出力するときのファイルフォーマットを，次に示します。

注意

次のファイルフォーマットは，旧バージョンとの互換用です。SEWB+ 基本開発環境セット 04-00以降では使用できません。

インタフェース可変記号情報：InterfaceValiableSymbol

IDLファイルオブジェクト情報：IDLFileObject

インタフェース定義オブジェクト情報：InterfaceObject

モジュール情報：Module

インタフェース情報：Interface

属性情報：Attribute

オペレーション情報：Operation

引数情報：Argument

例外情報：Exception

リクエストコンテキスト情報：RequestContext

表H-2　プログラム定義ファイル（.csq）のファイルフォーマット

タグ種

含まれるタグ
要素型名
タグ出現回数
設定可能値
説明
備考

プログラム定義パッケージ：Construction

プログラム定義ファイル情報
File
1
－

プログラム定義情報
Program
1
－

共通可変記号情報
CommonValiableSymbol
1
－

共通ユーザ追加処理情報
CommonUOC
1
－

プログラム定義ファイル情報：File

ID
ID
1
"P-2651-8324"
PP型名

種別
Type
1
"PROGRAMDEFINITION"
プログラム定義ファイルのファイル種別

バージョン
Version
1
"02"
ファイルバージョン

ステータス
Status
1
文字列
ファイルステータス

プログラム定義情報：Program

名称
Name
1
文字列
名称（［サイン］タブ）の内容

作成者
Author
1
文字列
作成者（［サイン］タブ）の内容

概要
Outline
1
文字列（改行を含む）
概要（［サイン］タブ）の内容

プログラミング言語
ProgramLang
1
文字列
言語種別（@@lang文）の値
テンプレート情報

メモ
Memo
1
文字列（改行を含む）
メモ（［メモ］タブ）の内容

テンプレートファイル情報
TemplateFile
1
－
テンプレートファイル情報

リソースファイル情報
ResourceFile
0以上
－
リソースファイル情報

業務ルール情報
Rule
0以上
－
展開業務ルール情報

テンプレートファイル情報：TemplateFile

ファイル名
Name
1
文字列
テンプレートファイルのファイル名

更新日付
UpdateTime
1
文字列："YYYY/MM/DD"形式
テンプレートファイルの更新日付

パス参照フラグ
PathUse
1
"USE"：参照あり
"NOUSE"：参照なし
環境設定パス（テンプレートパス）の参照有無

リソースファイル情報：ResourceFile

ファイル名
Name
1
文字列
リソースファイルのファイル名

属性
Kind
1
"DATADEFINITION"：データ定義
"PARTS"：部品
"USERPARTS"：追加部品
"LOGICDESIGN"：論理設計図※1
"XMAP3"：マップ定義
"XML"：XMLファイル
"GENERATE"：生成ファイル
リソースファイルのファイル種別

ファイルパス
Path
1
文字列
リソースファイルのファイルパス

更新日付
UpdateTime
1
文字列："YYYY/MM/DD"形式
リソースファイルの更新日付

パス参照フラグ
PathUse
1
"USE"：参照あり
"NOUSE"：参照なし
環境設定パス（リソースパス）の参照有無

更新カウンタ
ReferenceCount
1
文字列
リソースファイルの参照数

業務ルール情報：Rule

業務ルール名
Name
1
文字列
業務ルール名

OID
ObjectID
1
文字列
業務ルールOID

更新日付
UpdateTime
1
文字列："YYYY/MM/DD"形式
業務ルール更新日付

更新カウンタ
ReferenceCount
1
文字列
業務ルールの参照数

共通可変記号情報：CommonValiableSymbol

プログラミング言語
ProgramLang
1
文字列
言語種別（@@lang文）の値
テンプレート情報

プログラミング言語の文字列区分
LangStringType
1
"SYSTEM"：システム
"USER"：ユーザ
言語種別（@@lang文）の区分
テンプレート情報

言語種別
LangType
1
"ABSOLUTENESS"：絶対
"NAME"：名称
言語種別（@@lang文）の種別
テンプレート情報

リポジトリの言語区分
RepositoryLang
1
文字列
FOR_REPOSITORY（@@lang文）の値
テンプレート情報

拡張子
Extension
1
文字列
EXTENSION（@@lang文）の値
テンプレート情報

連結文字
ModifyConnect
1
文字列
MODIFY_CONNECT（@@lang文）の値
テンプレート情報

修飾順序
ModifyOrder
1
"ASCEND"：昇順
"DESCEND"：降順
MODIFY_ORDER（@@lang文）の値
テンプレート情報

可変記号先頭文字
TopChar
1
文字
可変記号先頭文字（ExpandChar）の値
レジストリ情報

可変記号情報
ValiableSymbol
0以上

可変記号情報：ValiableSymbol

可変記号名
Name
1
文字列
可変記号名（@@interface文）の値
テンプレート情報

属性
Kind
1
"STANDARD"：標準
"DATA"：データ定義
"DATAITEM"：データ項目
"PARTS"：部品
"IDL"：IDL※1
"INTERFACE"：インタフェース※1
"OPERATION"：オペレーション※1
"XMAP3"：マップ定義
"XML"：XML
"XMLELEMENT"：XMLELEMENT
可変記号の属性 ATTR（@@interface文）の値
テンプレート情報

説明
Comment
1
文字列（改行を含む）
可変記号の説明COMMENT（@@interface文）の値
テンプレート情報

配列最大数
ArrayMax
1
文字列
可変記号の配列最大数ARRAY_MAX（@@interface文）の値
テンプレート情報

標準可変記号情報
StandardValiableSymbol
0または1
－
標準可変記号の場合

標準可変記号補足情報
StandardValiableSymbolAuxiliary
0または1
－
標準可変記号の場合

データ定義可変記号情報
DataValiableSymbol
0または1
－
データ定義可変記号（ATTR=データ定義種別）の場合

データ定義可変記号補足情報
DataValiableSymbolAuxiliary
0または1
－
データ定義可変記号（ATTR=データ定義種別）の場合

データ項目可変記号情報
DataItemValiableSymbol
0または1
－
データ項目可変記号（ATTR=ITEM）の場合

データ項目可変記号補足情報
DataItemValiableSymbolAuxiliary
0または1
－
データ項目可変記号（ATTR=ITEM）の場合

部品可変記号情報
PartsValiableSymbol
0または1
－
部品可変記号（ATTR=PARTS）の場合

インタフェース可変記号情報※1
InterfaceValiableSymbol
0または1
－
インタフェース可変記号（ATTR=IDL/INTERFACE/OPERATION）の場合

インタフェース可変記号補足情報※1
InterfaceValiableSymbolAuxiliary
0または1
－
インタフェース可変記号（ATTR=IDL/INTERFACE/OPERATION）の場合

マップ定義可変記号情報
XMAP3ValiableSymbol
0または1
－
マップ定義可変記号（ATTR=XMAP3）の場合

マップ定義可変記号補足情報
XMAP3ValiableSymbolAuxiliary
0または1
－
マップ定義可変記号（ATTR=XMAP3）の場合

XML可変記号情報
XMLValiableSymbol
0または1
－
XML可変記号（ATTR=XML）の場合

XML可変記号補足情報
XMLValiableSymbolAuxiliary
0または1
－
XML可変記号（ATTR=XML）の場合

XMLElement可変記号情報
XMLElementValiableSymbol
0または1
－
XMLElement可変記号（ATTR=ELEMENT）の場合

XMLElement 可変記号補足情報
XMLElementValiableSymbolAuxiliary
0または1
－
XMLElement可変記号（ATTR=ELEMENT）の場合

標準可変記号情報：StandardValiableSymbol

値
Value
1
文字列
可変記号の値

子可変記号情報
ValiableSymbol
1

可変記号情報

標準可変記号補足情報：StandardValiableSymbolAuxiliary

値
Value
1
文字列
VALUE（@@interface文）の値
テンプレート情報

子可変記号情報
ValiableSymbol
1
－

可変記号情報

データ定義可変記号情報：DataValiableSymbol

値
Value
1
文字列
可変記号の値（データ定義ファイル名）

データ定義ファイル情報
ResourceFile
1
－

リソースファイル情報

子可変記号情報
ValiableSymbol
1
－

可変記号情報

データ定義可変記号補足情報：DataValiableSymbolAuxiliary

種別
Kind
1
"FILE"：ファイル
"DB"：DB
"TAM"：TAM
"DAM"：DAM
"RPCINPUTPARM"：RPC入力パラメタ
"RPCREPLYPARM"：RPC応答領域
"MESSAGE"：メッセージ
"USERJOURNAL"：ユーザジャーナル
"MESSAGELOG"：メッセージログ
"WORK"：共通作業領域
データ定義種別 ATTR（@@interface文）の値
テンプレート情報

入出力種別
IOKind
1
"NONE"：なし
"IN"：入力
"OUT"：出力
"INOUT"：入出力
データ定義の入出力の区分IO（@@interface文）の値
テンプレート情報

子可変記号情報
ValiableSymbol
1
－

可変記号情報

データ項目可変記号情報：DataItemValiableSymbol※2

値
Value
1
文字列
可変記号の値（データ項目名）

標準名称
StandardName
4
文字列
標準名称
辞書情報

上位データ項目
UpperDataItem
1
文字列
上位データ項目名

データ定義可変記号名
ValiableSymbolName
1
文字列
データ項目を選択したデータ定義可変記号

データ定義可変記号添字
Contarray
1
文字列
データ項目を選択したデータ定義可変記号の配列添字

子可変記号情報
ValiableSymbol
1
－

可変記号情報

データ項目可変記号補足情報：DataItemValiableSymbolAuxiliary

参照区分
ReferenceKind
1
"OWN"：自データ定義可変記号
"VALIABLESYMBOL"：指定データ定義可変記号
"ALL"：全データ定義可変記号
データ定義可変記号の参照区分REF（@@interface文）の値
テンプレート情報

参照先可変記号
ReferenceValiableSymbol
1
文字列
参照データ定義可変記号
参照区分が"ALL"の場合

子可変記号情報
ValiableSymbol
1
－

可変記号情報

部品可変記号情報：PartsValiableSymbol

部品ファイル情報
ResourceFile
1
－

リソースファイル情報

プロシジャ情報
Procedure
1
－

プロシジャ情報：Procedure

プロシジャ名
Name
1
文字列
プロシジャの名称（@@proc文）の値
テンプレート情報

コメント
Comment
1
文字列
プロシジャの説明（@@proc文）の値
テンプレート情報

引数情報
Parameter
1
－

引数情報：Parameter

引数名
Name
1
文字列
引数の名称（@@proc文）の値
テンプレート情報

コメント
Comment
1
文字列
引数の説明（@@proc文）の値
テンプレート情報

タイプ
Type
1
"DIRECT"：直接
"REFERENCE"：参照
引数の値の参照区分（引数値設定ダイアログ）の値

値
Value
1
文字列
引数の値 タイプが"DIRECT"の場合

参照可変記号名
ValiableSymbolName
1
文字列
引数の値を参照する可変記号名 タイプが"REFERENCE"の場合

参照可変記号情報
ValiableSymbol
1
－
引数の値を参照する可変記号の情報
タイプが"REFERENCE"の場合
可変記号情報

参照可変記号添字
Contarray
1
文字列
引数の値を参照する可変記号名の配列添字
タイプが"REFERENCE"の場合

インタフェース可変記号情報：InterfaceValiableSymbol

値
Value
1
文字列
可変記号の値（論理設計図ファイル名）

論理設計図ファイル情報
ResourceFile
1
－

リソースファイル情報

IDLファイル名
IDLFileName
1
文字列
選択IDLファイルの名称（インタフェース項目設定ダイアログ）

インタフェース名
InterFaceName
1
文字列
選択インタフェースの名称（インタフェース項目設定ダイアログ）

オペレーション名
OperationName
1
文字列
選択オペレーションの名称（インタフェース項目設定ダイアログ）

IDLファイルオブジェクト情報
IDLFileObject
1
－
選択IDLファイルの情報

インタフェース定義オブジェクト情報
InterfaceObject
1
－
選択インタフェースの情報

オペレーション情報
Operation
1
－
選択オペレーションの情報

子可変記号情報
ValiableSymbol
1
－

可変記号情報

IDLファイルオブジェクト情報：IDLFileObject

インタフェースオブジェクト情報
InterfaceObject
0以上
－
選択インタフェースの情報

インタフェース定義オブジェクト情報：InterfaceObject

IDLファイル名
IDLFileName
1
文字列
IDLファイルのファイル名
論理設計図ファイル情報

モジュール情報
Module
1
－

インタフェース情報
Interface
1
－

属性情報
Attribute
1
－

オペレーション情報
Operation
1
－

モジュール情報：Module

モジュール名
Name
1
文字列
モジュールの名称
論理設計図ファイル情報

日本語名
AliasName
1
文字列
モジュールの日本語名
論理設計図ファイル情報

コメント
Comment
1
文字列
モジュールのコメント
論理設計図ファイル情報

修飾名
ScopeName
1
文字列
モジュールの修飾名
論理設計図ファイル情報

インタフェース情報：Interface

インタフェース名
Name
1
文字列
インタフェースの名称
論理設計図ファイル情報

日本語名
AliasName
1
文字列
インタフェースの日本語名
論理設計図ファイル情報

コメント
Comment
1
文字列
インタフェースのコメント
論理設計図ファイル情報

オブジェクト名
ObjectName
1
文字列
オブジェクトの名称
論理設計図ファイル情報

オブジェクト日本語名
ObjectAliaseName
1
文字列
オブジェクトの日本語名
論理設計図ファイル情報

修飾名
ScopeName
1
文字列
オブジェクトの修飾名
論理設計図ファイル情報

ベースインタフェース名
BaseInterfaceName
1
文字列
ベースインタフェースの名称
論理設計図ファイル情報

属性情報：Attribute

属性名
Name
1
文字列
属性の名称
論理設計図ファイル情報

readonly属性
Readonly
1
"READONLY"
"NOTREADONLY"
readonly属性
論理設計図ファイル情報

型名
TypeName
1
文字列
属性の型名
論理設計図ファイル情報

ユーザ定義型
UserType
1
文字列
属性の型名（ユーザ定義型の場合）
論理設計図ファイル情報

修飾名
ScopeName
1
文字列
属性の修飾名
論理設計図ファイル情報

データ項目OID
ObjectID
1
文字列
属性の型のデータ項目OID（ユーザ定義型の場合）
論理設計図ファイル情報

インタフェースデータ項目情報
InterfaceDataItem

インタフェースデータ項目情報：InterfaceDataItem

データ項目OID
ObjectID
1
文字列

更新日付
UpdateTime
1
文字列

種別

Type
SIMPLE
COMPOSITE

レコード情報
Record
0以上
文字列

データ項目情報
DataItem
0以上
文字列

レコード情報：Record

結合項目OID
ObjectID
1
文字列

辞書情報

データ項目数
DataItemNum
1
文字列

辞書情報

データ項目情報
DataItem
1
－

データ項目情報：DataItem

データ項目名
Nname
1
文字列

辞書情報

データ項目OID
ObjectID
1
文字列

辞書情報

データ項目種別
Kind
1
文字列

辞書情報

データ項目レベル番号
Level
1
文字列

辞書情報

標準名称
StandardName
4
文字列

辞書情報

フリガナ
Kana
4
文字列

辞書情報

コメント
Comment
4
文字列

辞書情報

フィールド
Field
20
文字列

辞書情報

分類
TypeGroup
1
文字列

辞書情報

分類文字数
TypeGroupString
1
文字列

辞書情報

けた数
Total
1
文字列

辞書情報

小数部けた数
DecimalPart
1
文字列

辞書情報

反復回数
Repeat
1
文字列

辞書情報

辞書情報
Dict
1
－

生成キーワード
Keyword
1
－

辞書情報：Dict

言語区分
Lang
1
文字列

辞書情報

データ項目名
Name
1
文字列

辞書情報

タイプ
Type
1
文字列

辞書情報

タイプ文字列
TypeString
1
文字列

辞書情報

フリー定義文字列
FreeString
1
文字列

辞書情報

編集文字列
EditString
1
文字列

辞書情報

初期値
InitValue
1
文字列

辞書情報

フィールド
Field
1
文字列

辞書情報

生成キーワード：Keyword

@DATAITEM
DataItem
1
文字列

辞書情報

@LEN
Len
1
文字列

辞書情報

@PLEN
Plen
1
文字列

辞書情報

@ILEN
Ilen
1
文字列

辞書情報

@DLEN
Dlen
1
文字列

辞書情報

@VALUE
Value
1
文字列

辞書情報

@OCCURS
Occurs
1
文字列

辞書情報

@EDITCHAR
Editchar
1
文字列

辞書情報

@COMP
Comp
1
文字列

辞書情報

@FREE
Free
1
文字列

辞書情報

オペレーション情報：Operation

オペレーション名
Name
1
文字列
オペレーションの名称
論理設計図ファイル情報

日本語名
AliasName
1
文字列
オペレーションの日本語名
論理設計図ファイル情報

コメント
Comment
1
文字列
オペレーションのコメント
論理設計図ファイル情報

oneway属性
Oneway
1
"ONEWAY"
"NOTONEWAY"
オペレーションのoneway属性
論理設計図ファイル情報

戻り値型名
ReturnTypeName
1
文字列
戻り値の型名
論理設計図ファイル情報

戻り値ユーザ定義型
ReturnUserType
1
文字列
戻り値の型名（ユーザ定義型の場合）
論理設計図ファイル情報

修飾名
ScopeName
1
文字列
戻り値の修飾名
論理設計図ファイル情報

データ項目OID
ObjectID
1
文字列
戻り値の型のデータ項目OID
論理設計図ファイル情報

引数情報
Argument
1
－

例外情報
Exception
1
－

リクエストコンテキスト情報
RequestContext
1
－

引数情報：Argument

引数名
Name
1
文字列
引数の名称
論理設計図ファイル情報

モード
Mode
1
"IN"：入力
"OUT"：出力
"INOUT"：入出力
引数の入出力区分
論理設計図ファイル情報

型名
TypeName
1
文字列
引数の型名
論理設計図ファイル情報

ユーザ定義型
UserType
1
文字列
引数の型名（ユーザ定義型の場合）
論理設計図ファイル情報

修飾名
ScopeName
1
文字列
引数の修飾名
論理設計図ファイル情報

データ項目OID
ObjectID
1
文字列
引数の型のデータ項目OID
論理設計図ファイル情報

インタフェースデータ項目情報
InterfaceDataItem
0以上

例外情報：Exception

例外名
Name
1
文字列
例外の名称
論理設計図ファイル情報

ユーザ定義型
UserType
1
文字列
例外の型名（ユーザ定義型の場合）
論理設計図ファイル情報

修飾名
ScopeName
1
文字列
例外の修飾名
論理設計図ファイル情報

データ項目OID
ObjectID
1
文字列
例外の型のデータ項目OID
論理設計図ファイル情報

インタフェースデータ項目情報
InterfaceDataItem
0以上

リクエストコンテキスト情報：RequestContext

プロパティ名
Name
1
文字列
プロパティの名称
論理設計図ファイル情報

コメント
Comment
1
文字列
リクエストコンテキストのコメント
論理設計図ファイル情報

インタフェース可変記号補足情報：InterfaceValiableSymbolAuxiliary

子可変記号情報
ValiableSymbol
1
－

可変記号情報

マップ定義可変記号情報：XMAP3ValiableSymbol

値
Value
1
文字列
可変記号の値（マップ定義ファイル名）

マップ定義ファイル情報
ResourceFile
1
－

リソースファイル情報

子可変記号情報
ValiableSymbol
1
－

可変記号情報

マップ定義可変記号補足情報：XMAP3ValiableSymbolAuxiliary

入出力種別
IOKind
1
"NONE"：なし
"IN"：入力
"OUT"：出力
"INOUT"：入出力
マップ定義ファイルの入出力の区分（@@interface文）の値
テンプレート情報

子可変記号情報
ValiableSymbol
1
－

可変記号情報

XML可変記号情報：XMLValiableSymbol

値
Value
1
文字列
可変記号の値（XMLファイル名）

XMLファイル情報
ResourceFile
1
－

リソースファイル情報

パースレベル
ParseLevel
1
文字列
パースレベル PARSE_LEVEL（@@interface文）の値
テンプレートファイル情報

子可変記号情報
ValiableSymbol
1
－

可変記号情報

XML可変記号補足情報：XMLValiableSymbolAuxiliary

パースレベル
ParseLevel
1
文字列
パースレベル PARSE_LEVEL（@@interface文）の値
テンプレートファイル情報

子可変記号情報
ValiableSymbol
1
－

可変記号情報

XMLElement可変記号情報：XMLElementValiableSymbol

値
Value
1以上
文字列
可変記号の値（ELEMENT）
テンプレートファイル情報

子可変記号情報
ValiableSymbol
1
－

可変記号情報

XMLElement可変記号補足情報：XMLElementValiableSymbolAuxiliary

タグ名
TagName
1以上
文字列
タグ名 TAG_NAME（@@interface文）の値
テンプレートファイル情報

属性名
AttributeName
1
文字列
属性名 ATTR_NAME（@@interface文）の値
テンプレートファイル情報

子可変記号情報
ValiableSymbol
1
－

可変記号情報

共通ユーザ追加処理情報：CommonUoc

言語区分番号
ProgramNO
1
文字列
リポジトリアクセスの言語区分番号

ユーザ追加処理情報
UocBlock
1
－

ユーザ追加処理情報：UocBlock

ブロックID
ID
1
文字列
UOC名（@@uoc文）/ブロック名（@@diagram文）/業務ルール展開名（@@rule文）/ファイル名（@@file文）/部品ブロック名（@@parts文）
テンプレートファイル情報

親ブロックID
ParentID
1
文字列
親ブロック名PARENT（@@uoc文/@@diagram文/@@rule文/@@file文/@@parts文）の値
テンプレートファイル情報

種別
Kind
1
"UOC"：ユーザ追加処理
"BLOCK"：ブロック
"RULE"：業務ルール
"FILE"：ファイル
"PARTS"：部品
ブロックの種別

コメント
Comment
1
文字列
ブロックの説明 COMMENT（@@uoc文/@@diagram文/@@rule文/@@file文/@@parts文）の値
テンプレートファイル情報

ユーザ追加処理テキスト
Text
1
文字列
ユーザ追加処理のテキスト（種別が"UOC"の場合）

対応ソースファイル情報
MutiSrc
1
－
対応ソースファイル情報

業務ルール文情報
RuleSentence
1
－
業務ルール文情報（種別が"RULE"の場合）

業務ルール展開情報
RuleExpand
1
－
業務ルール展開情報（種別が"RULE"の場合）

対応ソースファイル情報：MultiSrc

対応ソースファイル名
FileName
1
文字列
ソースファイル名
テンプレートファイル情報

業務ルール文情報：RuleSentence

適用条件
Usage
1
"USE"：利用する
"NOUSE"：利用しない
適用条件有無 WITH USAGE（@@rule文）の値

業務ルール文詳細情報
RuleSentenceFull
1
－

業務ルール文詳細情報：RuleSentenceFull

種別
Kind
1
"IN"：入力
"OUT"：出力
"NONE"：なし
適用条件の種別 USAGE（@@rule文）の値
テンプレートファイル情報

業務ルール可変記号情報
RuleValiableSymbol
1
－

業務ルール可変記号情報：RuleValiableSymbol

可変記号
Name
1
文字列
REF（@@rule文）の可変記号名
テンプレートファイル情報

可変記号配列
Array
1
文字列
REF（@@rule文）の可変記号の添字
テンプレートファイル情報

子可変記号
ChildName
1
文字列
REF（@@rule文）の可変記号の子可変記号名（ATTR=ITEMの場合）
テンプレートファイル情報

子可変記号配列
ChildArray
1
文字列
REF（@@rule文）の可変記号の子可変記号の添字
テンプレートファイル情報

データ項目OIDリスト
ObjectID
1以上
文字列
REF（@@rule文）の可変記号のデータ項目ＯＩＤ
テンプレートファイル情報

接頭語
Prefix
1
文字列
PREFIX句（@@rule文）の値
テンプレートファイル情報

接尾語
Suffix
1
文字列
SUFFIX句（@@rule文）の値
テンプレートファイル情報

TOP句
TopSpecified
1
"NOSPECIFIED"：TOP句なし
"SPECIFIED"：TOP句あり
TOP句の有無

最上位データ項目名
TopItemName
1
文字列
TOP句（@@rule文）の値
テンプレートファイル情報

業務ルール展開情報：RuleExpand

業務ルール名
Name
1
文字列
業務ルールの名称
辞書情報

業務ルールOID
ObjectID
1
文字列
業務ルールのOID
辞書情報

更新日付
UpdateTime
1
文字列："YYYY/MM/DD"形式
データ項目定義ファイルの更新日付

業務ルール更新日付
RuleUpdateTime
1
文字列："YYYY/MM/DD"形式
業務ルールの更新日付辞書情報
辞書情報

展開順序
Order
1
文字列
業務ルールの展開順序（業務ルール展開設定ダイアログ）

コメント
Comment
1
文字列
業務ルールのコメント
辞書情報

業務ルールデータ項目情報
RuleDataItem
1
－
業務ルールの関連データ項目情報
辞書情報

業務ルールスクリプト
Script
1
文字列
業務ルールのスクリプト
辞書情報

業務ルールデータ項目情報：RuleDataItem

データ項目名
Name
1
文字列
データ項目名
辞書情報

データ項目OID
ObjectID
1
文字列
データ項目のOID
辞書情報

言語別名称
LangName
1
文字列
言語別名称
辞書情報

標準名称
StandardName
4
文字列
標準名称
辞書情報

キーワード
Keyword
1
文字列
キーワード
辞書情報

適用条件
ApplyCondition
1
"IN"：入力
"OUT"：出力
"NONE"：なし
適用条件
辞書情報

業務ルール可変記号情報
RuleValiableSymbol
1
－
関連業務ルール可変記号情報

業務ルールデータ項目階層情報
RuleDataItemStructure
1
－
データ項目階層情報
辞書情報

業務ルールデータ項目階層情報：RuleDataItemStructure

データ項目名
Name
1
文字列
データ項目名
辞書情報

データ項目OID
ObjectID
1
文字列
データ項目のOID
辞書情報

言語別名称
LangName
1
文字列
言語別名称
辞書情報

注1

斜体で表記している要素型名の設定可能値については，対応するタグ種を参照してください。

注2

属性値に含まれる「<」「&」「"」，および内容（文字データ）に含まれる「<」「&」は，それぞれ次のように置換します。

<：&lt;

&：&amp;

"：&quot;

注※1

この項目は，旧バージョンとの互換用です。SEWB+ 基本開発環境セット 04-00以降では使用できません。

注※2

備考に「辞書情報」と記載しているタグ情報でも，レコード定義ファイルを使用している場合には，レコード定義の内容によってレコード定義情報が設定されます。

(2)　DTD（Document Type Definition）

プログラム定義ファイルのDTDを次に示します。

<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE XMI [
<!ELEMENT XMI.content (Construction.File,
                      Construction.Program,
                      Construction.CommonValiableSymbol,
                      Construction.CommonUoc)>
<!ELEMENT Construction.File (Construction.File.ID,
                            Construction.File.Type,
                            Construction.File.Version,
                            Construction.File.Status?)>
<!ELEMENT Construction.File.ID (#PCDATA)>
<!ELEMENT Construction.File.Type (#PCDATA)>
<!ELEMENT Construction.File.Version (#PCDATA)>
<!ELEMENT Construction.File.Status (#PCDATA)>
<!ELEMENT Construction.Program (Construction.Program.Name?,
                               Construction.Program.Author?,
                               Construction.Program.Outline?,
                               Construction.Program.ProgramLang,
                               Construction.Program.Memo?,
                               Construction.Program.templatefile,
                               Construction.Program.resourcefile*,
                               Construction.Program.rule*)>
<!ELEMENT Construction.Program.Name (#PCDATA)>
<!ELEMENT Construction.Program.Author (#PCDATA)>
<!ELEMENT Construction.Program.Outline (#PCDATA)>
<!ELEMENT Construction.Program.ProgramLang (#PCDATA)>
<!ELEMENT Construction.Program.Memo (#PCDATA)>
<!ELEMENT Construction.Program.templatefile (Construction.TemplateFile)>
<!ELEMENT Construction.TemplateFile (Construction.TemplateFile.Name,
                                    Construction.TemplateFile.UpdateTime,
                                    Construction.TemplateFile.PathUse)>
<!ELEMENT Construction.TemplateFile.Name (#PCDATA)>
<!ELEMENT Construction.TemplateFile.UpdateTime (#PCDATA)>
<!ELEMENT Construction.TemplateFile.PathUse (#PCDATA)>
<!ELEMENT Construction.Program.resourcefile (Construction.ResourceFile*)>
<!ELEMENT Construction.ResourceFile (Construction.ResourceFile.Name,
                                    Construction.ResourceFile.Kind,
                                    Construction.ResourceFile.Path?,
                                    Construction.ResourceFile.UpdateTime,
                                    Construction.ResourceFile.PathUse,
                                    Construction.ResourceFile.ReferenceCount?)>
<!ELEMENT Construction.ResourceFile.Name (#PCDATA)>
<!ELEMENT Construction.ResourceFile.Kind (#PCDATA)>
<!ELEMENT Construction.ResourceFile.Path (#PCDATA)>
<!ELEMENT Construction.ResourceFile.UpdateTime (#PCDATA)>
<!ELEMENT Construction.ResourceFile.PathUse (#PCDATA)>
<!ELEMENT Construction.ResourceFile.ReferenceCount (#PCDATA)>
<!ELEMENT Construction.Program.rule (Construction.Rule*)>
<!ELEMENT Construction.Rule (Construction.Rule.Name,
                            Construction.Rule.ObjectID,
                            Construction.Rule.UpdateTime,
                            Construction.Rule.ReferenceCount)>
<!ELEMENT Construction.Rule.Name (#PCDATA)>
<!ELEMENT Construction.Rule.ObjectID (#PCDATA)>
<!ELEMENT Construction.Rule.UpdateTime (#PCDATA)>
<!ELEMENT Construction.Rule.ReferenceCount (#PCDATA)>
<!ELEMENT Construction.CommonValiableSymbol (Construction.CommonValiableSymbol.ProgramLang,
                                            Construction.CommonValiableSymbol.LangStringType,
                                            Construction.CommonValiableSymbol.LangType,
                                            Construction.CommonValiableSymbol.RepositoryLang?,
                                            Construction.CommonValiableSymbol.Extension,
                                            Construction.CommonValiableSymbol.ModifyConnect,
                                            Construction.CommonValiableSymbol.ModifyOrder,
                                            Construction.CommonValiableSymbol.TopChar,
                                            Construction.CommonValiableSymbol.valiablesymbol*)>
<!ELEMENT Construction.CommonValiableSymbol.ProgramLang (#PCDATA)>
<!ELEMENT Construction.CommonValiableSymbol.LangStringType (#PCDATA)>
<!ELEMENT Construction.CommonValiableSymbol.LangType (#PCDATA)>
<!ELEMENT Construction.CommonValiableSymbol.RepositoryLang (#PCDATA)>
<!ELEMENT Construction.CommonValiableSymbol.Extension (#PCDATA)>
<!ELEMENT Construction.CommonValiableSymbol.ModifyConnect (#PCDATA)>
<!ELEMENT Construction.CommonValiableSymbol.ModifyOrder (#PCDATA)>
<!ELEMENT Construction.CommonValiableSymbol.TopChar (#PCDATA)>
<!ELEMENT Construction.CommonValiableSymbol.valiablesymbol (Construction.ValiableSymbol*)>
<!ELEMENT Construction.ValiableSymbol (Construction.ValiableSymbol.Name,
                                      Construction.ValiableSymbol.Kind,
                                      Construction.ValiableSymbol.Comment?,
                                      Construction.ValiableSymbol.ArrayMax,
                                      Construction.ValiableSymbol.standardvaliablesymbol*,
                                      Construction.ValiableSymbol.standardvaliablesymbolauxiliary*,
                                      Construction.ValiableSymbol.datavaliablesymbol*,
                                      Construction.ValiableSymbol.datavaliablesymbolauxiliary*,
                                      Construction.ValiableSymbol.dataitemvaliablesymbol*,
                                      Construction.ValiableSymbol.dataitemvaliablesymbolauxiliary*,
                                      Construction.ValiableSymbol.partsvaliablesymbol*,
                                      Construction.ValiableSymbol.interfacevaliablesymbol*,
                                      Construction.ValiableSymbol.interfacevaliablesymbolauxiliary*,
                                      Construction.ValiableSymbol.xmap3valiablesymbol*,
                                      Construction.ValiableSymbol.xmap3valiablesymbolauxiliary*,
                                      Construction.ValiableSymbol.xmlvaliablesymbol*,
                                      Construction.ValiableSymbol.xmlvaliablesymbolauxiliary*,
                                      Construction.ValiableSymbol.xmlelementvaliablesymbol*,
                                      Construction.ValiableSymbol.xmlelementvaliablesymbolauxiliary*
                                       )>
<!ELEMENT Construction.ValiableSymbol.Name (#PCDATA)>
<!ELEMENT Construction.ValiableSymbol.Kind (#PCDATA)>
<!ELEMENT Construction.ValiableSymbol.Comment (#PCDATA)>
<!ELEMENT Construction.ValiableSymbol.ArrayMax (#PCDATA)>
<!ELEMENT Construction.ValiableSymbol.standardvaliablesymbol (Construction.StandardValiableSymbol*)>
<!ELEMENT Construction.StandardValiableSymbol (Construction.StandardValiableSymbol.Value,
                                              Construction.StandardValiableSymbol.valiablesymbol*)>
<!ELEMENT Construction.StandardValiableSymbol.Value (#PCDATA)>
<!ELEMENT Construction.StandardValiableSymbol.valiablesymbol (Construction.ValiableSymbol*)>
<!ELEMENT Construction.ValiableSymbol.standardvaliablesymbolauxiliary (Construction.StandardValiableSymbolAuxiliary)>
<!ELEMENT Construction.StandardValiableSymbolAuxiliary (Construction.StandardValiableSymbolAuxiliary.Value,
                                                       Construction.StandardValiableSymbolAuxiliary.valiablesymbol)>
<!ELEMENT Construction.StandardValiableSymbolAuxiliary.Value (#PCDATA)>
<!ELEMENT Construction.StandardValiableSymbolAuxiliary.valiablesymbol (Construction.ValiableSymbol*)>
<!ELEMENT Construction.ValiableSymbol.datavaliablesymbol (Construction.DataValiableSymbol*)>
<!ELEMENT Construction.DataValiableSymbol (Construction.DataValiableSymbol.Value,
                                          Construction.DataValiableSymbol.resourcefile,        
                                          Construction.DataValiableSymbol.valiablesymbol)>
<!ELEMENT Construction.DataValiableSymbol.Value (#PCDATA)>
<!ELEMENT Construction.DataValiableSymbol.resourcefile (Construction.ResourceFile*)>
<!ELEMENT Construction.DataValiableSymbol.valiablesymbol (Construction.ValiableSymbol*)>
<!ELEMENT Construction.ValiableSymbol.datavaliablesymbolauxiliary (Construction.DataValiableSymbolAuxiliary*)>
<!ELEMENT Construction.DataValiableSymbolAuxiliary (Construction.DataValiableSymbolAuxiliary.Kind,
                                                   Construction.DataValiableSymbolAuxiliary.IOKind,
                                                   Construction.DataValiableSymbolAuxiliary.valiablesymbol)>
<!ELEMENT Construction.DataValiableSymbolAuxiliary.Kind (#PCDATA)>
<!ELEMENT Construction.DataValiableSymbolAuxiliary.IOKind (#PCDATA)>
<!ELEMENT Construction.DataValiableSymbolAuxiliary.valiablesymbol (Construction.ValiableSymbol*)>
<!ELEMENT Construction.ValiableSymbol.dataitemvaliablesymbol (Construction.DataItemValiableSymbol*)>
<!ELEMENT Construction.DataItemValiableSymbol (Construction.DataItemValiableSymbol.Value,
                                              Construction.DataItemValiableSymbol.StandardName,
                                              Construction.DataItemValiableSymbol.UpperDataItem,
                                              Construction.DataItemValiableSymbol.ValiableSymbolName,
                                              Construction.DataItemValiableSymbol.Contarray,
                                              Construction.DataItemValiableSymbol.valiablesymbol)>
<!ELEMENT Construction.DataItemValiableSymbol.Value (#PCDATA)>
<!ELEMENT Construction.DataItemValiableSymbol.StandardName (#PCDATA)>
<!ELEMENT Construction.DataItemValiableSymbol.UpperDataItem (#PCDATA)>
<!ELEMENT Construction.DataItemValiableSymbol.ValiableSymbolName (#PCDATA)>
<!ELEMENT Construction.DataItemValiableSymbol.Contarray (#PCDATA)>
<!ELEMENT Construction.DataItemValiableSymbol.valiablesymbol (Construction.ValiableSymbol*)>
<!ELEMENT Construction.ValiableSymbol.dataitemvaliablesymbolauxiliary (Construction.DataItemValiableSymbolAuxiliary)>
<!ELEMENT Construction.DataItemValiableSymbolAuxiliary (Construction.DataItemValiableSymbolAuxiliary.ReferenceKind,
                                                       Construction.DataItemValiableSymbolAuxiliary.ReferenceValiableSymbol?,
                                                       Construction.DataItemValiableSymbolAuxiliary.valiablesymbol)>
<!ELEMENT Construction.DataItemValiableSymbolAuxiliary.ReferenceKind (#PCDATA)>
<!ELEMENT Construction.DataItemValiableSymbolAuxiliary.ReferenceValiableSymbol (#PCDATA)>
<!ELEMENT Construction.DataItemValiableSymbolAuxiliary.valiablesymbol (Construction.ValiableSymbol*)>
<!ELEMENT Construction.ValiableSymbol.partsvaliablesymbol (Construction.PartsValiableSymbol*)>
<!ELEMENT Construction.partsvaliablesymbol (Construction.PartsValiableSymbol.resourcefile,
                                           Construction.PartsValiableSymbol.procedure)>
<!ELEMENT Construction.PartsValiableSymbol.resourcefile (Construction.ResourceFile*)>
<!ELEMENT Construction.PartsValiableSymbol.procedure (Construction.Procedure*)>
<!ELEMENT Construction.Procedure (Construction.Procedure.Name,
                                 Construction.Procedure.Comment?,
                                 Construction.Procedure.parameter)>
<!ELEMENT Construction.Procedure.Name (#PCDATA)>
<!ELEMENT Construction.Procedure.Comment (#PCDATA)>
<!ELEMENT Construction.Procedure.parameter (Construction.Parameter*)>
<!ELEMENT Construction.Parameter (Construction.Parameter.Name,
                                 Construction.Parameter.Comment?,
                                 Construction.Parameter.Type,
                                 Construction.Parameter.Value?,
                                 Construction.Parameter.ValiableSymbolName?,
                                 Construction.Parameter.Contarray)>
<!ELEMENT Construction.Parameter.Name (#PCDATA)>
<!ELEMENT Construction.Parameter.Comment (#PCDATA)>
<!ELEMENT Construction.Parameter.Type (#PCDATA)>
<!ELEMENT Construction.Parameter.Value (#PCDATA)>
<!ELEMENT Construction.Parameter.ValiableSymbolName (#PCDATA)>
<!ELEMENT Construction.Parameter.Contarray (#PCDATA)>
<!ELEMENT Construction.ValiableSymbol.interfacevaliablesymbol (Construction.InterfaceValiableSymbol*)>
<!ELEMENT Construction.InterfaceValiableSymbol (Construction.InterfaceValiableSymbol.Value,
                                               Construction.InterfaceValiableSymbol.resourcefile,
                                               Construction.InterfaceValiableSymbol.IDLFileName,
                                               Construction.InterfaceValiableSymbol.InterfaceName,
                                               Construction.InterfaceValiableSymbol.OperationName?,
                                               Construction.InterfaceValiableSymbol.IDLFileObject,
                                               Construction.InterfaceValiableSymbol.interfaceobject,
                                               Construction.InterfaceValiableSymbol.operation,
                                               Construction.InterfaceValiableSymbol.valiablesymbol)>
<!ELEMENT Construction.InterfaceValiableSymbol.Value (#PCDATA)>
<!ELEMENT Construction.InterfaceValiableSymbol.resourcefile (Construction.ResourceFile*)>
<!ELEMENT Construction.InterfaceValiableSymbol.IDLFileName (#PCDATA)>
<!ELEMENT Construction.InterfaceValiableSymbol.InterfaceName (#PCDATA)>
<!ELEMENT Construction.InterfaceValiableSymbol.OperationName (#PCDATA)>
<!ELEMENT Construction.InterfaceValiableSymbol.IDLFileObject (Construction.IDLFileObject*)>
<!ELEMENT Construction.IDLFileObject (Construction.IDLFileObject.interfaceobject?)>
<!ELEMENT Construction.IDLFileObject.interfaceobject (Construction.InterfaceObject*)>
<!ELEMENT Construction.InterfaceValiableSymbol.interfaceobject (Construction.InterfaceObject*)>
<!ELEMENT Construction.InterfaceObject (Construction.InterfaceObject.IDLFileName,
                                       Construction.InterfaceObject.module,
                                       Construction.InterfaceObject.interface,
                                       Construction.InterfaceObject.attribute,
                                       Construction.InterfaceObject.operation)>
<!ELEMENT Construction.InterfaceObject.IDLFileName (#PCDATA)>
<!ELEMENT Construction.InterfaceObject.module (Construction.Module*)>
<!ELEMENT Construction.Module (Construction.Module.Name?,
                              Construction.Module.AliasName?,
                              Construction.Module.Comment?,
                              Construction.Module.ScopeName?)>
<!ELEMENT Construction.Module.Name (#PCDATA)>
<!ELEMENT Construction.Module.AliasName (#PCDATA)>
<!ELEMENT Construction.Module.Comment (#PCDATA)>
<!ELEMENT Construction.Module.ScopeName (#PCDATA)>
<!ELEMENT Construction.InterfaceObject.interface (Construction.Interface*)>
<!ELEMENT Construction.Interface (Construction.Interface.Name,
                                 Construction.Interface.AliasName,
                                 Construction.Interface.Comment?,
                                 Construction.Interface.ObjectName,
                                 Construction.Interface.ObjectAliaseName,
                                 Construction.Interface.ScopeName,
                                 Construction.Interface.BaseInterfaceName?)>
<!ELEMENT Construction.Interface.Name (#PCDATA)>
<!ELEMENT Construction.Interface.AliasName (#PCDATA)>
<!ELEMENT Construction.Interface.Comment (#PCDATA)>
<!ELEMENT Construction.Interface.ObjectName (#PCDATA)>
<!ELEMENT Construction.Interface.ObjectAliaseName (#PCDATA)>
<!ELEMENT Construction.Interface.ScopeName (#PCDATA)>
<!ELEMENT Construction.Interface.BaseInterfaceName (#PCDATA)>
<!ELEMENT Construction.InterfaceObject.attribute (Construction.Attribute*)>
<!ELEMENT Construction.Attribute (Construction.Attribute.Name,
                                 Construction.Attribute.Readonly,
                                 Construction.Attribute.TypeName,
                                 Construction.Attribute.UserType,
                                 Construction.Attribute.ScopeName,
                                 Construction.Attribute.ObjectID,
                                 Construction.Attribute.interfacedataitem)>
<!ELEMENT Construction.Attribute.Name (#PCDATA)>
<!ELEMENT Construction.Attribute.Readonly (#PCDATA)>
<!ELEMENT Construction.Attribute.TypeName (#PCDATA)>
<!ELEMENT Construction.Attribute.UserType (#PCDATA)>
<!ELEMENT Construction.Attribute.ScopeName (#PCDATA)>
<!ELEMENT Construction.Attribute.ObjectID (#PCDATA)>
<!ELEMENT Construction.Attribute.interfacedataitem (Construction.InterfaceDataItem*)>
<!ELEMENT Construction.InterfaceDataItem (Construction.InterfaceDataItem.ObjectID,
                                         Construction.InterfaceDataItem.UpdateTime,
                                         Construction.InterfaceDataItem.Type,
                                         Construction.InterfaceDataItem.record*,
                                         Construction.InterfaceDataItem.dataitem*)>
<!ELEMENT Construction.InterfaceDataItem.ObjectID (#PCDATA)>
<!ELEMENT Construction.InterfaceDataItem.UpdateTime (#PCDATA)>
<!ELEMENT Construction.InterfaceDataItem.Type (#PCDATA)>
<!ELEMENT Construction.InterfaceDataItem.record (Construction.Record)>
<!ELEMENT Construction.Record (Construction.Record.ObjectID,
                              Construction.Record.DataItemNum,
                              Construction.Record.dataitem)>
<!ELEMENT Construction.Record.ObjectID (#PCDATA)>
<!ELEMENT Construction.Record.DataItemNum (#PCDATA)>
<!ELEMENT Construction.Record.dataitem (Construction.DataItem+)>
<!ELEMENT Construction.DataItem (Construction.DataItem.Name,Construction.DataItem.ObjectID,
                         Construction.DataItem.Kind,Construction.DataItem.Level,
                         Construction.DataItem.StandardName+,Construction.DataItem.Kana+,
                         Construction.DataItem.Comment*,Construction.DataItem.Field+,
                         Construction.DataItem.TypeGroup,Construction.DataItem.TypeGroupString,
                         Construction.DataItem.Total,Construction.DataItem.DecimalPart,
                         Construction.DataItem.Repeat,Construction.DataItem.dict,
                                       Construction.DataItem.keyword)>
<!ELEMENT Construction.DataItem.Name (#PCDATA)>
<!ELEMENT Construction.DataItem.ObjectID (#PCDATA)>
<!ELEMENT Construction.DataItem.Kind (#PCDATA)>
<!ELEMENT Construction.DataItem.Level (#PCDATA)>
<!ELEMENT Construction.DataItem.StandardName (#PCDATA)>
<!ELEMENT Construction.DataItem.Kana (#PCDATA)>
<!ELEMENT Construction.DataItem.Comment (#PCDATA)>
<!ELEMENT Construction.DataItem.Field (#PCDATA)>
<!ELEMENT Construction.DataItem.TypeGroup (#PCDATA)>
<!ELEMENT Construction.DataItem.TypeGroupString (#PCDATA)>
<!ELEMENT Construction.DataItem.Total (#PCDATA)>
<!ELEMENT Construction.DataItem.DecimalPart (#PCDATA)>
<!ELEMENT Construction.DataItem.Repeat (#PCDATA)>
<!ELEMENT Construction.DataItem.dict (Construction.Dict)>      
<!ELEMENT Construction.Dict (Construction.Dict.Lang,Construction.Dict.Name?,
                            Construction.Dict.Type?,Construction.Dict.TypeString?,
                            Construction.Dict.FreeString?,Construction.Dict.EditString?,
                            Construction.Dict.InitValue?,Construction.Dict.Field?)*>
<!ELEMENT Construction.Dict.Lang (#PCDATA)>
<!ELEMENT Construction.Dict.Name (#PCDATA)>
<!ELEMENT Construction.Dict.Type (#PCDATA)>
<!ELEMENT Construction.Dict.TypeString (#PCDATA)>
<!ELEMENT Construction.Dict.FreeString (#PCDATA)>
<!ELEMENT Construction.Dict.EditString (#PCDATA)>
<!ELEMENT Construction.Dict.InitValue (#PCDATA)>
<!ELEMENT Construction.Dict.Field (#PCDATA)>
<!ELEMENT Construction.DataItem.keyword (Construction.Keyword)>
<!ELEMENT Construction.Keyword (Construction.Keyword.DataItem,
                               Construction.Keyword.Len?,
                               Construction.Keyword.PLen?,
                               Construction.Keyword.ILen?,
                               Construction.Keyword.DLen?,
                               Construction.Keyword.Value?,
                               Construction.Keyword.Occurs?,
                               Construction.Keyword.Editchar?,
                               Construction.Keyword.Comp?,
                               Construction.Keyword.Free?)*>
<!ELEMENT Construction.Keyword.DataItem (#PCDATA)>
<!ELEMENT Construction.Keyword.Len (#PCDATA)>
<!ELEMENT Construction.Keyword.PLen (#PCDATA)>
<!ELEMENT Construction.Keyword.ILen (#PCDATA)>
<!ELEMENT Construction.Keyword.DLen (#PCDATA)>
<!ELEMENT Construction.Keyword.Value (#PCDATA)>
<!ELEMENT Construction.Keyword.Occurs (#PCDATA)>
<!ELEMENT Construction.Keyword.Editchar (#PCDATA)>
<!ELEMENT Construction.Keyword.Comp (#PCDATA)>
<!ELEMENT Construction.Keyword.Free (#PCDATA)>
<!ELEMENT Construction.InterfaceDataItem.dataitem (Construction.DataItem+)>
<!ELEMENT Construction.InterfaceObject.operation (Construction.Operation*)>
<!ELEMENT Construction.Operation (Construction.Operation.Name,
                                 Construction.Operation.AliasName,
                                 Construction.Operation.Comment?,
                                 Construction.Operation.Oneway,
                                 Construction.Operation.ReturnTypeName,
                                 Construction.Operation.ReturnUserType?,
                                 Construction.Operation.ScopeName?,
                                 Construction.Operation.ObjectID?,
                                 Construction.Operation.interfacedataitem,
                                 Construction.Operation.argument,
                                 Construction.Operation.exception,
                                 Construction.Operation.requestcontext)>      
<!ELEMENT Construction.Operation.Name (#PCDATA)>
<!ELEMENT Construction.Operation.AliasName (#PCDATA)>
<!ELEMENT Construction.Operation.Comment (#PCDATA)>
<!ELEMENT Construction.Operation.Oneway (#PCDATA)>
<!ELEMENT Construction.Operation.ReturnTypeName (#PCDATA)>
<!ELEMENT Construction.Operation.ReturnUserType (#PCDATA)>
<!ELEMENT Construction.Operation.ScopeName (#PCDATA)>
<!ELEMENT Construction.Operation.ObjectID (#PCDATA)>
<!ELEMENT Construction.Operation.interfacedataitem (Construction.InterfaceDataItem*)>
<!ELEMENT Construction.Operation.argument (Construction.Argument*)>
<!ELEMENT Construction.Argument (Construction.Argument.Name,
                                Construction.Argument.Mode,
                                Construction.Argument.TypeName,
                                Construction.Argument.UserType?,
                                Construction.Argument.ScopeName?,
                                Construction.Argument.ObjectID,
                                Construction.Argument.interfacedataitem)>
<!ELEMENT Construction.Argument.Name (#PCDATA)>
<!ELEMENT Construction.Argument.Mode (#PCDATA)>
<!ELEMENT Construction.Argument.TypeName (#PCDATA)>
<!ELEMENT Construction.Argument.UserType (#PCDATA)>
<!ELEMENT Construction.Argument.ScopeName (#PCDATA)>
<!ELEMENT Construction.Argument.ObjectID (#PCDATA)>
<!ELEMENT Construction.Argument.interfacedataitem (Construction.InterfaceDataItem*)>
<!ELEMENT Construction.Operation.exception (Construction.Exception*)>
<!ELEMENT Construction.Exception (Construction.Exception.Name,
                                 Construction.Exception.UserType,
                                 Construction.Exception.ScopeName,
                                 Construction.Exception.ObjectID,
                                 Construction.Exception.interfacedataitem)>
<!ELEMENT Construction.Exception.Name (#PCDATA)>
<!ELEMENT Construction.Exception.UserType (#PCDATA)>
<!ELEMENT Construction.Exception.ScopeName (#PCDATA)>
<!ELEMENT Construction.Exception.ObjectID (#PCDATA)>
<!ELEMENT Construction.Exception.interfacedataitem (Construction.InterfaceDataItem*)>
<!ELEMENT Construction.Operation.requestcontext (Construction.RequestContext*)>
<!ELEMENT Construction.RequestContext (Construction.RequestContext.Name,
                                      Construction.RequestContext.Comment?)>
<!ELEMENT Construction.RequestContext.Name (#PCDATA)>
<!ELEMENT Construction.RequestContext.Comment (#PCDATA)>
<!ELEMENT Construction.ValiableSymbol.interfacevaliablesymbolauxiliary (Construction.InterfaceValiableSymbolAuxiliary*)>
<!ELEMENT Construction.InterfaceValiableSymbolAuxiliary (Construction.InterfaceValiableSymbolAuxiliary.valiablesymbol*)>
<!ELEMENT Construction.InterfaceValiableSymbolAuxiliary.valiablesymbol (Construction.ValiableSymbol*)>
<!ELEMENT Construction.ValiableSymbol.xmap3valiablesymbol (Construction.Xmap3ValiableSymbol*)>
<!ELEMENT Construction.Xmap3ValiableSymbol (Construction.Xmap3ValiableSymbol.Value,
                                          Construction.Xmap3ValiableSymbol.resourcefile,
                                          Construction.Xmap3ValiableSymbol.valiablesymbol)>
<!ELEMENT Construction.Xmap3ValiableSymbol.Value (#PCDATA)>
<!ELEMENT Construction.Xmap3ValiableSymbol.resourcefile (Construction.ResourceFile*)>
<!ELEMENT Construction.Xmap3ValiableSymbol.valiablesymbol (Construction.ValiableSymbol*)>
<!ELEMENT Construction.ValiableSymbol.xmap3valiablesymbolauxiliary (Construction.Xmap3ValiableSymbolAuxiliary*)>
<!ELEMENT Construction.Xmap3ValiableSymbolAuxiliary (Construction.Xmap3ValiableSymbolAuxiliary.IOKind,
                                                    Construction.Xmap3ValiableSymbolAuxiliary.valiablesymbol)>
<!ELEMENT Construction.Xmap3ValiableSymbolAuxiliary.IOKind (#PCDATA)>
<!ELEMENT Construction.Xmap3ValiableSymbolAuxiliary.valiablesymbol (Construction.ValiableSymbol*)>
<!ELEMENT Construction.ValiableSymbol.xmlvaliablesymbol (Construction.XMLValiableSymbol)*>
<!ELEMENT Construction.XMLValiableSymbol (Construction.XMLValiableSymbol.Value,
                                         Construction.XMLValiableSymbol.resource,
                                         Construction.XMLValiableSymbol.ParseLevel,
                                         Construction.XMLValiableSymbol.valiablesymbol)>
<!ELEMENT Construction.XMLValiableSymbol.Value (#PCDATA)>
<!ELEMENT Construction.XMLValiableSymbol.resourcefile (Construction.ResourceFile*)>
<!ELEMENT Construction.XMLValiableSymbol.ParseLevel (#PCDATA)>
<!ELEMENT Construction.XMLValiableSymbol.valiablesymbol (Construction.ValiableSymbol*)>
<!ELEMENT Construction.ValiableSymbol.xmlvaliablesymbolauxiliary (Construction.XMLValiableSymbolAuxiliary)>
<!ELEMENT Construction.XMLValiableSymbolAuxiliary (Construction.XMLValiableSymbolAuxiliary.ParseLevel,
                                                  Construction.XMLValiableSymbolAuxiliary.valiablesymbol)>
<!ELEMENT Construction.XMLValiableSymbolAuxiliary.ParseLevel (#PCDATA)>
<!ELEMENT Construction.XMLValiableSymbolAuxiliary.valiablesymbol (Construction.ValiableSymbol*)>
<!ELEMENT Construction.ValiableSymbol.xmlelementvaliablesymbol (Construction.XMLElementValiableSymbol*)>
<!ELEMENT Construction.XMLElementValiableSymbol (Construction.XMLElementValiableSymbol.Value,
                                                Construction.XMLElementValiableSymbol.valiablesymbol)>
<!ELEMENT Construction.XMLElementValiableSymbol.Value (#PCDATA)>
<!ELEMENT Construction.XMLElementValiableSymbol.valiablesymbol (Construction.ValiableSymbol*)>
<!ELEMENT Construction.ValiableSymbol.xmlelementvaliablesymbolauxiliary (Construction.XMLElementValiableSymbolAuxiliary)*>
<!ELEMENT Construction.XMLElementValiableSymbolAuxiliary (Construction.XMLElementValiableSymbolAuxiliary.TagName,
                                                         Construction.XMLElementValiableSymbolAuxiliary.AttributeName,
                                                         Construction.XMLElementValiableSymbolAuxiliary.valiablesymbol)>
<!ELEMENT Construction.XMLElementValiableSymbolAuxiliary.TagName (#PCDATA)>
<!ELEMENT Construction.XMLElementValiableSymbolAuxiliary.AttributeName (#PCDATA)>
<!ELEMENT Construction.XMLElementValiableSymbolAuxiliary.valiablesymbol (Construction.ValiableSymbol*)>
<!ELEMENT Construction.CommonUoc (Construction.CommonUoc.ProgramNo,
                                 Construction.CommonUoc.uocblock)>
<!ELEMENT Construction.CommonUoc.ProgramNo (#PCDATA)>
<!ELEMENT Construction.CommonUoc.uocblock (Construction.UocBlock*)>
<!ELEMENT Construction.UocBlock (Construction.UocBlock.ID,
                                Construction.UocBlock.ParentID?,
                                Construction.UocBlock.Kind,
                                Construction.UocBlock.Comment?,
                                Construction.UocBlock.Text?,
                                Construction.UocBlock.Thinkaid?,
                                Construction.UocBlock.multisrc,
                                Construction.UocBlock.rulesentence,
                                Construction.UocBlock.ruleexpand)>
<!ELEMENT Construction.UocBlock.ID (#PCDATA)>
<!ELEMENT Construction.UocBlock.ParentID (#PCDATA)>
<!ELEMENT Construction.UocBlock.Kind (#PCDATA)>
<!ELEMENT Construction.UocBlock.Comment (#PCDATA)>
<!ELEMENT Construction.UocBlock.Text (#PCDATA)>
<!ELEMENT Construction.UocBlock.Thinkaid (#PCDATA)>
<!ELEMENT Construction.UocBlock.multisrc (Construction.MultiSrc*)>
<!ELEMENT Construction.MultiSrc (Construction.MultiSrc.FileName)>
<!ELEMENT Construction.MultiSrc.FileName (#PCDATA)>
<!ELEMENT Construction.UocBlock.rulesentence (Construction.RuleSentence*)>
<!ELEMENT Construction.RuleSentence (Construction.RuleSentence.Usage,
                                    Construction.RuleSentence.rulesentencefull)>
<!ELEMENT Construction.RuleSentence.Usage (#PCDATA)>
<!ELEMENT Construction.RuleSentence.rulesentencefull (Construction.RuleSentenceFull*)>
<!ELEMENT Construction.RuleSentenceFull (Construction.RuleSentenceFull.Kind,
                                        Construction.RuleSentenceFull.rulevaliablesymbol)>
<!ELEMENT Construction.RuleSentenceFull.Kind (#PCDATA)>
<!ELEMENT Construction.RuleSentenceFull.rulevaliablesymbol (Construction.RuleValiableSymbol*)>
<!ELEMENT Construction.RuleValiableSymbol (Construction.RuleValiableSymbol.Name,
                                          Construction.RuleValiableSymbol.Array,
                                          Construction.RuleValiableSymbol.ChildName?,
                                          Construction.RuleValiableSymbol.ChildArray,
                                          Construction.RuleValiableSymbol.ObjectID+,
                                          Construction.RuleValiableSymbol.Prefix?,
                                          Construction.RuleValiableSymbol.Suffix?,
                                          Construction.RuleValiableSymbol.TopSpecified,
                                          Construction.RuleValiableSymbol.TopItemName?)>
<!ELEMENT Construction.RuleValiableSymbol.Name (#PCDATA)>
<!ELEMENT Construction.RuleValiableSymbol.Array (#PCDATA)>
<!ELEMENT Construction.RuleValiableSymbol.ChildName (#PCDATA)>
<!ELEMENT Construction.RuleValiableSymbol.ChildArray (#PCDATA)>
<!ELEMENT Construction.RuleValiableSymbol.ObjectID (#PCDATA)>
<!ELEMENT Construction.RuleValiableSymbol.Prefix (#PCDATA)>
<!ELEMENT Construction.RuleValiableSymbol.Suffix (#PCDATA)>
<!ELEMENT Construction.RuleValiableSymbol.TopSpecified (#PCDATA)>
<!ELEMENT Construction.RuleValiableSymbol.TopItemName (#PCDATA)>
<!ELEMENT Construction.UocBlock.ruleexpand (Construction.RuleExpand*)>
<!ELEMENT Construction.RuleExpand (Construction.RuleExpand.Name,
                                  Construction.RuleExpand.ObjectID,
                                  Construction.RuleExpand.UpdateTime,
                                  Construction.RuleExpand.RuleUpdateTime,
                                  Construction.RuleExpand.Order,
                                  Construction.RuleExpand.Comment?,
                                  Construction.RuleExpand.ruledataitem,
                                  Construction.RuleExpand.Script)>
<!ELEMENT Construction.RuleExpand.Name (#PCDATA)>
<!ELEMENT Construction.RuleExpand.ObjectID (#PCDATA)>
<!ELEMENT Construction.RuleExpand.UpdateTime (#PCDATA)>
<!ELEMENT Construction.RuleExpand.RuleUpdateTime (#PCDATA)>
<!ELEMENT Construction.RuleExpand.Order (#PCDATA)>
<!ELEMENT Construction.RuleExpand.Comment (#PCDATA)>
<!ELEMENT Construction.RuleExpand.ruledataitem (Construction.RuleDataItem*)>
<!ELEMENT Construction.RuleDataItem (Construction.RuleDataItem.Name,
                                   Construction.RuleDataItem.ObjectID,
                                   Construction.RuleDataItem.LangName,
                                   Construction.RuleDataItem.StandardName+,
                                   Construction.RuleDataItem.Keyword,
                                   Construction.RuleDataItem.Applycondition,
                                   Construction.RuleDataItem.rulevaliablesymbol,
                                   Construction.RuleDataItem.ruledataitemstructure)>
<!ELEMENT Construction.RuleDataItem.Name (#PCDATA)>
<!ELEMENT Construction.RuleDataItem.ObjectID (#PCDATA)>
<!ELEMENT Construction.RuleDataItem.LangName (#PCDATA)>
<!ELEMENT Construction.RuleDataItem.StandardName (#PCDATA)>
<!ELEMENT Construction.RuleDataItem.Keyword (#PCDATA)>
<!ELEMENT Construction.RuleDataItem.Applycondition (#PCDATA)>

<!ELEMENT Construction.RuleDataItem.rulevaliablesymbol (Construction.RuleValiableSymbol*)>
<!ELEMENT Construction.RuleDataItem.ruledataitemstructure (Construction.RuleDataItemStructure*)>
<!ELEMENT Construction.RuleDataItemStructure (Construction.RuleDataItemStructure.Name,
                                             Construction.RuleDataItemStructure.ObjectID,
                                             Construction.RuleDataItemStructure.LangName)>
<!ELEMENT Construction.RuleDataItemStructure.Name (#PCDATA)>
<!ELEMENT Construction.RuleDataItemStructure.ObjectID (#PCDATA)>
<!ELEMENT Construction.RuleDataItemStructure.LangName (#PCDATA)>
<!ELEMENT Construction.RuleExpand.Script (#PCDATA)>
]>

付録I　ファイルの互換性

SEWB+/CONSTRUCTIONで作成したファイルのバージョン間の互換性について説明します。バージョン2からバージョン4にバージョンアップする場合に必要です。バージョン3からバージョン4にバージョンアップする場合は必要ありません。

＜この節の構成＞

(1)　SEWB+/CONSTRUCTIONのファイルの互換性

(2)　旧バージョンのSEWB+/CONSTRUCTIONで作成したデータ定義ファイルの扱い

(3)　旧バージョンのSEWB+/CONSTRUCTIONで作成したプログラム定義のファイルの扱い

(1)　SEWB+/CONSTRUCTIONのファイルの互換性

各ファイルの互換性について説明します。なお，新しいバージョンのSEWB+/CONSTRUCTIONで作成したファイルは，旧バージョンのSEWB+/CONSTRUCTIONで使用することはできません。

テンプレート，部品，およびプログラム定義ファイル
SEWB+/CONSTRUCTIONの新しいバージョンを利用する場合，旧バージョンのSEWB+/CONSTRUCTIONで作成したテンプレート，部品，およびプログラム定義ファイルは，そのまま使用できます。

データ定義ファイル
データ定義ファイルについては，ファイルを作成したSEWB+/CONSTRUCTIONのバージョンよりあとにサポートされた機能を利用する際，結合項目を再入力して更新する必要があります。対象となるバージョンと該当する機能については，「(2) 旧バージョンのSEWB+/CONSTRUCTIONで作成したデータ定義ファイルの扱い」を参照してください。

(2)　旧バージョンのSEWB+/CONSTRUCTIONで作成したデータ定義ファイルの扱い

旧バージョンのSEWB+/CONSTRUCTIONで作成したデータ定義ファイルを使用する際，留意が必要となるバージョンと機能について説明します。結合項目を再入力して更新する方法については，「データ定義ファイルへの結合項目の再入力」を参照してください。

バージョン02-00以前で作成したデータ定義ファイル
SEWB+/CONSTRUCTION 02-01でサポートされた機能のうち，次に示す機能を使用する際には，SEWB+/CONSTRUCTION 02-00以前で作成したデータ定義ファイルの更新が必要な場合があります。

テンプレート記述言語の@@getdata関数

テンプレート記述言語の@@modify関数

テンプレート記述言語のFOR_REPOSITORY句を指定した@@lang文

業務ルールスクリプトの@modifyキーワード

バージョン02-03以前で作成したデータ定義ファイル
SEWB+/CONSTRUCTION 02-08でサポートされた機能のうち，次に示す機能を使用する際には，SEWB+/CONSTRUCTION 02-03以前で作成したデータ定義ファイルの更新が必要な場合があります。

データ項目名称―標準名称表示切替機能

バージョン02-04以前で作成したデータ定義ファイル
SEWB+/CONSTRUCTION 02-05でサポートされた機能のうち，次に示す機能を使用する際には，SEWB+/CONSTRUCTION 02-04以前で作成したデータ定義ファイルの更新が必要な場合があります。

タイプ追加レコードを生成する機能

バージョン02-05以前で作成したデータ定義ファイル
SEWB+/CONSTRUCTION 02-06でサポートされた機能のうち，次に示す機能を使用する際には，SEWB+/CONSTRUCTION 02-05以前で作成したデータ定義ファイルの更新が必要な場合があります。

レコード生成キーワードに@PLEN可変記号を指定できる機能

データ定義ファイルへの結合項目の再入力

データ定義ファイルの使用状態に応じて，次に説明する操作をしてください。

データ定義ファイルをチェックインして使用している場合は，そのまま使用できます。

データ定義ファイルをチェックアウトして使用している場合は，次のうち，どれかの操作が必要です。
・データ定義ファイルをチェックインして使用する
・データ定義ファイルをチェックインし，再度チェックアウトする
・データ定義ファイルを開いて結合項目を再入力する

データ定義ファイルをリポジトリで管理しないで使用している場合は，次の操作が必要です。
・データ定義ファイルを開いて結合項目を再入力する

(3)　旧バージョンのSEWB+/CONSTRUCTIONで作成したプログラム定義のファイルの扱い

バージョン02-07以前で作成したプログラム定義ファイル
SEWB+/CONSTRUCTION 02-08でサポートされた機能のうち，次に示す機能を使用する際には，SEWB+/CONSTRUCTION 02-07以前で作成したプログラム定義ファイルを開いて，データ定義ファイルの再入力をする必要があります。

データ項目名称―標準名称表示切替機能

付録J　このマニュアルの参考情報

このマニュアルを読むに当たっての参考情報を示します。

＜この節の構成＞

付録J.1　関連マニュアル

付録J.2　このマニュアルでの表記

付録J.3　KB（キロバイト）などの単位表記について

付録J.1　関連マニュアル

SEWB+シリーズのマニュアル体系を次に示します。

関連マニュアルを次に示します。必要に応じてお読みください。

SEWB+ 基本開発環境セット

SEWB+ 概説（3020-3-B80）

SEWB+/REPOSITORY 運用ガイド（3020-3-B81）

SEWB+/REPOSITORY 辞書設計ガイド（3020-3-B82）

SEWB+/RECORD DEFINER 操作ガイド（3020-3-B84）

SEWB+ 関連製品

SEWB+ バッチシステム向けアプリケーションフレームワーク・部品 使用の手引（3020-3-711）

COBOL

COBOL2002 操作ガイド（3020-3-D41）

COBOL2002 操作ガイド（3020-3-D47）

WorkCoordinator

WorkCoordinator Definer Version 3 ユーザーズガイド（3020-3-987）

EUR

uCosminexus EUR 概説（3020-7-531）※¹

uCosminexus EUR 帳票設計（3020-7-533）※¹

uCosminexus EUR 帳票設計（EUR Form帳票）（3020-7-534）※¹

uCosminexus EUR クライアント帳票出力（3020-7-535）※¹

uCosminexus EUR サーバ帳票出力（3020-7-536）※¹

uCosminexus EUR メッセージ（3020-7-537）※¹

uCosminexus EUR システム設計ガイド（3020-7-702）※2

uCosminexus EUR システム構築ガイド（3020-7-703）※2

uCosminexus EUR 帳票作成 画面リファレンス（3020-7-705）※2

uCosminexus EUR 帳票出力 機能解説 EUR Server編（3020-7-708）※2

uCosminexus EUR 帳票出力 リファレンス EUR Server編（3020-7-710）※2

uCosminexus EUR データベース連携ガイド（3020-7-713）※2

uCosminexus EUR メッセージ（3020-7-714）※2

Web Page Generator

Web Page Generator - Design ユーザーズガイド（3020-7-236）

Web Page Generator Enterprise ユーザーズガイド（3020-7-241）

XMAP3

画面・帳票サポートシステム XMAP3 プログラミングガイド 画面編（3020-7-583）※3

画面・帳票サポートシステム XMAP3 プログラミングガイド 帳票編（3020-7-584）※3

画面・帳票サポートシステム XMAP3 プログラミングガイド 帳票編（3020-7-593）※4

画面・帳票サポートシステム XMAP3 プログラミングガイド 画面編（3020-7-594）※4

XMAP3 Version 5 画面・帳票サポートシステム XMAP3 開発ガイド（3020-7-512）※5

XMAP3 Version 5 画面・帳票サポートシステム XMAP3 プログラミングガイド（3020-7-513）※5

注※1

EUR Version 8の場合にお読みください。

注※2

EUR Version 9の場合にお読みください。

注※3

XMAP3 Version 3の場合にお読みください。

注※4

XMAP3 Version 4の場合にお読みください。

注※5

XMAP3 Version 5の場合にお読みください。

付録J.2　このマニュアルでの表記

このマニュアルでは，製品名および機能名を次のように表記しています。

表記 | 正式名称
EUR | EUR：イーユーアール Professional Edition
uCosminexus EUR：イーユーアール Designer
uCosminexus EUR：イーユーアール Developer
Object Server | Groupmax Object Server | Groupmax Object Server Version 6
Groupmax High-end Object Server | Groupmax High-end Object Server Version 6
SEWB+/RECORD DEFINER | SEWB+ 基本開発環境のレコード設計支援機能
SEWB+/REPOSITORY | SEWB+/REPOSITORY | SEWB+ 基本開発環境のリポジトリ管理機能
SEWB+/REPOSITORY-BROWSERまたはリポジトリブラウザ | SEWB+ 基本開発環境のリポジトリブラウザ機能

このマニュアルでは，パターンテンプレートをテンプレート，部品テンプレートを部品と表記しています。

付録J.3　KB（キロバイト）などの単位表記について

1KB（キロバイト），1MB（メガバイト），1GB（ギガバイト），1TB（テラバイト）はそれぞれ1,024バイト，1,024²バイト，1,024³バイト，1,024⁴バイトです。

付録K　用語解説

英字｜カ行｜サ行｜タ行｜ナ行｜ハ行｜マ行｜ヤ行｜ラ行

英字

C/Sシステム

クライアントサーバシステムの略称です。サービスを提供するサーバと，サービスを要求するクライアントから構成されます。一つの処理をネットワーク上のクライアントとサーバに分散させる業務形態です。

COBOL開発マネージャ

ソースプログラムや画面定義ファイルなど，関連する一連のファイルをプロジェクトという単位で管理し，効率の良いAP開発を支援するツールです。

CSVファイル（Comma Separated Valuesファイル）

リレーショナルデータベースで扱えるテキストデータを格納しているファイルです。データの区切りをコンマ（，），レコードの区切りを改行で表します。レコードは可変長形式になります。

DAMファイル（Direct Access Methodファイル）

OpenTP1が提供するファイルサービスの一つで，障害発生時にジャーナル情報からトランザクションの回復ができます。ファイル内の相対位置を指定し，ブロック単位でダイレクトアクセスができる直接編成ファイルです。OpenTP1専用のユーザファイルとして使用できます。DAMファイルにアクセスする場合，オフライン上では物理ファイルに，オンライン上では論理ファイルにアクセスします。

OpenTP1

分散トランザクション処理システムを実現するために，日立が提供している製品です。アプリケーションをネットワーク上に分散し，DBを管理するためのサーバを設ける分散システムでは，DBMSの機能だけを利用していたのでは，実現できるクライアントサーバシステムにも限界があります。そこで，複数のUNIXマシンやWindowsマシンとサーバを連携し，信頼性とパフォーマンスに優れたシステムを実現するために，オンライントランザクション処理技術が必要になってきます。OpenTP1は，RPC機能のほかにも，複数マシンにわたるデータ更新などの一連の処理の整合性を確保できるトランザクショナルRPC機能，クライアントからのサービス要求を処理するスケジューリング機能，障害発生時にジャーナル情報からトランザクションの回復ができるファイルサービスなどを提供します。

RPC（Remote Procedure Call）

RPCは，同一LAN内や，またWANでつながれたLANといった水平分散上のクライアントとサーバ間で，サブプログラムの呼び出しと同じような簡単な手続きで通信ができる機能です。クライアントのプログラムがサービス提供プログラム（SPP）に対してサービス要求するときは，サービス要求に必要なRPCの項目を指定します。

SEWB+/RECORD DEFINER

SEWB+ 基本開発環境のレコード設計支援機能のことです。

SEWB+/REPOSITORYの辞書情報を使用して，レコード情報を定義できます。

SEWB+/REPORT MANAGER

SEWB+で定義した情報の印刷を支援するツールです。SEWB+/CONSTRUCTIONと連携してプログラム処理概要図を，SEWB+/REPOSITORYと連携してインパクトレポートやデータ項目または業務ルールの定義内容などを，SEWB+/RECORD DEFINERと連携してレコード定義を印刷できます。これらのドキュメントを定義内容の確認や保守作業に役立てられます。

SEWB+/REPOSITORY

SEWB+ 基本開発環境のリポジトリ管理機能のことです。

SEWB+/REPOSITORYは，リポジトリに格納された資源（ドキュメントと辞書），およびその資源間の関連をサーバ上で統合管理します。また，SEWB+/REPOSITORYとSEWB+/REPOSITORY-BROWSERを合わせてSEWB+/REPOSITORYと呼ぶこともあります。

SEWB+/REPOSITORY-BROWSER

SEWB+ 基本開発環境のリポジトリブラウザ機能のことです。

SEWB+/REPOSITORY-BROWSERを使うと，リポジトリのシステム開発資源を，クライアントでビジュアルに操作できます。SEWB+/REPOSITORY-BROWSERでは，リポジトリへ辞書やドキュメントを登録したり，目的の資源を検索したり，資源間の関連を手がかりにブラウジングしたりできます。

SEWB+ 基本開発環境

次に示す機能を一つに統合したツールです。

リポジトリ管理機能（SEWB+/REPOSITORY）

リポジトリブラウザ機能（SEWB+/REPOSITORY-BROWSER）

プログラム構築支援機能（SEWB+/CONSTRUCTION）

レコード設計支援機能（SEWB+/RECORD DEFINER）

SEWB+ 基本開発環境セット

SEWB+ 基本開発環境とGroupmax Object Serverから構成される製品です。

SEWB+ツール

Windowsマシンを使った分散開発環境で，システム開発を支援するSEWB+シリーズのツールの総称です。

SPP（Service Providing Program）

クライアントプログラム（サービス利用プログラム:SUP）やメッセージ処理プログラム（MHP），またはほかのSPPからのRPCによって呼び出され，要求されたサービスを処理し，結果を返すサービス提供プログラムです。

SUP（Service Using Program）

サービス提供プログラム（SPP）に対してRPCを発行し，サービスを要求するクライアントプログラム（サービス利用プログラム）です。

TAMテーブル（Table Access Methodテーブル）

OpenTP1が提供するファイルサービスの一つで，障害発生時にジャーナル情報からトランザクションの回復ができます。OpenTP1専用のユーザファイルとして使用でき，直接編成ファイルへ高速にアクセスできます。ファイルを構成するレコードがメモリにロードされているため，実際のファイルではなくメモリへキーアクセスします。そのためアプリケーションからの高速アクセスを実現できます。

TPモニタ

トランザクション処理の監視，および制御をするソフトウェアのことです。オンラインシステムを構築するための基盤になる機能を提供しています。主な機能として，通信機能，スケジュール機能および障害発生時の回復機能があります。

UOC（User Own Coding）

詳細は，「ユーザ追加処理」を参照してください。

UOCリバース機能

ソースファイルで直接編集されたUOC（ユーザ追加処理）を，プログラム定義ファイルのUOCに取り込む機能です。

WorkCoordinator Definer

ビジネスプロセスを定義，管理および運用する製品のことです。WorkCoordinator Definerは，ビジネスプロセス管理および案件運用操作で構成されます。

XMAP3

基幹業務で利用する画面や帳票を作成するためのツールです。XMAP3では，画面や帳票の作成から，表示・印刷までを一貫して支援しています。なお，XMAP3で開発した表示・印刷のAPは，WindowsやUNIXのスタンドアロン環境のほかに，C/Sシステム環境やホストと連携した環境でも運用できます。

XML（eXtensible Markup Language）

XMLはHTMLと同様の言語で，タグとテキストで構成されたデータ構造を階層化して表現できるという特徴があります。また，XMLでは，作成者自身がタグを定義できます。SEWB+/CONSTRUCTIONでは，このような特徴を持つXMLで記述された文書を，プログラム生成のためのパラメタとして利用できます。

カ行

可変記号

テンプレート中で使用される仮の名称です。可変記号には，ソースプログラム生成時にプログラム定義ウィンドウで定義した値が設定されます。可変記号にどのような値を設定するか，プログラム作成者は定義ウィンドウ上に表示される説明文を参照します。テンプレート作成者は，定義ウィンドウ上に表示する説明文を作成します。

関連

ソースファイルとテンプレート，データ定義とデータ項目といったように，資源間に付けられた関係をいいます。関連には，SEWB+/REPOSITORY-BROWSERを使用して任意に設定できるユーザ関連と，SEWB+/CONSTRUCTIONが資源間に設定する関連とがあります。SEWB+/REPOSITORY-BROWSERの関連ブラウザ機能を使用すると，関連づけられた資源をブラウジングでき，変更波及の解析などに利用できます。

業務ルール

データ項目辞書に格納されている複数のデータ項目に共通する処理を，汎用的なルールとして業務ルール辞書に格納し，データ項目と関連を持たせたものです。SEWB+/CONSTRUCTIONで業務ルールを使用するときは，テンプレートに「@@rule文」または「@@merge文」を書いて必要な業務ルールを取り込みます。

業務ルール辞書

業務ルールを格納している辞書です。業務ルール辞書はデータ項目辞書と一緒に，辞書フォルダに格納されています。

結合項目

複数のデータ項目が連結して定義されるデータ項目です。COBOLの集団項目，C言語の構造体の考え方に相当します。

サ行

サイン

データ定義やプログラム定義の名称，および定義の概要といった情報をまとめてサインといいます。各定義ウィンドウの［サイン］タブで記述します。

サンプルテンプレート

SEWB+/CONSTRUCTIONが用意しているテンプレートです。サンプルのドキュメントフォルダのOpenTP1用またはバッチ用の下にあります。サンプルテンプレートは例題として用意されていますが，カスタマイズするとユーザ独自の環境にも流用できるようになります。

指示項目

テンプレートの「@@interface」で宣言された可変記号を修飾する，任意の文字列のことです。テンプレート中で入出力項目と宣言されている可変記号に対する指示項目は，レコードの構成要素やキー項目のサイズおよび表名称などに当たります。テンプレート中で入出力項目以外と宣言されている可変記号に対する指示項目は，単独の項目です。

タ行

データ項目辞書

システム中の複数のAP間で共用するデータ項目を格納する辞書です。データ中心アプローチに基づいてデータ分析し，標準化したデータ項目を蓄積します。SEWB+/CONSTRUCTIONで作成するAPで使用するデータ項目は，データ項目辞書から取り込みます。

データ定義

作成するAP中で使用されるファイルやDBなどを定義します。データ定義情報からレコードを生成できます。これらの定義に必要なデータ項目は，すべてデータ項目辞書から取り込みます。データ定義で定義したレコード構造を，COPYメンバファイルやヘッダファイルとして生成する機能を「レコード生成機能」といいます。

テンプレート

テンプレートは，生成時にAPの枠組みになるプログラム構成を記述したものです。部品やUOCの挿入場所，可変項目への値の設定の指示なども記述されています。テンプレートはテンプレート記述言語と使用するプログラミング言語で記述します。テンプレート，および部品を使用すると，形式が統一されたプログラムを効率良く作成できます。だれが作成しても形式が同じなので，管理や保守がしやすくなります。

テンプレート記述言語

テンプレートを作成するための言語です。テンプレート記述言語でテンプレートを作成すると，どの言語種別にも対応できる汎用性の高いテンプレートを作成できます。

ナ行

入出力項目

テンプレートの「@@interface」で，入出力資源（ファイル，DBなどの形式情報）であると宣言された可変記号です。

ハ行

バッチシステム

一連の処理をシーケンシャルにバッチ処理するシステムです。

ビルド

プロジェクトに登録されたソースファイルや定義ファイルに変更があった場合，変更のあったファイルおよびそのファイルに関連のある資源だけを使用して実行ファイルを生成する機能です。

部品

複数のAP間で利用される処理です。テンプレート記述言語と使用するプログラミング言語で記述します。部品は，ソースプログラム生成時に，テンプレートに取り込まれて展開されます。

プログラム構造図

APの構成をツリー形式で表示したものです。テンプレート中で，ユーザ追加処理（UOC）を挿入する指示（@@UOC）や業務ルール処理を挿入する指示（@@rule）とプログラム構造図を出力する指示（@@diagram）を書くと，UOCの挿入位置を含んだプログラム構造図がプログラム定義ウィンドウ上に表示されます。複雑な階層を持つテンプレート中の，UOC挿入位置などを確認するのに便利です。

プログラム定義

作成されたテンプレートやデータ定義情報を基にして，ソースプログラム生成に必要な情報や定義を洗い出し，それらを定義します。このときUOCも編集できます。

マ行

マップ定義ファイル

XMAP3で作成した画面や帳票の定義情報を格納したファイルのことです。SEWB+/CONSTRUCTIONでは，マップ定義ファイルを利用したクライアントAPの作成もできます。

メッセージログレコード構造

OpenTP1を利用すると，プログラムから関数を使ってメッセージログの出力を要求し，メッセージログファイルに出力できます。また，メッセージログをリアルタイムにコンソールに出力することもできます。プログラムには，メッセージログの出力を要求したプログラムのIDやメッセージID，メッセージログテキストのレコード構造を指定する必要があります。

ヤ行

ユーザジャーナル

OpenTP1を使用する場合，OpenTP1のシステムジャーナルファイルにAPから出力できるユーザ任意の情報です。SEWB+/CONSTRUCTIONでは，ユーザジャーナルの単位になるユーザジャーナルレコード（UJ）およびその構造を定義します。

ユーザジャーナルレコード

OpenTP1を利用すると，プログラム中のトランザクションから関数を使って，ユーザの任意の情報をジャーナルとしてシステムジャーナルファイルに出力できます。この関数1回の呼び出しで取得できるユーザジャーナルをユーザジャーナルレコード（UJ）と呼びます。ジャーナルを取得することによって，障害発生時などのファイル回復や稼働統計情報の分析に役立てることができます。

ユーザ処理

ユーザ追加処理の編集と，業務ルール処理の設定のことです。プログラム定義の［ユーザ処理］タブでは，テンプレートに書かれたユーザ追加処理挿入位置に展開させる，AP特有の処理のコーディングをエディタで編集します。また，テンプレートに書かれた業務ルール処理挿入位置に展開させる業務ルールを設定します。

ユーザ追加処理

ユーザが作成するコーディングで，主にテンプレートや部品では対応できないAP独自仕様の部分です。ユーザ追加処理はプログラム定義ウィンドウで編集します。テンプレート中にユーザ追加処理の挿入位置を記述しておくと，プログラム定義ウィンドウ上に反映され，表示されます。ユーザ追加処理はUOC（User Own Coding）と表記されることもあります。

ラ行

リビルド

プロジェクトに登録されたソースファイルや定義ファイルに変更があった場合，プロジェクトに登録されているすべての資源に対して実行ファイルを生成する機能です。

ルールスクリプト

業務ルールの処理内容です。データ項目辞書のデータ項目に共通の処理を，可変記号などを使用して汎用的なルールとして作成し，業務ルール辞書に格納します。

レコード

データ項目辞書の「データ項目の結合」機能を利用して作成される結合項目編成の，最上位の結合項目です。

レコード生成機能

データ定義で定義したレコード構造をCOPYメンバファイルまたはヘッダファイルとして生成する機能です。

レコードソース

COBOLのCOPY登録集やCのヘッダファイルのことを指します。

索引

[記号]
[Ａ][Ｂ][Ｃ][Ｄ][Ｅ][Ｆ][Ｇ][Ｉ][Ｌ][Ｍ][Ｎ][Ｏ][Ｐ][Ｒ][Ｓ][Ｔ][Ｕ][Ｖ][Ｗ][Ｘ]
[ア行][カ行][サ行][タ行][ナ行][ハ行][マ行][ヤ行][ラ行]

(記号)

！

！＝

／

｜｜

＋

－

＝＝

＜

＜＝

＞

＞＝

＆＆

＊

@@＊

@@break

@@break文

@@columnlist

@@columnlist関数

@@continue

@@continue文

@@count

@@count関数

@@defined

@@defined関数

@@diagram

@@diagram文

@@errorexit

@@errorexit文

@@expand文

@@file文

@@foreach文

@@getdata関数

@@getdate

@@getdate関数

@@getmemo

@@getmemo関数

@@getrfile

@@getrfile関数

@@getsign

@@getsign関数

@@global

@@global文

@@if文

@@interface文 ,[2]

@@itemlist

@@itemlist関数

@@lang文

@@leadbyte

@@leadbyte関数

@@length

@@lengthb

@@lengthb関数

@@length関数

@@merge

@@merge文 ,[2]

@@modify

@@modify関数

@@msg

@@msg文

@@parts文

@@pic

@@pic関数

@@proc文

@@put

@@put文

@@reclen

@@reclen関数

@@rule文 ,[2]

@@section文

@@set

@@set文

@@str

@@strb

@@strb関数

@@str関数

@@switch文

@@uocdefined

@@uocdefined関数

@@uoc文

@@while

@@while文

@@xmap3common

@@xmap3common関数

@@xmap3objects

@@xmap3objects関数

@@xmlattribute

@@xmlattribute関数

@@xmlchildnodes

@@xmlchildnodes関数

@@xmlelements

@@xmlelements関数

@@xmlfirstchild

@@xmlfirstchild関数

@@xmllastchild

@@xmllastchild関数

@@xmlnext

@@xmlnext関数

@@xmlparent

@@xmlparent関数

@@xmlprevious

@@xmlprevious関数

(英字)

(Ａ)

ARRAY_MAX ,[2]

ASCEND

ATTR ,[2]

ATTR_NAME ,[2]

(Ｂ)

BASIC_ATTR

(Ｃ)

C/Sシステム〔用語解説〕

C/Sシステムサンプル

C/Sシステムサンプルプログラム

C/Sシステムサンプルプログラムの構成

COBOL-HiRDB　サンプル

COBOL-HiRDBサンプルの登録作業処理

COBOL開発マネージャ〔用語解説〕

COBOL用レコード生成キーワード

COMMENT ,[2] ,[3]

CSVファイル〔用語解説〕

C言語-HiRDB　サンプル

C言語-HiRDBサンプルの登録作業処理

C言語用生成規則

(Ｄ)

DAM ,[2] ,[3]

［DAM］タブ

DAMファイル〔用語解説〕

DB

DESCEND

DTD

(Ｅ)

EQ

eq

EXTENSION

EXTERNAL

(Ｆ)

FILE

FOR_REPOSITORY

(Ｇ)

GE

ge

GT

gt

(Ｉ)

IO ,[2]

IO句

(Ｌ)

LE

le

LT

lt

(Ｍ)

MODIFY_CONNECT

MODIFY_ORDER

MSG

MSGLOG

(Ｎ)

NE

ne

NOVALUE

(Ｏ)

OpenTP1〔用語解説〕

OUTPUT_NAME

(Ｐ)

PARENT ,[2]

PARSE_LEVEL ,[2]

PREFIX

PREFIX句

(Ｒ)

RDB ,[2]

RDB仕様情報

［RDB］タブ

REF ,[2]

RPC

RPC_INPARM

RPC_REPLY

RPC〔用語解説〕

RPC応答領域

［RPC応答領域］タブ

RPC入力パラメタ

［RPC入力パラメタ］タブ

(Ｓ)

SEWB+/RECORD DEFINER〔用語解説〕

SEWB+/REPORT MANAGER〔用語解説〕

SEWB+/REPOSITORY〔用語解説〕

SEWB+/REPOSITORY-BROWSER〔用語解説〕

SEWB+ 基本開発環境〔用語解説〕

SEWB+ 基本開発環境セット〔用語解説〕

SEWB+ツール〔用語解説〕

SPP〔用語解説〕

START

START_POSITION

SUFFIX

SUFFIX句

SUP〔用語解説〕

SUPPRESS

(Ｔ)

TAG_NAME ,[2]

TAM ,[2] ,[3]

［TAM］タブ

TAMテーブル〔用語解説〕

TOP

TOP句

TPBroker-C言語　サンプル

TPBroker-C言語サンプルの登録作業処理

TPモニタ〔用語解説〕

TYPE

TYPE句

(Ｕ)

UJ

UOC_BEGIN

UOC_END

UOC〔用語解説〕

UOCリバース機能 ,[2]

UOCリバース機能〔用語解説〕

UP

USAGE

(Ｖ)

VALUE ,[2]

(Ｗ)

WITH

WITH USAGE

WORK

WorkCoordinator Definer〔用語解説〕

(Ｘ)

XMAP3

XMAP3〔用語解説〕

XMAP3-COBOL言語サンプル

XMAP3-COBOLサンプルの登録作業処理

XML

XML〔用語解説〕

XML形式ファイル

(ア行)

(あ)

アンインストール

(い)

位置指定

［インタフェース項目設定］ダイアログ

インタフェース情報

［インタフェース］タブ

インタフェース定義部 ,[2]

インタフェーステーブル作成

インタフェースの宣言

(え)

英字

演算子 ,[2]

(お)

オブジェクト情報

(カ行)

(か)

開発の流れ

拡張子

拡張指示項目設定ダイアログ

仮名

可変記号 ,[2]

可変記号〔用語解説〕

［可変記号選択］ダイアログ

可変記号のグローバル宣言

可変記号名の記述規則

環境設定

漢字

関数

関連〔用語解説〕

(き)

キー名

キー名称

キーワード

キーワード指定

記号生成式

共通作業領域 ,[2]

共通作業領域情報

［共通作業領域］タブ

共通情報

業務ルール

業務ルール〔用語解説〕

業務ルール辞書〔用語解説〕

業務ルール処理の設定

業務ルール処理の挿入位置

［業務ルールスクリプト表示］ダイアログ

［業務ルール展開設定］ダイアログ

(け)

結合項目〔用語解説〕

［結合項目の構成］ダイアログ

(こ)

コード

コンパイル

(サ行)

(さ)

サイン〔用語解説〕

［サイン］タブ ,[2]

作成するプログラムの概要情報

算術演算子

算術式

サンプルテンプレート〔用語解説〕

(し)

式

識別子

指示項目

指示項目（拡張指示項目）設定ダイアログ

指示項目〔用語解説〕

［指示項目設定］ダイアログ ,[2] ,[3]

指示項目設定ダイアログ

指示項目の宣言

システム可変記号

修飾名

条件式

条件の否定

使用するインタフェース項目

使用する業務ルール処理

使用するテンプレート

使用する部品

商品受注処理

(す)

数字

数値定数

(せ)

生成言語種別

絶対パスでの保存

宣言

(そ)

相対パスでの保存

相対パスと絶対パス

添字

(タ行)

(た)

代入演算子

代入式

多様な開発環境に対応するC/Sシステムサンプルプログラムの構成

単体テスト

(ち)

注釈

抽出条件 ,[2]

(て)

定数

データエントリの例題

データ項目辞書〔用語解説〕

データ定義とAP作成

データ定義 ,[2]

データ定義〔用語解説〕

データ定義識別子 ,[2]

［データ定義指示項目設定］ダイアログ ,[2] ,[3]

［データ定義ファイル選択］ダイアログ

テーブル定義

［適用項目詳細］ダイアログ

展開処理記述部 ,[2]

展開制御文

［展開部品項目設定］ダイアログ

展開文

展開文字列 ,[2]

伝票入力・訂正の例題

テンプレート

テンプレート（C/Sシステム）

テンプレート（バッチシステム）

テンプレート〔用語解説〕

テンプレート概要定義部 ,[2]

テンプレート記述言語

テンプレート記述言語〔用語解説〕

テンプレート作成

テンプレート作成者名

テンプレート定義部

テンプレートと各定義ファイルとの関係

テンプレートの概要

テンプレートの日本語名称

(と)

登録作業処理

トークン

ドキュメント種別名

特殊文字

(ナ行)

(な)

長さ設定エリア

(に)

入出力項目

入出力項目〔用語解説〕

［入出力項目設定］ダイアログ

入出力項目の宣言

［入出力］タブ

入出力ブロックサイズ

(の)

ノード ,[2]

(ハ行)

(は)

配列

配列の規則

配列の添字の規則

バッチシステム〔用語解説〕

［パラメタ］タブ

(ひ)

比較演算子

比較条件式

引数

［引数設定］ダイアログ

［引数値設定］ダイアログ

表名称

ビルド

ビルド〔用語解説〕

(ふ)

ファイル

ファイル情報 ,[2]

［ファイル］タブ

ファイル定義

ファイルの互換性

ファイル編集・帳票出力の例題

ファイル編成

ファイル名

複合条件式

部品

部品（C/Sシステム）

部品（バッチシステム）

部品〔用語解説〕

部品およびユーザ追加処理の挿入位置

部品概要定義部

部品関連出力部

［部品］タブ

部品定義

部品の処理の埋め込み

部品の展開

部品の呼び出し

［部品ファイル選択］ダイアログ

部分参照

プログラム構造図〔用語解説〕

プログラム定義とAP作成

プログラム定義 ,[2]

プログラム定義〔用語解説〕

プログラム定義ウィンドウからの生成

プログラム定義で選択したファイル名の保存方法

プログラムの処理

プロシジャ宣言部

［プロシジャ選択］ダイアログ

プロシジャ名

文 ,[2]

分離記号 ,[2]

(マ行)

(ま)

マスタ更新・追加出力の例題

マップ定義

マップ定義ファイル〔用語解説〕

(め)

メッセージ

メッセージ情報

［メッセージ］タブ

メッセージログ

メッセージログ情報

［メッセージログ］タブ

メッセージログレコード構造〔用語解説〕

(も)

文字セット

文字定数

文字列連結演算子

(ヤ行)

(ゆ)

ユーザジャーナル

ユーザジャーナル〔用語解説〕

ユーザジャーナル情報

［ユーザジャーナル］タブ

ユーザジャーナルレコード〔用語解説〕

ユーザ処理〔用語解説〕

［ユーザ処理］タブ

ユーザ追加処理

ユーザ追加処理〔用語解説〕

［ユーザ追加処理設定］ダイアログ

ユーザ追加処理のプログラム定義ファイルへの取り込み

ユーザ追加処理の編集

優先順位

(よ)

予約語

(ラ行)

(り)

リビルド

リビルド〔用語解説〕

(る)

ルールスクリプト〔用語解説〕

(れ)

レコード〔用語解説〕

レコード形式

レコード生成機能〔用語解説〕

レコードソース〔用語解説〕

レコード定義 ,[2] ,[3] ,[4] ,[5] ,[6] ,[7] ,[8] ,[9] ,[10]

連結式

(ろ)

論理演算子

論理積

［論理設計図ファイル選択］ダイアログ

論理和

■ 商標類

CORBAは，Object Management Groupが提唱する分散処理環境アーキテクチャの名称です。
Microsoftは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
ODBCは，米国Microsoft Corporationが提唱するデータベースアクセス機構です。
OracleとJavaは，Oracle Corporation 及びその子会社，関連会社の米国及びその他の国における登録商標です。
Visual Basicは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
Visual C++は，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
Windowsは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
Windows Serverは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
Windows Vistaは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
その他記載の会社名，製品名は，それぞれの会社の商標もしくは登録商標です。