JPH0798650A - ソースプログラム生成方法 - Google Patents

ソースプログラム生成方法

Info

Publication number
JPH0798650A
JPH0798650A JP24248293A JP24248293A JPH0798650A JP H0798650 A JPH0798650 A JP H0798650A JP 24248293 A JP24248293 A JP 24248293A JP 24248293 A JP24248293 A JP 24248293A JP H0798650 A JPH0798650 A JP H0798650A
Authority
JP
Japan
Prior art keywords
sentence
source
program
rule
sentence information
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
JP24248293A
Other languages
English (en)
Other versions
JP3004847B2 (ja
Inventor
Tetsuo Abe
哲男 安部
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.)
Hitachi Software Engineering Co Ltd
Original Assignee
Hitachi Software Engineering Co 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 Hitachi Software Engineering Co Ltd filed Critical Hitachi Software Engineering Co Ltd
Priority to JP5242482A priority Critical patent/JP3004847B2/ja
Publication of JPH0798650A publication Critical patent/JPH0798650A/ja
Application granted granted Critical
Publication of JP3004847B2 publication Critical patent/JP3004847B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

(57)【要約】 【目的】プログラミングの知識のない人でも、複雑な条
件を含んだプログラムの機能仕様を容易に記述し、目的
とするソースプログラムを生成すること。 【構成】 プログラムの機能仕様の記述に使用する文に
関する文情報を文情報ファイルに登録しておき、この文
情報ファイルに登録された文情報を使用して箇条書文章
から成るプログラム仕様書を作成して仕様書ファイルに
格納した後、この仕様書ファイルに格納されたプログラ
ム仕様書を解析して仕様書内容に対応するソースプログ
ラムを生成する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、プログラムの機能仕様
を箇条書で記述した文章から目的とするソースプログラ
ムを生成するソースプログラム生成方法に関する。
【0002】
【従来の技術】従来において、仕様書中にソースプログ
ラムを生成するための文を記述する場合に、1文1命令
で1対1に対応付けた文を文情報ファイルに登録してお
き、仕様書中にその登録した文を記述することで対応す
る命令語に置き換えてソースプログラムを生成するシス
テムがある。
【0003】図56は、ソースプログラムの仕様を木構
造エディタ100を使用して作成する従来の例を示す説
明図である。この木構造エディタ100は、プログラム
の構造を表す各種シンボルS,R,Iなどを組み合わせ
て仕様を記述するもので、各シンボルの中には、文情報
ファイル110に登録されている文を記述することがで
きる。
【0004】例えば、「〜が〜でありかつ〜が〜であ
る。」という表現を文として入力する場合には、事前に
文情報ファイル110に「〜が〜でありかつ〜が〜であ
る。」という文111と、それに対応する「($1=$2)
AND ($3 = $4)」という命令語112とから成る命令
後置き換え規則を対で登録しておく。そこで、まず、文
を入力したいシンボル101を選択すると、登録されて
いる文の一覧が表示されるので、その中から入力したい
文111(「〜が〜でありかつ〜が〜である。)」を選
択すると、その選択した文111がシンボル101の中
に入力される。
【0005】次に、「〜」の中に任意の用語を入力すた
め、「〜」を選択すると、データ項目120の一覧が表
示されるので、その中から入力したい用語「日付」12
1、「空白」122、「氏名」123、「空白」122
をそれぞれ選択する。すると、「〜」中に選択した用語
が入力される。
【0006】以上の手順により、「日付が空白でかつ氏
名が空白である」102という文を入力することができ
る。
【0007】このような仕様書により図示のようなソー
スプログラム130が生成される。このソースプログラ
ム130は、木構造エディタ100の所定のソース生成
規則により生成された木構造部分のソース131と、文
情報ファイル110に登録された文の命令語置き換え規
則112を元に置き換えられたソース132とから構成
される。
【0008】
【発明が解決しようとする課題】しかし、上記のような
ソースプログラム生成方法にあっては次のような問題が
ある。
【0009】(1)仕様書に記述された文は1つの文で
完結しているため、複雑な条件式などを記述する場合に
は文の表現が長くなり、意味が判りにくくなる。また、
記述される条件式の組合せに応じて文を登録する必要が
あるので、その数は膨大なものとなってしまう。
【0010】(2)仕様書に記述された文からは単純な
文字列の置換しか行なわないために、記述される仕様に
プログラムの制御を含む表現がある場合にはその仕様を
記述できない。
【0011】本発明の目的は、プログラミングの知識の
ない人でも、複雑な条件を含んだプログラムの機能仕様
を容易に記述し、目的とするソースプログラムを生成す
ることができるソースプログラム生成方法を提供するこ
とである。
【0012】プログラムの制御を含む仕様を容易に記述
し、目的とするソースプログラムを生成することができ
るソースプログラム生成方法を提供することである。
【0013】
【課題を解決するための手段】上記目的を達成するため
に本発明では、基本的には、プログラムの機能仕様の記
述に使用する文に関する文情報を文情報ファイルに登録
しておき、この文情報ファイルに登録された文情報を使
用して箇条書文章から成るプログラム仕様書を作成して
仕様書ファイルに格納した後、この仕様書ファイルに格
納されたプログラム仕様書を解析して仕様書内容に対応
するソースプログラムを生成するようにしたものであ
る。
【0014】そのうえで、前記文情報には、仕様書で使
用される文に対し、その文からソースプログラムを生成
するためのソース生成規則とプログラム制御構造を表す
種別を設けるようにしたものである。
【0015】さらに、プログラム仕様書を解析する際、
プログラム仕様書中の各文の待つプログラムの制御構造
を判別して各文の文情報ノードを作成し、文相互間の制
御関係を表す有効グラフを作成し、この有効グラフと前
記ソース生成規則に従って構造化されたソースプログラ
ムを生成するようにした。
【0016】
【作用】上記手段によれば、文情報ファイルに予め登録
された文情報を使用して箇条書文章から成るプログラム
仕様書を作成して仕様書ファイルに格納した後、この仕
様書ファイルに格納されたプログラム仕様書を解析して
仕様書内容に対応するソースプログラムを生成するの
で、プログラミングの知識のない人でも、複雑な条件を
含んだプログラムの機能仕様を容易に記述し、目的とす
るソースプログラムを生成することができる。
【0017】また、プログラム制御構造を表す種別を設
けた場合は、プログラムの制御を含む仕様を容易に記述
し、目的とするソースプログラムを生成することができ
る。
【0018】
【実施例】以下、本発明を図示する実施例に基づいて詳
細に説明する。
【0019】図1〜図3は、表形式仕様書220の欄に
箇条書文章で機能を記述し、ソースプログラムを生成す
る場合の処理方法の実施例を示す説明図である。
【0020】図1の表形式仕様書220は、あるデータ
項目に対して、項目をチェックする条件を記述する条件
部分221と、条件が成立した場合に行なう処理を記述
する処理部分222とから構成される。
【0021】このような仕様書220に対し、「氏名が
空白であり、かつ日付が数字であるの条件が成立したら
口座番号にコードをセットする。」という機能仕様21
0が提起されたとすると、条件部分221には「下記の
全てである。」、「(1)氏名が空白である。」、「(2)
日付が数字である。」という条件文223を記述し、処
理部分222には「口座番号にコードをセットする。」
という処理文224を箇条書で記述する。
【0022】図2は表形式仕様書220の箇条書文章に
対応するフローチャートであり、箇条書された文章をフ
ローチャートで表すと、条件部分231は条件フローチ
ャート310のようになり、処理部分232は処理フロ
ーチャート320のようになる。
【0023】そこで、後述する方法でソースプログラム
の生成を行なうと、図3に示すようなソースプログラム
430が生成される。このソースプログラム430は、
条件フローチャート310に対応する条件ソースプログ
ラム410と処理フローチャート320に対応する処理
ソースプログラム420から構成される。
【0024】すなわち、個々の欄に記述された箇条書文
章から生成された条件ソースプログラム410と処理ソ
ースプログラム420は、表形式仕様書220の独自の
規則により組み合わされ、完成したソースプログラム4
30として生成される。
【0025】この例では、図3中に「@処理」と記述し
た部分に処理ソースプログラム420をマージすること
により、完成したソースプログラム430が生成され
る。
【0026】この場合、組合せ後のフローチャートは図
2に示す合成フローチャート330として表される。
【0027】図4〜図6は、表形式仕様書の処理の欄に
箇条書文章で機能を記述し、ソースプログラムを生成す
る場合の実施例を示す説明図である。
【0028】図4の表形式仕様書520は、あるデータ
項目に対して、項目をチェックする条件を記述する条件
部分521と、条件が成立した場合に行なう処理を記述
する処理部分522とから構成される。
【0029】このような表形式仕様書520に対し、
「口座番号にコードをセットする」という機能仕様51
0が提起されたとすると、条件部分521には「無条
件」という条件文523を記述し、処理部分522には
「口座番号にコードをセットする。」という処理文52
4を記述する。
【0030】図5は表形式仕様書520の箇条書文章に
対応するフローチャートであり、箇条書された文章をフ
ローチャートで表すと条件部分531は条件フローチャ
ート610ようになり、処理部分532は処理フローチ
ャート620のようになる。
【0031】そこで、後述する方法を用いてソースプロ
グラム生成を行なうと、図6のようなソースプログラム
730が生成される。このソースプログラム730は、
条件フローチャート610に対応する条件ソースプログ
ラム710と、処理フローチャート620に対応する処
理ソースプログラム720から構成される。
【0032】すなわち、個々の欄に記述された箇条書文
章から生成されたソースプログラム710,720は表
形式仕様書520の独自の規則により組み合わされ、完
成したソースプログラム730として生成される。
【0033】この例では、「@処理」と記述した部分に
処理部分のソースプログラム720をマージすることに
より、完成したソースプログラム730が生成される。
【0034】組合せ後のフローチャートは図5のような
合成フローチャート630として表される。
【0035】図7〜図9は、表形式仕様書820のチェ
ック条件,チェック内容の欄に箇条書文章で機能を記述
し、ソースプログラムを生成する場合の実施例を示す説
明図である。
【0036】図7の表形式仕様書820は、あるデータ
項目に対して、項目をチェックする条件を記述するチェ
ック条件部分821と、条件が成立した場合に行なうチ
ェック内容を記述するチェック内容部分822と、条件
が成立しなかった場合に設定するエラーコード部分82
3とから構成されている。
【0037】このような表形式仕様書820に対し、
「氏名が空白であるかつ日付が数字であるの条件が成立
したら口座番号が数字であるかチェックを行ない、条件
が成立しない場合はエラーコードに9999セットする」と
いう機能仕様810が提起された場合、チェック条件部
521には「下記の全てである。」、「(1)氏名が空白
である。」、「(2)日付が数字である。」というチェッ
ク条件文824を記述し、チェック内容部分822には
「口座番号が数字である。」というチェック内容文82
6を記述し、エラーコード部分823には「9999」
というエラーコード文827を記述する。
【0038】図8は表形式仕様書820の箇条書文章に
対応するフローチャートであり、チェック条件部分83
1はチェック条件フローチャート910のようになり、
チェック内容部分832はチェック内容フローチャート
920のようになる。
【0039】そこで、後述する方法を用いてソースプロ
グラムの生成を行なうと、図9に示すようなソースプロ
グラム1040が生成される。このソースプログラム1
040は、チェック条件部分831に対応するチェック
条件ソースプログラム1010と、チェック内容部分8
32に対応するチェック内容ソースプログラム1020
とから成る。エラーコード部分823は表形式仕様書8
20の独自の規則にしたがってエラーコードソースプロ
グラム1030として生成される。
【0040】すなわち、個々の欄に記述された箇条書文
章から生成されたソースプログラム1010,102
0,1030は表形式仕様書の独自の規則により組み合
わされ、完成したソースプログラム1040として生成
される。
【0041】この例では、「@処理」と記述した部分に
チェック内容部分832のソースプログラム1020、
「@エラーコード」と記述した部分にエラーコードのソ
ースプログラム1030をマージすることにより、完成
したソースプログラム1040が生成される。
【0042】この場合、組合せ後のフローチャートは図
8のような合成フローチャート940として表される。
【0043】図10〜図12は、木構造形式仕様書11
20のシンボルに箇条書文章で機能を記述し、ソースプ
ログラムを生成する場合の実施例を示す説明図である。
【0044】図10の木構造形式仕様書1120は、プ
ログラムの構造を表す条件シンボル1121、処理シン
ボル1122などの中に処理する内容を記述し、各々の
シンボルを組み合わせてプログラムを生成するものであ
る。
【0045】このような仕様書1120に対し、「氏名
が空白であるかつ日付が数字であるの条件が成立したら
口座番号にコードをセットする」という機能仕様111
0が提起された場合、木構造形式仕様書1120の条件
シンボル1121内には「次の全てである。」、「(1)
氏名が空白である。」、「(2)日付が数字である。」と
いう箇条書文章1123を記述し、処理シンボル112
2内には「口座番号にコードをセットする。」という箇
条書文章1124を記述する。
【0046】図11は木構造形式仕様書1120の箇条
書文章に対応するフローチャートであり、箇条書された
文章をフローチャートで表すと、条件シンボルフローチ
ャート1210と処理シンボル部分フローチャート12
20のようになる。
【0047】そこで、後述する方法を用いてソースプロ
グラムの生成を行なうと、図12のような木構造形式仕
様書1120の箇条書文章1131,1132に対応す
るソースプログラム1340が生成される。このソース
プログラム1340は、条件シンボル1121に対応す
る条件ソースプログラム1310と、処理シンボル11
22に対応する処理ソースプログラム1320と、木構
造の生成規則を示す木構造生成規則ソースプログラム1
330とから構成される。
【0048】すなわち、個々ののシンボルに記述された
箇条書文章1131,1132から生成されたソースプ
ログラム1310,1320は、木構造生成規則ソース
プログラム1330により組み合わされ、完成したソー
スプログラム1340として生成される。この場合、組
合せ後のフローチャートは図11のような合成フローチ
ャート1240として表される。
【0049】この例では、シンンボルの組合せによりプ
ログラムの構造は図11に示す木構造部分フローチャー
ト1230に示される構造となり、プログラムの組合せ
はこの構造に従って生成される木構造生成規則ソースプ
ログラム1330を使用して生成される。
【0050】図13〜図16は、デシジョンテーブル形
式仕様書1420の条件部、処理部中に箇条書文章で機
能を記述し、ソースプログラムを生成する場合の実施例
を示す説明図である。
【0051】図13のデシジョンテーブル形式仕様書1
420は、条件部1421にチェックする条件、処理部
1422に処理する内容を記述し、条件部1421のマ
トリックス1423に条件が成立する場合は「Y」、成
立しない場合には「N」を記述する。処理部1422の
マトリックス1424には、条件部1421のマトリッ
クス1423に記述された条件が成立した場合に行なう
処理に「X」を記述するようになっている。
【0052】このような仕様書1420に対し、「氏名
が空白であるかつ日付が数字であるの条件が成立したら
口座番号にコードをセットする」という機能仕様141
0と、「氏名が空白であるでかつ日付が数字であるでな
い場合にエラーコードに9999をセットする」という
機能仕様1411と、「氏名が空白であるでかつ日付が
数字であるありかつの口座番号が数字であるない場合は
エラーコードに9999をセットする」という機能仕様
1412が提起された場合、デシジョンテーブル形式仕
様書1420の条件部1421には「下記の全てであ
る。」、「(1)氏名が空白である。」、「(2)日付が数
字である。」という箇条書文章1425と、「口座番号
が数字である。」という箇条書文章1426を記述し、
処理部1422には「口座番号にコードをセットす
る。」という箇条書文章1427と「エラーコードに9
999をセットする。」という箇条書文章1428を記
述し、機能仕様に応じて、条件部1421のマトリック
ス1423の条件が成立する場合は「Y」、成立しない
場合には「N」を記述し、処理部1422のマトリック
ス1424には条件部のマトリックス1423に記述さ
れた条件が成立した場合に行なう処理に「X」を記述す
る。
【0053】この仕様書1420に記述された箇条書文
章は、「条件1」1431及び「条件2」1432と
「処理1」1433及び「処理2」1434に分けて記
述されている。
【0054】図14はデシジョンテーブル形式仕様書1
420の箇条書文章に対応するフローチャートであり、
箇条書された文章をフローチャートで表すと、「条件
1」1431は「条件1フローチャート」1510で表
され、「条件2」1432は「条件2フローチャート」
1520で表され、「処理1」1433は「処理1フロ
ーチャート」1530、「処理2」1434は「処理2
フローチャート」1540で表される。
【0055】そこで、後述する方法を用いてソースプロ
グラムの生成を行なうと、図16のようなソースプログ
ラム1660が生成される。このソースプログラム16
60は、「条件1」1431に対応する「条件1ソース
プログラム」1610と、「条件2」1432に対応す
る「条件2ソースプログラム」1620と、「処理1」
1433に対応する「処理1ソースプログラム」163
0と、「処理2」1434に対応する「処理2ソースプ
ログラム」1640とから構成される。
【0056】すなわち、個々の条件部、処理部に記述さ
れた箇条書文章から生成されたソースプログラム161
0,1620,1630,1640はデシジョンテーブ
ル形式仕様書1420の独自の規則により組み合わされ
て完成したソースプログラム1660として生成され
る。この完成したソースプログラム1660は図15に
示すフローチャートで表される。
【0057】この例では、条件部のマトリックス142
3と処理部のマトリックス1424でチェックされた項
目によりプログラムの構造は図14(e)のデシジョン
テーブルフローチャート1550に示される構造となる
ので、この構造に従い図16のデシジョンテーブルソー
スプログラム1650が生成される。そして、このデシ
ジョンテーブルソースプログラム1650のソース生成
規則に従い各ソースプログラム1610,1620,1
630,1640が組合せられ、合成ソースプログラム
1660となる。
【0058】本発明では、上記のような各種の仕様書に
記述された箇条書文章からソースプログラムを生成する
ものであるが、次に、仕様書に記述された箇条書文章よ
りソースプログラムを生成するシステムについて説明す
る。
【0059】図17は、本発明のソースプログラム生成
システムの一実施例を示すブロック図である。
【0060】図17において、2000は箇条書文章か
らのソースプログラム生成システム、2010は仕様書
ファイル、2020は文情報ファイル、2030は用語
情報ファイル、2040はソースプログラムファイルで
ある。
【0061】図18に、これらのファイルに格納される
情報をさらに詳しく示す。
【0062】文情報ファイル2020は仕様書中で使用
される文をあらかじめ登録しておくファイルであり、仕
様書中で使用される文と、文の持つプログラムの制御属
性と、文からソースプログラムを生成するためのソース
プログラム生成規則とを格納するファイルである。
【0063】この文情報ファイル2020に格納される
文は、その文だけで完結したものだけではなく、「〜が
〜である」であるという文を登録して「〜」の中に任意
の用語または文字を記述できる文も登録することができ
るようになっている。
【0064】用語情報ファイル2030は、文情報ファ
イル2020に登録された文の「〜」の中に記述する用
語を登録しておくファイルであり、文中で使用される用
語と用語に対応するデータ名が対になって格納されてい
る。
【0065】仕様書ファイル2010は、プログラムの
仕様を記述した情報を格納するためのファイルであり、
仕様書固有の情報、例えば仕様書の表のフォーマットや
箇条書された文以外の情報と、文情報ファイル2020
と用語情報ファイル2030に登録された文と用語を用
いて記述された箇条書文章の情報を格納する。
【0066】箇条書された文章は、箇条書された文の記
述された順序、段づけ、文中に記述された用語の情報を
仕様書上のまとまった単位に分けて保持する。本例で
は、仕様書に記述された箇条書文章を条件2101や処
理2102などのの表の欄の単位に分けて格納してい
る。
【0067】ソースプログラムファイル2040は、仕
様書ファイル2010に記述された箇条書文章から文情
報ファイル2020と用語情報ファイル2030を元に
生成されたと各欄(条件部分、処理部分等)の部分的なソ
ースプログラムを、表仕様書の独自の手順に従って組み
合わせたソースプログラム2040が格納される。
【0068】ソースプログラム生成システム2000
は、仕様書ファイル2010より箇条書文章を読み込ん
でメモリに展開する仕様書データ読み込みモジュール2
001と、仕様書データ読み込みモジュール2001に
より読み込んだ箇条書文章をメモリに展開するための仕
様書データ展開エリア2004、文情報ファイル202
0より文情報を読み込み、メモリに展開する文情報デー
タ読み込みモジュール2002、文情報データ読み込み
モジュール2002により読み込んだ文情報をメモリに
展開するための文情報データ展開エリア2005、用語
情報ファイル2030より用語情報を読み込み、メモリ
に展開する用語データ読み込みモジュール2003、用
語データ読み込みモジュール2003により読み込んだ
用語情報をメモリに展開するための用語情報データ展開
エリア2006を備えている。
【0069】さらに、仕様書データ展開エリア2004
に展開された箇条書の内容2016を解析し、プログラ
ムの制御を表す有効グラフの作成を指示する仕様書デー
タ解析モジュール2007、各モジュールの指示にした
がい文情報2014または用語情報2015を文情報デ
ータ展開エリア2005または用語情報データ展開エリ
ア2006から検索する文章・用語データ検索モジュー
ル2008、仕様書データ解析モジュール2007の指
示にしたがい所定の有効グラフを作成する有効グラフ生
成モジュール2009、有効グラフ生成モジュール20
09により生成されたプログラムの制御を表す有効グラ
フの情報を格納するための有効グラフ展開エリア201
0、有効グラフ展開エリア2010に作成された情報2
017を元に、有効グラフの実行手順にしたがい個々の
文のソース展開の指示を行なう箇条書文章ソース生成モ
ジュール2012、箇条書文章ソース生成モジュール2
012より指示された個々の文のソース生成規則を解析
し、ソースの展開指示を行なうソース生成規則解析モジ
ュール2011、ソース生成規則解析モジュール201
1の指示に従い文の内容をソースプログラムとして展開
するソース展開モジュール2013より構成される。
【0070】図18に、文情報ファイル2020、用語
情報ファイル2030、仕様書ファイル2010、仕様
書2100およびソースプログラム2040の関係を示
す。
【0071】以上のシステム構成において、箇条書され
た文章からソース生成を行なうための文の種類と箇条書
された記述より求められる有効グラフとフローチャート
について以下説明する。
【0072】図19〜図25に示すように、仕様書中に
記述される文は、文情報データとして文そのもの220
1と、プログラムの制御種別2202と、文からソース
の生成を行なうためのソース生成規則2203とから構
成される。
【0073】本実施例では、文のプログラムの制御種別
は、プログラムの構造を表す基本的な要素として条件、
式、処理、修飾の4つに分類されてる。これ以外にも必
要に応じて要素を追加することも可能である。
【0074】1.条件 図19は「条件論理積」の文情報の例、図20は「条件
論理和」の文情報の例であり、条件は文章中において判
定を行なう仕様を記述する文に対して使用し、式、修飾
属性を持つ文と併記して記述する。例えば、文の記述は
2210と2310となり、これに対応するフローチャ
ートは2230と2330となる。
【0075】2.式 図21は「論理積式」の文情報の例、図22は「論理和
式」の文情報の例であり、これらの式は文章中である式
を記述する文に対し使用し、修飾属性を持つ文と併記し
て記述する。例えば、文の記述は2410と2510と
なり、これに対応するフローチャートは2430と25
30となる。
【0076】3.処理 図23は「処理」の文情報例であり、「処理」は文章中
である処理を行なう仕様を記述する文に対し使用し、例
えば、文の記述は2710となり、これに対応するフロ
ーチャートは2730となる。
【0077】4.修飾 図24、図25は「修飾」の文情報例であり、「修飾」
は文章中である判定を行なう仕様を記述する文に対して
使用し、複雑な条件を記述する場合には条件、式と併記
して使用する。例えば、文の記述は2810,2910
となり、これよに対応するフローチャートは2830,
2930となる。
【0078】本発明ではこのような文を解析することに
より、次の3つ種類の文情報ノードに分けてプログラム
の制御を表す有効グラフを作成した後、ソースプログラ
ムを作成する。
【0079】1.条件ノード 1つの条件を記述した文情報ノードを保持する。条件ノ
ードは論理積(THEN 節)と論理和(ELSE 節)の情報を持
つ。論理積を表す有効グラフは図19の2240,論理
和を表す有効グラフは図20の2340で示される。
【0080】以降、条件用ノードは角の丸い四角の記
号、論理積は横方向の線、論理和は縦方向の線で表記す
る。
【0081】なお、修飾文に対する有効グラフは図2
4、図25の符号2840,2940で表記される。
【0082】2.式ノード 条件などの中に記述される式の文情報ノードを保持す
る。式ノードは論理積(ANDと論理和(OR)の情報を持つ。
論理積を表す有効グラフは図21の2440,論理和を
表す有効グラフは図22の2540で示される。以降、
式用ノードは楕円の記号、論理積と論理和は線で表記す
る。
【0083】3.処理ノード 処理などの1つのまとまった文章の記述の文情報ノード
を保持する。処理ノードは文が列記された場合の情報を
持つ。列記された場合を表す有効グラフは図23の27
40で示される。以降、処理ノードは四角の記号で表記
する。
【0084】図26、図27に実際に箇条書を行なった
文章を元に作成されたフローチャートと有効グラフの作
成例を示す。
【0085】図26は、単純に連続した処理を記述した
文章3000を元に作成されるフローチャート3010
を示すものであり、これを元に有効グラフ3020を作
成すると、「日付に暦日をセット」3001、「口座に
当座をセットする」3002の文は処理属性を持つ文に
該当するので、それぞれ「日付に暦日をセット」の処理
ノード3021,「口座に当座をセットする」の処理ノ
ード3022として作成され、「日付に暦日をセット」
の処理ノード3021と「口座に当座をセットする」の
処理ノード3022は列記された場合に該当するために
縦方向の線3023で接続された有効グラフとなる。
【0086】図27は、複合条件を記述した文章330
0を元に作成されるフローチャート3310を示すもの
であり、「(2)下記の全てである」3305以降の処理
が記述された条件がフローチャート上ではステップ33
11と3312と複数の場所に現れる。
【0087】これを元に有効グラフ3320を作成する
と、「(1)下記のいずれかである」3302は条件属性
を待つが、「(1)下記のいずれかである」3302はそ
の文だけでは意味をなさず、段付けされて記述された
「(1)日付が暦日である。」3303と「(2)日付が空
白である。」3304の修飾属性を持つ文の記述を元に
「(1)日付が暦日である。」の条件ノード3321、
「(2)日付が空白である。」の条件ノード3322を生
成する。
【0088】「(1)日付が暦日である。」の条件ノード
3321と「(2)日付が空白である。」の条件ノード3
322との間の線は、親の文が「(1)下記のいずれかで
ある」3302であり、文の属性が論理和を持つ属性に
該当するため縦方向の線3323として接続される。
【0089】「(2)次のいずれかである。」3306
は、同様に、その文だけでは意味をなさず、段付けされ
て記述された「(1)口座種別が普通である。」3307
と「(2)口座種別が当座である。」3308の修飾属性
を持つ文の記述を元に「(1)口座種別が普通である。」
の式ノード3324、「(2)口座種別が当座である。」
の式ノード3325を生成する。
【0090】「(1)口座種別が普通である。」の式ノー
ド3324と「(2)口座種別が当座である。」の式ノー
ド3325の間の線は、親の文が「(2)次のいずれかで
ある。」3306であり、文の属性が論理和を持つ属性
に該当するため線3326として接続される。
【0091】「(2)下記の全てである」3305に段付
けされて記述された「(2)次のいずれかである。」33
06と「(2)口座番号が数字である」3309の記述を
元に「(2)次のいずれかである。」の条件ノード332
7と「(2)口座番号が数字である」の条件ノード332
8を接続する。
【0092】「(2)次のいずれかである。」の条件ノー
ド3327と「(2)口座番号が数字である」の条件ノー
ド3328との間の線は、親の文が「(2)下記の全てで
ある」3305であり、文の属性が論理積を持つ属性に
該当するため横方向の線3329として接続される。
【0093】「(1)下記のいずれかである。」3302
と「(2)下記の全てである。」3305とは、親の文が
「下記の全てである。」3301であり、文の属性が論
理和を持つ属性であるために横方向の線3330,33
31で接続された有効グラフが作成される。
【0094】図28に、箇条書文章からソースプログラ
ムを生成する処理の全体を表すフローチャートを示す。
【0095】まず、仕様書データ読み込みモジュール2
001を使用し、仕様書ファイル2010から箇条書文
章から成る仕様書データをソース生成システム2000
内に入力し、その仕様書データを仕様書データ展開エリ
ア2004に展開する(ステップ3401)。
【0096】次に、文情報データ読み込みモジュール2
002を使用し、文情報ファイル2020から文情報デ
ータをソース生成システム2000内に入力し、その文
情報データを文情報データ展開エリア2005に展開す
る(ステップ3402)。
【0097】次に、用語情報データ読み込みモジュール
2003を使用し、用語情報ファイル2030から用語
情報データをソース生成システム2000内に入力し、
その用語情報データ展開エリア2006に展開する(ス
テップ3403)。
【0098】次に、文章・用語データ検索モジュール2
008を使用し、仕様書データ展開エリア2004と文
情報データ展開エリア2005の内容からプログラム制
御種別を獲得し、箇条書された文章を仕様書データ解析
モジュール2007を使用して解析し、さらに有効グラ
フ作成モジュール2009を使用してプログラムの制御
を表す有効グラフを作成し、有効グラフ展開エリア20
10に展開する(ステップ3404)。
【0099】最後に、有効グラフ展開エリア2010に
展開された有効グラフの内容を箇条書文章ソース生成モ
ジュール2012によって順次獲得し、その獲得した内
容を元に、文章・用語データ検索モジュール2008を
使用して必要とする文のソース生成規則を文情報データ
展開エリア2005と用語情報データ展開エリア200
6の中から獲得し、その獲得したソース生成規則をソー
ス生成規則解析モジュール2011を使用して解析し、
その解析結果を元にソース生成展開モジュール2013
を用いてソースプログラムを生成し、ソースファイル2
040に出力する(ステップ3405)。
【0100】以上の順序により箇条書文章からソースプ
ログラムが生成される。
【0101】次に、ステップ3404とステップ340
5について詳しく説明する。
【0102】図27の箇条書文章3300から実際の有
効グラフを生成するフローチャートを図29,図30,図
31に示す。また、図32〜図43に仕様書データ展開
エリア2004に展開された文3501を1行づつ読み
込んだときのデータの流れと有効グラフ3503の作成
過程を示す。
【0103】箇条書文章解析のフローチャートは、入力
データとして親の文情報3501を入力し、出力データ
として解析した子の文情報ノードの先頭アドレス350
2を返す。また、図32〜図43のデータフローでは、
仕様書データ展開エリア2004に展開された文と、有
効グラフ情報展開エリア2010に展開された有効グラ
フの内容を示す。
【0104】始めに「下記の全てである。」3301よ
り処理を行なう。
【0105】最初に、処理の対象となっている子の文情
報ノード先頭アドレスに「NULL」をセットする(ステッ
プ3503)。同時に、子の文情報ノード前アドレスに
「NULL」をセットして初期設定を行なう(ステップ35
04)。
【0106】次に、仕様書データ展開エリア2004よ
り、箇条書された文の子の文レコードを1レコード読み
込む。すると、図32(a)に示すように、1番先頭の
「下記の全てである。」3301が読み込まれる(ステ
ップ3505)。
【0107】次に、同じレベルの文があるかの判定を行
なう。すでに、「下記の全てである。」3301の文が
読み込まれているので、「同じレベルの文あり」とな
り、文の読み込みループの処理を続行する(ステップ3
506)。
【0108】次に、子の文情報の有無の判定を行なう。
すると、「(1)下記のいずれかである。」3302が存
在するために「子の文情報= 有り」で「Y」が成立す
る。(ステップ3540)。
【0109】ここで、「下記の全てである。」3301
の処理を一時的に保留し、「下記の全てである。」33
01の文情報をスタックし、「下記の全てである。」3
301の文情報を入力データとして箇条書文章解析を再
帰的に呼び出す。(ステップ3523)。このときに、入
力データ3501は「下記の全てである。」3301と
なり、有効グラフ展開エリア2010の内容は図32
(b)に示すようになり、文情報として「論理条件
(積)」3820がスタックされる。
【0110】次に、「(1)下記のいずれかである。」3
302を処理する状態になるが、ステップ3523の箇
条書文章解析処理を再帰的に呼び出したことにより、新
たにフローチャートの先頭から処理が開始される。この
ときに、入力データとして「下記の全てである。」33
01の文情報を入力データとして獲得する。
【0111】まず、処理の対象となっている子の文情報
ノード先頭アドレス3502に「NULL」をセットする
(ステップ3503)。同時に、子の文情報ノード前アド
レスに「NULL」をセットして初期設定を行なう(ステッ
プ3504)。
【0112】次に、仕様書データ展開エリア2004よ
り、「下記の全てである。」3301の子の文レコード
を1レコード読み込む。すると、1番先頭の「(1)下
記のいずれかである。」3302が読み込まれる(ステ
ップ3505)。
【0113】次に、同じレベルの文があるかの判定を行
なう。すでに、「(1)下記のいずれかである。」330
2の文が読み込まれているので、「同じレベルの文あ
り」となり、文の読み込みループの処理を続行する(ス
テップ3506)。
【0114】次に、子の文情報の有無の判定を行なう。
すると、「(1)日付が暦日である。」3303が存在す
るために、「子の文情報=有り」で「Y」が成立する
(ステップ3540)。
【0115】ここで、「(1)下記のいずれかである。」
3302の処理を一時的に保留し、「(1)下記のいずれ
かである。」3302の文情報をスタックし、さらに
「(1)下記のいずれかである。」3302の文情報を入
力データとして、箇条書文章解析処理を再度、再帰的に
呼び出す(ステップ3523)。
【0116】このときに、入力データ3501は「(1)
下記のいずれかである。」3302となり、有効グラフ
展開エリア2010の内容は図33(a)に示すような
状態になり、文情報として「論理条件(和)」3920が
スタックされる。
【0117】次に、「(1)日付が暦日である。」330
3を処理する状態になるが、再度、箇条書文章解析処理
を再帰的に呼び出したことにより、新たにフローチャー
トの先頭から処理が開始される。このときに、入力デー
タとして「(1)下記のいずれかである。」3302の文
情報を獲得する。
【0118】まず、処理の対象となっている子の文情報
ノード先頭アドレス3502に「NULL」をセットする
(ステップ3503)。同時に、子の文情報ノード前アド
レスに「NULL」をセットして初期設定を行なう(ステッ
プ3504)。
【0119】次に、仕様書データ展開エリア2004よ
り、「(1)下記のいずれかである。」3302の子の文
レコードを1レコード読み込む。すると、1番先頭の
「(1)日付が暦日である。」3303が読み込まれる
(ステップ3505)。
【0120】次に、同じレベルの文があるかの判定を行
なう。すでに、「(1)日付が暦日である。」3303の
文が読み込まれているので、「同じレベルの文あり」と
なり、文の読み込みループの処理を続行する(ステップ
3506)。
【0121】次に、子の文情報の有無の判定を行なう。
すると、子の文情報が存在しないために「子の文情報=
有り」で「N」が成立する(ステップ3540)。
【0122】子の文情報が存在しない場合は、文情報ノ
ード作成処理を行う(ステップ3507)。
【0123】図30は、この文情報ノード作成処理の詳
細を示すものであり、まず、「(1)日付が暦日であ
る。」3303の文レコードからプログラムの制御種別
を獲得する(ステップ3507)。
【0124】次に、獲得したプログラムの制御種別を判
定する(ステップ3609〜3612)。すると、
「(1)日付が暦日である。」3303は修飾属性に該当
するため、「プログラムの制御種別=修飾」の「Y」の
条件が成立し、修飾属性の処理を行なう(ステップ36
12)。
【0125】次に、「(1)日付が暦日である。」330
3の文情報と親の「(1)下記のいずれかである。」33
02のプログラム制御種別(条件(論理和))を有効グラフ
作成モジュール2009に渡し、文情報ノードを作成を
指示する。(ステップ3629)。
【0126】次に、文情報ノードカレントポインタに
「(1)日付が暦日である。」の文情報ノード3321の
アドレスをセットする(ステップ3630)。
【0127】図31は有効グラフ作成処理の詳細を示す
ものであり、ここでは、まず、子の文情報ノード前アド
レスが「NULL」か否かの判定を行なう。すると、子の文
情報ノード前アドレス値は未設定のために子の文情報ノ
ード前アドレス=NULLとなり「Y」の条件が成立する
(ステップ3713)。
【0128】そこで、子の文情報ノード先頭アドレスに
「(1)日付が暦日である。」の文情報ノード3321を
セットし、子の文情報ノード先頭アドレスを記憶する。
(ステップ3731)。
【0129】子の文情報ノード前アドレスに文の解析を
終了した「(1)日付が暦日である。」の文情報ノード3
321をセットする(ステップ3719)。
【0130】このときに、有効グラフ展開エリア201
0の内容は図34(b)に示すようなものとなり、文情
報として「(1)日付が暦日である。」が論理条件(和)の
文情報ノード3321として作成される。
【0131】次に、「(2)日付が空白である。」330
4を処理する状態になる。
【0132】次に、仕様書データ展開エリア2004よ
り、「(1)日付が暦日である。」3303の次の文レコ
ードを1レコード読み込む。すると、「(2)日付が空白
である。」3304が読み込まれる(ステップ352
0)。
【0133】次に、同じレベルの文があるかの判定を行
ない、文がある場合には文の読み込みループの処理を続
行する(ステップ3521)。
【0134】次に、子の文情報の有無の判定を行なう
(ステップ3540)。すると、子の文情報が存在しな
いために「子の文情報=有り」で「N」が成立する。
(ステップ3540)。
【0135】そこで、読み込んだ「(2)日付が空白であ
る。」3304の文レコードから文のプログラの制御種
別を獲得する(ステップ3607)。
【0136】次に、獲得したプログラムの制御種別を判
定する。すると、「(2)日付が空白である。」3304
は修飾属性に該当するため、「プログラムの制御種別=
修飾」の「Y」の条件が成立し、修飾属性の処理を行な
う(ステップ3612)。
【0137】次に、「(2)日付が空白である。」330
4の文情報と親の「(1)下記のいずれかである。」33
02のプログラム制御種別(条件(論理和))を有効グラフ
作成モジュール2009に渡し、文情報ノードを作成を
指示する。(ステップ3629)。
【0138】次に、文情報ノードカレントポインタに
「(2)日付が空白である。」の文情報ノード3322の
アドレスをセットする(ステップ3630)。
【0139】次に、子の文情報ノード前アドレスがNULL
かの判定を行なうと、子の文情報ノード前アドレス値は
「(1)日付が暦日である。」の文情報ノード3321が
セットされているために子の文情報ノード前アドレス≠
NULLとなり「N」の条件が成立する(ステップ371
3)。
【0140】次に、親の文情報の種別を判定すると
「(1)下記のいずれかである。」3302は条件属性に
該当するため、「プログラム制御種別=条件」の条件が
成立する(ステップ3717)。さらに、プログラム制御
種別を詳しく判定すると、条件(論理和)が成立する(ス
テップ3736)。
【0141】次に、「(1)日付が暦日である。」の文情
報ノード3321と「(2)日付が空白である。」の文情
報ノード3322の間に条件(論理和)の線3323を張
る(ステップ3737)。
【0142】次に、子の文情報ノード前アドレスに文の
解析を終了した「(2)日付が空白である。」3304の
文情報ノードをセットする(ステップ3719)。
【0143】このときに、有効グラフ展開エリア201
0の内容は図35(b)の状態となり、「(2)日付が空
白である。」が条件(論理和)の文情報ノード3322と
して作成され、「(1)日付が暦日である。」の文情報ノ
ード3321と「(2)日付が空白である。」の文情報ノ
ード3322との間に条件(倫理和)の線3323が張
られる。
【0144】次に、仕様書データ展開エリア2004よ
り、「(2)日付が空白である。」3304の次の文レコ
ードを1レコード読み込む(ステップ3520)。
【0145】次に、文があるかの判定を行なうと、該当
する文がないために、文の読み込みループの処理を抜け
る(ステップ3521)。
【0146】次に、子の文情報ノード先頭アドレスに記
憶しておいた「(1)日付が暦日である。」3303の文
情報アドレスを返す(ステップ3522)。
【0147】以上の手順で、再帰呼び出しの呼び出し元
に戻り、一時的に保留していた「(1)下記のいずれかで
ある。」3302の処理を続行する。
【0148】処理は、箇条書文章解析を再帰的に呼び出
した直後より開始する(ステップ3523)。
【0149】次に、読み込んだ「(1)下記のいずれかで
ある。」3302の文レコードからプログラムの制御種
別を獲得する(ステップ3607)。
【0150】次に、獲得したプログラムの制御種別を判
定するが、「(1)下記のいずれかである。」3302は
条件属性に該当するため、「プログラムの制御種別=条
件」の「Y」の条件が成立し、条件属性の処理を行なう
(ステップ3609)。
【0151】文情報ノードのカレントポインタして、箇
条書文章解析を再帰的に呼び出したときの戻り値の
「(1)日付が暦日である。」の文情報ノードアドレス3
321をセットする(ステップ3626)。
【0152】次に、子の文情報ノード前アドレスがNULL
かの判定を行なうと、子の文情報ノード前アドレス値は
未設定であるため、子の文情報ノード前アドレス=NULL
となり「Y」の条件が成立する(ステップ3713)。
【0153】そこで、子の文情報ノード先頭アドレスに
「(1)日付が暦日である。」の文情報ノード3321を
セットし、子の文情報ノード先頭アドレスとして記憶す
る(ステップ3731)。
【0154】子の文情報ノード前アドレスに文の解析を
終了した「(1)日付が暦日である。」の文情報ノード3
321をセットする(ステップ3719)。
【0155】このとき、有効グラフ展開エリア2010
の内容は図36(b)に示す状態となり、呼び出し元に
戻ったことにより、文情報のスタックが1つ戻り「論理
条件(積)」となる。
【0156】次に、「(2)下記の全てである」3305
を処理する状態になる。
【0157】そこで、仕様書データ展開エリア2004
より、「(1)下記のいずれかである。」3302の次の
文レコードを1レコード読み込むと、「(2)下記の全て
である」3305が読み込まれる(ステップ3520)。
【0158】次に、同じレベルの文があるかの判定を行
ない、文がある場合には、文の読み込みループの処理を
続行する(ステップ3506)。
【0159】次に、子の文情報の有無の判定を行なう
と、「(1)下記のいずれかである。」3302が存在す
るため、子の文情報=有りで「Y」が成立する。(ステ
ップ3540)。
【0160】ここで、「(2)下記の全てである」330
5の処理を一時的に保留し、「(2)下記の全てである」
3305の文情報をスタックし、「(2)下記の全てであ
る」3305の文情報を入力データ3501として箇条
書文章解析を再帰的に呼び出す(ステップ3523)。
【0161】このときに、入力データ3501は
「(2)下記の全てである」3305となり、有効グラ
フ展開エリア2010の内容は図37(b)に示す状態
になり、文情報として「論理条件(積)」4320がスタ
ックされる。
【0162】次に、「(1)次のいずれかである。」3
306を処理する状態になる。
【0163】箇条書文章解析を再帰的に呼び出したこと
により新たにフローチャートの先頭から処理が開始され
る。このときに、入力データとして「(2)下記の全て
である」3305の文情報を入力データとして獲得す
る。
【0164】最初に、処理の対象となっている子の文情
報ノード先頭アドレスにNULLをセットする(ステップ3
503)。同時に、子の文情報ノード前アドレスにNULL
をセットして初期設定を行なう(ステップ3504)。
【0165】次に、仕様書データ展開エリア2004よ
り、「(2)下記の全てである」3305の子の文レコ
ードを1レコード読み込むと、1番先頭の「(1)次の
いずれかである。」3306が読み込まれる(ステップ
3505)。
【0166】次に、同じレベルの文があるかの判定を行
なうが、すでに、「(1)次のいずれかである。」33
06の文が読み込まれているので、「同じレベルの文あ
り」となり、文の読み込みループの処理を続行する(ス
テップ3506)。
【0167】次に、同じレベルの文があるかの判定を行
う。すると、「(1)口座種別を普通である。」330
7が存在するために、「子の文情報=有り」で「Y」が
成立する。(ステップ3540)。
【0168】ここで、「(1)次のいずれかである。」
3306の処理を一時的に保留し、「(1)次のいずれ
かである。」3306の文情報をスタックし、「(1)
次のいずれかである。」3306の文情報を入力データ
3501として箇条書文章解析を再度、再帰的に呼び出
す(ステップ3523)。
【0169】このときに、入力データ3501は
「(1)次のいずれかである。」3306となり、有効
グラフ展開エリア2010の内容は図38(b)に示す
状態になり、文情報として「論理式(和)」4420がス
タックされる。
【0170】次に、「(1)口座種別が普通である。」
3307を処理する状態になる。
【0171】箇条書文章解析を再帰的に呼び出したこと
により新たにフローチャートの先頭から処理が開始され
る。このときに、入力データとして「(1)次のいずれ
かである。」3306の文情報を入力データとして獲得
する。
【0172】最初に、処理の対象となっている子の文情
報ノード先頭アドレスにNULLをセットする(ステップ3
503)。同時に、子の文情報ノード前アドレスにNULL
をセットして初期設定を行なう(ステップ3504)。
【0173】次に、仕様書データ展開エリア2004よ
り、「(1)次のいずれかである。」3306の子の文レ
コードを1レコード読み込むと、1番先頭の「(1)口
座種別が普通である。」3307が読み込まれる(ステ
ップ3505)。
【0174】次に、同じレベルの文があるかの判定を行
なうが、すでに、「(1)口座種別が普通である。」3
307の文が読み込まれているので、「同じレベルの文
あり」となり、文の読み込みループの処理を続行する
(ステップ3506)。
【0175】次に、同じレベルの文があるかの判定を行
う。すると、子の文情報が存在しないために「子の文情
報=有り」で「N」が成立する(ステップ3540)。
【0176】次に、読み込んだ「(1)口座種別が普通
である。」3307の文レコードからプログラムの制御
種別を獲得する(ステップ3607)。
【0177】次に、獲得したプログラムの制御種別を判
定すると、「(1)口座種別が普通である。」3307
は修飾属性に該当するため、「プログラムの制御種別=
修飾」の「Y」の条件が成立し、修飾属性の処理を行な
う(ステップ3612)。
【0178】次に、「(1)口座種別が普通である。」
3307の文情報と親の「(1)次のいずれかであ
る。」3306のプログラム制御種別(式(論理和))を
有効グラフ作成モジュール2009に渡し、文情報ノー
ドを作成を指示する(ステップ3629)。
【0179】次に、文情報ノードカレントポインタに
「(1)口座種別が普通である。」の文情報ノード33
24のアドレスをセットする(ステップ3630)。
【0180】次に、子の文情報ノード前アドレスがNULL
かの判定を行なうと、子の文情報ノード前アドレス値は
未設定のため、子の文情報ノード前アドレス=NULLとな
り「Y」の条件が成立する(ステップ3713)。
【0181】子の文情報ノード先頭アドレスに「(1)
口座種別が普通である。」の文情報ノード3324をセ
ットし、子の文情報ノード先頭アドレスとして記憶する
(ステップ3731)。
【0182】子の文情報ノード前アドレスに文の解析を
終了した「(1)口座種別が普通である。」の文情報ノ
ード3324をセットする(ステップ3719)。
【0183】このときに、有効グラフ展開エリア201
0の内容は図39(b)に示す状態となり、文情報とし
て「(1)口座種別が普通である。」が式の文情報ノー
ド3324として作成される。
【0184】次に、「(2)口座種別が当座である。」
3308を処理する状態になる。
【0185】次に、仕様書データ展開エリア2004よ
り、「(1)口座種別が普通である。」3307の次の
文レコードを1レコード読み込むと、「(2)口座種別
が当座である。」3308が読み込まれる(ステップ3
520)。
【0186】次に、同じレベルの文があるかの判定を行
ない、文がある場合には文の読み込みループの処理を続
行する(ステップ3506)。
【0187】次に、同じレベルの文があるかの判定を行
う。すると、子の文情報が存在しないために「子の文情
報=有り」で「N」が成立する(ステップ3540)。
【0188】次に、読み込んだ「(2)口座種別が当座
である。」3308の文レコードから文のプログラの制
御種別を獲得する(ステップ3607)。
【0189】次に、獲得したプログラムの制御種別を判
定すると、「(2)口座種別が当座である。」3308
は修飾属性に該当するため、「プログラムの制御種別=
修飾」の「Y」の条件が成立するので、修飾属性の処理
を行なう(ステップ3612)。
【0190】次に、「(2)口座種別が当座である。」
3308の文情報と親の「(1)次のいずれかであ
る。」3306のプログラム制御種別(式(論理和))を
有効グラフ作成モジュール2009に渡し、文情報ノー
ドを作成を指示する(ステップ3629)。
【0191】次に、文情報ノードカレントポインタに
「(2)口座種別が当座である。」の文情報ノード33
24のアドレスをセットする(ステップ3630)。次
に、子の文情報ノード前アドレスがNULLかの判定を行な
うと、子の文情報ノード前アドレスには「(1)口座種
別が普通である。」の文情報ノード3324がセットさ
れているため、子の文情報ノード前アドレス≠NULLとな
り「N」の条件が成立する(ステップ3713)。
【0192】次に、親の文情報ノードの種別を判定する
と「(1)次のいずれかである。」3306は式属性に
該当するため、プログラム制御種別=式の条件が成立す
る(ステップ3718)。
【0193】次に、「(1)口座種別が普通である。」
文情報ノード3324と「(2)口座種別が当座であ
る。」の文情報ノード3325の文情報ノードの間に式
の線3326を張る(ステップ3734)。
【0194】このときに、有効グラフ展開エリア201
0の内容は図40(b)に示す状態になり、文情報とし
て「(2)口座種別が当座である。」が論理式(和)の文
情報ノード3325として作成され、「(1)口座種別
が普通である。」文情報ノード3324と「(2)口座
種別が当座である。」の文情報ノード3325の間に式
の線3326が張られる。
【0195】次に、子の文情報ノード前アドレスに文の
解析を終了した「(2)口座種別が当座である。」33
08の文情報ノードをセットする(ステップ371
9)。
【0196】次に、仕様書データ展開エリア2004よ
り、「(2)口座種別が当座である。」3308の次の
文レコードを1レコード読み込む(ステップ352
0)。
【0197】次に、文があるかの判定を行なうと、該当
する文がないために、文の読み込みループの処理を抜け
る(ステップ3521)。
【0198】次に、子の文情報ノード先頭アドレスに記
憶しておいた「(1)口座種別が普通である。」文情報
ノードのアドレス3324を返す(ステップ352
2)。
【0199】以上の手順で、再帰呼び出しの呼び出し元
に戻り、一時的に保留していた「(1)次のいずれかで
ある。」3306の処理を続行する。
【0200】次に、読み込んだ「(1)次のいずれかで
ある。」3306の文レコードからプログラムの制御種
別を獲得する(ステップ3607)。そして、獲得した
プログラムの制御種別を判定すると、「(1)次のいず
れかである。」3306は式属性に該当するため、「プ
ログラムの制御種別=式」の「Y」の条件が成立し、式
属性の処理を行なう(ステップ3610)。
【0201】次に、「(1)次のいずれかである。」3
306の文情報と親の「(2)下記の全てである」33
05のプログラム制御種別(条件(論理積))を有効グラ
フ作成モジュール2009に渡し、文情報ノード作成を
指示する(ステップ3626)。
【0202】次に、文情報ノードカレントポインタに
「(1)次のいずれかである。」の文情報ノード332
7の式の線を張る(ステップ3627)。
【0203】次に、文情報ノードカレントアドレスに
「(1)次のいずれかである。」の文情報ノード332
7のアドレスをセットする(ステップ3628)。
【0204】次に、子の文情報ノード前アドレスがNULL
かの判定を行なうと、子の文情報ノード前アドレス値は
未設定であるため、子の文情報ノード前アドレス=NULL
となり、「Y」の条件が成立する(ステップ371
3)。
【0205】子の文情報先頭アドレスに「(1)次のい
ずれかである。」の文情報ノード3327をセットし、
子の文情報先頭アドレスとして記憶する(ステップ37
31)。
【0206】子の文情報ノード前アドレスに文の解析を
終了した「(1)次のいずれかである。」の文情報ノー
ド3327をセットする(ステップ3519)。
【0207】このとき、有効グラフ展開エリア2010
の内容は図41(b)に示す状態になり、「(1)次の
いずれかである。」の文情報ノード3327が作成さ
れ、呼び出し元に戻ったことにより、文情報のスタック
が1つ戻り「論理(積)」となる。
【0208】次に、「(2)口座番号が数字である。」
3309を処理する状態になる。
【0209】次に、仕様書データ展開エリア2004よ
り、「(1)次のいずれかである。」3306の次の文
レコードを1レコード読み込むと、「(2)口座番号が
数字である。」3309が読み込まれる(ステップ35
20)。
【0210】次に、同じレベルの文があるかの判定を行
ない、文がある場合には文の読み込みループの処理を続
行する(ステップ3506)。
【0211】次に、子の文情報の有無の判定を行なう
と、子の文情報が存在しないため、「子の文情報=有
り」で「N」が成立する(ステップ3540)。
【0212】次に、読み込んだ「(2)口座番号が数字
である。」3309の文レコードから文のプログラの制
御種別を獲得する(ステップ3607)。
【0213】次に、獲得したプログラムの制御種別を判
定する。すると、「(2)口座番号が数字である。」3
309は修飾属性に該当するため、「プログラムの制御
種別=修飾」の「Y」の条件が成立し、修飾属性の処理
を行なう(ステップ3612)。
【0214】次に、「(2)口座番号が数字である。」
3309の文情報と親の「(2)下記の全てである」3
305のプログラム制御種別(条件(論理積))を有効グラ
フ作成モジュール2009に渡し、文情報ノードの作成
を指示する(ステップ3629)。
【0215】次に、文情報ノードカレントポインタに
「(2)口座番号が数字である。」の文情報ノード33
28のアドレスをセットする(ステップ3630)。
【0216】次に、子の文情報ノード前アドレスがNULL
かの判定を行なうと、子の文情報ノード前アドレス値は
「(1)次のいずれかである。」の文情報ノード332
7がセットされているため、子の文情報ノード前アドレ
ス=NULLとなり「N」の条件が成立する(ステップ37
13)。
【0217】次に、親の文情報ノードの種別を判定する
と「(2)下記の全てである。」は条件属性に該当する
ため、プログラム制御種別=条件の「Y」が成立する
(ステップ3717)。
【0218】さらに、プログラム制御種別を詳しく判定
すると、条件(論理積)が成立する(ステップ373
4)。
【0219】次に、「(1)次のいずれかである。」の
文情報ノード3327との「(2)口座番号が数字であ
る。」の文情報ノード3328の間に条件(論理積)の
線3329を張る(ステップ3735)。
【0220】次に、子の文情報ノード前アドレスに文の
解析を終了した「(2)口座番号が数字である。」の文
情報ノード3328をセットする(ステップ371
9)。
【0221】このとき、有効グラフ展開エリア2010
の内容は図42(b)に示す状態になり、文情報として
「(2)口座番号が数字である。」が条件(論理積)の文
情報ノード3328として作成され、「(1)次のいず
れかである。」の文情報ノード3327と「(2)口座
番号が数字である。」の文情報ノード3328の間に条
件(論理積)の線3329が張られる。
【0222】次に、仕様書データ展開エリア2004よ
り、「(2)口座番号が数字である。」3309の次の
文レコードを1レコード読み込む(ステップ352
0)。
【0223】次に、文があるかの判定を行なうと、該当
する文がないために、文の読み込みループの処理を抜け
る(ステップ3521)。
【0224】次に、子の文情報ノード先頭アドレスに記
憶しておいた「(1)次のいずれかである。」の文情報
ノード3327のアドレスを返す(ステップ352
2)。
【0225】以上の手順で、再帰呼び出しの呼び出し元
に戻り、一時的に保留していた「(2)下記の全てであ
る」3305の処理を続行する。
【0226】処理は、箇条書文章解析を再帰的に呼び出
した直後より開始する(ステップ3525)。
【0227】次に、読み込んだ「(2)下記の全てであ
る」3305の文レコードからプログラムの制御種別を
獲得する(ステップ3607)。
【0228】次に、獲得したプログラムの制御種別を判
定するが、「(2)下記の全てである」3305は条件
属性に該当するため、「プログラムの制御種別=条件」
の「Y」の条件が成立し、条件属性の処理を行なう(ス
テップ3609)。文情報ノードのカレントポインタし
て、箇条書文章解析を再帰的に呼び出したときの戻り値
の「(1)次のいずれかである。」の文情報ノード33
27をセットする(ステップ3626)。
【0229】次に、子の文情報ノード前アドレスがNULL
かの判定を行なうと、子の文情報ノード前アドレス値は
「(1)日付が暦日である。」の文情報ノード3321
がセットされているため、子の文情報ノード前アドレス
=NULLとなり「N」の条件が成立する(ステップ371
3)。
【0230】次に、親の文の文情報ノードの種別を判定
すると、「下記の全てである。」3301の文情報は条
件属性に該当するため、プログラム制御種別=条件の
「Y」が成立する(ステップ3517)。さらに、プロ
グラム制御種別を詳しく判定すると条件(論理積)が成
立する(ステップ3734)。
【0231】次に、「(1)日付が暦日である。」の文
情報ノード3321、「(2)日付が空白である。」)の
文情報ノード3322と「(1)次のいずれかであ
る。」の文情報ノード3327の間に条件(論理積)の
線3330,3331を張る(ステップ3735)。
【0232】次に、子の文情報ノード前ポインタに文の
解析を終了した「(1)次のいずれかである。」の文情
報ノード3327をセットする(ステップ3719)。
【0233】このとき、有効グラフ展開エリア2010
の内容は図43(b)に示す状態になり、「(1)日付
が暦日である。」の文情報ノード3321、「(2)日
付が空白である。」)の文情報ノード3322と
「(1)次のいずれかである。」の文情報ノード332
7の間に条件(論理積)が張られる。
【0234】以降は、次に、仕様書データ展開エリア2
004より、「(2)下記の全てである」3305の次
の文レコードを1レコード読み込む(ステップ352
0)。
【0235】次に、文があるかの判定を行なうと、該当
する文がないために、文の読み込みループの処理を抜け
る(ステップ3521)。
【0236】次に、子の文情報ノード先頭アドレスに記
憶しておいた「(1)日付が暦日である。」の文情報ノ
ード3321のアドレスを返す(ステップ3522)。
【0237】以上の手順で、再帰呼び出しの呼び出し元
に戻り、一時的に保留していた「下記の全てである」3
301の処理を続行する。
【0238】次に、読み込んだ「下記の全てである。」
3301の文レコードからプログラムの制御種別を獲得
する(ステップ3607)。
【0239】処理は、箇条書文章解析を再帰的に呼び出
した直後より開始する(ステップ3523)。
【0240】次に、獲得したプログラムの制御種別を判
定する。「下記の全てである。」3301は条件属性に
該当するため、「プログラムの制御種別=条件」の
「Y」の条件が成立し、条件属性の処理を行なう(ステ
ップ3609)。文情報ノードのカレントポインタし
て、箇条書文章解析を再帰的に呼び出したときの戻り値
の「(1)日付が暦日である。」の文情報アドレス33
21をセットする(ステップ3626)。
【0241】次に、子の文情報ノード前アドレスがNULL
かの判定を行なうと、子の文情報ノード前アドレス値は
未設定のため、子の文情報ノード前アドレス=NULLとな
り「Y」の条件が成立する(ステップ3713)。
【0242】子の文情報ノード先頭アドレスに「(1)
日付が暦日である。」3303の文情報ノードをセット
し、子の文情報ノード先頭アドレスとして記憶する(ス
テップ3731)。
【0243】子の文情報ノード前アドレスに文の解析を
終了した「(1)日付が暦日である。」3303の文情
報ノードをセットする(ステップ3519)。
【0244】次に、仕様書データ展開エリア2004よ
り、「下記の全てである」3301の次の文レコードを
1レコード読み込む(ステップ3520)。
【0245】次に、文があるかの判定を行なうと、該当
する文がないために、文の読み込みループの処理を抜け
る(ステップ3521)。次に、子の文情報ノード先頭
アドレスに記憶しておいた「(1)日付が暦日であ
る。」の文情報ノード3321のアドレスを返す(ステ
ップ3522)。
【0246】以上の手順でプログラムの制御を表す有効
グラフが作成される。
【0247】図52〜図55に箇条書された文章330
0から作成された有効グラフ3320を元に実際にソー
スを生成する手順を示す。また、図44〜図45に生成
過程を順に示す。このうち、図44と図45とで生成過
程の全貌を概略的に示し、図46〜図51で各過程を詳
しく示している。
【0248】まず、各文に対応して作成するソース中に
記述されるソース生成規則は、次の4つ種類の規則に分
けることができる。
【0249】1.箇条書展開規則 箇条書された文章からソースを展開するための規則であ
り、箇条書された文が連続して続く場合は%で指定され
た位置に親の文を繰り返し展開し、そうでない場合は、
#S〜#E で指定された範囲を展開する。
【0250】2.文展開規則 箇条書された文を修飾する文を展開するための規則であ
り、&NEXT で表した位置に該当する文のソース生成規則
を展開する。
【0251】3.修飾展開規則 修飾文を展開するための規則であり、[〜] は該当する
修飾文が単独で使用された場合に生成するソース生成を
表し、{〜} は該当する修飾文が最後の修飾文の場合
にソース生成をしない範囲を表す。
【0252】4.用語展開規則 文中の「〜」の中に記述された用語の内容を展開するた
めの規則であり、$1〜$99 で表し、番号で指定され
た用語の情報を展開することを表す。
【0253】図52、図53は箇条書文章ソース生成の
フローチャート、図54は式展開のフローチャート、図
55は文展開のフローチャートを表す。
【0254】最初に、「日付が暦日である」の文情報ノ
ード3321の処理を行なう手順をフローチャートを用
いて説明する。
【0255】図52、図53の箇条書文章ソース生成の
フローチャートでは、入力データ5701として、有効
グラフの最初の「日付が暦日である」の文情報ノード3
321より処理を開始する。
【0256】最初に、「日付が暦日である」の文情報ノ
ード3321の情報を元にプログラムの制御種別を獲得
し、条件(論理和)属性を持つことから「下記のいずれ
かである。」のソース生成規則2350,2360を文
章・用語データ検索モジュール2008を使用してし獲
得する。この時に条件(論理和)の線がある場合には、
ソース生成規則の後半部分2360を「下記の全てであ
る。」のソース生成規則の前半部分2250に置き換え
てソース生成規則として読み込む(ステップ570
2)。
【0257】次に、読み込んだソース生成規則を1つづ
つ獲得し、最初の「&NEXT」4510を獲得する(ステッ
プ5703)。
【0258】次に、ソース生成規則があるかの判定を行
ない、ソース生成規則がある場合には、横ソース生成規
則獲得ループの中の処理を行なう(ステップ570
4)。
【0259】続いて、獲得したソース生成規則の種別の
判定を行なうと、「&NEXT」4510は文展開規則に該
当するため、ソース生成規則=文展開規則の判定で
「Y」が成立し、文展開規則の処理を行なう(ステップ
5706)。
【0260】次に「日付が暦日である」3303の属性
を判定すると、修飾属性に該当するため、文属性=修飾
展開の判定で「Y」が成立し、修飾展開の処理を行なう
(ステップ5729)。
【0261】次に、「日付が暦日である」3303のソ
ース生成規則2950を展開するために「日付が暦日で
ある」の文情報ノード3321の処理の処理を一時的に
保留し、「日付が暦日である」3303のソース生成規
則名を渡し修飾展開を呼び出す(ステップ5743)。
【0262】図55の文展開のフローチャートでは、入
力データ6001として「日付が暦日である」3303
のソース生成規則名を受け取る。「日付が暦日である」
のソース生成規則2950を文章・用語データ検索モジ
ュール2008を使用して獲得する(ステップ600
2)。
【0263】次に、読み込んだソース生成規則を1つづ
つを獲得し、最初の「CALL 'REKI_CHK'USING $1 R_COD
E」4520を獲得する(ステップ6003)。
【0264】次に、ソース生成規則があるかの判定を行
ない、ソース生成規則がある場合には文ソース生成規則
獲得ループの中の処理を行なう(ステップ6004)。
【0265】続いて、獲得したソース生成規則の種別の
判定を行なうと、「$1」は文展開規則に該当するた
め、ソース生成規則=用語展開規則の判定で「Y」が成
立し、用語展開規則の処理を行なう(ステップ600
7)。
【0266】次に、用語展開規則では、「〜が暦日であ
る」4531の「日付」4532の部分が置き換える規
則に該当するため、「CALL 'REKI_CHK' USING $1 R_CO
DE」の「$1」の部分を「日付」4532に対応する「D
ATE」4599で置き換える(ステップ6018)。
【0267】次に、「END-CALL」4533、「IF (R_CO
DE=0)」4534のソース生成規則は該当する規則がな
いため、そのままソースに出力される(ステップ600
8)。
【0268】次のソース生成規則はないため、修飾ソー
ス生成規則獲得ループを抜け、文展開のフローチャート
を終了する(ステップ6010)。ここまでで生成され
るソースは下記のようになる。
【0269】CALL 'REKI_CHK' USING DATE R_CODE END-CALL IF (R_CODE=0) これを図46では、符号5270で示している。
【0270】「日付が暦日である」3303の文展開を
終了したことにより、処理を一時的に保留していた箇条
書文章ソース生成より処理を開始する。処理は、文展開
を呼び出した位置より開始される(ステップ574
3)。
【0271】次の「THEN」4535のソース生成規則は
該当する規則がないため、そのままソースに出力される
(ステップ5707)。ここまでで生成されるソースは
下記のようになる。
【0272】THEN これを図46では、符号5271で示している。
【0273】次の「%%」4536は箇条書展開規則に該
当するため、ソース生成規則=箇条書展開規則の判定で
「Y」が成立し、箇条書展開規則の処理を行なう(ステ
ップ5705)。
【0274】次に、横方向のノードの有無を判定すると
「次のいずれかである。」の文情報ノード3327が存
在するため、「横方向のノード=あり」で「Y」の条件
が成立し、箇条書展開の処理を行なう(ステップ571
8)。
【0275】次に、「次のいずれかである。」3306
のソース生成規則を展開するために「日付が暦日であ
る」の文情報ノード3321の処理の処理を一時的に保
留し、入力データ5701として「次のいずれかであ
る。」の文情報ノード3327を渡し、箇条書文章ソー
ス生成を再帰的に呼び出す(ステップ5722)。
【0276】箇条書文章ソース生成を再帰的に呼出した
ことにより新たにフローチャートの先頭から処理が開始
される。このときの入力データ5701として「次のい
ずれかである。」の文情報ノード3327を入力データ
として獲得する。
【0277】最初に、「次のいずれかである。」の文情
報ノード3327の情報を元にプログラムの制御種別を
獲得し、条件(論理積)属性を持つことから「下記のい
ずれかである。」のソース生成規則2350,2360
を文章・用語データ検索モジュール2008を使用して
し獲得し、ソース生成規則として読み込む(ステップ5
702)。
【0278】次に、読み込んだソース生成規則を1つづ
つソース生成規則を獲得し、最初の「&NEXT」5213
を獲得する(ステップ5703)。
【0279】次に、ソース生成規則があるかの判定を行
ない、ソース生成規則がある場合には、横ソース生成規
則獲得ループの中の処理を行なう(ステップ570
4)。
【0280】続いて、獲得したソース生成規則の種別の
判定を行なうと、「&NEXT」5213は文展開規則に該
当するため、ソース生成規則=文展開規則の判定で
「Y」が成立し、文展開規則の処理を行なう(ステップ
5706)。
【0281】次に「次のいずれかである。」3306の
属性を判定すると、式属性に該当するために文属性=式
展開の判定で「Y」が成立し、式展開の処理を行なう
(ステップ5727)。
【0282】次に、「次のいずれかである。」3306
のソース生成規則を展開するために「次のいずれかであ
る。」の文情報ノード3327の処理を一時的に保留
し、入力データ5901として、「口座種別が普通であ
る。」の文情報ノード3324を渡し、式展開を呼び出
す(ステップ5726)。
【0283】図54の式展開のフローチャートでは、入
力データ5901として「口座種別が普通である。」の
文情報ノード3324を受け取る。
【0284】次に、「次のいずれかである。」のソース
生成規則2450を文章・用語データ検索モジュール2
008を使用してし獲得する(ステップ5902)。
【0285】次に、読み込んだソース生成規則を1つづ
つ獲得し、最初の「[IF(](&NEXT){OR}%%[)]」453
7を獲得する(ステップ5903)。
【0286】次に、ソース生成規則があるかの判定を行
ない、ソース生成規則がある場合には、式ソース生成規
則獲得ループの中の処理を行なう(ステップ5904)。
【0287】続いて、獲得したソース生成規則の種別の
判定を行なうと、「[IF(]」は修飾展開規則に該当する
ため、ソース生成規則=修飾展開規則の判定で「Y」が
成立し、修飾展開規則の処理を行なう(ステップ590
7)。
【0288】次に、ソース生成規則の種別を獲得する
と、ソース生成規則種別=[〜] の判定で「Y」が成立
し、[〜] の展開規則の処理を行なう(ステップ592
1)。
【0289】次に、「次のいずれかである。」が式がネ
ストして記述されているかの判定を行なうと、ネストし
て記述されていないために「ネストあり」の判定で
「N」が成立し、文展開規則の処理を行なう(ステップ
5926)。
【0290】[〜] の範囲の展開処理を行なうので「I
F(」をソースに出力する(ステップ5927)。
【0291】次に、「(」のソース生成規則は該当する
規則がないため、そのままソースに出力される(ステッ
プ5909)。
【0292】次に、「&NEXT」は文展開規則に該当する
ため、ソース生成規則=文展開規則の判定で「Y」が成
立し、文展開規則の処理を行なう(ステップ590
6)。次に「口座種別が普通である。」3324の属性
を判定すると、修飾属性に該当するため、文属性=修飾
展開の判定で「Y」が成立し、修飾展開の処理を行なう
(ステップ5914)。
【0293】次に、「口座種別が普通である。」330
7のソース生成規則を展開するために「次のいずれかで
ある。」の文情報ノード3327をの処理を一時的に保
留し、「口座種別が普通である。」3307のソース生
成規則名を渡し、修飾展開を呼び出す(ステップ591
5)。
【0294】図55の文展開のフローチャートでは、入
力データ6001として「口座種別が普通である。」3
307のソース生成規則名を受け取る。「口座種別が普
通である。」のソース生成規則2850を文・用語デー
タ検索モジュール2008を使用して獲得する(ステッ
プ6002)。
【0295】次に、読み込んだソース生成規則を1つづ
つ獲得し、最初の「[IF]$1-$2[)]」4538を獲得す
る(ステップ6003)。次に、ソース生成規則がある
かの判定を行ない、ソース生成規則がある場合には、文
ソース生成規則獲得ループの中の処理を行なう(ステッ
プ6004)。続いて、獲得したソース生成規則の種別
の判定を行なうと、[IF(] は修飾展開規則に該当するた
め、ソース生成規則=修飾展開規則の判定で「Y」が成
立し、修飾展開規則の処理を行なう(ステップ600
6)。
【0296】次に、ソース生成規則の種別を獲得する
と、ソース生成規則種別=[〜] の判定で「Y」が成立
し、[〜] の展開規則の処理を行なう(ステップ601
2)。
【0297】次に、「口座種別が普通である。」330
7が式がネストして記述されているかの判定を行なうと
「次のいずれかである。」を親にネストして記述されて
いるため、「ネストあり」の判定で「Y」が成立し、
「IF(」の出力をスキップする。(ステップ6013)。
【0298】次に、獲得したソース生成規則の種別の判
定を行なうと、「$1」は用語展開規則に該当するため
に、ソース生成規則=用語展開規則の判定で「Y」が成
立し、用語展開規則の処理を行なう(ステップ600
7)。
【0299】次に、用語展開規則では、「〜が〜であ
る」2850の「口座種別」4539の部分が置き換え
る規則に該当するために「[IF]$1-$2[)]」の「$1」
の部分を「口座種別」4539に対応する「KOUZA_COD
E」4540で置き換える(ステップ6018)。
【0300】次に、「=」のソース生成規則は該当する
規則がないため、そのままソースに出力される(ステッ
プ6008)。
【0301】次に、「$2」は文展開規則に該当するた
めに、ソース生成規則=用語展開規則の判定で「Y」が
成立し、用語展開規則の処理を行なう(ステップ600
7)。次に、用語展開規則では、「〜が〜である」28
50の「普通」4541の部分が置き換える規則に該当
するために「[IF]$1-$2[)]」の「$2」の部分を「普
通」4541に対応する「'0'」4542で置き換える
(ステップ6018)。
【0302】次に、[)] は修飾展開規則に該当するため
に、ソース生成規則=修飾展開規則の判定で「Y」が成
立し、修飾展開規則の処理を行なう(ステップ600
6)。
【0303】次に、ソース生成規則の種別を獲得する
と、ソース生成規則種別=[〜] の判定で「Y」が成立
し、[〜] の展開規則の処理を行なう(ステップ601
2)。次に、「口座種別が普通である。」3307が式
がネストして記述されているかの判定を行なうと、「次
のいずれかである。」を親にネストして記述されている
ために「ネストあり」の判定で「Y」が成立し、「)」
の出力をスキップする(ステップ6013)。
【0304】次のソース生成規則はないため、文ソース
生成規則獲得ループを抜け文展開のフローチャートを終
了する(ステップ6010)。
【0305】ここまでで生成されるソースはKOUZA_CODE
='0'となる。
【0306】「口座種別が普通である。」3307の文
展開を終了したことにより、処理を一時的に保留してい
た式展開の処理を開始する。処理は、文展開を呼び出し
た位置より開始される(ステップ5915)。
【0307】次に、「)」のソース生成規則は該当する
規則がないため、そのままソースに出力される(ステッ
プ5909)。次の「{OR}」は修飾展開規則に該当す
るためにソース生成規則=修飾展開規則の判定で「Y」
が成立し、修飾展開規則の処理を行なう(ステップ59
07)。
【0308】次に、ソース生成規則の種別を獲得する
と、ソース生成規則種別={〜} の判定で「Y」が成
立し、{〜}の展開規則の処理を行なう(ステップ59
22)。次に、「口座種別が普通である。」3307の
次の文があるかの判定を行なうと、「口座種別が当座で
ある。」3308があるため、次の文ありの判定で
「Y」が成立し、{〜}の展開規則の処理を行なう(ス
テップ5918)。{〜}の範囲の展開処理を行なうで
「OR」をソースに出力する(ステップ5919)。さら
に「%%」を読み込むと、箇条書展開規則に該当するため
にソース生成規則=箇条書展開規則の判定で「Y」が成
立し、箇条書展開規則の処理を行なう(ステップ590
5)。
【0309】次に、ノード有りの判定を行うと「口座種
別が当座である。」3308が存在するため、ノード有
りの判定で「Y」が成立し式展開規則の処理を行う(ス
テップ5912)。
【0310】次に、「口座種別が当座である。」330
8のソース生成規則を展開するために「口座種別が普通
である。」の文情報ノード3324の処理の処理を一時
的に保留し、「口座種別が当座である。」の文情報ノー
ド3325を渡し、式展開を再帰的に呼び出す(ステッ
プ5913)。
【0311】式展開を再帰的にことにより新たにフロー
チャートの先頭から処理が開始される。
【0312】このときの入力データとして「口座種別が
当座である。」の文情報ノード3325を入力データと
して獲得する。
【0313】次に、「次のいずれかである。」のソース
生成規則2450を文章・用語データ検索モジュール2
008を使用してし獲得する(ステップ5902)。
【0314】次に、読み込んだソース生成規則を1つづ
つ獲得し、最初の「[IF(](&NEXT){OR}%%[)]」454
3を獲得する(ステップ5903)。
【0315】次に、ソース生成規則があるかの判定を行
ない、ソース生成規則がある場合には、式ソース生成規
則獲得ループの中の処理を行なう(ステップ590
4)。続いて、獲得したソース生成規則の種別の判定を
行なうと、「[IF(]」は修飾展開規則に該当するため
に、ソース生成規則=修飾展開規則の判定で「Y」が成
立し、修飾展開規則の処理を行なう(ステップ590
7)。
【0316】次に、ソース生成規則の種別を獲得する
と、ソース生成規則種別=[〜] の判定で「Y」が成立
し、[〜] の展開規則の処理を行なう(ステップ592
1)。次に、「口座種別が当座である。」3308が式
がネストして記述されているかの判定を行なうと、「次
のいずれかである。」を親にネストして記述されている
ために「ネストあり」の判定で「Y」が成立し、「I
F(」の出力をスキップする(ステップ5926)。
【0317】次に、「(」のソース生成規則は該当する
規則がないため、そのままソースに出力される(ステッ
プ5909)。
【0318】次に、「&NEXT」は文展開規則5105に
該当するためにソース生成規則=文展開規則の判定で
「Y」が成立し、文展開規則の処理を行なう(ステップ
5906)。
【0319】次に「口座種別が当座である。」3308
の属性を判定すると修飾属性に該当するために、文属性
=修飾展開の判定で「Y」が成立し、修飾展開の処理を
行なう(ステップ5914)。
【0320】次に、「口座種別が当座である。」330
8のソース生成規則を展開するために「口座種別が当座
である。」の文情報ノード3325の処理の処理を一時
的に保留し、「口座種別が当座である。」3308のソ
ース生成規則名を渡し、修飾展開を呼び出す(ステップ
5915)。
【0321】図55の文展開のフローチャートでは、入
力データ6001として「口座種別が当座である。」3
308のソース生成規則名を受け取る。
【0322】「口座種別が当座である。」のソース生成
規則2850を文章・用語データ検索モジュール200
8を使用して獲得する(ステップ6002)。次に、読
み込んだソース生成規則を1つづつ獲得し、最初の「[I
F)] $1=$2[)]」4544を獲得する(ステップ60
03)。
【0323】次に、ソース生成規則があるかの判定を行
ない、ソース生成規則がある場合には、文ソース生成規
則獲得ループの中の処理を行なう(ステップ600
4)。続いて、獲得したソース生成規則の種別の判定を
行なうと、[IF(] は修飾展開規則に該当するために、ソ
ース生成規則=修飾展開規則の判定で「Y」が成立し、
修飾展開規則の処理を行なう(ステップ6006)。
【0324】次に、ソース生成規則の種別を獲得する
と、ソース生成規則種別=[〜] の判定で「Y」が成立
し、[〜] の展開規則の処理を行なう(ステップ601
2)。
【0325】次に、「口座種別が当座である。」330
7が式がネストして記述されているかの判定を行なう
と、「次のいずれかである。」を親にネストして記述さ
れているために「ネストあり」の判定で「Y」が成立
し、「IF(」の出力をスキップする(ステップ601
3)。
【0326】次に、獲得したソース生成規則の種別の判
定を行なうと、「$1」は用語展開規則に該当するため
に、ソース生成規則=用語展開規則の判定で「Y」が成
立し、用語展開規則の処理を行なう(ステップ600
7)。
【0327】次に、用語展開規則では、「〜が〜であ
る」のソース生成規則2850の「口座種別」の部分が
置き換える規則に該当するために「[IF)]$1=$
2[)]」の「$1」の部分を「口座種別」4545に対応
する「KOUZA_CODE」4546で置き換える(ステップ6
018)。
【0328】次に、「=」のソース生成規則は該当する
規則がないため、そのままソースに出力される(ステッ
プ6008)。次に、「$2」は用語展開規則に該当す
るために、ソース生成規則=用語展開規則の判定で
「Y」が成立し、用語展開規則の処理を行なう(ステッ
プ6007)。
【0329】次に、用語展開規則では、「〜が〜であ
る」のソース生成規則2850の「当座」の部分が置き
換え規則に該当するために「[IF)]$1=$2[)]」の
「$2」の部分を「当座」4547に対応する「'1'」
4548で置き換える(ステップ6018)。
【0330】次に、[)] は修飾展開規則に該当するため
に、ソース生成規則=修飾展開規則の判定で「Y」が成
立し、修飾展開規則の処理を行なう(ステップ600
6)。次に、ソース生成規則の種別を獲得するとソース
生成規則種別=[〜] の判定で「Y」が成立し、[〜] の
展開規則の処理を行なう(ステップ6012)。次に、
「口座種別が当座である。」3308が式がネストして
記述されているかの判定を行なうと、「次のいずれかで
ある。」を親にネストして記述されているために「ネス
トあり」の判定で「Y」が成立し、「)」の出力をスキ
ップする(ステップ6013)。
【0331】次のソース生成規則はないため、ソース生
成規則獲得ループを抜け文展開のフローチャートを終了
する(ステップ6010)。
【0332】ここまでで生成されるソースはKOUZA_CODE
='1' となる。
【0333】次に、「口座種別が当座である。」330
8の文展開を終了したことにより、処理を一時的に保留
していた式展開の処理を開始する。処理は、文展開を呼
び出した位置より開始される(ステップ5915)。
【0334】次に、「)」のソース生成規則は該当する
規則がないため、そのままソースに出力される(ステッ
プ5909)。次の「{OR}」は修飾展開規則に該当す
るため、ソース生成規則=修飾展開規則の判定で「Y」
が成立し、修飾展開規則の処理を行なう(ステップ59
07)。
【0335】次に、「口座種別が当座である。」330
8の次の文があるかの判定を行なうと、次の文がないた
めに「次の文あり」の判定で「N」が成立し、「OR」の
出力をスキップする(ステップ5918)。さらに「%
%」は箇条書展開規則に該当するためにソース生成規則
=箇条書展開規則の判定で「Y」が成立し、箇条書展開
規則の処理を行なう(ステップ5905)。
【0336】次に、「口座種別が当座である。」330
8の次の文があるかの判定を行なうと、次の文がないた
めに次の文ありの判定で「N」が成立し、箇条書展開規
則の出力をスキップする(ステップ5912)。
【0337】「[)]」は修飾展開規則に該当するため
に、ソース生成規則=修飾展開規則の判定で「Y」が成
立し、修飾展開規則の処理を行なう(ステップ590
7)。次に、「口座種別が当座である。」3308が式
がネストして記述されているかの判定を行なうと、「次
のいずれかである。」を親にネストして記述されている
ために「ネストあり」の判定で「Y」が成立し、「)」
の出力をスキップする(ステップ5926)。
【0338】次のソース生成規則はないためにソース生
成規則獲得ループを抜け式展開のフローチャートを終了
する(ステップ5911)。
【0339】ここまでで生成されるソースは(KOUZA_COD
E ='1')となる。
【0340】「口座種別が当座である。」3308の式
展開を終了したことにより、処理を一時的に保留してい
た式展開の処理を開始する。処理は、文展開を呼び出し
た位置より開始される(ステップ5915)。
【0341】次に、「)」のソース生成規則は該当する
規則がないため、そのままソースに出力される(ステッ
プ5909)。
【0342】「[)]」は修飾展開規則に該当するため
に、ソース生成規則=修飾展開規則の判定で「Y」が成
立し、修飾展開規則の処理を行なう(ステップ590
7)。
【0343】次に、ソース生成規則の種別を獲得する
と、ソース生成規則種別=[〜] の判定で「Y」が成立
し、[〜] の展開規則の処理を行なう(ステップ592
1)。
【0344】次に、「次のいずれかである。」が式がネ
ストして記述されているかの判定を行なうとネストして
記述されていないために「ネストあり」の判定で「N」
が成立し、修飾展開規則の処理を行なう(ステップ59
26)。
【0345】[〜] の範囲の展開処理を行なうので「)」
をソースに出力する(ステップ5927)。
【0346】次のソース生成規則はないためにソース生
成規則獲得ループを抜け、式展開のフローチャートを終
了する(ステップ5911)。
【0347】 IF ((KOUZA_CODE ='0')OR (KOUZA_CODE ='1')) これを図46では符号5272で示している。
【0348】「次のいずれかである。」3305の文展
開を終了したことにより、処理を一時的に保留していた
箇条書文章ソース生成を開始する。処理は、式展開を呼
び出した位置より開始される(ステップ5726)。
【0349】次の「THEN」4535のソース生成規則は
該当する規則がないためにそのままソースに出力される
(ステップ5707)。
【0350】THEN これを図46では符号5273で示している。
【0351】次の「%%」4536は箇条書展開規則に該
当するために、ソース生成規則=箇条書展開規則の判定
で「Y」が成立し、箇条書展開規則の処理を行なう(ス
テップ5705)。
【0352】次に、横方向のノードの有無を判定する
と、「口座番号が数字である。」の文情報ノード332
8が存在するため、横方向のノード=ありで「Y」の条
件が成立し、箇条書展開の処理を行なう(ステップ57
22)。
【0353】次に、「口座番号が数字である。」330
9のソース生成規則を展開するために「次のいずれかで
ある。」の文情報ノード3327の処理の処理を一時的
に保留し、入力データ5701として「口座番号が数字
である。」の文情報ノード3328を渡し、箇条書文章
ソース生成処理を再帰的に呼び出す。
【0354】箇条書文章ソース生成処理を再帰的に呼び
出したことにより、新たにフローチャートの先頭から処
理が開始される。このときの入力データとして「口座番
号が数字である。」の文情報ノード3328を入力デー
タとして獲得する。
【0355】最初に、「口座番号が数字である。」の文
情報ノード3328の情報を元にプログラムの制御種別
を獲得し、条件(論理積)属性を持つことから「下記の全
てである。」のソース生成規則2250,2260を文
章・用語データ検索モジュール2008を使用して獲得
する(ステップ5702)。
【0356】次に、読み込んだソース生成規則を1つづ
つ獲得し、最初の「&NEXT」4549を獲得する。次
に、ソース生成規則があるかの判定を行ない、ソース生
成規則がある場合には、横ソース生成規則獲得ループの
中の処理を行なう(ステップ5704)。続いて、獲得
したソース生成規則の種別の判定を行なうと、「&NEX
T」4549は文展開規則に該当するために、ソース生
成規則=文展開規則の判定で「Y」が成立し、文展開規
則の処理を行なう(ステップ5706)。
【0357】次に「口座番号が数字である。」3309
の属性を判定すると、式属性に該当するために、文属性
=修飾展開の判定で「Y」が成立し、修飾展開の処理を
行なう(ステップ5729)。
【0358】次に、「口座番号が数字である。」330
9のソース生成規則を展開するために「口座番号が数字
である。」の文情報ノード3328の処理の処理を一時
的に保留し、入力データ6001として、「口座番号が
数字である。」3309のソース生成規則名を渡し、文
展開を呼び出す(ステップ5743)。
【0359】図54の文展開のフローチャートでは、入
力データ6001として「口座番号が数字である。」3
309のソース生成規則名を受け取る。
【0360】次に、「口座番号が数字である。」のソー
ス生成規則4450を文・用語データ検索モジュール2
008を使用して獲得する(ステップ6002)。
【0361】次に、読み込んだソース生成規則を1つづ
つ獲得し、最初の「[IF(]$1=NUMERIC[)]」4550を
獲得する(ステップ6003)。次に、ソース生成規則
があるかの判定を行ない、ソース生成規則がある場合に
は、文ソース生成規則獲得ループの中の処理を行なう
(ステップ6004)。
【0362】続いて、獲得したソース生成規則の種別の
判定を行なうと、「[IF(]」は修飾展開規則に該当する
ために、ソース生成規則=修飾展開規則の判定で「Y」
が成立し、修飾展開規則の処理を行なう(ステップ60
06)。
【0363】次に、ソース生成規則の種別を獲得する
と、ソース生成規則種別=[〜] の判定で「Y」が成立
し、[〜] の展開規則の処理を行なう(ステップ601
2)。
【0364】次に、「口座番号が数字である。」330
9が式がネストして記述されているかの判定を行なう
と、ネストして記述されていないために「ネストあり」
の判定で「N」が成立し、文展開規則の処理を行なう
(ステップ6013)。[〜] の範囲の展開処理を行なの
で、「IF(」をソースに出力する(ステップ6014)。
【0365】次に、獲得したソース生成規則の種別の判
定を行なうと、「$1」は用語展開規則に該当するため
に、ソース生成規則=用語展開規則の判定で「Y」が成
立し、用語展開規則の処理を行なう(ステップ600
7)。
【0366】次に、用語展開規則では、「〜が数字であ
る」5161の「口座番号」4551の部分が置き換え
る規則に該当するために「[IF(]$1=NUMERIC[)]」の
「$1」の部分を「口座番号」4551に対応する「KOU
ZA_NO」4552で置き換える(ステップ6018)。
【0367】次に、「=NUMERIC」のソース生成規則は
該当する規則がないためにそのままソースに出力する
(ステップ6008)。「)]」は文展開規則に該当する
ために、ソース生成規則=修飾展開規則の判定で「Y」
が成立し、修飾展開規則の処理を行なう(ステップ60
06)。
【0368】次に、ソース生成規則の種別を獲得する
と、ソース生成規則種別=[〜] の判定で「Y」が成立
し、[〜] の展開規則の処理を行なう(ステップ601
2)。次に、「口座番号が数字である。」が式がネスト
して記述されているかの判定を行なうと、ネストして記
述されていないために「ネストあり」の判定で「N」が
成立し、文展開規則の処理を行なう(ステップ601
3)。
【0369】[〜] の範囲の展開処理を行なうで「)」を
ソースに出力する(ステップ6014)。
【0370】次のソース生成規則はないためにソース生
成規則獲得ループを抜け、文展開のフローチャートを終
了する(ステップ6009)。
【0371】IF (KOUZA_NO =NUMERIC) これを図46では符号5274で示している。
【0372】「口座番号が数字である。」3309の文
展開を終了したことにより、処理を一時的に保留してい
た箇条書文章ソース生成を開始する。処理は、文展開を
呼び出した位置より開始される(ステップ5743)。
【0373】次の「THEN」4553のソース生成規則
は該当する規則がないためにそのままソースに出力され
る(ステップ5707)。
【0374】THEN これを図46では符号5275で示している。
【0375】次の「%%」4554は箇条書展開規則に該
当するために、ソース生成規則=箇条書展開規則の判定
で「Y」が成立し、箇条書展開規則の処理を行なう(ス
テップ5705)。
【0376】次に、横方向のノードの有無を判定する
と、該当する文情報ノードが存在しないために横方向の
ノード=ありで「N」の条件が成立し、#S〜#E の展開
の処理を行なう(ステップ5718)。
【0377】#S〜#E の範囲の展開処理を行なうので
「@処理」をソースに出力する(ステップ5719)。
【0378】次のソース生成規則「#>」4555は横方
向のソース生成規則の終了を表す記号であるために、横
方向ソース生成規則獲得ループを抜ける(ステップ57
09)。
【0379】@処理 これを図46では符号5276で示している。
【0380】さらに、読み込んだソース生成規則を1つ
づつ獲得する(ステップ5810)。
【0381】次に、ソース生成規則があるかの判定を行
ない、ソース生成規則がある場合には、縦ソース生成規
則獲得ループの中の処理を行なう(ステップ581
1)。
【0382】次に、「ELSE」、「CONTINUE」、「END
-IF」4556はすべて該当するソース生成規則がない
ため、そのままソース中に出力される(ステップ581
5)。
【0383】次のソース生成規則はないため、縦ソース
生成規則獲得ループを抜け箇条書文章ソース生成を終了
する(ステップ5817)。
【0384】ELSE CONTINUE END-IF これを図46では符号5278で示している。
【0385】「口座番号が数字である。」の箇条書文章
ソース生成を終了したことにより、処理を一時的に保留
していた「次のいずれかである」の文情報ノード332
7よりの箇条書文章ソース生成を開始する。
【0386】処理は、箇条書文章ソース生成を再帰的に
呼び出した直後から開始される(ステップ5722)。
【0387】次のソース生成規則「#>」は横方向のソー
ス生成規則の終了を表す記号であるために、横方向ソー
ス生成規則獲得ループを抜ける(ステップ5709)。
【0388】さらに、読み込んだソース生成規則を1つ
づつ獲得する(ステップ5810)。
【0389】次に、ソース生成規則があるかの判定を行
ない、ソース生成規則がある場合には、縦ソース生成規
則獲得ループの中の処理を行なう(ステップ581
1)。
【0390】次に、「ELSE」、「CONTINUE」、「END
-IF」4598はすべて該当するソース生成規則がない
ため、そのままソース中に出力される(ステップ581
5)。次のソース生成規則はないために縦ソース生成規
則獲得ループを抜け、箇条書文章ソース生成を終了する
(ステップ5817)。
【0391】ELSE CONTINUE END-IF これを図46では符号5279で示している。
【0392】「次のいずれかである」の箇条書文章ソー
ス生成を終了したことにより、処理を一時的に保留して
いた「日付が暦日である。」の文情報ノード3321よ
り箇条書文章ソース生成を開始する。
【0393】処理は、箇条書文章ソース生成を再帰的に
呼び出した直後から開始される(ステップ5722)。
【0394】次のソース生成規則「#>」4557は横方
向のソース生成規則の終了を表す記号であるために、横
方向ソース生成規則獲得ループを抜ける(ステップ57
09)。さらに、読み込んだソース生成規則を1つづつ
獲得する(ステップ5810)。
【0395】次に、ソース生成規則があるかの判定を行
ない、ソース生成規則がある場合には、縦ソース生成規
則獲得ループの中の処理を行なう(ステップ581
1)。
【0396】次に、「ELSE」4558は該当するソース
生成規則がないためにそままソース中に出力される(ス
テップ5815)。
【0397】ELSE これを図46では符号5280で示している。次の「%
%」4559は箇条書展開規則に該当するために、ソー
ス生成規則=箇条書展開規則の判定で「Y」が成立し、
箇条書展開規則の処理を行なう(ステップ5812)。
【0398】次に、縦方向のノードの有無を判定すると
「日付が空白である。」の文情報ノード3322が存在
するため、縦方向のノード=ありで「Y」の条件が成立
し、箇条書展開の処理を行なう。
【0399】次に、「日付が空白である。」3304の
ソース生成規則を展開するために「日付が暦日である」
の文情報ノード3321の処理の処理を一時的に保留
し、入力データ5701として「日付が空白である。」
の文情報ノード3322を渡し、箇条書文章ソース生成
を再帰的に呼び出す。
【0400】箇条書文章ソース生成を再帰的に呼び出し
たことにより、新たにフローチャートの先頭から処理が
開始される。このときの入力データとして「日付が空白
である。」の文情報ノード3322を入力データとして
獲得する。
【0401】最初に、「日付が空白である。」の文情報
ノード3322の情報を元にプログラムの制御種別を獲
得し、条件(論理積)属性を持つことから「下記の全てで
ある。」のソース生成規則2250,2260を文章・
用語データ検索モジュール2008を使用してし獲得す
る(ステップ5702)。
【0402】次に、読み込んだソース生成規則を1つづ
つ獲得し、最初の「&NEXT」4560を獲得する。次
に、ソース生成規則があるかの判定を行ない、ソース生
成規則がある場合には、横ソース生成規則獲得ループの
中の処理を行なう(ステップ5704)。
【0403】続いて、獲得したソース生成規則の種別の
判定を行なうと、「&NEXT」4560は文展開規則に該
当するため、ソース生成規則=文展開規則の判定で
「Y」が成立し、文展開規則の処理を行なう(ステップ
5706)。次に「日付が空白である。」3304の属
性を判定すると、修飾属性に該当するため、文属性=修
飾展開の判定で「Y」が成立し、修飾展開の処理を行な
う(ステップ5729)。
【0404】次に、「日付が空白である。」3304の
ソース生成規則を展開するために「日付が空白であ
る。」の文情報ノード3322の処理を一時的に保留
し、入力データ6001として、「日付が空白であ
る。」3304のソース生成規則名を渡し、文展開を呼
び出す(ステップ5714)。
【0405】図55の文展開のフローチャートでは、入
力データ6001として「日付が空白である。」330
4のソース生成規則名を受けとる。
【0406】「日付が空白である。」のソース生成規則
4561を文章・用語データ検索モジュール2008を
使用して獲得する(ステップ6002)。次に、読み込
んだソース生成規則を1つづつ獲得し、最初の「[IF(]$
1=SPACE[)]」4561を獲得する(ステップ600
3)。
【0407】次に、ソース生成規則があるかの判定を行
ない、ソース生成規則がある場合には文ソース生成規則
獲得ループの中の処理を行なう(ステップ6004)。
続いて、獲得したソース生成規則の種別の判定を行なう
と、「[IF(]」は修飾展開規則に該当するために、ソー
ス生成規則=修飾展開規則の判定で「Y」が成立し、修
飾展開規則の処理を行なう(ステップ6006)。
【0408】次に、ソース生成規則の種別を獲得する
と、ソース生成規則種別=[〜] の判定で「Y」が成立
し、[〜] の展開規則の処理を行なう(ステップ601
2)。次に、「日付が空白である。」が式がネストして
記述されているかの判定を行なうと、ネストして記述さ
れていないために「ネストあり」の判定で「N」が成立
し、 [〜] の展開規則の処理を行なう(ステップ601
3)。
【0409】[〜] の範囲の展開処理を行なうで「IF(」
をソースに出力する(ステップ6014)。次に、獲得
したソース生成規則の種別の判定を行なうと、$1 は用
語展開規則に該当するために、ソース生成規則=用語展
開規則の判定で「Y」が成立し、用語展開規則の処理を
行なう(ステップ6007)。
【0410】次に、用語展開規則では、「〜が空白であ
る」4562の「日付」4563の部分が置き換える規
則に該当するため、「[IF(]$1=SPACE[)]」の「$1」の
部分を「日付」4563に対応する「DATE」4564で
置き換える(ステップ6018)。
【0411】次に、「=SPACE」のソース生成規則は該当
するソース生成規則がないためにそままソース中に出力
される(ステップ6009)。「[)]」は修飾展開規則
に該当するためソース生成規則=修飾展開規則の判定で
「Y」が成立し、修飾展開規則の処理を行なう(ステッ
プ6006)。
【0412】次に、ソース生成規則の種別を獲得する
と、ソース生成規則種別=[〜] の判定で「Y」が成立
し、[〜] の展開規則の処理を行なう(ステップ601
2)。次に、「日付が空白である。」が式がネストして
記述されているかの判定を行なうと、ネストして記述さ
れていないために「ネストあり」の判定で「N」が成立
し、文展開規則の処理を行なう(ステップ6013)。
【0413】[〜] の範囲の展開処理を行なうで「)」を
ソースに出力する(ステップ6014)。
【0414】次のソース生成規則はないためにソース生
成規則獲得ループを抜け、文展開のフローチャートを終
了する(ステップ6010)。
【0415】IF (DATE =SPACE) これを図46では符号5281で示している。
【0416】「口座番号が数字である。」3309の文
展開を終了したことにより、処理を一時的に保留してい
た箇条書ソース生成を開始する。処理は、文展開を呼び
出した位置より開始される(ステップ5915)。
【0417】次の「THEN」4565のソース生成規則
は、該当する規則がないためにそのままソースに出力さ
れる(ステップ5909)。
【0418】THEN これを図46では符号5282で示している。
【0419】次の「%%」4566は箇条書展開規則に該
当するために、ソース生成規則=箇条書展開規則の判定
で「Y」が成立し、箇条書展開規則の処理を行なう(ス
テップ5705)。
【0420】次に、横方向のノードの有無を判定すると
「次のいずれかである。」の文情報ノード3327が存
在するため、横方向のノード=ありで「Y」の条件が成
立し、箇条書展開の処理を行なう(ステップ572
2)。
【0421】次に、「次のいずれかである。」3306
のソース生成規則を展開するために「日付が空白であ
る」の文情報ノード3322の処理の処理を一時的に保
留し、入力データ5701として「次のいずれかであ
る。」の文情報ノード3327を渡し、4536と同様
の手順により箇条書文章ソース生成を再帰的に呼び出す
(ステップ5722)。
【0422】「次のいずれかである」の箇条書文章ソー
ス生成を終了したら、処理を一時的に保留していた「次
のいずれかである」の文情報ノード3322よりの箇条
書文章ソース生成を開始する。
【0423】次のソース生成規則「#>」4567は、横
方向のソース生成規則の終了を表す記号であるために、
横方向ソース生成規則獲得ループを抜ける(ステップ5
708)。
【0424】 IF ((KOUZA_CODE ='0') OR (KOUZA_CODE ='1')) THEN IF (KOUZA_NO =NUMERIC) THEN @処理 ELSE CONTINUE END-IF ELSE CONTINUE END-IF これを図46では符号5283で示している。
【0425】さらに、読み込んだソース生成規則を1つ
づつ獲得する(ステップ5810)。次に、ソース生成
規則があるかの判定を行ない、ソース生成規則がある場
合には、縦ソース生成規則獲得ループの中の処理を行な
う(ステップ5811)。
【0426】次に、「ELSE」、「CONTINUE」、「END
-IF」4568は、すべて該当するソース生成規則がな
いためにそのままソース中に出力される(ステップ58
15)。
【0427】次のソース生成規則はないために縦ソース
生成規則獲得ループを抜け、箇条書文章ソース生成を終
了する(ステップ5817)。
【0428】ELSE CONTINUE END-IF これを図46では符号5284で示している。
【0429】以上の手順により箇条書文章からのソース
生成が実行される。
【0430】次に、図30の箇条書文章から有効グラフ
3020を作成する例を図29〜図31のフローチャー
トに基づいて説明する。
【0431】始めに「日付に暦日をセットする。」30
01より処理を行なう。
【0432】最初に、処理の対象となっている子の文情
報ノード先頭アドレスにNULLをセットする(ステップ
3503)。同時に、子の文情報ノード前アドレスにNU
LLをセットして初期設定を行なう(ステップ350
4)。
【0433】次に、仕様書データ展開エリア2004よ
り、箇条書された文の子の文レコードを1レコード読み
込むと、1番先頭の「日付に暦日をセットする。」30
01が読み込まれる(ステップ3505)。
【0434】次に、同じレベルの文があるかの判定を行
なう。すでに、「日付に暦日をセットする。」3001
の文が読み込まれているので、「同じレベルの文があ
り」となり、文の読み込みループの処理を続行する(ス
テップ3506)。
【0435】次に、子の文情報の有無の判定を行なう
と、子の文情報は存在しないために子の文情報=有りで
「N」が成立する(ステップ3540)。
【0436】次に、読み込んだ「日付に暦日をセットす
る。」3001の文レコードからプログラムの制御種別
を獲得する(ステップ3607)。次に、獲得したプロ
グラムの制御種別を判定する。すると、「日付に暦日を
セットする。」3001は処理属性に該当するため、
「プログラムの制御種別=処理」の「Y」の条件が成立
し、処理属性の処理を行なう(ステップ3611)。
【0437】有効グラフ作成モジュール2009に渡
し、文情報ノードを作成を指示する(ステップ362
9)。
【0438】次に、文情報カレントアドレスに「日付に
暦日をセットする。」の文情報ノード3021のアドレ
スをセットする(ステップ3630)。次に、子の文情
報ノード前アドレスがNULLかの判定を行なうと、子の文
情報ノード前アドレスは値は未設定のため、子の文情報
ノード前アドレス=NULLとなり「Y」の条件が成立する
(ステップ3713)。
【0439】子の文情報先頭アドレスに「日付に暦日を
セットする。」の文情報ノード3021をセットし、子
の文情報先頭アドレスを記憶する(ステップ363
1)。
【0440】子の文情報ノード前アドレスに文の解析を
終了した「日付に暦日をセットする。」の文情報ノード
3021をセットする(ステップ3519)。
【0441】このときに、有効グラフの「日付に暦日を
セットする。」が処理の文情報ノード3021として作
成される。
【0442】次に、「口座に当座をセットする。」30
02を処理する状態になる。
【0443】次に、仕様書データ展開エリア2004よ
り、「日付に暦日をセットする。」3001の次の文レ
コードを1レコード読み込むと、「口座に当座をセット
する。」3001が読み込まれる(ステップ352
0)。
【0444】次に、同じレベルの文があるかの判定を行
ない、文がある場合には、文の読み込みループの処理を
続行する(ステップ3506)。次に、子の文情報の有
無の判定を行なうと、子の文情報は存在しないために子
の文情報=有りで「N」が成立する(ステップ354
0)。
【0445】次に、読み込んだ「口座に当座をセットす
る。」3002の文レコードから文のプログラの制御種
別を獲得する(ステップ3607)。次に、獲得したプ
ログラムの制御種別を判定する。「口座に当座をセット
する。」3002は処理属性に該当するため、「プログ
ラムの制御種別=処理」の「Y」の条件が成立し、処理
属性の処理を行なう(ステップ3611)。有効グラフ
作成モジュール2009に渡し、文情報ノードを作成を
指示する(ステップ3629)。
【0446】次に、文情報ノードカレントポインタに
「口座に当座をセットする。」の文情報ノード3022
のアドレスをセットする(ステップ3630)。
【0447】次に、子の文情報ノード前アドレスがNULL
かの判定を行なうと、子の文情報ノード前アドレス値は
「日付に暦日をセットする。」の文情報ノード3021
がセットされているため、子の文情報ノード前アドレス
=NULLとなり「N」の条件が成立する(ステップ37
13)。
【0448】次に、親の文情報の種別を判定すると、
「日付に暦日をセットする。」3002は処理属性に該
当するため、プログラム制御種別=処理の条件が成立す
る(ステップ3015)。次に、「日付に暦日をセット
する。」文情報ノード3021と「口座に当座をセット
する。」の文情報ノード3022の文情報ノードの間に
処理の線3023を張る(ステップ3733)。
【0449】このときに、有効グラフの「口座に当座を
セットする。」が処理の文情報ノード3022として作
成され、「日付に暦日をセットする。」文情報ノード3
021と「口座に当座をセットする。」の文情報ノード
3022の文情報ノードの間に処理の線3023を張
る。
【0450】次に、仕様書データ展開エリア2004よ
り、「口座に当座をセットする。」3003の次の文レ
コードを1レコード読み込む(ステップ3520)。
【0451】次に、文があるかの判定を行なうと、該当
する文がないために、文の読み込みループの処理を抜け
る(ステップ3521)。次に、子の文情報ノード先頭
アドレスに記憶しておいた「日付に暦日をセットす
る。」文情報ノードのアドレス3021を返す(ステッ
プ3522)。
【0452】以上の手順により図30の有効グラフ30
20が作成される。
【0453】
【発明の効果】以上のように本発明においては、文情報
ファイルに予め登録された文情報を使用して箇条書文章
から成るプログラム仕様書を作成して仕様書ファイルに
格納した後、この仕様書ファイルに格納されたプログラ
ム仕様書を解析して仕様書内容に対応するソースプログ
ラムを生成するので、プログラミングの知識のない人で
も、複雑な条件を含んだプログラムの機能仕様を容易に
記述し、目的とするソースプログラムを生成することが
できる。
【0454】また、プログラム制御構造を表す種別を設
けることにより、プログラムの制御を含む仕様を容易に
記述し、目的とするソースプログラムを生成することが
できる。
【図面の簡単な説明】
【図1】表形式仕様書にプログラム機能仕様を記述して
ソースプログラムを生成する場合の機能仕様記述の一実
施例を示す説明図である。
【図2】図1の機能仕様記述に対するフローチャートで
ある。
【図3】図1の機能仕様記述に対して生成されたソース
プログラムの例を示す説明図である。
【図4】表形式仕様書にプログラム機能仕様を記述して
ソースプログラムを生成する場合の機能仕様記述の第2
の実施例を示す説明図である。
【図5】図4の機能仕様記述に対するフローチャートで
ある。
【図6】図4の機能仕様記述に対して生成されたソース
プログラムの例を示す説明図である。
【図7】表形式仕様書にプログラム機能仕様を記述して
ソースプログラムを生成する場合の機能仕様記述の第3
の実施例を示す説明図である。
【図8】図7の機能仕様記述に対するフローチャートで
ある。
【図9】図7の機能仕様記述に対して生成されたソース
プログラムの例を示す説明図である。
【図10】木構造仕様書にプログラム機能仕様を記述し
てソースプログラムを生成する場合の機能仕様記述の第
4の実施例を示す説明図である。
【図11】図10の機能仕様記述に対するフローチャー
トである。
【図12】図10の機能仕様記述に対して生成されたソ
ースプログラムの例を示す説明図である。
【図13】デシジョンテーブル仕様書にプログラム機能
仕様を記述してソースプログラムを生成する場合の機能
仕様記述の第5の実施例を示す説明図である。
【図14】図13の機能仕様記述に対するフローチャー
トである。
【図15】図13の機能仕様記述に対する全体のフロー
チャートである。
【図16】図13の機能仕様記述に対して生成されたソ
ースプログラムの例を示す説明図である。
【図17】箇条書文章からのソース生成システムの一実
施例を示す構成図である。
【図18】箇条書文章からのソース生成システムのファ
イル関連図である。
【図19】条件論理積文の例を示す説明図である。
【図20】条件倫理和文の例を示す説明図である。
【図21】論理積式文の例を示す説明図である。
【図22】論理和式文の例を示す説明図である。
【図23】処理文の例を示す説明図である。
【図24】修飾文の例を示す説明図である。
【図25】修飾文の他の例を示す説明図である。
【図26】箇条書文章からのフローと解析木の生成例を
示す説明図である。
【図27】箇条書文章からのフローと解析木の第2の生
成例を示す説明図である。
【図28】箇条書文章からのソース生成の全体を示すフ
ローチャートである。
【図29】箇条書文章からの解析木生成のフローチャー
トである。
【図30】箇条書文章からの解析木生成のフローチャー
トである。
【図31】箇条書文章からの解析木生成のフローチャー
トである。
【図32】箇条書文章からの解析木生成のデータフロー
図である。
【図33】箇条書文章からの解析木生成のデータフロー
図である。
【図34】箇条書文章からの解析木生成のデータフロー
図である。
【図35】箇条書文章からの解析木生成のデータフロー
図である。
【図36】箇条書文章からの解析木生成のデータフロー
図である。
【図37】箇条書文章からの解析木生成のデータフロー
図である。
【図38】箇条書文章からの解析木生成のデータフロー
図である。
【図39】箇条書文章からの解析木生成のデータフロー
図である。
【図40】箇条書文章からの解析木生成のデータフロー
図である。
【図41】箇条書文章からの解析木生成のデータフロー
図である。
【図42】箇条書文章からの解析木生成のデータフロー
図である。
【図43】箇条書文章からの解析木生成のデータフロー
図である。
【図44】解析木からのソース生成過程を示すデータフ
ロー図である。
【図45】図44と共に解析木からのソース生成過程を
示すデータフロー図である。
【図46】解析木から生成されたソースプログラムの例
を示す説明図である。
【図47】解析木からのソース生成過程を詳細に示すデ
ータフロー図である。
【図48】解析木からのソース生成過程の第1の部分を
さらに詳細に示すデータフロー図である。
【図49】解析木からのソース生成過程の第2の部分を
さらに詳細に示すデータフロー図である。
【図50】解析木からのソース生成過程の第3の部分を
さらに詳細に示すデータフロー図である。
【図51】解析木からのソース生成過程の第4の部分を
さらに詳細に示すデータフロー図である。
【図52】箇条書文章からソースプログラムを生成する
処理の詳細を示すフローチャートである。
【図53】箇条書文章からソースプログラムを生成する
処理の詳細を示すフローチャートである。
【図54】式を展開する処理の詳細を示すフローチャー
トである。
【図55】文を展開する処理の詳細を示すフローチャー
トである。
【図56】従来のソースプログラム生成方法の例を示す
説明図である。
【符号の簡単な説明】
210…機能仕様、220…表形式仕様書、221…条
件部分、222…処理部分、223…条件文、224…
処理文、430…ソースプログラム、1120…木構造
形式仕様書、2000…ソース作成システム、2010
…仕様書ファイル、2020…文情報ファイル、203
0…用語情報ファイル、2040…ソースファイル、2
202…制御種別、2203…ソース生成規則、302
0…有効グラフ。

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 プログラムの機能仕様の記述に使用する
    文に関する文情報を文情報ファイルに登録しておき、こ
    の文情報ファイルに登録された文情報を使用して箇条書
    文章から成るプログラム仕様書を作成して仕様書ファイ
    ルに格納した後、この仕様書ファイルに格納されたプロ
    グラム仕様書を解析して仕様書内容に対応するソースプ
    ログラムを生成することを特徴とするソースプログラム
    生成方法。
  2. 【請求項2】 前記文情報は、仕様書で使用される文に
    対し、その文からソースプログラムを生成するためのソ
    ース生成規則とプログラム制御構造を表す種別を有する
    ことを特徴とする請求項1記載のソースプログラム生成
    方法。
  3. 【請求項3】 プログラム仕様書を解析する際、プログ
    ラム仕様書中の各文の待つプログラムの制御構造を判別
    して各文の文情報ノードを作成し、文相互間の制御関係
    を表す有効グラフを作成し、この有効グラフと前記ソー
    ス生成規則に従って構造化されたソースプログラムを生
    成すること特徴とする請求項2記載のソースプログラム
    生成方法。
