JPH01205230A - 手続き副プログラム展開方式 - Google Patents

手続き副プログラム展開方式

Info

Publication number
JPH01205230A
JPH01205230A JP2961188A JP2961188A JPH01205230A JP H01205230 A JPH01205230 A JP H01205230A JP 2961188 A JP2961188 A JP 2961188A JP 2961188 A JP2961188 A JP 2961188A JP H01205230 A JPH01205230 A JP H01205230A
Authority
JP
Japan
Prior art keywords
subprogram
procedural
array
program
temporary
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.)
Pending
Application number
JP2961188A
Other languages
English (en)
Inventor
Kyoko Hanakada
羽中田 恭子
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2961188A priority Critical patent/JPH01205230A/ja
Publication of JPH01205230A publication Critical patent/JPH01205230A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

【発明の詳細な説明】 (産業上の利用分野〕 本発明は高級プログラミング言語で記述された原始プロ
グラムにおける手続き副プログラム展開方式に関するも
のである。
〔従来の技術〕
従来、手続き副プログラム呼び出し文により原始プログ
ラムから呼び出される手続き副プログラムをその原始プ
ログラム中に展開する方式においては、手続き副プログ
ラム中の仮引数の参照を、その参照に現れた仮引数の名
前を結合される実引数の名前に単に変換して展開してい
た。例えば、手続き副プログラム呼び出し文で定義され
た実引数に現れた配列(このような配列を本明細書では
実配列と称す)が例えば2次元の配列B(その宣言文は
例えばB (10,10)とする)であり、それに対応
する手続き副プログラム中の仮引数に現れた配列(この
ような配列を本明細書では仮配列と称す)が同じ2次元
の配列Aであるとき、手続き副プログラム中に例えば仮
配列要素A (3,2)の参照を含む文が存在すると、
その文中の仮配列要素A (3,2)を実配列の名前B
を使用してB(3,2)に変換して展開していた。
〔発明が解決しようとする課題〕
ところで、高級プログラミング言語の一種であるFOR
TRAN言語等においては、仮配列の宣言がそれに対応
する実配列の宣言と相違することを許容している。例え
ば、原始プログラム中の宣言文B (10,10)で定
義された2次元の配列Bが実配列であり、それに対応す
る手続き副プログラム中の仮配列が例えば3次元の配列
A(その宣言文は例えばA (4,4,4)というよう
な場合も存り得る。そして、このような場合に手続き副
プログラム中に例えば仮配列要素A (3,2,3)の
参照を含む文が存在すると、従来方式を適用して得られ
る変換結果は、B (3,3,3)となり、仮配列の参
照が正しく行われない。このため、従来においては、仮
配列が対応する実配列の宣言と異なっているときは、そ
の仮配列を含む手続き副プログラムを呼び出し元の原始
プログラムに展開してはいなかった。従って、プログラ
ムの実行時に手続き副プログラムを呼び出す為のオーバ
ーヘッドをなくすことができないという欠点があった。
本発明は、上述したような場合にも仮配列を含む手続き
副プログラムを呼び出し元プログラムに展開することを
可能とし、手続き副プログラムを、実行時に呼び出すこ
とによるオーバーヘッドをなくすことを目的とする。
〔課題を解決するための手段〕
本発明は上記目的を達成するために、 高級プログラミング言語で記述された呼び出し元の原始
プログラム中の手続き副プログラム呼び出し文の代わり
に手続き副プログラムを展開させる手続き副プログラム
展開方式において、前記原始プログラム中の実配列に対
応する前記手続き副プログラム中の仮配列の宣言が前記
実配列の宣言と相違するとき、前記手続き副プログラム
中に出現する仮配列の要素の参照を、仮配列名の代わり
に実配列名を持つ同じ次元数の要素であって、その仮配
列の要素の全ての添字式を1次元の添字式に変換した内
容を1次元目の添字式として持ち、且つ前記実配列の次
元数が2次元以上のときは2次元目以降の次元の添字式
を1とした要素の参照に変換することにより、展開用副
プログラムを生成する手段を有し、 前記原始プログラム中の手続き副プログラム呼び出し文
の代わりに前記手段により生成された展開用副プログラ
ムを挿入するように構成されている。
〔作用〕
手続き副プログラム中の仮配列の要素の参照を、その要
素に現れる仮配列名を対応する実配列名に変換し、その
仮配列の要素の全ての添字式を1次元の添字式に変換し
た内容を1次元目の添字式として持ち、且つ対応する実
配列が2次元以上の次元数を有するとき次元数を合わせ
る為に2次元目以降の次元の添字式を1とした要素の参
照に変換したことにより、実配列の宣言と仮配列の宣言
が相違するときでも、仮配列の参照が正しく行われる。
〔実施例〕
次に本発明の実施例について図面を参照して説明する。
第1図を参照すると、本発明の実施例は、プログラム展
開機構1と、原始プログラム11を格納するファイルF
1と、手続き副プログラム12を格納するファイルF2
と、手続き副プログラム展開プログラム13を格納する
ファイルF3とで構成されている。
プログラム展開機構1は、高級プログラミング言語で記
述された原始プログラム11をファイルF1から入力し
、その原始プログラム11中から呼び出される手続き副
プログラム12をファイルF2から入力して変換処理を
行い、原始プログラム11中にその変換処理した手続き
副プログラム12を展開した手続き副プログラム展開プ
ログラム13をファイルF3に出力する機構であり、呼
び出しプログラム処理部1a、手続き副プログラム変換
処理部1b、プログラム生成部1c、手続き情報格納領
域1dおよび変換情報格納領域1eを含んでいる。
呼び出しプログラム処理部1aは、ファイルF1より原
始プログラム11を入力し、その原始プログラム11中
から手続き副プログラム呼び出し文を検出し、手続き副
プログラムの各種の引数情報を手続き情報格納領域1d
に格納する処理を行う。
手続き副プログラム変換処理部1bは、呼び出しプログ
ラム処理部1aで検出された手続き副プログラム呼び出
し文により呼び出される手続き副プログラム12をファ
イルF2から入力し、手続き副プログラムを展開するの
に必要な各種の情報をその手続き副プログラム12及び
手続き情報格納領域1dから取り出し、継いでその情報
に従って手続き副プログラム12を原始プログラム11
に展開できる形に変換する。そしてこれらの処理におい
て、特に仮配列の宣言文を検出するとその仮配列の次元
数、各次元の上限値および下限値。
手続き情報格納領域1dの内容から判明するその仮配列
に対応する実配列の名前を変換情報格納領域1eに格納
し、仮配列の要素の参照が現れると、変換情報格納領域
1eからその仮配列に対応する実引数の名前と次元数を
取り出し、仮配列名は実用数名に変換し、その仮配列の
添字式は変換情報格納領域1e中に保持されたその配列
情報から1次元の添字式に変換し、且つ、実引数の次元
数が2次元以上の場合には2次元目以降の次元の添字式
を1として変換して、展開用副プログラムを生成する。
なお、本実施例では手続き副プログラム12をその呼び
出し元である原始プログラム11とは別のファイルF2
から即ち他の原始プログラムから入力する例を示したが
、呼出し元の原始プログラムll中にその手続き副プロ
グラムが含まれているときは、その原始プログラム中か
ら人力するものである。
プログラム生成部1cは、呼び出しプログラム処理部l
aで入力された原始プログラム11中の手続き副プログ
ラム呼び出し文の代わりに、手続き副プログラム変換処
理部1bで変換されて得られた展開用副プログラムを挿
入することにより、手続き副プログラム展開プログラム
13を生成してファイルF3に出力する。
第2図に、原始プログラム11.それから呼び出される
手続き副プログラム12.これを手続き副プログラム変
換処理部1bで変換した展開用副プログラム120.及
びこの展開用副プログラム120が展開された手続き副
プログラム展開プログラム13の一例を示す。何れもF
ORTRAN言語で記述された例を示す。
また第3図に、第1図のプログラム展開機構lで手続き
副プログラム展開処理が行われた際に変換情報格納領域
1eに格納される内容の一例を示す。以下、第2図およ
び第3図を参照して第1図のプログラム展開機構1の動
作を説明する。
第1図において、プログラム展開機構1の呼び出しプロ
グラム処理部1aは、ファイルF1より第2図に示した
原始プログラム11を入力して解析する。この原始プロ
グラムll中には、実配列A、 Bの宣言文、変数1−
にの代人文2手続き副プログラム名5UBIと実引数R
1〜R4(R1=B、R2=l、R3=J、R4=に、
Bは実配列、1−には変数)とを持つ手続き副プログラ
ム呼び出し文200等が含まれている。
原始プログラム11の解析の結果、手続き副プログラム
呼び出し文200を検出すると、呼び出しプログラム処
理部1aは手続き副プログラムの引数情報として、手続
き副プログラム名SUB 1゜実引数R1,実引数R2
,実引数R3,実引数R4の名前B、I、J、Kを手続
き情報格納領域Idに格納する。また、実引数が第2図
のBの如き配列のときはその次元数も合わせて格納して
おく。
呼び出しプログラム処理部1aの処理が終了すると、制
御が手続き副プログラム変換処理部1bに渡され、手続
き副プログラム変換処理部lbは、手続き情報格納領域
1dから手続き副プログラム名を取り出し、その名前に
対応する手続き副プログラム12をファイルF2から抽
出して入力し、解析する。この手続き副プログラム12
には第2図に示すように、名前5UBIと仮引数■1〜
■4 (V1=A、V2=N、V3=M、V4=L。
Aは仮配列、L−Nは変数)とを持つ5UBROUTI
NE文、仮配列Aおよびローカル変数Cの宣言文210
.仮配列要素の参照を含む文220等が含まれている。
手続き副プログラム12の解析の結果、入力した手続き
副プログラム12中の仮配列Aの宣言を含む宣言文21
0を検出すると、手続き副プログラム変換処理部1bは
第3図に示すようにその仮配列Aの名前、型9種別1次
元数、各次元の上限値、下限値を変換情報格納領域1e
に格納し、また呼び出しプログラム処理部1aで格納さ
れた引数情報を手続き情報格納領域1dより参照し、仮
配列Aに対応する実配列Bの名前を変換する名前として
第3図に示すように変換情報格納領域1eに格納する。
このような各種情報の変換情報格納領域1eへの格納は
、仮配列Aだけでなくその他の引数に対しても同様に行
われる。第3図では、変数である仮引数N、M、Lはそ
れぞれ実引数の名前1.J、Kに対応していることが、
また手続き副プログラム120−カルに使用する変数C
は展開後の原始プログラムll中でユニークな配列、と
するために、変換する名前をC99999とすること等
の情報が格納される。
また手続き副プログラム変換処理部1bは、手続き副プ
ログラム12中に仮配列の要素の参照を含む文220を
検出すると、変換情報格納領域leから文220で参照
する仮配列Aに対応する実引数Bの名前を取り出す、そ
して、仮配列Aの名前はその実引数Bの名前に変換し、
変換情報格納領域1eの仮配列への配列情報から仮配列
Aの要素の添字式を1次元の添字式に変換する。また、
手続き情報格納領域1dの内容から実引数Bの次元数が
2であることが分かるので、1次元目の添字式を上記変
換した1次元の添字式とし、2次元目を1とする。この
結果、仮配列Aの要素A (1゜r、J)は下記のよう
な要素に変換され、仮配列の要素の変換した参照を含む
文230となる。
B  (1+  (199999−1)  *N+  
(J99999 −1)  *N*M  、  1)な
お、I 99999. J 99999としたのは、原
始プログラム11中のI、Jと区別する為である。
手続き副プログラム変換処理部1bは、以上のような処
理を繰り返して展開用副プログラム120を作成する。
展開用副プログラム120の作成が終了すると、プログ
ラム生成部1cは、原始プログラム11中の手続き副プ
ログラム呼び出し文200の代わりに展開用副プログラ
ム120を挿入して手続き副プログラム展開プログラム
13を生成する。
〔発明の効果〕
以上説明したように、本発明によれば、呼び出し元の原
始プログラム中の実配列に対応する手続き副プログラム
中の仮配列の宣言が実配列の宣言と相違するときでも、
仮配列の参照が正しく行われるようにその手続き副プロ
グラムを呼び出し元の原始プログラムに展開することが
可能となり、実行時に手続き副プログラムの呼び出しを
行うことで発生するオーバーヘッドをなくすことができ
る。
【図面の簡単な説明】
第1図は本発明の実施例の構成図、 第2図は原始プログラム111手続き副プログラム12
および手続き副プログラム展開プログラム13の一例を
示す図および、 第3図は変換情報格納領域1eの内容例を示す図である
。 図において、 1・・・プログラム展開機構 1a・・・呼び出しプログラム処理部 1b・・・手続き副プログラム変換処理部1c・・・プ
ログラム生成部 1d・・・手続き情報格納領域 1e・・・変換情報格納領域 11・・・原始プログラム 12・・・手続き副プログラム 13・・・手続き副プログラム展開プログラム120・
・・展開用副プログラム

Claims (1)

  1. 【特許請求の範囲】 高級プログラミング言語で記述された呼び出し元の原始
    プログラム中の手続き副プログラム呼び出し文の代わり
    に手続き副プログラムを展開させる手続き副プログラム
    展開方式において、 前記原始プログラム中の実配列に対応する前記手続き副
    プログラム中の仮配列の宣言が前記実配列の宣言と相違
    するとき、前記手続き副プログラム中に出現する仮配列
    の要素の参照を、仮配列名の代わりに実配列名を持つ同
    じ次元数の要素であって、その仮配列の要素の全ての添
    字式を1次元の添字式に変換した内容を1次元目の添字
    式として持ち、且つ前記実配列の次元数が2次元以上の
    ときは2次元目以降の次元の添字式を1とした要素の参
    照に変換することにより、展開用副プログラムを生成す
    る手段を有し、 前記原始プログラム中の手続き副プログラム呼び出し文
    の代わりに前記手段により生成された展開用副プログラ
    ムを挿入することを特徴とする手続き副プログラム展開
    方式。
JP2961188A 1988-02-10 1988-02-10 手続き副プログラム展開方式 Pending JPH01205230A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2961188A JPH01205230A (ja) 1988-02-10 1988-02-10 手続き副プログラム展開方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2961188A JPH01205230A (ja) 1988-02-10 1988-02-10 手続き副プログラム展開方式

Publications (1)

Publication Number Publication Date
JPH01205230A true JPH01205230A (ja) 1989-08-17

Family

ID=12280865

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2961188A Pending JPH01205230A (ja) 1988-02-10 1988-02-10 手続き副プログラム展開方式

Country Status (1)

Country Link
JP (1) JPH01205230A (ja)

Similar Documents

Publication Publication Date Title
US5812851A (en) Compiler with generic front end and dynamically loadable back ends
US6381736B1 (en) Method for compile-time type-checking of arguments for externally-specified format strings
JPH10507016A (ja) ソフトウェア・コンパイル・ユニットを条件付きでコンパイルするシステム、方法およびコンパイラ・プリプロセッサ
JP3196675B2 (ja) 言語処理方式
JPH01205230A (ja) 手続き副プログラム展開方式
JP7059757B2 (ja) Api処理方法、端末、api処理プログラム
JPH06110733A (ja) プログラムのテストケース生成装置
JPS5922140A (ja) 対話型コンパイル方式
JP3019874B2 (ja) プログラム生成/合成装置および方法
JPH11154093A (ja) プログラムコンパイラ及びコンパイラ用プログラムを記録した記録媒体
JPH03282935A (ja) コンパイル処理装置及びコンパイル処理方式
JP2002312167A (ja) 変数の値をコンピュータに算出させるためのプログラム、コンパイルプログラム、変数値確定方法およびプログラム生成方法
JP2982725B2 (ja) プログラム自動生成装置
JPH0695890A (ja) コンパイラにおける名前置換方式
JP2000089965A (ja) 言語処理システム、その方法および言語処理プログラムを記録したコンピュータ読み取り可能な記録媒体
JPH02236732A (ja) ソースプログラム作成方式
JPH0212528A (ja) 手続き副プログラム展開方式
JPH0612259A (ja) コンパイラ処理方式
JPH01230132A (ja) ジェネレータ
JPH0736685A (ja) 部品処理装置
JP2003330731A (ja) プロジェクト管理ファイル生成装置
JPH0580992A (ja) 手続き・関数関連図出力方式
JPH05241798A (ja) ライブラリ情報管理によるlm生成処理方式
JPS6398031A (ja) 添字式の値検査方式
JPH0954696A (ja) プログラム生成方法及びトランスレータ、コンパイラ並びに実行時ライブラリ