JPH0776928B2 - Cobolコンパイラにおけるuse手続き処理方法 - Google Patents

Cobolコンパイラにおけるuse手続き処理方法

Info

Publication number
JPH0776928B2
JPH0776928B2 JP62103970A JP10397087A JPH0776928B2 JP H0776928 B2 JPH0776928 B2 JP H0776928B2 JP 62103970 A JP62103970 A JP 62103970A JP 10397087 A JP10397087 A JP 10397087A JP H0776928 B2 JPH0776928 B2 JP H0776928B2
Authority
JP
Japan
Prior art keywords
instruction
use procedure
procedure
perform
library
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
JP62103970A
Other languages
English (en)
Other versions
JPS63269230A (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 JP62103970A priority Critical patent/JPH0776928B2/ja
Publication of JPS63269230A publication Critical patent/JPS63269230A/ja
Publication of JPH0776928B2 publication Critical patent/JPH0776928B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】 〔概要〕 COBOLソースプログラムにおけるUSE手続きのオブジェク
ト展開で,第1の入口と第2の入口の2種の入口を設け
ると共に,これらの各入口に対応して,それぞれジャン
プ命令による復帰,リターン命令による復帰を行う命令
展開をすることにより,エラー出口として利用されるUS
E手続きを,PERFORM命令からも参照することを可能にし
ている。
〔産業上の利用分野〕
本発明は,計算機言語の1つであるCOBOL言語におけるU
SE手続きを,PERFORM命令から参照可能にしたCOBOLコン
パイラにおけるUSE手続き処理方法に関するものであ
る。
〔従来の技術〕
第4図は従来のUSEオブジェクト展開説明図,第5図はP
ERFORM命令説明図,第6図は従来のPERFORM実行論理説
明図である。
COBOL言語では,入出力命令(OPEN,READ,WRITE,REWRITE
およびDELETE命令)において,エラーが発生したときの
処理手続きをUSE命令を用いて定義することができる。
第4図に示すように,USE手続きU1は,入出力処理を行う
ライブラリ30から,コール(CALL)命令で呼ばれること
を考慮して,USE手続きのオブジェクト展開の終了時に
は,呼び出し元へ制御を戻すためのリターン(RET)命
令を展開しなければならない。
ところで,従来のオブジェクト展開形式では,PERFORM命
令で「USE手続き」を呼ぶことはできなかった。これは,
PERFORM命令で対象とする手続きの出口に,RET命令が展
開されていると困るからである。
その理由について,第5図を参照して説明する。PERFOR
M命令は,一般に第5図に示す(1),(2)のように
使用される。
このPERFORM命令を,CALL命令を用いてオブジェクト展開
を行うとすると,PERFORM命令の出口では,制御を戻すた
めのRET命令が展開されていなければならない。第5図
では,手続きBの出口(3)と,手続きCの出口(4)
で,RET命令を展開する必要がある。
ここで,第5図(1)のソースプログラム上のPERFORM
命令の記述による実行時の動作を考えてみる。まず,手
続きAにCALL命令により制御が渡る。その後,手続きB
を実行し,手続きBの出口(3)で,RET命令によって制
御が戻されてしまう。従って,次に必要な手続きCの処
理は行われないことになる。
この例からわかるように,結論としてPERFORM命令のオ
ブジェクト展開をCALL命令を用いて行うことはできな
い。
実際のPERFORM命令の展開形式は,第6図に示す実行論
理を実現するようになっている。
COBOLコンパイラは,PERFORM命令の出口となる手続き名
に対して,1つずつ復帰アドレス域41を用意する。なお,
復帰アドレス域41の初期値は,次の命令のアドレス,即
ち,この例では,手続き名P2の命令のアドレスとする。
そして,以下の〜のような実行論理を実現するオブ
ジェクト展開を行う。
まず,手続きの出口に対応した復帰アドレス域41の
内容を,そのPERFORM命令に対応する復帰アドレス退避
域40に退避する。
復帰アドレス域41に,復帰アドレス(PERFORM命令
のオブジェクト中の処理のアドレス)を設定する。
ジャンプ(JMP)命令により,手続き名P1に制御を
移す。
P1の手続き命令を実行する。
ジャンプ命令により,復帰アドレス域41に設定され
ている復帰アドレスに制御を移す。
復帰アドレス退避域40に設定されている内容を,復
帰アドレス域41に復元する。
〔発明が解決しようとする問題点〕
以上のように,PERFORM命令のオブジェクト展開を,CALL
命令を用いて行うことができないため,従来方式によれ
ば,RET命令で制御を戻すUSE手続きを,PERFORM命令で参
照することはできない。そのため,エラーが発生したと
きに行うメッセージ出力やその他のUSE手続きによる処
理手続きを,通常の動作時にPERFORM命令によって使用
することはできないという問題があった。
USE手続きをPERFORM命令で参照して,使用することがで
きれば,エラー処理に関連して同じ処理が必要な場合
に,重複した処理の記述をなくし,変更が容易な統一し
たエラー処理等を実現できると考えられる。
本発明は上記問題点の解決を図り,入出力処理を行うラ
イブラリ等は従来同様変更することなく,PERFORM命令
で,USE手続きを呼ぶことができる手段を提供することを
目的としている。
〔問題点を解決するための手段〕
第1図は本発明の原理説明図である。
第1図において,10はCOBOL言語で記述されたCOBOLソー
スプログラム,11はCPUおよびメモリなどからなる処理装
置,12はCOBOLソースプログラム10を機械語コードに変換
するCOBOLコンパイラ,13は文法上のエラーチェック等を
行い中間テキストを生成する構文解析部,14は構文解析
結果による内部コードで表現された中間テキスト,15は
コード生成を行うオブジェクト展開部,16はコンパイル
結果であるオブジェクトプログラムを表す。
COBOLソースプログラム10中のS1,S2は,USE手続きの定義
文である。ここで,呼び出しの条件等を指定することが
できる。U1,U2は,それぞれS1,S2で指定された条件のエ
ラーが発生したときに,ライブラリ(図示省略)から呼
び出されて実行されるUSE手続きである。S3は,PERFORM
命令である。
構文解析部13は,COBOLソースプログラム10を入力し,文
法エラー等のチェックを行って,結果を中間テキスト14
として出力する。オブジェクト展開部15は,中間テキス
ト14を入力し,特に,USE手続きについて,第1図に示す
ようなオブジェクトプログラム16を生成する。
オブジェクトプログラム16において,E11,E21は,PERFORM
命令からの入口,E12,E22は,入出力処理を行うライブラ
リからの入口である。本発明では,このように各USE手
続きについて,2つの入口が設けられる。
OB1,OB2は,それぞれAのUSE手続きおよびBのUSE手続
きのオブジェクト本体である。第1のAの入口E11に対
して,AのUSE手続きOB1の実行後,ジャンプ(JMP)命令i
11により制御が戻され,第2のA′の入口E12に対して,
AのUSE手続きOB1の実行後,最終的にリターン(RET)命
令i12により呼び出し元へ制御が戻される。BのUSE手続
きOB2についても同様である。
20a,20bは,各USE手続きに対応して設けられるUSE復帰
アドレス域であり,USE手続きの分岐制御に用いられる。
21a,21bは,USE復帰アドレス退避域であり,USE復帰アド
レスの退避領域として用いられる。
〔作用〕
本発明によるUSE手続きのオブジェクト展開によれば,PE
RFORM命令からUSE手続きOB1を参照する場合,第1の入
口E11へ制御を移行するようにされ,JMP命令i11によって
制御が戻される。一方,入出力処理を行うライブラリか
らの呼び出しでは,RET命令により復帰する必要があるた
め,ライブラリから第2の入口E12へ制御を移行するよ
うにされ,最終的にRET命令i12によって,呼び出し元で
あるライブラリへ制御が戻される。従って,ライブラリ
およびPERFORM命令の双方から,USE手続きを共通に参照
することが可能になる。
〔実施例〕
第2図および第3図は本発明の一実施例に係るUSE手続
きの実行論理を説明するための図である。
以下,第1図に示すオブジェクト展開部15によって生成
されたUSE手続きに関するオブジェクトプログラム16の
処理について,第2図および第3図を参照して説明す
る。
第2図は,ライブラリ30からUSE手続きがCALL命令で呼
び出される例を示している。
OPEN,READ,WRITE,REWRITEおよびDELETE命令などの入出
力命令を処理するライブラリ30では,エラーが発生した
ときに,プログラム内で定義されたUSE手続きをCALL命
令によって呼び出すようになっている。以下,第2図に
示す番号〜に従って説明する。
ライブラリのCALL命令による制御移行先は,USE手続
きの第2の入口であり,例えばOPEN命令のエラー処理と
して,AのUSE手続きOB1が指定されていると,その第2の
入口A′に制御が渡る。
USE手続きに対応して設けられるUSE復帰アドレス域
20aには,初期値として,PERFORM命令によるUSE手続き等
の連続実行のため,ソースプログラム上におけるUSE手
続き終了の次の命令アドレス,即ち,ここではBのUSE
手続きOB2の先頭アドレスが設定されている。このUSE復
帰アドレスを,USE復帰アドレス退避域21aに退避する。
処理に復帰するための図示αのアドレスを,USE復
帰アドレス域20aに設定する。
JMP命令により,AのUSE手続きOB1の処理に分岐し,US
E手続きの処理を実行する。
USE手続きの処理実行後,JMP命令により,USE復帰ア
ドレス域20aの内容(α)に分岐する。
USE復帰アドレス退避域21aの値を,USE復帰アドレス
域20aに転記して,復帰アドレスを復元する。
RET命令により,ライブラリ30に復帰する。
第3図は,PERFORM命令により,AのUSE手続きおよびBのU
SE手続きが,連続的に通して参照される例を示してい
る。PERFORM命令からは,USE手続きに対し,JMP命令によ
って分岐する。以下,第3図に示す番号〜に従って
説明する。
「PERFORM A THROUGH B.」の命令のオブジェクト
では,まず,最終に実行されるBのUSE手続き用に設け
られたUSE復帰アドレス域20bの内容を,このPERFORM命
令用の復帰アドレス退避域40に退避する。なお,USE復帰
アドレス域20bには,初期値として,次の命令のアドレ
ス(Cのアドレス)が設定されている。
USE復帰アドレス域20bに,処理の先頭アドレス
(β)を,復帰アドレスとして設定する。
JMP命令により,第1の入口Aに分岐し,AのUSE手続
きOB1の処理を行う。
USE復帰アドレス域20aの初期値として設定されてい
るアドレス,即ち,次のBのUSE手続きの先頭アドレス
に分岐し,BのUSE手続きOB2の処理を行う。
USE復帰アドレス域20bに設定されているアドレス
(βの位置)に分岐する。
復帰アドレス退避域40に退避されている値を,USE復
帰アドレス域20bに転記し,復元する。
第2図および第3図の例からわかるように,ライブラリ
からUSE手続きを呼び出した場合にも,PERFORM命令からU
SE手続きを呼び出した場合にも,それぞれ共通のUSE手
続きの処理を行うことができ,それぞれRET命令,JMP命
令によって,呼び出し元へ制御を戻すことができる。
〔発明の効果〕
以上説明したように,本発明によれば,USE手続きをライ
ブラリおよびPERFORM命令のどちらからも参照すること
ができ,COBOLソースプログラムの記述を簡単化すること
ができる。また,エラー発生に関連する処理の変更も容
易になると共に,重複するプログラムを削除することが
できるので,オブジェクトプログラムの縮小化が可能と
なる。
【図面の簡単な説明】
第1図は本発明の原理説明図,第2図および第3図は本
発明の一実施例に係るUSE手続きの実行論理を説明する
ための図,第4図は従来のUSEオブジェクト展開説明
図,第5図はPERFORM命令説明図,第6図は従来のPERFO
RM実行論理説明図である。 図中,10はCOBOLソースプログラム,11は処理装置,12はCO
BOLコンパイラ,13は構文解析部,14は中間テキスト,15は
オブジェクト展開部,16はオブジェクトプログラム,E11,
E21は第1の入口,E12,E22は第2の入口,i11,i21はジャ
ンプ命令,i12,i22はリターン命令,20a,20bはUSE復帰ア
ドレス域,21a,21bはUSE復帰アドレス退避域を表す。

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】COBOLソースプログラム(10)をオブジェ
    クトプログラム(16)に翻訳するCOBOLコンパイラ(1
    2)におけるUSE手続き処理方法において, USE手続きのオブジェクト展開にあたって,PERFORM命令
    のオブジェクト展開におけるジャンプ命令で呼び出され
    る第1の入口(E11,E12)と,入出力処理を行うライブ
    ラリからコール命令で呼び出される第2の入口(E12,E2
    2)とを設けると共に, USE手続き本体部の後にUSE手続きに対応して設けられる
    所定の復帰アドレス域(20a,20b)に設定されているア
    ドレスへのジャンプ命令(i11,i21)を設け, ライブラリからの上記第2の入口への制御移行に対し
    て,上記復帰アドレス域(20a,20b)に,リターン命令
    (i12,i22)を含む復帰用処理部のアドレスを設定した
    後,USE手続きの本体部へジャンプし,USE手続きの実行終
    了時にはリターン命令(i12,i22)によって呼び出し元
    のライブラリへ復帰し, PERFORM命令からの上記第1の入口への制御移行に対し
    ては,あらかじめ上記復帰アドレス域(20a,20b)に設
    定されているアドレスにジャンプ命令(i11,i21)によ
    って復帰するオブジェクト展開を行い, USE手続きをライブラリおよびPERFORM命令のいずれから
    も参照可能にしたことを特徴とするCOBOLコンパイラに
    おけるUSE手続き処理方法。
JP62103970A 1987-04-27 1987-04-27 Cobolコンパイラにおけるuse手続き処理方法 Expired - Fee Related JPH0776928B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP62103970A JPH0776928B2 (ja) 1987-04-27 1987-04-27 Cobolコンパイラにおけるuse手続き処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP62103970A JPH0776928B2 (ja) 1987-04-27 1987-04-27 Cobolコンパイラにおけるuse手続き処理方法

Publications (2)

Publication Number Publication Date
JPS63269230A JPS63269230A (ja) 1988-11-07
JPH0776928B2 true JPH0776928B2 (ja) 1995-08-16

Family

ID=14368202

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62103970A Expired - Fee Related JPH0776928B2 (ja) 1987-04-27 1987-04-27 Cobolコンパイラにおけるuse手続き処理方法

Country Status (1)

Country Link
JP (1) JPH0776928B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5845788B2 (ja) * 2011-09-30 2016-01-20 富士通株式会社 実行制御プログラム、実行制御装置および実行制御方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6324422A (ja) * 1986-07-17 1988-02-01 Nec Corp セグメント方式計算機における2種以上の呼出し手順の共存方式

Also Published As

Publication number Publication date
JPS63269230A (ja) 1988-11-07

Similar Documents

Publication Publication Date Title
JP2801931B2 (ja) 論理設計処理装置および回路変換ルール翻訳装置ならびに回路変換ルール翻訳方法
JPH0776928B2 (ja) Cobolコンパイラにおけるuse手続き処理方法
JPH11242598A (ja) コンパイル方法およびコンパイル装置ならびにオブジェクトプログラム実行方法およびオブジェクトプログラム実行装置ならびにプログラム記憶媒体
KR950005523B1 (ko) 프로그램어블 로직 콘트롤러의 스텝 런 처리방법
JPH0358232A (ja) プリプロセッサ呼び出し方式
JPH03176744A (ja) ソフトウェアテスト方式
JPH0588878A (ja) Lisp命令実行方式
JPH06119203A (ja) デバック行削除装置
JPH0328932A (ja) 拡張された言語仕様のコンパイル方式
JPH07334356A (ja) ソフトウェアの開発過程記述支援方法および装置
JPH01267731A (ja) セグメントオーバレイプログラムの作成方式
JPH0488438A (ja) 高級言語による原始プログラムに対するデバッガの一命令実行方式
JPH03233730A (ja) ソフトウェアエラー処理方式
JPH1083328A (ja) 単体テスト用疑似入出力実現方式
JPS63273132A (ja) プログラム開発支援システム
JPH02205930A (ja) インタフェースチェック処理方法
JPS6388649A (ja) 不正10進デ−タ例外発生時のエラ−詳細情報の出力方式
JPS63269229A (ja) 文字列操作系命令コンパイル処理方式
JPH01140236A (ja) プログラムの逆コンパイル方式
KR20000032756A (ko) 실시간 데이터베이스 관리시스템의 트랜잭션 전처리 방법
JPH0261715A (ja) 記憶機能付きコマンドインタプリタ
JPH1124939A (ja) プログラム変換方法
JPH03242736A (ja) 異常処理方式
JPS63178343A (ja) 中断点の設定方式
JPH064348A (ja) プログラムデバッグ方式

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees