JPH04342028A - 変数可視域制御方法 - Google Patents

変数可視域制御方法

Info

Publication number
JPH04342028A
JPH04342028A JP11357491A JP11357491A JPH04342028A JP H04342028 A JPH04342028 A JP H04342028A JP 11357491 A JP11357491 A JP 11357491A JP 11357491 A JP11357491 A JP 11357491A JP H04342028 A JPH04342028 A JP H04342028A
Authority
JP
Japan
Prior art keywords
sql
declaration
statement
block
clause
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP11357491A
Other languages
English (en)
Other versions
JP2695534B2 (ja
Inventor
Kazushige Nagashima
長島 千成
Tadashi Sugimoto
杉本 直史
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP11357491A priority Critical patent/JP2695534B2/ja
Publication of JPH04342028A publication Critical patent/JPH04342028A/ja
Application granted granted Critical
Publication of JP2695534B2 publication Critical patent/JP2695534B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、インタフェースに使用
する変数と実行文との間の可視性を制御する変数可視域
制御方式であって、特にC言語処理プロセッサでRDB
2機能などのサポートにおける変数可視域の制御方式に
関するものである。計算機における応用プログラム(例
えばC言語で記述された応用プログラム)の翻訳時に、
RDB2(リレーショナルデータベース)の処理を行う
際に適用するものである。
【0002】
【従来の技術】従来、C言語で記述したRDB2機能を
利用した応用プログラムを翻訳する際に、RDB2側に
対して、ホスト変数(SQL変数、C言語で記述された
応用プログラム内に定義された変数)をインタフェース
として情報をRDB2側に渡す。このとき、RDB2の
実行文(SQL文)の存在位置(ブロックレベル)と、
ホスト変数の定義位置(ブロックレベル)との関係によ
り、例えば図3(ロ)の原始プログラム21について、
図3の(イ)の流れ図に示すように処理を行い、図4に
示すように、実行文(SQL文)の位置に使用可能な全
てのSQL変数を*1、*2の4個所にその都度、展開
するようにしていた。以下図3および図4の構成および
処理を簡単に説明する。
【0003】図3の(ロ)において、原始プログラム2
1は、右側に記載したように、SQL宣言節■、SQL
文■がブロックレベル1に記述され、SQL宣言節■、
SQL文■、SQL文■がブロックレベル2に記述され
、これに続いてSQL文■がブロックレベル1に記述さ
れている。このような原始プログラム21を翻訳する場
合、下段に記載したように、 SQL文■で使用可能(可視可能)なSQL変数・・・
SQL宣言節■ SQL文■で使用可能(可視可能)なSQL変数・・・
SQL宣言節■と■ SQL文■で使用可能(可視可能)なSQL変数・・・
SQL宣言節■と■ SQL文■で使用可能(可視可能)なSQL変数・・・
SQL宣言節■ となる。
【0004】従って、図3の(イ)の処理の流れ図に示
すように、S21でSQL宣言節■の解析を行う。S2
2でSQL文■の解析を行い、Cソースに展開、SQL
宣言節■の展開(連続領域4)、その他情報の展開、R
DB2関数へのパラメタ設定(*1)を行う(図4のS
QL文■に対するブロック開始からSQL文■に対する
ブロック終了の間に示すように展開する)。
【0005】S23でSQL宣言節■の解析を行う。S
24でSQL文■の解析を行い、Cソースに展開、SQ
L宣言節■と■の展開(連続領域4)、その他情報の展
開、RDB2関数へのパラメタ設定(*2)を行う(図
4のSQL文■に対するブロック開始からSQL文■に
対するブロック終了の間に示すように展開する)。
【0006】S25でSQL文■の解析を行い、Cソー
スに展開、SQL宣言節■と■の展開(連続領域4)、
その他情報の展開、RDB2関数へのパラメタ設定(*
2)を行う(図4のSQL文■に対するブロック開始か
らSQL文■に対するブロック終了の間に示すように展
開する)。S26でSQL文■の解析を行い、Cソース
に展開、SQL宣言節■の展開(連続領域4)、その他
情報の展開、RDB2関数へのパラメタ設定(*1)を
行う(図4のSQL文■に対するブロック開始からSQ
L文■に対するブロック終了の間に示すように展開する
)。
【0007】
【発明が解決しようとする課題】従来の翻訳時には、図
3の(イ)のS22、S24、S25、S26の各SQ
L文■、■、■、■の位置でSQL宣言節■、SQL宣
言節■と■、SQL宣言節■と■、SQL宣言節■をそ
れぞれ連続領域4に展開し、これらの連続領域4のアド
レスをRDB2関数へのパラメタとして設定していたた
め、結果として、図4の従来の展開例に示す*1、*2
の計4個所の連続領域4に重複して展開し、翻訳に必要
な領域が大きくなってしまうと共に翻訳性能を低下させ
てしまうという問題があった。
【0008】本発明は、原始プログラムのブロックレベ
ル毎に使用する宣言節をまとめて連続領域に展開し、実
行文の展開時にパラメタとしてこの連続領域のアドレス
を設定し、データベースなどとの間のインタフェースに
使用する変数と実行文との間の可視性(使用可能性)の
制御を容易に実現、重複した連続領域の削減、および翻
訳性能の向上を図ることを目的としている。
【0009】
【課題を解決するための手段】図1を参照して課題を解
決するための手段を説明する。図1において、原始プロ
グラム1は、データベースをアクセスして処理を行う応
用プログラムである。宣言節2は、原始プログラム1内
で実行文3が使用する変数を定義する節である。
【0010】実行文3は、データベースをアクセスなど
して行う業務処理である。連続領域4は、ブロックレベ
ル毎に実行文3の可視可能(使用可能)な変数に関する
宣言節2をまとめて展開する領域である。
【0011】
【作用】本発明は、図1に示すように、原始プログラム
1のブロックレベル毎に実行文3の可視可能(使用可能
)な変数として各ブロックレベルの宣言節2およびこれ
よりも上位のブロックレベルの宣言節2があるときにこ
れらをまとめて連続領域4に展開し、各ブロックレベル
内の実行文3を展開したときにパラメタとして当該連続
領域4のアドレスを設定し、インタフェースに使用する
変数と実行文3との間の可視性を制御するようにしてい
る。
【0012】従って、原始プログラム1のブロックレベ
ル毎に使用する変数の宣言節2をまとめて連続領域4に
展開し、実行文3を展開してパラメタとしてこの連続領
域4のアドレスを設定することにより、データベースな
どとの間のインタフェースに使用する変数と実行文3と
の間の可視性(使用可能性)の制御を容易に実現、重複
する連続領域を削減、および翻訳性能を向上させること
が可能となる。
【0013】
【実施例】次に、図1および図2を用いて本発明の実施
例の構成および動作を順次詳細に説明する。図1におい
て、原始プログラム1は、データベースをアクセスして
処理を行う応用プログラムであって、宣言節2、実行文
(SQL文)3などから構成されるものである。
【0014】宣言節(SQL宣言節)2は、原始プログ
ラム1内で実行文3が使用する変数を定義する節である
。例えばSQL宣言節■は、配列名SQLSTATEが
要素6個からなり、符号付き、文字型の変数である旨を
定義(宣言)している。実行文(SQL文)3は、デー
タベースをアクセスして処理を実際に行うプログラムで
あって、宣言節2で定義された変数(ホスト変数)をイ
ンタフェース(情報の受渡し)として使用して処理を行
う。この際、実行文3が使用可能(可視性)な変数の定
義について、既に規格化されたインタフェースによって
連続領域に設定することが定められているので、ブロッ
クの開始時に当該ブロックレベル内で使用可能な変数の
宣言節、即ち当該ブロックレベルの宣言節および上位の
ブロックレベルの宣言節があるときはこれらの言節もま
とめて連続領域4に設定し、実行文3のパラメタとして
この連続領域4のアドレスを設定するようにしている。
【0015】連続領域4は、ブロックレベル内で実行文
3が使用可能(可視)な変数の宣言節2をまとめて連続
して格納する領域(規格化された連続領域)である。ブ
ロックレベルは、原始プログラム1中で“{”と“}”
とで囲まれたブロックであって、ブロックレベル1、ブ
ロックレベル2が図示のように配置されている。このブ
ロックレベル1、2内の実行文(SQL文■、■、■、
■)で使用可能な変数は、図1の(ロ)の下段に記載し
たように、自身のブロックレベルで定義した変数と、上
位のブロックレベルで定義した変数の両者であるので、
各ブロックの先頭でこれら使用可能な変数を定義するS
QL宣言節をまとめて連続領域4に展開する。そして、
実際のSQL文のパラメタでこの連続領域4の先頭アド
レスを設定する。以下図1の(イ)の処理の流れ図に従
い、図1の(ロ)の原始プログラム1について翻訳して
図2の展開例を生成する流れを詳細に説明する。
【0016】図1の(イ)において、S1は、SQL宣
言節■の解析を行う。これは、図1の(ロ)のSQL宣
言節■の解析を行う。S2は、開始ブロックの生成を行
う。これは、図2の“SQL宣言節■に対するブロック
開始”と記載した位置に開始ブロック“{”を展開する
。S3は、SQL宣言節■の展開(連続領域*1)を行
う。これは、図2に“SQL宣言節■の展開(連続領域
*1、sqlvarif)”と記載しように、連続領域
sqlvarifにSQL宣言節■を図示のように展開
する。
【0017】S4は、SQL文■の解析、Cソース展開
、 ・その他情報の展開 ・RDB2関数へのパラメタとして連続域*1(sql
varif)のアドレスを設定する。これは、図2の“
SQL文■に対するブロックの開始”と記載した位置に
開始ブロック“{”を展開し、これに続けてSQL文■
の展開、その他情報の展開、更にRDB2関数へのパラ
メタとして*1、sqlvarifのアドレスを設定す
る。そして、SQL文■に対するブロック終了“}”を
展開する。これにより、SQL文■は、ブロックレベル
1の開始ブロックの位置の連続領域*1(sqlvar
if)に展開した変数(ホスト変数、ここではSQL宣
言節■で定義した変数)を使用することが可能となる。
【0018】S5は、SQL宣言節■の解析を行う。S
6は、開始ブロックの生成を行う。ここでは、図1の(
ロ)に記載したように、SQL宣言節■はブロックレベ
ル2であるので、当該ブロックレベル2および上位のブ
ロックレベル1の両者の宣言節■、■をまとめ、図2の
“SQL宣言節■、■に対するブロック開始”と記載し
た位置に開始ブロック“{”を展開する。
【0019】S7は、SQL宣言節■、■の展開(連続
領域*2)を行う。これは、図2に“SQL宣言節■、
■の展開(連続領域*2、sqlvarif)”と記載
しように、連続領域sqlvarifにSQL宣言節■
、■を図示のように展開する。S8は、SQL文■の解
析、Cソース展開、・その他情報の展開 ・RDB2関数へのパラメタとして連続域*2(sql
varif)のアドレスを設定する。これは、図2の“
SQL文■に対するブロックの開始”と記載した位置に
開始ブロック“{”を展開し、これに続けてSQL文■
の展開、その他情報の展開、更にRDB2関数へのパラ
メタとして*2、sqlvarifのアドレスを設定す
る。そして、SQL文■に対するブロック終了“}”を
展開する。これにより、SQL文■は、ブロックレベル
2の開始ブロックの位置の連続領域*2(sqlvar
if)に展開した変数(ホスト変数、ここではSQL宣
言節■、■で定義した変数)を使用することが可能とな
る。
【0020】S9は、SQL文■の解析、Cソース展開
、 ・その他情報の展開 ・RDB2関数へのパラメタとして連続域*2(sql
varif)のアドレスを設定する。これは、図2の“
SQL文■に対するブロックの開始”と記載した位置に
開始ブロック“{”を展開し、これに続けてSQL文■
の展開、その他情報の展開、更にRDB2関数へのパラ
メタとして*2、sqlvarifのアドレスを設定す
る。そして、SQL文■に対するブロック終了“}”を
展開する。これにより、SQL文■は、ブロックレベル
2の開始ブロックの位置の連続領域*2(sqlvar
if)に展開した変数(ホスト変数、ここではSQL宣
言節■、■で定義した変数)を使用することが可能とな
る。
【0021】S10は、終了ブロックの生成を行う。こ
れは、図1の(ロ)のSQL文■の終りに終了ブロック
“}”があり、当該ブロックレベル2の実行文が終了し
たので、図2の“SQL文■に対するブロック終了”と
記載したように、ブロック終了“}”を展開する。そし
て、更に図2の“SQL宣言節■、■に対するブロック
終了を展開する。
【0022】S11は、SQL文■の解析、Cソース展
開、 ・その他情報の展開 ・RDB2関数へのパラメタとして連続域*1(sql
varif)のアドレスを設定する。これは、図2の“
SQL文■に対するブロックの開始”と記載した位置に
開始ブロック“{”を展開し、これに続けてSQL文■
の展開、その他情報の展開、更にRDB2関数へのパラ
メタとして*1、sqlvarifのアドレスを設定す
る。これにより、SQL文■は、ブロックレベル1の開
始ブロックの位置の連続領域*1(sqlvarif)
に展開した変数(ホスト変数、ここではSQL宣言節■
で定義した変数)を使用することが可能となる。
【0023】S12は、終了ブロックの生成を行う。こ
れは、SQL文■に対するブロック終了“}”およびS
QL節■に対するブロック終了“}”を展開する。以上
のように、図1の(ロ)原始プログラム1のブロックレ
ベル1や2の先頭で当該ブロックレベル1や2で使用可
能な変数を定義したSQL宣言節■やSQL宣言節■と
■をそれぞれまとめて連続領域*1や*2に展開してお
き、ブロックレベル1や2の中のSQL文■、■、■、
■の展開時にRDB2関数へのパラメタとしてこれら連
続領域*1や*2の先頭アドレスを設定して使用可能に
することができる。これにより、SQL文■、■、■、
■毎に使用できる変数の定義を連続領域にその都度、展
開する必要がなく、単に連続領域4の先頭アドレスをR
DSB2関数へのパラメタとして設定すればよく、連続
領域4を削減できると共に、翻訳時の処理を簡単にして
翻訳性能を向上させることができる。
【0024】図2は、本発明の展開例を示す。これは、
図1の(ロ)原始プログラム1を展開した展開例を示す
。ここで、SQL宣言節■の展開(連続領域*1、sq
lvarif)は、図1の(ロ)原始プログラム1の宣
言節■の展開例を示す。これは、図1の(ロ)原始プロ
グラム1中のブロックレベル1のSQL文■、■のRD
B2関数へのパラメタとして当該連続領域*1、sql
varifのアドレスを設定するようにしている。
【0025】SQL宣言節■、■の展開(連続領域*2
、sqlvarif)は、図1の(ロ)原始プログラム
1の宣言節■、■の展開例を示す。これは、図1の(ロ
)原始プログラム1中のブロックレベル2のSQL文■
、■のRDB2関数へのパラメタとして当該連続領域*
2、sqlvarifのアドレスを設定するようにして
いる。
【0026】
【発明の効果】以上説明したように、本発明によれば、
原始プログラム1のブロックレベル毎に使用する変数の
宣言節2をまとめて連続領域4に展開し、実行文3を展
開してパラメタとしてこの連続領域4のアドレスを設定
する構成を採用しているため、データベースなどとの間
のインタフェースに使用する変数と実行文3との間の可
視性(使用可能性)の制御を容易に実現、重複する連続
領域を削減、および翻訳性能を向上させることができる
。特に、同レベルあるいはレベルの深い実行文からもま
とめた連続領域に展開した変数情報を参照できるので、
実行文の数が多ければ多い程、宣言領域の削減を図るこ
とができる。
【図面の簡単な説明】
【図1】本発明の1実施例構成・動作説明図である。
【図2】本発明の展開例である。
【図3】従来技術の説明図である。
【図4】従来の展開例である。
【符号の説明】
1:原始プログラム 2:宣言節(SQL宣言節) 3:実行文(SQL文) 4:連続領域(*1、*2)

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】  インタフェースに使用する変数と実行
    文との間の可視性を制御する変数可視域制御方式におい
    て、原始プログラム(1)のブロックレベル毎に実行文
    (3)の可視可能(使用可能)な変数を定義する各ブロ
    ックレベルの宣言節(2)およびこれよりも上位のブロ
    ックレベルの宣言節(2)があるときにこれらをまとめ
    て連続領域(4)に展開し、各ブロックレベル内の実行
    文(3)を展開したときにパラメタとして当該連続領域
    (4)のアドレスを設定し、インタフェースに使用する
    変数と実行文(3)との間の可視性を制御するように構
    成したことを特徴とする変数可視域制御方式。