JP5242482A 1993-09-29 1993-09-29 ソースプログラム生成方法およびシステム Expired - Fee Related JP3004847B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5242482A JP3004847B2 (ja) 1993-09-29 1993-09-29 ソースプログラム生成方法およびシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5242482A JP3004847B2 (ja) 1993-09-29 1993-09-29 ソースプログラム生成方法およびシステム

Publications (2)

Publication Number Publication Date
JPH0798650A true JPH0798650A (ja) 1995-04-11
JP3004847B2 JP3004847B2 (ja) 2000-01-31

Family

ID=17089749

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5242482A Expired - Fee Related JP3004847B2 (ja) 1993-09-29 1993-09-29 ソースプログラム生成方法およびシステム

Country Status (1)

Country Link
JP (1) JP3004847B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015099008A1 (ja) * 2013-12-27 2015-07-02 株式会社おおとり コンピュータプログラム生成装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015099008A1 (ja) * 2013-12-27 2015-07-02 株式会社おおとり コンピュータプログラム生成装置
JP2015125751A (ja) * 2013-12-27 2015-07-06 株式会社おおとり コンピュータプログラム生成装置

Also Published As

Publication number Publication date
JP3004847B2 (ja) 2000-01-31

Similar Documents

Publication Publication Date Title
US4949253A (en) Method and apparatus for automatically generating program
KR100650427B1 (ko) 자연어 인식 애플리케이션 구축을 위한 통합 개발 툴
JPWO2008093569A1 (ja) 情報抽出規則作成支援システム、情報抽出規則作成支援方法及び情報抽出規則作成支援プログラム
JP2001060150A (ja) データ処理プログラム自動生成システム及びその方法並びにコンピュータ可読記録媒体
Collins Pro HTML5 with CSS, JavaScript, and Multimedia
JP2004094487A (ja) 文書作成支援システム
JP2003208307A (ja) ソースプログラム生成システム
JP3531579B2 (ja) マルチメディア文書生成装置及び方法、及びこれらをコンピュータに実行させるプログラムを記録した記録媒体
JPH0798650A (ja) ソースプログラム生成方法
KR101905675B1 (ko) 모듈의 구조 해석을 지원하는 장치 및 프로그램
Waterman Pas-ii reference manual
JPH09330212A (ja) プログラミング言語処理システム
JPH0424759A (ja) 文書処理装置
JPH04172529A (ja) データ中心型ソフトウエア部品によるプログラム自動生成方式
JP3446472B2 (ja) オブジェクトモデル生成方法及びその装置
JP3050811B2 (ja) 構文解析木データベース構築支援装置
WO2017142546A1 (en) Natural language programming tool
JPS6282432A (ja) 不定順テキストサ−チ方式
JPH1040086A (ja) プログラム変換方法
JPH03233669A (ja) 文書作成装置
JPS6379176A (ja) デイスプレイ上の設計画面より入力した設計仕様から部品を組合せてプログラムを自動生成する方法
JPH04137073A (ja) 設計図面作成装置
JP5581894B2 (ja) データ処理プログラム自動生成システム
JPH03186933A (ja) 言語処理システムのシンボル処理方式
JP2008015879A (ja) 自然文を含む仕様の記述支援方法、プログラムおよびシステム

Legal Events

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