JPH0588866A - ソースコード自動生成装置 - Google Patents

ソースコード自動生成装置

Info

Publication number
JPH0588866A
JPH0588866A JP27726591A JP27726591A JPH0588866A JP H0588866 A JPH0588866 A JP H0588866A JP 27726591 A JP27726591 A JP 27726591A JP 27726591 A JP27726591 A JP 27726591A JP H0588866 A JPH0588866 A JP H0588866A
Authority
JP
Japan
Prior art keywords
data
module
source code
flag
input
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
JP27726591A
Other languages
English (en)
Inventor
Shinsuke Inoue
信介 井上
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.)
Shimadzu Corp
Original Assignee
Shimadzu 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 Shimadzu Corp filed Critical Shimadzu Corp
Priority to JP27726591A priority Critical patent/JPH0588866A/ja
Publication of JPH0588866A publication Critical patent/JPH0588866A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

(57)【要約】 【目的】 C言語プログラムのデータ渡し方式を利用し
て、入力データと出力データとの区別を明確化し、ソー
スコードの信頼性を向上させる。 【構成】 モジュール仕様書内で記述されるデータの使
われ方をフラグパターンで表してデータテーブル11に登
録する。予め、各フラグパターンに対応するデータ渡し
方式を規定したデータ生成用テーブル12を用意し、両テ
ーブルのフラグパターンのマッチング処理で各データに
対するデータ渡し方式を選定する。C言語プログラムの
特徴である "値渡し" と "アドレス渡し" の方式を選定
することで、入力データと出力データの性質に応じたデ
ータ渡しが可能になり、ソースコードの信頼性が上が
る。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、コンピュータ・ソフ
トウエアの生産工程において、プログラムを機能別に構
成する各プログラムモジュール(以下、単にモジュール
と記す)の動作等を記述した設計仕様書からソースコー
ドを自動的に生成するソースコード自動生成装置に係
り、特には、前記各モジュール間で受け渡される入出力
データの生成処理に関する。
【0002】
【従来の技術】現行のソースコード自動生成装置におい
ては、”アドレス渡し”と呼ばれる方式に従って入出力
データを生成している。アドレス渡しとは、例えば、モ
ジュールAがメモリに保持しているデータXをモジュー
ルBに渡す場合に、データXのメモリ上のアドレスをモ
ジュールBに渡す方式である。ソースコードを生成する
際には、データXを格納するメモリ領域を確保し、その
アドレスをモジュールBの入力データとして生成してい
る。モジュールBはデータXに対する処理を施すとき、
渡されたアドレスを指定してデータXを読み出す。デー
タXを格納するメモリ領域をモジュールAとモジュール
Bとで共有するため、メモリ領域を有効に利用できると
いう利点がある。
【0003】
【発明が解決しようとする課題】しかしながら、上記の
例のデータXがモジュールAの入力データで、モジュー
ルBがモジュールAのサブルーチンであった場合、モジ
ュールBの処理によりデータXの値が途中で書き換えら
れてしまい、後の処理でモジュールAが入力データXに
対して処理を施すと、結果として正確な解が得られない
という問題点がある。
【0004】この問題の発生は、モジュールBに渡すデ
ータXがモジュールAの入力データである場合に限られ
る。仮に、モジュールBに渡すデータXがモジュールA
の出力データであった場合、モジュールBの処理により
データXの値が書き換えられても、モジュールAの処理
には何ら影響がないからである。つまり、従来のソース
コード自動生成装置では、入力データと出力データとを
区別することなく、一律にアドレス渡しという方式でデ
ータの生成を行っているため、上記の問題点を招いてい
る。
【0005】これを解消するために、データXをモジュ
ールAの内部において、例えばYという変数の値に置き
換え、モジュールBの処理が終了した時点で、変数Yの
値であるデータXを読み出す、というソースコードを生
成する装置がある。これによると、モジュールBがデー
タXの値を書き換えたとしても、モジュールAは変数Y
に代入されているデータXを読み出して処理を行うこと
ができ、上記の問題点は解消されるが、データXを変数
Yに置き換える処理が新たに加わるためモジュールAの
ソースコードが助長され、また、変数Yの値を格納する
ための新たなメモリ領域も必要となるので、メモリの利
用効率が低下するという別の問題点が起きる。
【0006】この発明は、このような事情に鑑みてなさ
れたものであって、上記の各問題点を解消することがで
きるソースコード自動生成装置を提供することを目的と
している。
【0007】
【課題を解決するための手段】この発明は、上記目的を
達成するために、特に、C言語プログラムのソースコー
ドを生成する装置とした。C言語プログラムは、上述し
たようなアドレス渡し方式に加え、値渡し方式によるデ
ータの渡しを可能にしている。値渡しとは、データのア
ドレスではなく、データの値そのものを渡す方式で、こ
れによれば、データの値を他のモジュール(C言語プロ
グラムでは関数)によって書き換えられることがない。
したがって、この発明のソースコード自動生成装置は、
モジュール仕様書内に記述されているデータのうち、上
記の "値渡し" による方式で渡す必要のあるデータと、
そうでないデータ( "アドレス渡し" にするデータ)と
を自動的に判断し、それぞれの方式に応じた入出力デー
タのソースコードを自動生成することで、入力データと
出力データとの区別をソースコード上でも行うようにし
た。そのための構成は以下のとおりである。
【0008】すなわち、この発明のソースコード自動生
成装置は、(a) モジュール仕様書の中で定義されている
データの名称と型とを抽出する手段と、(b) 抽出された
データの名称と型とを登録するデータテーブルと、(c)
前記データテーブルに登録されているデータが外部変数
であるか内部変数であるかを判断してこれらを識別する
ためのフラグを前記データテーブルのデータに対してセ
ットする手段と、(d)前記データテーブルに登録されて
いるデータが当該モジュールの入力データであるか出力
データであるかを判断してこれらを識別するためのフラ
グを前記データテーブルのデータに対してセットする手
段と、(e) 前記データテーブルに登録されているデータ
が当該モジュールが呼び出している下位モジュールに対
する入力データであるか出力データであるかを判断して
これらを識別するためのフラグを前記データテーブルの
データに対してセットする手段と、(f) 前記データテー
ブルの各データに対してセットされた各フラグのパター
ンから、C言語プログラムの "値渡し" 方式を用いる
か、 "アドレス渡し" 方式を用いるかを選定する手段
と、(g) 前記選定された方式にしたがってデータのソー
スコードを生成する手段とを備えたことを特徴とする。
【0009】
【作用】この発明の構成による作用は、次のとおりであ
る。モジュール仕様書内に記述されているデータが、
(イ)外部変数あるいは内部変数であるか、(ロ)当該
モジュールの入力データあるいは出力データであるか、
(ハ)下位モジュールに対する入力データあるいは出力
データであるか、という情報を前記モジュール仕様書か
ら取り出し、それらの組み合わせから、データを下位モ
ジュールに渡すときの方式として、C言語プログラムの
"値渡し" 方式を用いるか、 "アドレス渡し" 方式を用
いるかを選定する。入力データのように、下位モジュー
ルの処理によって値が書き換えられると当該モジュール
の処理に影響を及ぼすデータを前記の組み合わせから判
断して、そのデータを "値渡し" 方式にし、出力データ
のように下位モジュールによって値が書き換えられても
当該モジュールに影響がないデータを "アドレス渡し"
にすることで、入力データと出力データとのソースコー
ド上における区別が明確化する。
【0010】
【実施例】以下、この発明の一実施例を図面に基づいて
説明する。図1は、ソースコード自動生成装置の概略的
な構成を示したブロック図である。モジュール仕様書記
憶部1には、設計者が作成したモジュール仕様書のデー
タファイルが多数格納されている。ここで作成されるモ
ジュール仕様書は、例えば、(1) 「モジュール仕様書の
ファイル名」、(2) モジュールが果たす機能を要約する
「機能概要」、(3) 入出力データの説明や仕様の詳細を
説明する「処理仕様のインターフェイス」、(4) 入出力
データの名称,型を記述する「入出力データ型の定義」 (5) 当該モジュールが使用している他のプログラムモジ
ュール名などを記載する「プログラムインターフェイ
ス」、(6) 使用する基本ソフトウエアの種類やプログラ
ム言語の種類を記述する「使用環境」、(7) 当該モジュ
ール内で使用するデータの名称,型を記述する「内部デ
ータ型定義」 (8) 「その他」、(9) 処理手順を図記号などを用いて記
述する「処理手順」、などの項目から構成されている。
【0011】モジュール仕様書記憶部1に接続される各
処理部のうち、点線で示した部分は従来のソースコード
自動生成処理装置に備えられている構成部品を示し、実
線で示した部分は本実施例において新たに追加した構成
部品を示している。従来からある構成部品の処理手順抽
出部3は、上記のモジュール仕様書の(9)処理手順項目
の記述内容を取り出して、ソースコード生成部13の制御
構文生成部4と、式処理生成部5、関数呼応文生成部6
とに送出する。
【0012】制御構文生成部4は、処理手順内で記述さ
れている繰り返し処理や分岐処理等の制御構文のソース
コードを生成し、式処理生成部5は計算式のソースコー
ドを生成し、関数呼応文生成部6は当該モジュールが他
のモジュールを呼び出すためのソースコードを生成す
る。これらの各生成部4,5,6で生成されたソースコ
ードは、ソースコード合成部9に送られる。ソースコー
ド合成部9は、生成された各ソースコードを合成して当
該モジュールのソースコードを完成させる。そして、ソ
ースコード記憶部10に格納する。
【0013】次に、本実施例で新たに追加したデータ宣
言抽出部2,引数データ生成部7,関数内使用データ生
成部8,関数呼応文生成部6,データテーブル12, デー
タ生成用テーブル13について以下に説明する。これらの
各処理部2,7,8は、ソースコード生成部13において
ソースコードを生成する際に、モジュール仕様書の記述
内容を図示しないメモリに読み込むときに、動作する処
理部である。
【0014】まず、データ宣言抽出部2は、モジュール
仕様書の(4)入出力データの型定義項目と、 (7)内部デ
ータの型定義項目とに、記述されているデータの名称,
型を読み出してデータテーブル11にセットしていく。デ
ータテーブル11は予めデータ宣言抽出部2に備えられて
おり、図2に示すようなフォーマットになっている。
(4)入出力データの型定義項目に記述されている入出力
データは、当該モジュールに入力されるデータと、当該
モジュールから出力されるデータのことを示しており、
これらのデータは当該モジュールの外部で宣言されてい
るデータであることから外部変数と呼ぶ。
【0015】一方、(7) 内部データの型定義項目に記述
されているデータは、当該モジュールの内部において宣
言したデータであることから、これを内部変数と呼ぶ。
データ宣言抽出部2は、データテーブル11に入出力デー
タおよび内部データの名称,型をセットすると共に、こ
れらのデータが外部変数であるか、内部変数であるかを
区別するためのフラグを立てる。外部変数であった場合
はデータテーブル11のフラグF1の欄にフラグ「1」を
立て、内部変数であった場合はフラグ「0」を立てる。
【0016】引数データ生成部7は、モジュール仕様書
の (9)処理手順項目から、当該モジュールの関数名、お
よび入出力データを読み取る。これらは、 (9)処理手順
項目の先頭行に記述されており、次のような書式が規定
されている。 関数名(入力データ1,・・,入力データN)=>(出
力データ1,・・,出力データN) 引数データ生成部7は、記号「=>」の前に記述されて
いるデータ群を入力データと判断し、後に記述されてい
るデータ群を出力データと判断する。
【0017】そして、読み取った入力データ1(名称)
を検索キーとしてデータテーブル11の名称の欄を検索
し、マッチングしたデータ名のフラグF2の欄に入力デ
ータを示すフラグ「0」をセットする。入力データNま
で、この処理を繰り返すと、今度は、記号「=>」の後
に記述されている出力データ1(名称)を検索キーとし
てデータテーブル11の名称の欄を検索し、マッチングし
たデータ名のフラグF2の欄に出力データを示すフラグ
「1」を立てる。出力データNまで、この処理を繰り返
す。
【0018】このとき、出力データ1,・・,出力デー
タNでマッチングしたデータ名のフラグF2の欄に、す
でに、フラグ「0」がセットされている場合がある。す
なわち、当該モジュールの入力データとして、また、出
力データとして同じデータ名が宣言されている場合があ
る。このようなデータを、以下では入出力データと呼
ぶ。入出力データは出力データと同じ扱いをするため、
すでに立てられているフラグ「0」をフラグ「1」に更
新する。
【0019】以上の処理は前述のように、モジュール仕
様書の (9)処理手順項目の先頭行を読み取った時点での
処理である。引数データ生成部7は、上記の処理を終え
ると、さらに、 (9)処理手順項目の内容を読み取ってい
く。そして、当該モジュールが呼び出している下層の関
数名と、入力データ,および出力データ,入出力データ
を読み込む。これは、先に示した先頭行のものと同じ書
式での記述が規定されている。すなわち、 下層の関数名(入力データ,・・・)=>(出力デー
タ,・・・)という記述形式である。
【0020】引数データ生成部7は、上記と同じくし
て、記号「=>」の前に記述されているデータ群を下層
の関数の入力データ群であると判断し、後に記述されて
いるデータ群を下層の関数の出力データ群であると判断
する。そして、各入力データ,出力データを検索キーと
してデータテーブル11の名称の欄にセットしているデー
タ名とのマッチングを行い、入力データでマッチングし
たデータ名のフラグF3の欄にフラグ「0」を立て、出
力データでマッチングしたデータ名のフラグF3の欄に
フラグ「1」を立てる。入出力データに関しても、先と
同様にフラグ「1」を立てる。以上の処理で、図2に示
したデータテーブル11が完成する。
【0021】関数内使用データ生成部8は、上記の完成
したデータテーブル11と、予め設けられているデータ生
成用テーブル12(図3参照)とを用いて、データテーブ
ル11にセットされている各データの渡し方を決定する。
具体的には、C言プログラムにおいて "値渡し" や "ア
ドレス渡し" を指定するための記号をデータに付加して
ソースコード化する。
【0022】データ生成用テーブル12は、プログラムの
設計者によって作られたもので、渡し方を決定するため
の規則を、データテーブル11にセットしたフラグF1,
F2,F3のパターンとして有している。その規則の一
例について、図3を参照しながら以下に説明する。
【0023】図3のデータ生成用テーブル12のデータに
付加する記号の欄で、「−」の記号はデータに何の記号
も付加しないことを意味している。C言語プログラムで
は、基本的に値渡しの方式を用いており、記号を付加し
ないデータは値渡しとして扱われる。「&」の記号を付
加したデータはアドレスナンバーを意味し、「*」の記
号を付加したデータはアドレスの中に格納されているデ
ータを指している。また、スラッシュ記号「/」の上段
にある記号は、下層の関数にデータを渡すときに付加す
る記号を指し、下段にある記号はその下層の関数内でデ
ータを扱うときに付加する記号を指している。ここで、
関数[ func B ]を設定し、この[ func B ]の下層の
関数として[ func C ]を設定する。
【0024】(1) フラグパターンが「(F1=)0,
(F2=)0,(F3=)0」の場合、このデータD1
は、[ func B ]の内部で宣言された[ func B ]の入
力データであり、かつ、[ func C ]に入力データとし
て渡されるデータである。すなわち、データD1は[ fun
c B ]の処理の途中で[ func C ]に渡されて処理さ
れ、また、[ func B ]のその後の処理の中でも使用さ
れるデータであるから、これを "アドレス渡し" にする
と、[ func C]によって値が書き換えられてしまい、
[ func B ]の後の処理に影響を与えるおそれがあるの
で、 "値渡し" のデータとする。
【0025】(2) フラグパターンが「(F1=)0,
(F2=)0,(F3=)1」の場合、このデータD2
は、[ func B ]の内部で宣言された[ func B ]の入
力データであり、かつ、[ func C ]に出力データとし
て渡されるデータである。すなわち、データD2は、[ f
unc B ]の入力データとして[ func B ]の中で処理さ
れる一方、[ func C ]の出力データとして用いるデー
タであるから、[func C]の処理を受けない。つまり、
[ func B ]の入力データが破壊されるおそれがないの
で、メモリの利用効率を向上させるために" アドレス渡
し" にする。
【0026】以下のフラグパターンも上記のように、各
々のパターンのデータに対して最適な渡し方となるよう
に設定されている。なお、データ生成用テーブル12にお
いて、配列型のデータに付加する記号がセットされてい
るが、C言語プログラムでは配列名がアドレスを表すた
め、配列型のデータは "アドレス渡し" によるしかな
く、何の符号も付けない場合は自動的に "アドレス渡
し" としてソースコード変換される。因みに、配列型の
データとは、複数の要素をもつデータのことである。
【0027】関数内使用データ生成部8は、図2に示し
たデータテーブル11の先頭にセットされているデータか
ら順番に、フラグF1,F2,F3の値を読み込み、デ
ータ生成用テーブル12のフラグパターンとのマッチング
をとる。そして、マッチングしたデータにそのパターン
に応じた記号を付加する。
【0028】このようにして、モジュール仕様書内に記
述されるデータを "値渡し" にするか、 "アドレス渡
し" にするかがそれぞれ決定される。このデータの渡し
方を決定することで、入力データと出力データとの区別
が明確になる。すなわち、 "値渡し" にすることで、他
の関数(モジュール)の処理によってそのデータの値が
変わることなく、入力データとして正当に処理され、ま
た、出力データのように値が変わっても当該モジュール
に影響のないデータについては "アドレス渡し"にして
メモリの利用効率を向上させる、という区別が明確にな
る。
【0029】
【発明の効果】以上の説明から明らかなように、この発
明のソースコード自動生成装置は、C言語プログラムを
生成する装置とし、モジュール仕様書に記述されている
データの使われ方から、C言語プログラムの特徴である
"値渡し" と "アドレス渡し"の両方式を選定するよう
にしたので、モジュール仕様書において入力データとし
て定義されているデータは下位モジュールの処理によっ
て値が変えられてしまうことがなく、値が変えられても
当該モジュールの処理に影響がない出力データとの区別
が明確になり、ソースコードの信頼性を向上することが
できる。
【図面の簡単な説明】
【図1】この発明の一実施例に係るソースコード自動生
成装置の概略構成を示したブロック図である。
【図2】データテーブルのフォーマットの一例を示した
図である。
【図3】データ生成用テーブルのフォーマットの一例を
示した図である。
【符号の説明】
2・・・データ宣言抽出部 7・・・引数データ生成部 8・・・関数内使用データ生成部 11・・・データテーブル 12・・・データ生成用テーブル

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 プログラムを構成する各プログラムモジ
    ュールの設計仕様書(モジュール仕様書)を解析して、
    ソースコードを生成するソースコード自動生成装置にお
    いて、 モジュール仕様書の中で定義されているデータの名称と
    型とを抽出する手段と、抽出されたデータの名称と型と
    を登録するデータテーブルと、前記データテーブルに登
    録されているデータが外部変数であるか内部変数である
    かを判断してこれらを識別するためのフラグを前記デー
    タテーブルのデータに対してセットする手段と、前記デ
    ータテーブルに登録されているデータが当該モジュール
    の入力データであるか出力データであるかを判断してこ
    れらを識別するためのフラグを前記データテーブルのデ
    ータに対してセットする手段と、前記データテーブルに
    登録されているデータが当該モジュールが呼び出してい
    る下位モジュールに対する入力データであるか出力デー
    タであるかを判断してこれらを識別するためのフラグを
    前記データテーブルのデータに対してセットする手段
    と、前記データテーブルの各データに対してセットされ
    た各フラグのパターンから、C言語プログラムの "値渡
    し" 方式を用いるか、 "アドレス渡し" 方式を用いるか
    を選定する手段と、前記選定された方式にしたがってデ
    ータのソースコードを生成する手段とを備えたことを特
    徴とするソースコード自動生成装置。
