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

変数可視域制御方法

Info

Publication number
JP2695534B2
JP2695534B2 JP11357491A JP11357491A JP2695534B2 JP 2695534 B2 JP2695534 B2 JP 2695534B2 JP 11357491 A JP11357491 A JP 11357491A JP 11357491 A JP11357491 A JP 11357491A JP 2695534 B2 JP2695534 B2 JP 2695534B2
Authority
JP
Japan
Prior art keywords
sql
block
statement
continuous area
variables
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.)
Expired - Fee Related
Application number
JP11357491A
Other languages
English (en)
Other versions
JPH04342028A (ja
Inventor
千成 長島
直史 杉本
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)

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のパラメタzとしてこの
連続領域4のアドレスを設定するようにしている。
【0015】連続領域4は、ブロックレベル内で実行文
3が使用可能な変数の宣言節2をまとめて連続して格納
する領域(規格化された連続領域)である。ブロックレ
ベルは、原始プログラム1中で“{”と“}”とで囲ま
れたブロックであって、ブロックレベル1、ブロックレ
ベル2が図示のように記載されている。このブロックレ
ベル1、2内の実行文(SQL文、、、)で使
用可能な変数は、図1の(ロ)の下段に記載したよう
に、自身のブロックレベルで定義した変数と、上位のブ
ロックレベルで定義した変数の両者であるので、各ブロ
ックの先頭でこれら使用可能な変数を定義するSQL宣
言節をまとめて連続領域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(sqlvari
f)のアドレスを設定する。これは、図2の“SQL文
に対するブロックの開始”と記載した位置に開始ブロッ
ク“{”を展開し、これに続けてSQL文の展開、そ
の他情報の展開、更にRDB2関数へのパラメタとして
*1、sqlvarifのアドレスを設定する。そして、SQL
文に対するブロック終了“}”を展開する。これによ
り、SQL文は、ブロックレベル1の開始ブロックの
位置の連続領域*1(sqlvarif)に展開した変数(ホスト
変数、ここでは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(sqlvari
f)のアドレスを設定する。これは、図2の“SQL文
に対するブロックの開始”と記載した位置に開始ブロッ
ク“{”を展開し、これに続けてSQL文の展開、そ
の他情報の展開、更にRDB2関数へのパラメタとして
*2、sqlvarifのアドレスを設定する。そして、SQL
文に対するブロック終了“}”を展開する。これによ
り、SQL文は、ブロックレベル2の開始ブロックの
位置の連続領域*2(sqlvarif)に展開した変数(ホスト
変数、ここではSQL宣言節、で定義した変数)を
使用することが可能となる。
【0020】S9は、SQL文の解析、Cソース展
開、 ・その他情報の展開 ・RDB2関数へのパラメタとして連続域*2(sqlvari
f)のアドレスを設定する。これは、図2の“SQL文
に対するブロックの開始”と記載した位置に開始ブロッ
ク“{”を展開し、これに続けてSQL文の展開、そ
の他情報の展開、更にRDB2関数へのパラメタとして
*2、sqlvarifのアドレスを設定する。そして、SQL
文に対するブロック終了“}”を展開する。これによ
り、SQL文は、ブロックレベル2の開始ブロックの
位置の連続領域*2(sqlvarif)に展開した変数(ホスト
変数、ここではSQL宣言節、で定義した変数)を
使用することが可能となる。
【0021】S10は、終了ブロックの生成を行う。こ
れは、図1の(ロ)のSQL文の終りに終了ブロック
“}”があり、当該ブロックレベル2の実行文が終了し
たので、図2の“SQL文に対するブロック終了”と
記載したように、ブロック終了“}”を展開する。そし
て、更に図2の“SQL宣言節、に対するブロック
終了を展開する。
【0022】S11は、SQL文の解析、Cソース展
開、 ・その他情報の展開 ・RDB2関数へのパラメタとして連続域*1(sqlvari
f)のアドレスを設定する。これは、図2の“SQL文
に対するブロックの開始”と記載した位置に開始ブロッ
ク“{”を展開し、これに続けてSQL文の展開、そ
の他情報の展開、更にRDB2関数へのパラメタとして
*1、sqlvarifのアドレスを設定する。これにより、S
QL文は、ブロックレベル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文、のRDB2関
数へのパラメタとして当該連続領域*1、sqlvarifのア
ドレスを設定するようにしている。
【0025】SQL宣言節、の展開(連続領域*
2、sqlvarif)は、図1の(ロ)原始プログラム1の宣
言節、の展開例を示す。これは、図1の(ロ)原始
プログラム1中のブロックレベル2のSQL文、の
RDB2関数へのパラメタとして当該連続領域*2、sq
lvarifのアドレスを設定するようにしている。
【0026】
【発明の効果】以上説明したように、本発明によれば、
原始プログラム1のブロックレベル毎に使用する変数の
宣言節2をまとめて連続領域4に展開し、実行文3を展
開してパラメタとしてこの連続領域4のアドレスを設定
する構成を採用しているため、データベースなどとの間
のインタフェースに使用する変数と実行文3との間の可
視性(使用可能性)の制御を容易に実現、重複する連続
領域を削減、および翻訳性能を向上させることができ
る。特に、同レベルあるいはレベルの深い実行文からも
まとめた連続領域に展開した変数情報を参照できるの
で、実行文の数が多ければ多い程、宣言領域の削減を図
ることができる。
【図面の簡単な説明】
【図1】本発明の1実施例構成・動作説明図である。
【図2】本発明の展開例である。
【図3】従来技術の説明図である。
【図4】従来の展開例である。
【符号の説明】
1:原始プログラム 2:宣言節(SQL宣言節) 3:実行文(SQL文) 4:連続領域(*1、*2)

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】インタフェースに使用する変数と実行文と
    の間の可視性を制御する変数可視制御方において、 原始プログラムのブロックレベル毎に実行文使用可能
    な変数を定義する各ブロックレベルの宣言節およびこれ
    よりも上位のブロックレベルの宣言節があるときにこれ
    らをまとめて連続領域に展開し、各ブロックレベル内の
    実行文を展開したときにパラメタとして当該連続領域の
    アドレスを設定し、インタフェースに使用する変数と実
    行文との間の可視性を制御するように構成したことを特
    徴とする変数可視域制御方
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 JPH04342028A (ja) 1992-11-27
JP2695534B2 true 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
JPH04342028A (ja) 1992-11-27

Similar Documents

Publication Publication Date Title
JP2695534B2 (ja) 変数可視域制御方法
JPH043205A (ja) データ・アクセス・システム
JPS61147336A (ja) ロ−ドモジユ−ルの世代管理方式
JP2820184B2 (ja) ロードモジュール単体テスト支援装置
JP2564904B2 (ja) プログラム最適化処理方法
JPS63163936A (ja) 再書込み不可媒体の領域有効利用方式
JPS63178345A (ja) デ−タベ−スアクセス処理方式
JPH07244601A (ja) 関係データベースのアクセス方法および装置
JPS61206041A (ja) プログラム言語の拡張方法
JPH06119203A (ja) デバック行削除装置
JPH103390A (ja) テーブル管理システムとその作成方法
JPH01136241A (ja) プログラムリンク方式
JPS61246838A (ja) 時分割処理環境下でのジヨブ実行方法
JPH03138731A (ja) ジョブ間データ共有方式
JPH03271868A (ja) 文書作成装置
JPH0359726A (ja) プログラム単位一括翻訳方式
JPS62118424A (ja) デ−タ一括転送システム
JPH07160558A (ja) データベース検索文作成装置
JPH0744577A (ja) データベーステーブルシステム
JPH05181717A (ja) データベース運用制御システム
JPH11327996A (ja) データベースパッケージオブジェクトの編集装置
JPH02191038A (ja) コンパイラ入力データエディット方式
JPH05197667A (ja) 計算機システム
JPH05233241A (ja) プログラム作成装置
JPH06236261A (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