JP11357491A 1991-05-18 1991-05-18 変数可視域制御方法 Expired - Fee Related JP2695534B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11357491A JP2695534B2 (ja) 1991-05-18 1991-05-18 変数可視域制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11357491A JP2695534B2 (ja) 1991-05-18 1991-05-18 変数可視域制御方法

Publications (2)

Publication Number Publication Date
JPH04342028A true JPH04342028A (ja) 1992-11-27
JP2695534B2 JP2695534B2 (ja) 1997-12-24

Family

ID=14615693

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11357491A Expired - Fee Related JP2695534B2 (ja) 1991-05-18 1991-05-18 変数可視域制御方法

Country Status (1)

Country Link
JP (1) JP2695534B2 (ja)

Also Published As

Publication number Publication date
JP2695534B2 (ja) 1997-12-24

Similar Documents

Publication Publication Date Title
JPH04342028A (ja) 変数可視域制御方法
JPH043205A (ja) データ・アクセス・システム
JPH03182932A (ja) プログラム生成方式
TWI632474B (zh) 存取資料庫的方法
JPS62168497A (ja) 交換処理プログラムにおけるデ−タベ−ス処理方式
JPH04260141A (ja) データ共有処理装置
JP2942414B2 (ja) 仮想データベース方式
JPH04256020A (ja) テキストの段付け出力方式
JPS62118424A (ja) デ−タ一括転送システム
JPS58166455A (ja) 関係型デ−タベ−ス・システム
JPH05233241A (ja) プログラム作成装置
JPS62200426A (ja) 高級言語のマクロ展開方法
JPH07160558A (ja) データベース検索文作成装置
JPH01177606A (ja) シーケンスプログラム作成方法
JPH04181324A (ja) 繰り返しデータ構造のアクセス方式
JPS63245722A (ja) ロ−ドモジユ−ルリンク方式
JPS62160544A (ja) デ−タベ−ス言語でのデ−タフアイル共有排他制御方式
JPH03201122A (ja) 補助記憶装置のデータ更新方式
JPH03266032A (ja) アルファベット句の解析方法
JPH01298464A (ja) 日本語辞書アクセス方式
JPS61206041A (ja) プログラム言語の拡張方法
JPH06161730A (ja) データ処理装置
JPH01213755A (ja) 画面節作成方式
JP2004086818A (ja) データベース利用方法及び事務処理用コンピュータ
JPH0476744A (ja) 共有メモリテーブルリカバリ機能付き計算機システム

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19970819

LAPS Cancellation because of no payment of annual fees