JP27726591A 1991-09-27 1991-09-27 ソースコード自動生成装置 Pending JPH0588866A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP27726591A JPH0588866A (ja) 1991-09-27 1991-09-27 ソースコード自動生成装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP27726591A JPH0588866A (ja) 1991-09-27 1991-09-27 ソースコード自動生成装置

Publications (1)

Publication Number Publication Date
JPH0588866A true JPH0588866A (ja) 1993-04-09

Family

ID=17581115

Family Applications (1)

Application Number Title Priority Date Filing Date
JP27726591A Pending JPH0588866A (ja) 1991-09-27 1991-09-27 ソースコード自動生成装置

Country Status (1)

Country Link
JP (1) JPH0588866A (ja)

Similar Documents

Publication Publication Date Title
US7508985B2 (en) Pattern-matching system
US4949253A (en) Method and apparatus for automatically generating program
JPH08314728A (ja) ソースプログラムをオブジェクトプログラムに変換する方法および装置
CN111428451A (zh) 文本在线编辑方法、装置、电子设备及存储介质
JP2000029674A (ja) アプリケ―ションソフトウェア構成方法
JP2004094487A (ja) 文書作成支援システム
JPH11306046A (ja) テストケース生成システム及びテストケース生成方法
CN116774982A (zh) 信创环境下的无代码开发方法、设备及存储介质
JP2011191985A (ja) シンボリック実行支援プログラム、方法及び装置
JPH0588866A (ja) ソースコード自動生成装置
JPH07146784A (ja) 名標辞書生成装置
JP4311327B2 (ja) ソースコード自動生成装置、ソースコード自動生成方法、プログラムおよび記録媒体
JPH0667871A (ja) プログラム自動更新方式
JP2003108369A (ja) Webからの要求を受け取り結果出力を行うプログラムの自動生成
JP2000132405A (ja) インライン展開処理装置及び方法
CN117573060A (zh) 音频资源的处理方法、装置、电子设备及存储介质
CN117251155A (zh) 一种低代码数据处理方法、装置、设备及介质
JP2000347878A (ja) メモリ削減方法および装置
JP2003308332A (ja) データベースアクセスプログラム、そのプログラムを記録したコンピュータ読取可能な記録媒体およびデータベース操作方法
JP2003177923A (ja) ポーティング支援システムにおける予約語変換方法
JP3018579B2 (ja) 名前検索処理装置
JPH09198246A (ja) 関数呼出し状況の解析方法
JP2009251975A (ja) Webアプリケーション自動生成装置
JP2835082B2 (ja) 論理回路合成装置
JP2003085013A (ja) Pdmシステム、システム接続用プログラム作成方法