程序再生方法和装置以及记录有用于程序再生的程序的媒体的制作方法

文档序号:6467257阅读:229来源:国知局
专利名称:程序再生方法和装置以及记录有用于程序再生的程序的媒体的制作方法
技术领域
本发明涉及程序再生方法和装置以及记录了用于程序再生的程序的媒体,更详细地说,涉及将利用Lyee开发方法以外的方法作成的现有的程序重新构筑在具有符合Lyee开发方法的结构的程序中而维持该现有程序达到的功能的方法和装置以及记录了使计算机执行这样的处理的程序的记录媒体。
背景技术
Lyee(governmental methodology for software providence)程序开发方法的出现是对先有的软件作成方法的一次变革,因其大大地缩短了开发时间,减少了开发工时数,易于维修和展现文件量的现象等成果,而受到关注。
用先有的软件作成方法作成的现有的程序,系统工程师和程序员的个性容易体现在程序中。因此,即使有支持文件,对现有的程序进行分析也不容易,而且几乎是不可能。即使通过在程序中增加新的描述来追加新的功能,进行程序分析也不容易,所以,追加新功能的工作需要花费很大的工作量。
进而,当要改变程序的工作环境时(计算机和OS的变更等),现有的程序一概不能使用,除了重新作成程序之外,没有别的方法。
发明的公开本发明提供一种分析现有的程序并根据该分析结果生成具有和现有程序同等功能的程序的方法。再生的程序是符合Lyee的方法理论的程序,本发明可以使再生处理自动化。
本发明的方法是将利用Lyee开发方法以外的方法作成的现有的程序再生成具有符合Lyee开发方法的结构的程序而维持上述现有程序达到的功能的方法。根据该方法,以识别出与单词关连的定义体(单词所属的画面、票单、文件、数据库等)的形式从上述现有的程序中抽出那里使用的单词,与和该单词关连的定义体的种类对应,将抽出的单词分配给一个或多个模块,将现有程序的各命令语句或命令变换成符合某一个程序构成要素的形式,该程序构成要素是该命令语句或命令包含的单词所分配的一个或多个模块的多个程序构成要素中的任何一个程序构成要素,而且具有符合Lyee开发方法的结构。
象后面详述的那样,符合Lyee的方法理论的程序(程序构成要素)是以单词为基础,对每一个模块W04、W02、W03设置的。若按照本发明,因抽出包含在现有程序中的所有的单词,所以,再生的程序满足作为以单词为基础的(多个)程序的总体的Lyee程序的结构要求。包含在现有程序中的单词以识别了是该单词关连的定义体的形式抽出,抽出的单词与和抽出的单词关连的定义体的种类对应分配给一个或多个模块。而且,与已分配了该命令语句或命令所包含的单词的一个或多个模块中的多个程序构成要素(符合Lyee的方法理论的程序)对应,对现有程序的各命令语句或命令进行变换。因现有程序的各命令语句或命令也可以用在已再生的程序中,故再生的程序可以达到和现有程序同等的功能。
若按照本发明,可以较容易且几乎自动地将现有的程序再构筑成Lyee程序的形式。因此,可以较容易地将装在现有计算机中的现有程序作为能达到同等功能的新的程序移植到新的计算机中,能够与程序工作环境的变化相对应。因再生的程序符合Lyee的方法理论,故容易进行维修等工作。
可以象下面那样来表现程序的再生方法。即,本发明的方法是将利用Lyee开发方法以外的方法作成的现有的程序再生成具有符合Lyee开发方法的结构的程序而维持该现有程序达到的功能的方法,从现有程序中抽出由现有程序控制定义体,对抽出的定义体,准备多个程序构成要素,用来使由W02模块、W04模块和W03模块的组构成的基本结构动作,以识别出与单词所属的定义体和该单词的输入输出区分的形式从上述现有的程序中抽出现有程序使用的单词,与抽出的单词所属的定义体和输入输出区分对应,将该单词分配给对于该单词所属定义体的W02模块、W04模块和W03模块中的一个或多个模块,将包含现有程序的单词的命令语句或命令变换成符合多个程序构成要素中的某一个的形式,这些程序构成要素是在通过单词与该命令语句或命令发生关连的多个模块中,而且具有符合Lyee开发方法的结构。
现有的程序一般包含由该程序控制的定义体(画面、文件等)的描述。根据对定义体的描述把握由现有程序控制的定义体,准备多个程序构成要素(模板),用来使该定义体的基本结构动作。基本结构是符合Lyee的方法理论的程序结构,包含W02模块(程序)、W04模块(程序)和W03模块(程序)。
根据现有程序的描述,可以把握现有程序中使用的单词所属的定义体的种类和输入输出区分。根据定义体的种类和输入输出区分,可以把握现有程序中使用的单词是不是应分配给W02模块、W04模块和W03模块中的某一个的单词。
有时,现有程序使用不属于任何定义体的单词。一般,已作成现有程序的程序大多是已作成用来存储计算中间的数据的单词。这样的单词另外还准备有用来处理该单词的基本结构(用来使基本结构动作的多个程序构成要素)。
此外,现有的程序有时包含错误处理的描述。这时,另外还准备用来进行该错误处理的基本结构(多个程序构成要素)。
在一实施形态中,对在现有程序的命令语句或命令中的用来生成应存储在由单词表示的字段中的数据的命令语句或命令,按照用来生成上述多个程序构成要素中的数据的程序构成要素(逻辑要素程序)的形式进行变换。该命令语句或命令是用来将数据存储在所谓端点单词中的命令语句或命令。在用来生成端点单词所属(分配)模块中的数据的程序构成要素(逻辑要素程序)中,使用用来生成现有程序中的数据的命令语句或命令。
若识别出现有程序使用单词是端点单词还是始点单词,则容易从现有程序中抽出上述命令语句。一般,使用端点单词和始点单词的命令语句可以根据包含在命令语句中的特定命令进行把握。根据命令语句记述的决定(每一个程序语言的决定),可以把握在这样的命令语句中,哪些单词是端点单词,哪些单词是始点单词。
在现有程序的命令语句或命令中,对于包含2个以上的单词的命令语句或命令,最好判定该命令语句或命令使用的2个以上的单词分别分配的2个以上的模块的关系是否满足规定的顺序。接着,当2个以上的模块的关系不满足规定的顺序时,将该命令语句或命令分解成多个命令语句或命令,使分解的命令语句或命令分别包含新的单词。将新的单词分配给W04模块、W02模块和W03模块中的一个或多个模块,使分解的命令语句或命令分别包含的2个以上的单词分配的2个以上的模块的关系满足规定的顺序。
一般,因现有的程序不是符合Lyee开发方法作成的,故有时在现有程序的命令语句或命令中记述一些命令语句或命令,这些命令语句或命令是不能存在于符合Lyee开发方法作成程序中的命令语句或命令、即使用2个以上的单词的命令语句或命令,该命令语句或命令分别包含的2个以上的单词分配的2个以上的模块的关系不满足Lyee法则所要求的规定的顺序(循环结构)。对该命令语句或命令进行分解(将1个命令语句改写成2个以上的命令语句),使这样的命令语句或命令满足上述循环结构的顺序。因在现有程序中还残留有满足上述循环结构的顺序的命令语句或命令,故容易变换成各命令语句或命令的某一个程序构成要素的形式。
在其它实施形态中,在现有程序的命令语句或命令中,把对定义体的进行物理的输入输出处理的命令语句或命令作为上述多个程序构成要素中用来统一控制模块的程序构成要素(模块链接函数程序;主程序)的一部分。
最好利用一个或多个基本结构的组合,根据现有程序作成表示上述现有程序的处理流程的处理路径图。通过作成处理路径图,对于现有程序的各命令语句和单词,可以容易把握其在符合Lyee开发方法的程序中的地位。
例如,当在上述处理路径中表示连接2个以上不同的基本结构的路径或与结束处理连接的路径时,从上述现有程序中抽出表示该路径分支点的分支条件的条件命令语句或条件命令。将已抽出的条件命令语句或条件命令变换成符合用来进行上述分支点的分支元中的模块的多个程序构成要素(路径作用要素程序)的形式。可以把握条件命令语句或条件命令在符合Lyee开发方法的程序中的一个地位。
在现有程序使用的条件命令语句或条件命令中,除了在符合上述Lyee法则的程序中作为路径的分支条件的条件命令语句或条件命令之外,还有作为数据输出到显示画面时的条件(输出条件)和从文件等读出数据时的条件(输入条件)的条件命令语句或条件命令。
根据现有程序的记述,检索表示数据输入条件或数据输出条件的条件命令语句或条件命令,当已抽出表示数据输入条件或数据输出条件的条件命令语句或条件命令时,将抽出的条件命令语句或条件命令变换成符合程序构成要素(输入/输出)的形式,该程序构成要素在该数据输入条件或数据输出条件作用的模块中的多个程序构成要素中用于输入作用或输出作用的。
根据现有程序的记述,检索表示等效单词的判断条件的条件命令语句或条件命令,当已抽出表示等效单词的判断条件的条件命令语句或条件命令时,将抽出的条件命令语句或条件命令变换成符合程序构成要素(逻辑要素程序的成立条件)的形式,该程序构成要素在该等效单词分配的模块中的程序构成要素中用来生成数据。
本发明还提供程序再生装置,将现有程序再生成具有符合Lyee开发方法的结构的新的程序(Lyee程序)而能维持该现有程序达到的功能。
本发明的程序再生装置包括存储构成Lyee程序的多个程序构成要素的第1存储装置;存储从根据现有程序作成的处理路径图得到的模块链接函数信息、基本结构信息、模块信息、定义体信息、路径信息和指令信息的第2存储装置;存储给定的现有程序的第3存储装置;根据上述第2存储装置存储的模块链接函数信息、基本结构信息、模块信息和定义体信息将第3存储装置存储的现有程序使用的单词分配给包含在与该单词关连的基本结构中的W04模块、W02模块和W03模块中的一个或多个模块的第1分配装置;和变换装置,根据上述第2存储装置存储的路径信息和指令信息,把第3存储装置存储的现有程序的各命令语句或命令变换成符合某一个程序构成要素的形式,该程序构成要素是该命令语句或命令包含的单词分配的一个或多个模块中的、上述第1存储装置存储的多个程序构成要素中任何一个程序构成要素。
若按照本发明,因现有程序使用的单词根据从根据现有程序作成的处理路径图得到的各种信息(模块链接函数信息、基本结构信息、模块信息和定义体信息)分配给W04模块、W02模块和W03模块中的一个或多个模块,所以,对任何一个单词,可以容易把握是否应该将其作成符合Lyee法则的程序。可以把握是否应该根据路径信息和指令信息将现有程序中的命令语句或命令变换成符合多个程序构成要素中任何一个的形式。
程序再生装置具有用来读取现有程序的命令语句或命令的读取装置。利用读取装置读取的现有程序的命令语句或命令用在符合Lyee法则的程序构成要素(模板)中。
进而,本发明提供一种记录媒体,记录用来控制上述程序再生装置的程序,特别记录使程序再生装置执行把现有程序使用的单词分配给模块的处理的程序(分配程序)和使程序再生装置执行把现有程序的命令语句或命令变换成符合根据Lyee的方法理论的多个程序构成要素的任何一个的形式的处理的程序(变换程序)。程序记录媒体包括磁盘、光盘、光磁盘、磁带和半导体存储器等。
附图的简单说明

图1是表示符合Lyee法则的软件模型的一般形式的方框图。
图2表示一例在线处理的处理路径图。
图3表示一例批处理的处理路径图。
图4把一例K的处理路径图和在线处理T0的处理路径图一起表示。
图5表示一般的软件的处理路径图的一部分。
图6是表示Lyee法则中的单词的处理(单词的相互关系)的概念图。
图7表示每一个基本结构必要的程序种类及其地位。
图8是表示W04模块函数程序的处理流程的流程图。
图9是表示W02模块函数程序的处理流程的流程图。
图10是表示W03模块函数程序的处理流程的流程图。
图11是表示相位要素程序(模板)的处理流程的流程图。
图12是表示逻辑要素程序(W04)(模板)的处理流程的流程图。
图13是表示输出作用要素程序(模板)的处理流程的流程图。
图14是是表示路径作用要素程序(模板)的处理流程的流程图。
图15是表示构造作用要素程序(模板)的处理流程的流程图。
图16是表示逻辑要素程序(W02)(模板)的处理流程的流程图。
图17是表示逻辑要素程序(W02G)(模板)的处理流程的流程图。
图18表示逻辑要素程序(W02)的具体程序例子。
图19表示程序再生处理的全部流程。
图20是表示程序再生处理装置的构成的方框图。
图21表示现有程序的具体例子。
图22表示一例接收商品订货的画面。
图23表示一例商品表。
图24是表示图21所示的现有程序的处理流程的流程图。
图25是表示图21所示的现有程序的处理流程的流程图。
图26是表示形式化处理的详细处理流程的流程图。
图27表示一例指令表(全部)。
图28表示一例指令表(按程序)。
图29表示图21所示的现有程序的处理的处理路径图。
图30表示一例处理路径图信息表。
图31是表示第1次坐标决定处理的详细流程的流程图。
图32表示第1次坐标决定处理后的一例Lyee Belt。
图33是表示标准化处理的详细流程的流程图。
图34是表示第2次坐标决定处理的详细流程的流程图。
图35表示第2次坐标决定处理后的一例Lyee·belt。
图36是表示命令语句的展开处理的详细流程的流程图。
图37表示一例指令表。
图38是表示IF语句的分析处理的详细流程的流程图。
图39是表示IF语句的分析处理的详细流程的流程图。
图40是表示IF语句的分析处理的详细流程的流程图。
图41是表示Lyee ALL处理的内容的流程图。
图42表示一例复制子句展开处理。
图43表示另一例复制子句展开处理。
图44表示又一例复制子句展开处理。
图45表示一例子程序展开处理。
图46表示一例清除处理。
图47表示一例变则修正处理。
图48表示一例命令语句的一行化处理。
图49表示另一例命令语句的一行化处理。
图50表示一例单层化处理。
实施发明的最佳形态1、符合Lyee法则的软件模型人们要求计算机进行信息处理的基本功能是,将得到的信息在显示装置的显示画面上进行显示,从打印机打印输出和将其存储在存储装置中。计算机输出得到的信息(也包括没有信息)。在符合Lyee法则的软件模型中,把该输出部分(与输出有关的软件部分)作为出发点。把与软件的输出有关的部分称作W04模块(模块意指意图的输送)。
与由和软件的输出有关的部分控制的计算机的动作(信息处理结果在显示画面上的显示等)对应,将下面应进行的用于信息处理的新的信息输入到计算机中。例如,若由和软件的输出有关的部分(W04模块)输出的信息是人能够认识的输出信息(显示画面上显示的数值等),人对它的意思进行认识,作出判断并开始行动。人的行动对计算机来说是以输入的方式来体现的。把与输入有关的软件部分称作W02模块。
计算机对输入作出响应并执行预定的处理。该处理是用来生成想利用上述W04模块输出的信息的处理。把对输入作出响应使计算机动作的软件部分作为W03。
计算机输出对输入作出响应后进行的处理的处理结果。即,在W03模块之后,按顺序进行接下来的W04模块。根据Lyee的方法理论,软件模型基本上具有循环结构,从W04模块出发,经W02模块、W03模块,再回到W04模块。该循环结构模型的一般形式如图1所示。
在图1所示的循环结构模型(以下,称作“基本结构”)中W03模块包含作为子模块的W02G和W04P。W02G子模块是进行取入从W02模块转移到W03模块的数据(Get)等的处理的软件部分。W04P子模块是利用规定的数据处理作成新的数据的软件部分。在Lyee的软件模型中,基本上,由W02模块接收的信息取入W03模块的W02G子模块中。在W04P模块中,进行预先规定的处理(四则运算)。W04P子模块的信息转移到W04模块中,利用W04模块进行输出(在显示画面上显示,记录在文件、数据库中)。
在符合Lyee法则的软件模型中,由W04模块、W02模块和W03模块构成的基本结构根据由W04模块输出的数据种类,可分成以下3种类型。
其一是由W04模块输出的数据是与人相关的数据(例如,输出到显示装置的显示画面)的情况。把包含这样的W04模块的基本结构统称为在线处理T0。把在线处理T0中的W04模块、W02模块和W03模块分别称作T0W04模块、T0W02模块和T0W03模块。T0W03模块包含T0W02G子模块和T0W04P子模块。
其二是由W04模块输出的数据是与人不相关的数据(例如,输出到文件等的记录媒体的数据等)的情况。把包含这样的W04模块的基本结构统称为批处理T1。把批处理T1中的W04模块、W02模块和W03模块分别称作T1W04模块、T1W02模块和T1W03模块。T1W03模块包含T1W02G子模块和T1W04P子模块。
其三是由W04模块输出的数据不是最后要得到的数据(例如,为了作成由T0W04模块向显示画面输出的数据,作为前处理而作成预先规定的数据的情况)的情况。把包含这样的W04模块的基本结构统称为K(knowledge)。一般,当从最开始作成符合Lyee法则的软件时,该K的基本结构不表现出来(可以不表现地作成软件)。当把现有程序再构筑成符合Lyee法则的程序时,为了将现有程序嵌入Lyee程序结构中,K的基本结构是必要的。把K的基本结构看做是处理现有程序的程序员作出的单词的软件部分,或进行错误处理的软件部分。
把K中的W04模块、W02模块和W03模块分别称作K-W04模块、K-W02模块和K-W03模块。K-W03模块包含K-W02G子模块和K-W04P子模块。
使用由W04模块、W02模块和W03模块构成的基本结构,可以将进行规定的处理的软件在视觉上表现出来。把利用基本结构表示软件处理的流程的图称作处理路径图。图2示出包含在线处理T0的一例处理路径图。该处理路径图包含由T0W04模块11、T0W02模块12和T0W03模块13构成的基本结构(循环结构)。
在T0W04模块11和T0W02模块12之间有表示显示装置的先生画面的方框14。利用T0W04模块11显示画面14上显示文字和数字等。
看到显示画面上显示的文字和数字的人使用输入装置输入文字和数字等。输入的文字和数字等由T0W02模块12进行处理。
使用输入到T0W02模块12中的文字和数字等,在T0W03模块13中进行规定的处理。即,T0W03模块13中的T0W02G子模块(后述的相位要素程序)从T0W02模块12中接收表示文字和数字等的数据。在T0W04P子模块中,使用T0W02模块的数据等进行规定的处理(四则运算等)。进行了规定的处理的数据(处理结果)送给T0W04模块11。T0W04模块11接收T0W04P子模块的数据(处理结果),在显示画面14上显示。
从T0W02模块12延伸的路径分成2路。一路是与T0W03模块13连接的路径,另一路是结束处理连接的路径。例如,当显示画面14显示‘结束’按钮时(作成显示这样的的显示画面的程序时),可以画出这样的处理路径图。当按压计算机输入装置上的回车键时,可以选择到达T0W03模块13的路径。当按压‘结束’按钮时,可以选择通向结束处理的路径。
图3示出包含批处理T1的一例处理路径图。该处理路径图包含由T1W04模块21、T1W02模块22和T1W03模块23构成的基本结构(循环结构)。
T1W02模块22读出存储在文件B25中的数据。将读出的数据转移到T1W03模块23中(从T1W02模块22向T1W03模块23的T1W02G子模块的数据移动)。在T1W03模块23中进行规定的处理(利用T1W04P子模块取得T1W02G子模块的数据和进行T1W04P子模块中的规定的处理)。T1W04模块21取得该处理结果(从T1W04P子模块向T1W04模块21的数据移动)。在T1W04模块21中,将处理结果记录在文件A24中。
从T1W02模块22延伸的路径分成2路。一路是与T1W03模块23连接的路径,另一路是结束处理连接的路径。例如,当在T1W03模块23中对包含在文件B25中的多个记录顺次进行规定的处理,并在读出所有的记录和规定的处理结束时刻选择通向结束处理的路径时,可以画出这样的处理路径图。
图4示出一例包含K的处理路径图。如上所述,K的基本结构(循环结构)是由W04模块输出的数据不是最后要得到的数据时的基本结构。因有必要与最后要得到的数据的输出(由T0W04模块或T1W04模块处理的输出)联结,故包含K的处理路径必须画出在线处理T0的处理路径或批处理T1的处理路径中任何一个路径。在图4所示的路径图中,与K的处理路径图一起,还画出在线处理T0的处理路径图(与图2相同)。分别用虚线将K的处理路径图的部分和在线处理T0的处理路径图的部分圈起来表示。
K的处理路径图包含由K-W04模块31、K-W02模块32和K-W03模块33。K-W03模块构成的基本结构(循环结构)。
从T0W03模块13(T0W03模块13的T0W04P子模块)延伸的路径在分支点A分支成返回T0W04模块11的路径和与K-W04模块31连接的路径。利用在T0W03模块13的T0W04P子模块中的判断(路径判断),决定是返回T0W04模块11还是进入K-W04模块31。
同样,从K-W03模块33(K-W03模块13的K-W04P子模块)延伸的路径在分支点B分支成返回K-W04模块31的路径和通向T0W04P子模块(意指T0W03模块13的T0W04P子模块)的路径。利用在K-W03模块33的K-W04P子模块中的判断,决定应通向K-W04模块31还是应通向T0W04P子模块。在Lyee的方法理论中,把在T0和K、T1和K等之间的不同种类的基本结构的连接特别称作合理性。
若在分支点A选择进入K-W04模块31的路径,则从K-W04模块31进入K-W02模块32和K-W03模块33,在这里进行处理的处理(四则运算等)。
图4示出了在线处理T0的基本结构和K的基本结构的连接(链接),但批处理T1的基本结构和K的基本结构的连接同样可以画出处理路径图。
图5示出进行规定处理的软件的一般处理路径图的一部分。当使计算机画出进行规定处理的软件的处理路径图时,一般,如图5所示,画出包含多个基本结构(在线处理T0的基本结构、批处理T1的基本结构、K的基本结构)的处理路径图。
利用Lyee软件模型处理的信息的单位是画面显示的项目和文件中出现的数据项目。它们在计算机处理中作为数据·字段。在Lyee法则中,把对数据·字段设置了某些值的状态称作有意状态(有意性)。把对数据·字段设置某些值的处理称作成立处理。把规定了可以设置某些数据的数据·字段(可以判断是否有有意性的单位,用来管理软件处理的数据的最基本的最小单位)或应设置的数据·字段的程序描述称作单词。通常,单词(数据·字段)属于画面、票据、文件、数据库、电文等(画面的单词、票据的单词、文件的单词等)。把单词所属的画面、票据、文件、数据库、电文等统称为“定义体”。定义体包括多个单词。此外,定义体大致可分为数据输入用定义体(例如,存储应向计算机装入的数据的数据库)和数据输出用的定义体(例如,表示处理结果的画面)。把数据输入用的定义体称作输入定义体,把数据输出用的定义体称作输出定义体。把数据输入输出都能用的定义体称作输入输出定义体。把属于输入定义体的单词称作输入单词,把属于输出定义体的单词称作输出单词,把属于输入输出定义体的单词称作输入输出单词。
在Lyee的软件模型中,以上述单词为基础作成每一个单词的程序。更详细地说,对于Lyee的软件模型中应处理的单词,预先决定是应利用上述T0、T1或K中的W04模块、W02模块和W03模块的哪一个模块来处理的单词(单词向模块的配置,坐标的决定)。
当判断一个单词有有意性时,可以判断利用了放在该单词中的数据的别的单词也有有意性。即,通过作成每一个单词的程序,可以对每一个单词进行判定,判定是否满足存放最后要得到的信息的单词的有意性(数据·字段是否存放有数据),判定是否满足为了得到最后要得到的信息所必需的别的单词的有意性。图6概略地示出这样的Lyee法则中的单词处理(单词的相互关系)的一个例子。
为了得到最后要得到的信息(输出信息A)(为了在应存放表示输出信息A的数据的数据·字段a中存放数据),必需要信息B和信息C。假定为了得到信息B,必需要信息D、信息E和信息F,为了得到信息C,必需要信息G和信息H。若在多个单词(数据·字段)中存在这样的关系,对各单词,通过判定其是否有有意性,可以判定能否得到最后必需要的输出信息A。在Lyee的软件模型中,可以这样来准备每一个单词的程序。
例如,假定输出信息A是信息B和信息C相加的结果(A=B+C)。即,若得到信息B和信息C,利用所得到的结果(信息B和信息C)可以得到输出信息A。当定下来A=B+C时,在Lyee法则中,把应存放信息A的数据·字段a(单词a)特别称作“端点单词”。把存放为了将数据(信息A)存放在单词a中而使用的信息(这里是信息B和信息C)的数据·字段b和数据·字段c特别称作“始点单词”。应存放的端点单词中的数据和应存放在始点单词中的数据有时不一样(例如,上述情况),有时一样(数据移动时)。
如上所述,若按照Lyee的方法理论,由W04模块、W02模块和W03模块构成的基本结构(循环结构)变成Lyee程序的基本软件结构。可以准备用来实现该软件结构的各种程序。说明成为按照Lyee的方法理论作成的程序(以下称作Lyee程序)的要素的程序的种类。
图7示出Lyee程序中对每一个基本结构都必要的程序的种类及其地位。基本上,这些程序是对在线处理T0的基本结构、批处理T1的基本结构和K的基本结构分别准备的。在图7的说明中,省略了T0、T1和K的区别。
基本结构(循环结构)由模块链接函数控制。即,模块链接函数程序是使构成基本结构的模块(W04模块、W02模块和W03模块)(后述的链接函数程序)轮流动作的程序。例如,若以COBOL程序为例,模块链接函数程序相当主程序的位置,W04模块(函数程序)、W02模块(函数程序)和W03模块(函数程序)相当子程序的位置。基本上,对每一个基本结构准备模块链接函数程序。模块链接函数程序在规定的条件下,进行起动其它基本结构的模块链接函数程序的处理,也进行使物理的定义体动作的处理。
由模块链接函数程序控制(调用)的是W04模块函数程序、W02模块函数程序和W03模块函数程序。W04模块函数程序、W02模块函数程序和W03模块函数程序分别是下面说明的控制多个程序(要素程序)的程序。若以COBOL程序为例,下面说明的各种要素程序是通过PERFORM语句或CALL语句由W04模块函数程序、W02模块函数程序和W03模块函数程序调用的程序。
如上所述,在Lyee程序中,对单词(数据·字段)预先决定(向单词的模块的分配,坐标的决定)它们分别是应由W03模块函数程序(以下称作W03模块)处理的单词?还是应由W04模块函数程序(以下称作W04模块)处理的单词?或者是应由W03模块函数程序(以下称作W03模块)的W02G子模块或W04P子模块处理的单词(属于)。在以下的说明中,将这些单词分别称作W04模块单词、W02模块单词、W02G子模块单词和W04P子模块单词。①W04模块函数程序(W04模块)是按相位要素程序、逻辑要素程序、输出作用要素程序、路径作用要素程序和构造作用要素程序的顺序控制这些程序的程序。对每一个输出定义体的种类(画面A、画面B等)准备W04模块函数程序。图8示出W04模块函数程序(W04模块)的处理流程。以下,说明由W04模块控制的各要素程序的处理。
相位要素程序(W04)图11表示处理流程。相位要素程序(W04)对属于(分配)前模块(因是W04模块的前模块故是W04P子模块)的单词,分别判定是不是空(有意性是否成立(数据·字段是否存放有数据))。接着,若对W04P子模块有意性成立(若数据·字段存放有数据),使存放在该单词(数据·字段)中的数据从W04P子模块相位移动(数据移动)到与W04模块对应的单词(数据·字段)中。把单词没有存放数据的状态称作‘空’。若W04P子模块单词是‘空’,则直接结束该处理。
逻辑要素程序(W04)图12表示处理流程。逻辑要素程序是对W04模块单词分别进行输出编辑的程序。例如,当应输出的数据利用代码信息存放在单词(数据·字段)中时,将该代码信息变换成语言再输出给显示画面,或者,进行编辑处理,在将数值输出到票据上时,对每3位加撇号(,)后再输出(例如1,000)。在“编辑处理1”、“编辑处理2”中具有用于编辑处理(用于编辑处理的程序描述)的地位。可以使编辑处理因W04模块单词是空(数据·字段没有存放数据)还是不空(数据·字段存放有数据)而不同。“成立?”的判断就是能否执行编辑处理的判断。若能执行编辑处理,则进入“成立处理”(例如,直接继续进行处理),若不能执行编辑处理,则进入“不成立处理”(例如,置错误标志)。
输出作用要素程序图13表示处理流程。输出作用要素程序是对画面、票据和文件等每一个输出定义体准备的程序。进行是否向输出定义体输出数据的判断(是否应该将存放在单词中的数据输出给显示画面),根据该判断进行处理(若是应输出的数据,则使其在显示画面上显示,若不是应输出的数据,则暂缓进行画面显示等)。
路径作用要素程序图14表示处理流程。如上所述,有时作成Lyee程序(分支),使其从一模块的处理转移到2个以上的其它任何模块的处理。路径作用要素程序(W04)是规定应利用什么样的条件进入哪一个W02模块的处理的程序。例如,当在处理路径图中从W04模块进入W02模块的路径有分支时,准备与该分支的个数对应数量的路径作用要素程序。从路径作用要素程序向模块链接函数程序给出指示,模块链接函数程序根据该指示使下一个应动作的W02模块动作。
构造作用要素程序图14表示处理流程。对利用上述输出作用要素程序对所有的W04模块单词进行了输出处理的事实作出回答,然后,进行将W04模块单词和W04G子模块单词(数据·字段)清除的处理和进行将进行了不成立处理时打开的标志关掉的处理。
如上所述,Lyee程序基本上是以单词为单位作成的程序的集合体。对属于(分配给)W04模块的单词(W04模块单词)分别作成上述相位要素程序、逻辑要素程序(W02)和输出作用要素程序。对分配给W04模块的单词所属的定义体(这里是输出定义体)分别作成构造作用要素程序。路径作用要素程序的个数象上述那样随从构成基本结构(循环结构)的W04模块延伸的路径的分支个数而变化。②W02模块函数程序(W02模块)按输入作用要素程序、逻辑要素程序和路径作用要素程序的顺序控制这些程序。对每一个输入定义体的种类准备W02模块函数程序。图9示出W02模块函数程序(W02模块)的处理流程。以下,说明由W02模块控制的各要素程序的处理。
输入作用要素程序输入作用要素程序是对画面、文件等每一个输入定义体准备的程序。进行是否从输入定义体读取数据的判断(是否应该从数据库读取数据等),根据该判断结果进行处理(从文件中读取应读取的数据,并存放在分配给W02模块的规定的单词中等)。处理流程和图13所示输出作用要素程序的处理流程一样。
逻辑要素程序(W02)图16表示处理流程。逻辑要素程序是对存放在分配给W02模块的单词中的数据的属性(类型)进行检验的程序。即使所决定的例如应存放在规定的单词(用户使用输入装置输入的数据应存放的数据·字段等)中的数据的类型是数值,文字数据由用户输入时的处理(属性检查)等也由逻辑要素程序(W02)进行。准备和W02模块单词相同个数的逻辑要素程序。
路径作用要素程序(W02)路径作用要素程序(W02)是当在从W02模块进入W03模块的路径有分支时,规定应利用什么样的条件进入哪一个W03模块的处理的程序。准备与分支的个数对应数量的路径作用要素程序。图14示出其处理流程。③W03模块函数程序(W03模块)基本上按相位要素程序、逻辑要素程序、相位型逻辑要素程序、R型相位要素程序、逻辑要素程序和路径作用要素程序的顺序控制这些程序。对一个系统准备一个W03模块函数程序。图10示出W03模块函数程序(W03模块)的处理。以下,说明由W03模块控制的各要素程序的处理。
相位要素程序(W02G)相位要素程序(W02G)是对分配给W02模块的单词,分别判定其有意性是否成立(数据·字段是否存放有数据)的程序。若有意性成立,使存放在该单词(数据·字段)中的数据从W02模块相位移动(数据移动)到W02G子模块的单词(数据·字段)中。准备和W02模块单词数相同个数的相位要素程序。处理和图11相同。
逻辑要素程序(W02G)图17表示处理的内容。准备和分配给W02G子模块的单词数相同个数的逻辑要素程序。该逻辑要素程序判断分配给W02G子模块的单词是否有有意性(单词的数据·字段是否存放有数据)。接着,若有有意性(不空),则直接结束处理,若没有有意性(空),尝试进行用来使有意性成立的规定的处理(设定初始值等)。当没有有意性的单词具有有意性时(数据·字段存放数据),结束处理。不必需要逻辑要素程序(W02G)。
相位要素型逻辑要素程序是对属于W02G子模块的单词分别判定其有意性是否成立的程序。处理和图11相同(“自己生成”,数据移动处理)。
合理型相位要素程序合理型相位要素程序(以下称R型相位要素程序)是当利用由存放在由不同模块链接函数程序控制的模块函数程序处理的单词(数据·字段)中的数据时(例如,在图4所示的处理路径图中,相当于‘T0’和‘K’链接的情况),对存放在这样的单词中的数据进行相位移动(数据移动)处理的程序。存放在由不同模块链接函数程序控制的分配给W04P子模块(其它的W04P子模块)的单词中的数据利用该R型相位要素程序进行数据移动。处理和图11的一样。
逻辑要素程序(W04)准备和属于W04P子模块的单词数相同个数的逻辑要素程序(W04)。该逻辑要素程序判断分配给W04P子模块的单词是否有有意性(单词的数据·字段是否存放有数据)。接着,若有有意性则直接结束处理,若没有有意性(数据·字段没有存放数据),尝试进行用来使有意性成立的规定的处理(四则运算或数据移动处理)。当没有有意性的单词具有有意性时(数据·字段存放数据),结束处理。处理和图17的处理相同。
上述R型相位要素程序、相位要素型逻辑要素程序和逻辑要素程序(W04)的处理结果是后述的W03模块函数程序的‘再起否?’的判断对象(后述)。
路径作用要素程序(W04P)路径作用要素程序是规定应利用什么样的条件进入哪一个W04模块的处理的程序。准备和分支数对应个数的路径作用要素程序。处理和图14的处理相同。
W03模块函数程序(图10)的‘再起否?’的处理反复进行,直到R相位要素程序中的‘相位’成立,进而,直到在相位要素型逻辑要素程序中的‘自己生成’的部分和逻辑要素程序(W04P)中的自己生成’的部分中应存放新数据的单词存放了数据。W03模块因在Lyee基本结构(参照图4等)中是向下一个应进入的基本结构连接的部分,故一般在单词(分配给W04P子模块的单词)中存放某些数据是必要的。当单词中没有存放数据时,在这里重复进行处理,在单词中存放了数据时刻,进入下一个基本结构中的处理。
图18示出作为要素程序之一的逻辑要素程序(W02)的具体程序例子。该程序的编程使其满足上述图16所示的处理结构、在□(空栏)的部分存放表示W02模块单词的识别符(单词识别符)(即,对每一个W02模块单词作成逻辑要素程序(W02))。对多个W02模块单词,进行相同的处理(属性检验)。因单词不同而变化的程序描述只是一部分(若存放在单词中的数据是‘数值’则进入下一步处理,若存放在单词中的数据是‘文字’则进行进入下一步处理等的判断的部分)。
上述的多个要素程序和模块函数程序分别对多个单词(分配给模块单词)、定义体和路径作成。模块链接函数程序对每一个基本结构作成(若是同样的处理,对多个基本结构也可以作成一个模块链接函数程序)。按Lyee法则作成的软件全部由上述多个程序构成。即使软件的处理不同,作成的程序的种类和程序的处理结构(上述流程图的处理流程)也相同。逻辑要素程序(图17)中的“自己生成”部分的描述和输出(输入)作用要素程序(图13)中的判断部分(例如,输出作用要素程序的“执行条件的判断”的部分等)的描述只根据软件的功能而异(把具有如图8到图17所示那样的不因程序的软件功能而变化的部分(在自动生成Lyee程序时重复使用的部分)和象“成立?”或“判断”那样被代入每一个软件特有的处理的部分的程序称作“模板”)。这样,利用符合Lyee法则的开发方法作成的软件,因其结构被明确规定故容易分析。而且,即使追加新的功能,只要追加(多个)程序(或程序描述)使实现该功能的单词(追加新的画面输出项目等情况)(数据·字段)满足基本结构即可。软件的修正(升级)也可以很快达到。
2、从现有程序到Lyee程序的再构筑图19是表示把表示利用Lyee开发方法以外的方法作成的现有的程序(以下称作现有程序)重新构筑在具有符合Lyee开发方法的新结构的程序中而维持该现有程序达到的功能的处理的全部流程的流程图。
程序再生处理(程序)按形式化处理(程序)31、标准化处理(程序)32和Lyee ALL处理(程序)33的顺序执行。对这些处理的一部分,也可以不用计算机处理,而用手工作业进行。程序再生处理程序可以记录在CD-ROM等记录媒体上。若将记录在CD-ROM等记录媒体上的程序再生处理程序装入计算机(个人计算机,工作站等),该计算机可以作为程序再生装置工作。图20示出程序再生装置的一例硬件构成。
程序再生装置1包含CPU2。CPU2经总线与用来接收数据输入的输入装置3(键盘、鼠标等)、用来使数据等可见输出的显示装置4(CRT显示装置、打印装置等)、读取记录在软盘(FD)上的数据等而且在FD上记录数据等的FD驱动器5、读取记录在CD-ROM上的数据等的CD-ROM驱动器6和记录有操作系统、程序再生处理程序和上述模板等的外部存储装置7连接。CPU2的内部的(或与CPU2连接)内部存储器8提供程序区和缓冲区等。
当要使工厂、事业单位和家庭等使用的计算机系统实现规定的功能时,用于该处理的程序(现有程序)大多由多个程序构成。在大型系统中,该程序的数量有时可达到数百个。在程序再处理中,基本上,以一个一个程序为对象,进行上述3个处理(形式化处理标准化处理和Lyee ALL处理)。①形式化处理(步骤51)在形式化处理中,从现有程序的程序描述中抽出再生处理必要的信息再整理成表格,对现有程序进行整形(使语法明确),判断现有程序中包含的单词的属性(是始点单词、端点单词、数值、还是程序员已定义了的单词等),作成处理路径图,进行这样的用来使从现有程序向Lyee程序的再构筑(再生)变得容易的处理。形式化处理的详细情况将在后面叙述。②标准化处理(步骤52)在标准化处理中,判断现有程序中包含的单词在Lyee程序结构上的地位(单词向模块的分配),为了符合Lyee法则(规则)进行改写现有程序中的命令语句的处理。此外,作成用来输入(登录)到作成Lyee程序的工具(Lyee ALL)中的信息也在该标准化处理中进行。标准化处理的详细情况将在后面叙述。③Lyee ALL处理(步骤53)在Lyee ALL处理中,将经上述形式化处理和标准化处理得到的现有程序的功能保持下来,进行把满足Lyee程序结构所必要的信息代入表示Lyee程序的基本处理结构的程序(模板)的规定位置的处理。Lyee ALL处理的详细情况将在后面叙述。
在以下的说明中,具体说明从利用COBOL(Common BusinessOriented Language)作成的现有程序(利用不符合Lyee开发方法的方法作成的程序)生成Lyee程序(按Lyee开发方法作成的程序)的处理流程。
图21示出利用COBOL作成的一例现有程序。为说明方便起见,在程序语句(命令语句)的左边,分成后述的过程部(PROCEDUREDIVISION)和除此之外的部,再标明行号。
首先,说明图21所示的现有程序(COBOL程序)的内容。
在COBOL程序中包含下面4个部(DIVISION)。
(I)标识部(IDENTIFICATION DIVISION);第01行(II)环境部(ENVIRONMENT DIVISION);第03行(III)数据部(DATA DIVISION);第11行(IV)过程部(PROCEDURE DIVISION);第01行在(I)标识部(IDENTFICATION DIVISION)中,记述程序名(程序ID)(第02行;PROGRAM-ID.AAA1)。该COBOL程序是程序名为‘AAA1’的程序。
在(II)环境部(ENVIRONMENT DIVISION)中,包含结构节(CONFIGURATION SECTION)(第04行)和输入输出节(INPUT-OUTPUTSECTION)(第07行)。
在结构节(CONFIGURATION SECTION)中,记述了应处理该COBOL程序的计算机名(翻译用计算机名和执行用计算机名)。在图21所示的现有程序中,记述的翻译用计算机名是‘AS400’(第05行SOURSE-COMPUTER.AS400.)和执行用计算机名是‘AS400’(第06行OBJECT-COMPUTER.AS400.)。在输入输出节(INPUT-OUTPUTSECTION)的文件管理段落(FILE-CONTROL)(第08行),记述了用来向计算机(翻译用计算机和执行用计算机)输入数据或输出处理结果的装置名(输入输出装置名)。记述了把称之为‘GAMEN-F’的文件放置在称之为‘画面-AAA’的输入输出装置中(第09行SELECTGAMEN-F ASSIGN TO画面-AAA.)。“ORGANIZATION ISTRANSACTION.”(第10行)意指称之为‘GAMEN-F’的文件是进行事务处理的文件。
在(III)数据部(DATA DIVISION)中,包含文件节(FILE-SECTION)(第12行)和作业场所节(WORKING-STORAGE)(第19行)。
在文件节(FILE-SECTION)中,记述了文件、构成文件的记录及包含在记录中的项目的关系。在文件中,有放置在数据库等(存储、写入)中的文件、向画面等输出的文件、从画面输入的文件和向票据等输出(记载)的文件等种种文件。
在图21所示的现有程序中,称之为‘GAMEN-F’的文件是放置在输入输出装置‘画面-AAA’中的文件(第09行)。即,是处理显示装置的显示画面上显示的项目的文件。把这样的文件的记录称作定义体‘画面’。识别该定义体‘画面’的识别符(定义体识别符)是后述的‘GAMEN-R’。
‘GAMEN-F’具有称之为‘GAMEN-R’的记录(集团项目)。那里包含有称之为‘SHIN-CD’、‘SU’、‘TANKA’和‘KINGAKU’的项目(基本项目),而记述在数据部(DATA DIVISION)的第13行~第18行。记述在基本项目之后的‘PIC X’意指应由该基本项目处理的数据是文字数据,‘PIC S9’意指应处理的数据是带符号的数值数据。()内的数值表示位数(文字数)如上所述,在Lyee中把放置某些数据的数据·字段(用来管理软件处理的数据的最基本的最小的单位)称作‘单词’。从上述文件节(FILE-SECTION)的记述可知,在图21所示的现有程序中使用称之为‘SHIN-CD’、‘SU’、‘TANKA’和‘KINGAKU’的单词。而且知道这些单词是属于定义体‘GAMEN-R’的单词。
在作业场所节(WORKING-STORAGE),定义了存放数据处理的中间结果等的字段(作业区)。在称之为‘SHIN-TBL’数据库中设有‘SHIN-CD’和‘TANKA’2个字段,其余还设有称之为‘END-BTN’和‘WK’2个字段。因这些字段也是存放某些数据的数据·字段,故在Lyee中具有‘单词’的地位。
在(IV)过程部(PROCEDURE DIVISION)中,记述了实体的处理内容。图22示出利用图21所示的现有程序在显示装置的显示画面上显示的一例画面(接收商品订货的画面)。图23表示预先准备的数据库(商品表)的例子。图24和图25分别示出根据过程部(PROCEDURE DIVISION)的记述表示现有程序的处理流程的流程图。
在显示画面(该画面的识别符(定义体识别符)是‘GAMEN-R’)54中,显示商品代码输入栏55、数量输入栏56、单价显示栏57、金额显示栏58和结束按钮59。与这些输入栏和输出栏对应的数据·字段分别是SHIN-CD、SU、TANKA和KINGAKU。商品数据库(商品表)60(该数据库的识别符(定义体识别符)是‘SHIN-TBL’)包含商品代码(SHIN-CD)和单价(TANKA)的项目。
若执行图21的现有程序,在进行初始化处理之后(步骤61),读取GAMEN-F(用于在显示画面上进行画面显示的文件)(步骤62)。在显示装置的显示画面上显示图21所示的画面54。
显示画面54上的结束按钮59在结束现有程序的处理时被点击。若结束按钮59被点击,则结束现有程序的处理(在步骤63是YES,步骤72)。
若按压输入装置(键盘等)的回车键,则可以判断显示画面54的商品代码输入栏55和数量输入栏56是否输入了数据(在步骤63是NO,步骤64)。图21所示的现有程序将商品代码输入栏55和数量输入栏56输入了数据作为一连串处理的前提。因此,当商品代码输入栏55或数量输入栏56至少一方没有进行数据的输入时,进行出错处理(在步骤64是NO,步骤73;显示画面54的金额显示栏58显示‘99999’)。
当显示画面54的商品代码输入栏55和数量输入栏56输入了数据时(在步骤64是YES),将表示输入的商品代码和数量的数据存放在工作存储器中。此外,在输入的商品代码的基础上参照商品表60(步骤65)。
判断输入的数据(商品代码,数量)是否合适的数据(步骤66)。例如,如上所述,预先规定商品代码输入栏55必须与数据·字段‘SHIN-CD’对应(输入到商品代码输入栏55的数据存放在数据·字段‘SHIN-CD’中),存放在‘SHIN-CD’中的数据必须是5个字的文字数据(数据部(DATA DIVISION)的第15行)。若在商品代码输入栏55中输入数值数据或输入商品表60的商品代码栏不存在的代码,在数量输入栏56中输入了文字数据,则进行出错处理(在步骤66是NO,步骤74;显示画面54的单价显示栏57显示‘99999’)。
当输入数据适合时(步骤66为是),与输入到商品代码输入栏55的商品代码对应的商品的单价(参照商品表60)和输入到数量输入栏56的数量的相乘结果存储在工作存储器中(步骤67)。
判断存储的相乘结果是否超过10000日元(步骤68)。若相乘结果超过10000日元(步骤68为是),则算出的金额是相乘结果(商品单价×数量)与0.8相乘的结果(步骤69)。在显示画面54的的单价显示栏57和金额显示栏58中分别显示单价和算出的金额。若相乘结果在10000日元以下(步骤68为否),则金额显示栏58中显示相乘结果与0.9相乘的结果(步骤70、步骤71)。
下面,说明把图21所示的现有程序再构筑(再生)成LYEE程序而维持其功能的具体处理流程。如上所述,流程再生处理按形式化处理、标准化处理和Lyee ALL处理的顺序进行(图19)。
图26是详细示出形式化处理(步骤51)得到处理内容的流程图。这些处理大多数可以由计算机自动进行。
根据现有程序的记述作成指令表(全部)(步骤81)。图27示出根据图21所示的现有程序(COBOL程序)的记述作成指令表(全部)。
指令表(全部)把使系统工作的所有程序作为对象作成。在这里,为说明方便起见,假定图21所示的现有程序是使系统工作的程序(程序总体)。
指令表(全部)包括定义体种类、命令、命令种类(程序语言)、条件、外部文件、输入输出区分和模块所在的栏。
在‘定义体种类’栏中,存放表示现有程序规定的(现有程序的处理所使用的)定义体的种类的数据。定义体意指象上述那样由计算机操作的输入输出媒体,包含画面、数据库和文件等。从现有程序的环境部(ENVIRONMENT DIVISION)的输入输出节(INPUT-OUTPUTSECTION)的记述和数据部(DATA DIVISION)的记述可以把握现有程序规定的定义体的种类。当然,例如,当一个系统中使用不同种类画面的时(这样记述的现有程序)时,记述连‘画面1’、‘画面2’的画面种类都能够区别的数据。对数据库也一样。
在‘指令’栏中,存放用来从现有程序的记述中发现现有程序中规定的输入输出装置(定义体)的指令。
在‘命令种类’栏中,表示用于后述的‘条件’栏和‘输入输出’装置栏记述的输入输出装置的检索的记述是什么样程序语言的记述。
在‘条件’栏中,记述用来从现有程序的记述中发现处理定义体的输入输出装置的条件。‘ASSIGN TO 画面’意指在现有程序中的‘ASSIGN TO画面’记述的后面记述定义体‘画面’的输入输出装置名。‘FROM’意指在‘FROM’记述的后面记述定义体‘DB’的输入输出装置名(COBOL程序的规定)。在‘输入输出装置’栏中,记述在COBOL程序的ASSIGN节中记述文件名、在FROM节中记述数据库名的情况。
在‘输入输出区分’栏中,存放表示‘定义体种类’栏中存放的定义体是与输入有关的定义体还是与输出有关的定义体的数据(‘入’或‘出’)。
在‘模块所在’栏中,根据‘定义体种类’栏中存放的数据和‘指令’栏存放的数据(或‘输入输出区分’栏存放的数据)存放模块的种类。根据‘定义体种类’栏中存放的定义体的种类决定基本结构是‘T0’、‘T1’或‘K’。根据‘指令’栏中存放的命令(或‘输入输出区分’栏存放的数据)决定模块是‘W04’或‘W02’。例如,定义体‘画面’是在线处理T0中处理的定义体。此外,定义体‘画面’用于输入(商品代码的输入、数量的输入)和输出(单价的输出、金额的输出)。若定义体种类是‘画面’,输入输出区分是‘入’则存放‘T0W02’,若输入输出区分是‘出’则存放‘T0W04’。指令表(全部)也可以根据技术人员在现有程序中的记述作成。
其次,进行现有程序的整理(步骤82)。因图21所示的现有程序是经过了用于现有程序的整理的处理(步骤82)(整理结束或不必整理)的程序,关于用于现有程序的整理的处理(步骤82)将在后面详述。
作成指令表(按程序)(步骤83),图28示出指令表(按程序)。
如图28所示,指令表(按程序)包括程序ID、指令、外部文件、定义体、输入输出区分和模块所在的栏目。
在‘程序ID’栏中,存放已记述了现有程序的标识部(IDENTIFICATION DIVISION)记述的程序名(程序ID)。使翕工作的程序可以由该程序名(程序ID)特定。对每一个程序名(程序ID)作成指令表(按程序)。
在‘指令’栏中,存放在由上述程序ID特定的现有程序的过程部(PROCEDURE DIVISION)中表现的、与数据的输入输出关连的命令。
在‘输入输出装置’栏中,根据上述指令表(全部)的‘条件’栏的记述,记述表示从现有程序检索出的输入输出装置名的数据。
在‘定义体’栏中,根据数据部(DATA DIVISION)和过程部(PROCEDURE DIVISION)的记述,存放由‘指令’栏存放的指令处理的定义体(画面、DB等)的定义体名。
例如,在图21所示的现有程序中,因过程部(PROCEDUREDIVISION)的第06行的指令‘WRITE’是进行对‘GAMEN-R’的处理的命令,故‘GAMEN-R’存放在与指令‘WRITE’对应的‘定义体’栏中。
‘输入输出区分’栏和‘模块所在’栏和上述指令表(全部)相同。
指令表(按程序)可以由计算机根据指令表(全部)作成。当然,也可以根据现有程序的记述由技术人员作成。
作成处理路径图(步骤46)。图29示出根据图21所示的现有程序的记述作成的处理路径图。
根据已作成的指令表(按程序)可以把握在现有程序中包含T0和T1的基本结构的情况。此外,在现有程序中,因一般作成该程序的程序员使用已定义的单词(数据·字段),故考虑也存在K的基本结构。进而,也考虑在T0的基本结构和T1的基本结构中分别附加进行错误处理的基本结构(K的一形态)。分别对T0、T1描绘由W04模块、W03模块和W02模块构成的基本结构(循环结构)将这些基本结构连结起来(利用表示T0基本结构的W03模块(W04P子模块)和T1基本结构的W04模块之间的路径的线条进行连结)。描绘K的基本结构并与T0的基本结构连结。分别对T0的基本结构和T1的基本结构,描绘错误处理的K的基本结构,分别与T0的基本结构和T1的基本结构连结。作成图29所示那样的处理路径。
从作成的处理路径图抽出的信息归纳成表(处理路径图信息表)。图30示出处理路径图信息表。在处理路径图信息表中设置现程序ID(现PGM ID)、处理路径图ID、链接函数ID、模块ID、路径要素ID、次模块ID、输入输出指令要素ID、指令和定义体的栏目。
‘现程序ID(现PGM ID)’是对每一个现有程序附加的ID。当把多个现有程序再生为Lyee程序时,利用该现程序ID来识别它们。
‘处理路径图ID’是对每一个基本结构附加的ID。如上所述,基本上,对每一个基本结构设置模块链接函数程序。识别对各基本结构进行统一控制的模块链接函数程序的ID存放在链接函数ID栏中。
‘模块ID’是用来识别构成基本结构的各模块的ID。给模块附加ID以便能够识别包含在多个基本结构中的各个模块(W04模块、W02模块和W03模块)。
‘路径要素ID’是识别从利用模块ID识别的模块延伸的路径的ID。例如,在图29所示的处理路径图中,从T0W03模块(T0W04P子模块)延伸的路径与T0W04模块、T1W04模块、KW04模块和K(Err)W04模块连结(用图29中的符号A(分支点A)表示)。对这些路径分别附加ID(Rute-1、Rute-2、Rute-3和Rute-4)。
‘次模块ID’是利用由路径要素ID识别的路径识别与由存放在‘模块ID’栏中的模块特定的模块连结的模块(次模块)的ID。因分别对处理路径图描绘的模块附加上述模块ID,故使用该模块ID来表示与由路径要素识别的路径连结的模块(次模块)。
当由模块ID识别的模块是访问画面、数据库、文件等(读取数据、写入数据等)的模块时,‘输入输出指令要素ID’是识别该模块是进行用来读取数据(输入)的处理的模块还是进行用来写入数据(输出)的处理的模块的ID。在进行用来读取数据(输入)的处理的模块中存放‘WRITE-1’,在进行用来写入数据(输出)的处理的模块中存放‘READ-1’。在‘指令’栏中存放在现有程序的过程部(PROCEDURE DIVISION)中使用的用于数据的输入输出的具体命令(指令)。
在‘定义体’栏中,存放利用存放在上述‘指令’栏中的指令进行处理的定义体名。
回到图26,根据现有程序和指令表(按程序)进行模块链接函数程序应处理的命令语句(程序语句)的特定处理(模块链接函数处理命令语句特定处理;步骤84)和第1次坐标决定处理(步骤85)。这些处理结果反映在下面所示的Lyee Belt中。图31是表示第1次坐标决定处理的详细的流程图,图32是表示一例Lyee Belt(从图21所示的现有程序作成Lyee Belt)。
在Lyee Belt中(图32)中包含行号记述栏、命令种类记述栏、链接函数记述栏和记述了现有程序的过程部(PROCEDURE DIVISION)的程序记述栏(记述了这些信息的表是Lyee Belt)。模块链接函数处理命令语句特定处理(步骤84)的处理结果记述在链接函数记述栏中。第1次坐标决定处理(步骤85)的结果记述在程序记述栏中。
在‘命令种类’记述栏中,对程序记述栏记述的命令语句(程序语句)记述包含在其中的规定命令的种类。记述程序记述栏记述的命令语句包含的命令是对端点单词进行处理的命令(端点命令),还是IF命令语句(IF),或者是与其它的数据输入输出有关的命令(CMD)。例如,现有程序的过程部(PROCEDURE DIVISION)记述的命令语句的第14行的‘MOVE 99999 TO KINGAGU OF GAMEN-R’是对端点单词‘KINGAGU(OF GAMEN-R)’进行处理的程序语句。在与第14行对应的命令种类记述栏中记述‘端点命令’(表示是得到命令的数据)。
在‘链接函数’记述栏中,记述模块链接函数处理命令语句特定处理(步骤84)的处理结果。该处理是特定上述模块链接函数程序应处理的命令语句(程序语句)的处理。对定义体(画面等)进行物理处理的命令语句附加规定的标志后再进行存放。附加了标志的命令语句意指在模块链接函数中(作为模块链接函数程序的程序记述的一部分)应使用的命令语句。
在程序记述栏的现有程序的过程部(PROCEDURE DIVISION)的记述中,追记第1次坐标决定处理(步骤85)的处理结果。下面,参照图31说明第1次坐标决定处理的详细情况。第1次坐标决定处理基本上由计算机进行。当然,该处理的一部分也可以由技术人员进行。
现有程序的过程部(PROCEDURE DIVISION)记述的现有程序的命令语句的第1行读入到程序再生装置1的CPU2(或内部存储器8,存储装置)(步骤101、103)。程序再生装置1的计数器加1。
判断在读入CPU2的命令语句中是否包含单词的记述(是否包含单词)(步骤104)。命令语句是否包含单词可以通过包含在读入的命令语句中的一部分字符串是否包含和表示现有程序的过程部(DATADIVISION)中记述的单词的字符串相同的字符串来判断。
当命令语句中不包含单词时,使计数器加1,CPU2读入下一行命令语句(步骤104为否,步骤105、步骤103)。
当命令语句中包含单词时(步骤104中为是),判别该单词是属于定义体(画面、文件、DB(数据库)等),还是数值(值),或者是既不属于定义体也不是数值的单词(一般是作成现有程序的程序员作成的单词,将此称作为工作)。此外,当命令语句中的单词是定义体单词时,判别是属于哪一个定义体的单词(步骤106)。
在命令语句中包含的单词是什么样的单词的判断中可以参照数据部(DATA DIVISION)的记述和环境部(ENVIRONMENT DIVISION)的文件节的(FIFLE-CONTROL)的记述。例如,若读入第14行的‘MOVE99999 TO KINGAKU OF GAMEN-R’可知在该命令语句中包含‘99999’和单词‘KINGAKU(OF GAMEN-R)’。又可知‘99999’是数值(值)。从‘KINGAKU’后面的对定义体的记述(‘OF GAMEN-R’)、数据部(DATA DIVISION)的记述(‘FD GAMEN-R’‘和01 GAMEN-F’)和环境部(ENVIRONMENT DIVISION)的文件节的(FIFLE-CONTROL)的记述(‘SELECT GAMEN-F’ASSIGN TO 画面-AAA)中,还可知单词‘KINGAKU (OF GAMEN-R)’是属于‘GAMEN-R’画面定义体的单词。在‘99999’中附加表示是数值(值)的识别符(第1次坐标,‘画面’),在单词‘KINGAKU (OF GAMEN-R)’中附加表示属于画面定义体的单词的识别符(第1次坐标,‘画面’)。这样一来,在Lyee Belt的程序记述栏中追记第1次坐标(‘MOVE 99999(值) TOKINGAKU OF GAMEN-R(画面)’)。
在定义体单词、数值和工作以外的单词(第18行的‘状态’)中,附加表示该意思的识别符(第1坐标,这里是‘控制BOX’)。追记的识别符与程序记述栏记述的程序(现有程序)一起暂时存储在内部存储8(存储装置)中。
其次,对于附加了定义体种类、数值或工作中的任何一个的识别符的单词,判断该单词是端点单词还是始点单词(步骤107)。当既不是端点单词也不是始点单词时(步骤107为否),转移到对下一个命令语句的处理(步骤105、步骤103)。
端点单词或始点单词的判断通过在单词的检测处理(步骤104)中检测出的单词是不是使用了用来代入MOVE语句或COMPUTE语句等的值的(参照)的单词和代入值的单词的命令语句中的单词。例如,第22行的‘COMPUTE WK(工作)=TANK OF GAMEN-R(画面)*SU OFGAMEN-R(画面)’是COMPUTE语句,所以,可知该命令语句包含端点单词和始点单词。当是COMPUTE语句时,位于‘=(等于)’之前的单词是代入数据的单词(端点单词)。位于‘=(等于)’之后的单词是用来代入数据的单词(始点单词)。在单词‘WK’中附加表示是端点单词的识别符,在单词‘TANKA’和‘SU’中附加表示是始点单词的识别符(‘COMPUTE WK(端工作)=TANK OF GAMEN-R(始画面)*SU OF GAMEN-R(始画面)’)。当是MOVE语句时,位于‘TO’之前的单词是始点单词,位于‘TO’之后的单词是端点单词。在内部存储器8存储的程序中追记识别符(表示识别符的数据)(追记了定义体识别符的程序被更新)。
当结束Lyee Belt的作成和处理路径图信息表的作成时,转移到下面的标准化处理(图19,步骤52)。图33是表示标准化处理(步骤52)的详细内容的流程图。
在标准化处理中,利用第2次坐标决定处理(步骤91),对上述Lyee Belt(图32)追记新的信息。进而,进行命令展开处理(步骤92)和IF语句的分析处理(步骤92),作成命令列表(后述)。根据作成的命令列表和上述处理路径图信息表等进行Lyee ALL登录信息作成处理(步骤54)。以下,按顺序详细说明这些处理。
图34是表示第2次坐标决定处理(步骤91)的详细流程的流程图。图35表示利用第2次坐标决定处理得到的Lyee belt(更新的Lyee Belt)。在第2次坐标处理(图34)中,因包含和上述第1次坐标处理相同的处理,故对和上述第1次坐标处理相同的处理添加相同的符号并省略重复说明。
第2次坐标处理和第1次坐标处理一样,也利用计算机进行处理。当然,技术人员要验证处理结果,必要时技术人员也可以对处理结果进行修正等。
对已检测出的各单词(单词附加有表示上述识别符(第1次坐标)的数据)判别模块链接函数种类(是T0、T1或K)和模块种类(是W04模块单词、W02模块单词、W02G子模块单词或W04P子模块单词),将表示该结果的识别符附加在单词上(步骤111、分配给单词模块)。
单词的模块链接函数种类的判断可以根据包含在CPU2(或内部存储器8;存储装置)读入的命令语句中的单词所属的定义体种类进行判断。例如,定义体‘GAMEN-R’是画面定义体。属于画面定义体‘GAMEN-R’的单词具有作为模块链接函数T0(模块链接函数钟楼是‘T0’)的地位。属于定义体‘GADEN-R’的单词(‘SHIN-CD’、‘SU’、‘TANKA’和‘KINGAKU’)(根据这些单词后面的‘OF GAMEN-R’的记述可以把握属于定义体‘GAMEN-R’的单词)的模块链接函数的种类判断为‘T0’。当CPU2读入的命令语句包含这些单词时,追记识别符(表示是T0、T1或K的数据)使其附加在该单词上。
单词的模块种类的判断通过该单词是与输入有关的单词还是与输出有关的单词来进行判断,例如,从过程部(PROCEDURE DIVISION)的第13行的记述可知,单词‘SHN-CD(OF GAMEN-R)’和‘SU(OFGAMEN-R)’是与输入有关的单词、即W02模块单词。最后,在单词‘SHIN-CD’(OF GAMEN-R)’和‘SU(OF GAMEN-R)’中附加了称之为‘T0W02’的识别符(追记在程序记述栏中)(图35;Lyee Belt的更新)。现有程序包含的各单词分配给多个模块中的任何一个模块。
当第2次坐标决定处理(步骤91)结束时,转移到命令语句的展开处理(步骤52)。图是表示命令语句的展开(基本结构的充足)处理的流程的流程图。对和第1次坐标处理(图31)相同的处理添加相同的符号并避免重复说明。命令语句的展开处理基本上也由计算机进行。
对CPU2(或内部存储器8)读入的命令语句,判断该命令语句是否用来代入值(参照)的单词(始点单词)和值应被代入的单词(端点单词)所使用的命令语句(MOVE语句或COMPUTE语句等)(是否包含端点单词和始点单词的程序语句)(步骤121)。当是MOVE语句或COMPUTE语句等之外的程序语句时,使计数器加1。读入下一行的命令语句(步骤121为否,步骤105)。
当读入的命令语句是MOVE语句或COMPUTE语句等时(步骤121为是),可以参照包含在那里的始点单词的第2次坐标和端点单词的第2次坐标。判定是否满足Lyee的循环结构(基本结构)(步骤122)。
如上所述,按Lyee的法则作成的程序(Lyee程序)在编程时使其按W04模块、W02模块和W03模块的顺序进行处理。在现有程序中,因没有按这样的作成方法进行程序的作成,故存在不满足循环结构的程序(命令语句)。命令语句的展开(循环结构的充足)处理是用来检测出不满足循环结构的命令语句并使这样的命令语句满足循环结构的处理。
例如,第21行的‘MOVE TANKA OF SAHIN-TBL(始T1W02) TOTANKA OF GAMEN-R(端T0W04)’变成把存储在T1W02模块单词(TANKA(OF SAHIN-TBL))中的数据存储在T0W04模块单词(TANKA(OF GAMEN-R))中的命令语句。该命令语句若从Lyee的法则的观点来看,就是T1W02模块的下一个T0W04模块动作的命令语句。在T0、T1、K中,各记述与按Lyee的法则使其按W04模块、W02模块和W03模块的顺序动作程序结构相反。因此,在命令语句的展开处理中,当这样的命令语句被CPU2读入时,进行追记(或分解、展开命令语句)命令语句(和新的单词)的处理,使该命令语句满足循环结构(步骤123)。对第21行命令语句进行命令语句的展开处理的结果(命令列表)示于图37。
参照图29所示的处理路径图和图37所示的命令列表,说明对第21行命令语句‘MOVE TANKA OF SAHIN-TBL(始T1W02) TO TANKAOF GAMEN-R(端T0W04)’的命令语句展开处理。
第21行命令语句的始点单词‘TANKA(OF SAHIN-TBL)’所属的模块是T1W02模块。作为Lyee法则中的单词向模块的分配规则之一,有与W02模块单词相同的单词也可以分配给W02G子模块的规则。向T1W02G子模块分配新的单词‘TANKA(OF SAHIN-TBL)’。追记使T1W02模块和T1W02G子模块连接的命令语句‘MOVE TANKA OFSAHIN-TBL(T1W02) TO TANKA OF SAHIN-TBL(T1W02G)’。
作为Lyee法则中的单词向模块分配规则之一,有与W02G子模块单词对应的单词也可以分配给W04P子模块的规则。向T1W04P子模块分配单词‘TANKA(OF SAHIN-TBL)’。追记使T1W02G子模块和T1W04P子模块连接的命令语句‘MOVE TANKA OF SAHIN-TBL(T1W02G) TOTANKA OF SAHIN-TBL(T1W04P边界)’。这时将被分配的单词特别地称作边界单词。
因第21行命令语句的端点单词(TANKA OF GAMEN-F(T0W04))是在线处理T0的基本结构的单词,故有必要使数据从批处理T1的基本结构移动(相位)到在线处理T0的基本结构。这时,在在线处理T0的基本结构的W04P子模块中设置相位前的新单词(TANKA OFGAMEN-R(T0W04P境境))。时将被分配的单词特别地称作境境单词。追记使批处理T1的T1W04P子模块和在线处理T0W04P子模块连接的命令语句(MOVE TANKA OF SAHIN-TBL(T1W04P) TO TANKA OF GAMEN-R(T0W04P境境))。
有必要使存放在境境单词中的数据存放到W04P子模块中。在在线处理T0的W04P子模块中设置新的单词(TANKA OF GAMEN-R(T0W04P))设置使境境单词和新生成的W04P子模块单词连结的命令语句(MOVE TANKA OF GAMEN-R(T0W04P境境)TO TANKA OF GAMEN-R(T0W04P))。
最后,追加使新分配给T0W04P子模块的单词(TANKA OF GAMEN-R(T0W04P)与T0W04模块单词(TANKA OF GAMEN-R(T0W04)连结的命令语句(MOVE TANKA OF GAMEN-R(T0W04P) TO TANKA OF GAMEN-R(T0W04))。
在命令列表(图37)中,记述进行命令语句的展开处理的行号、展开的命令语句在Lyee程序中的地位(种类)、处理命令语句的模块(模块函数程序)(所在)和展开后的命令语句。不用说,命令列表的内容存储在程序再生装置1的存储器(存储装置)中。当然,也可以将命令列表(命令语句的展开处理的处理结果)记述在Lyee Belt的程序记述栏中(这时,Lyee Belt的程序记述栏再一次被更新)。
其次,进行IF语句的分析处理(步骤93)。图38~图40是表示IF语句的分析处理的详细情况的流程图。IF语句的分析处理利用处理路径图信息表(或处理路径图)。利用处理路径图信息表存放的信息,可以由计算机进行分析处理。也可以由技术人员根据处理路径图信息表(处理路径图)进行向计算机的信息输入作业。
IF语句的分析处理是判定现有程序中使用的IF语句的命令语句和在Lyee程序上的地位的处理。现有程序中出现的IF语句大致可分为①规定从一个基本结构向另一个基本结构(或结束处理)的路径的IF语句;②规定输入条件或输出条件的IF语句;③控制等效单词(在2个以上的命令语句中使用相同端点单词时,将该端点单词特别称作等效单词)的IF语句。根据IF语句的分析处理(图38~图40),可以把握现有程序中的IF语句是否应该在Lyee程序的任何一个要素程序中使用。
从处理路径图信息表(图30)的‘路径要素ID’栏(或处理路径图(图29))选择一个应利用路径作用要素程序分支的分支点(步骤131)。
当选择的分支点是面向错误处理的基本结构的分支点时(步骤132为是),从Lyee Belt的程序记述栏中抽出与作为选择的分支的下一个(后面的)处理的错误处理的基本结构的处理关连的IF语句。即,这里抽出的IF语句是选择根据规定的条件进行错误处理的处理的命令语句。
抽出的IF语句具有作为成为上述选择的分支点的源的模块(例如,成为图29的处理路径图的分支点A的源的模块是T0W904P子模块)的路径作用要素程序(参照图7、图14)中使用的执行条件的地位。抽出的IF语句和应使用该IF语句的模块的关系暂时存储在内部存储器8中(步骤133)。
在图29所示处理路径图中,分支点A(在分支点A中路径分成4条)包含面向错误处理的分支点。作为控制错误处理的基本结构的IF语句,抽出第13行和第18行(参照图35)(因‘99999’可以作为表示错误的字符来把握,故控制与‘99999’关连的命令语句的IF语句作为控制错误处理的基本结构的IF语句抽出)。可以根据其后的‘ELSE’下面的记述把握第13行IF语句是与画面关连的处理中的向错误处理的分支(可以根据其后的‘ELSE’下面的记述把握第18行IF语句是与DB(数据库)关连的处理中的向错误处理的分支)。第13行的IF语句具有作为分支点A的源的T0W04P子模块的路径作用要素程序中使用的IF语句的地位。第18行的IF语句具有作为分支点C的源的T1W04P子模块的路径作用要素程序中使用的IF语句的地位。
当选择的分支点不是面向错误处理的基本结构的分支点时(面向进行通常处理的T0、T1或K的基本结构的分支点),与进行选择的分支点的下一个处理的基本结构的处理关连的IF语句从现有程序的记述中抽出,抽出的该IF语句具有作为选择的分支点的源的模块的路径作用要素程序中使用的IF语句的地位(步骤134)。例如,图29所示的处理路径图中的分支点B的一方是面向结束处理的基本结构的分支点。抽出程序记述栏的第09行,作为T0W02模块的路径作用要素程序(图14)中的‘执行条件的判断’的部分使用的IF语句。
其次,利用输入作用要素程序或输出作用要素程序,从处理路径图信息表(处理路径图)中选择有可能规定输入条件或输出条件的模块中的一个模块(步骤141)。当只有在规定的条件下才从数据库或画面读取数据时,规定输入条件。当在规定的条件下向数据库或画面输出数据时,规定输出条件。
对选择的模块判断有没有输入条件或输出条件(步骤142)。当没有这样的的条件时,进入下一个模块的选择(步骤142为否,步骤140,步骤141)。
若有输入条件或输出条件,则从程序记述栏的记述中抽出这样的输入条件或输出条件。若步骤141中选择的模块是W02模块,则抽出表示输入条件的IF语句作为选择的W02模块的输入作用要素程序的‘执行条件’。若选择的模块的W04模块,则抽出表示输出条件的IF语句作为选择的W04模块的输出作用要素程序的‘执行条件’(步骤143)。在图21所示的现有程序(图35所示的程序记述栏的程序)中没有这样的IF语句。
最后,从程序记述蓝中检索端点单词是等效单词那样的MOVE语句或COMPUTE语句等(步骤151)。当找到了这样的MOVE语句或COMPUTE语句等时,抽出控制装置该命令语句的IF语句。在用来把数据存放在MOVE语句使用的等效单词(端点单词)中的始点单词所属的W04P子模块的逻辑要素程序中的‘成立?’中,使用抽出的IF语句(步骤152)。对包含所以的等效单词的程序语句进行该处理(步骤153)。
例如,参照图35的程序记述栏,第24行和第26行都可以把‘KINGAKU OF GAMEN-R(端T0W04)’作为端点单词使用。可知端点单词‘KINGAKU OF GAMEN-R(端T0W04)’是等效单词。控制该等效单词的命令语句(MOVE)的IF语句是第23行的IF语句。第23行的IF语句具有作为相对该等效单词的始点单词‘WK’所属的K-W04P子模块的逻辑要素程序的‘成立?’部分的地位。
上述IF语句的分析处理不必按上述顺序进行。可以首先进行等效单词的IF语句的分析处理(图40),也可以首先进行输入/输出条件的IF语句的分析处理(图39)。
当完成由命令语句的展开处理(步骤93)作成的命令列表,并结束IF语句的分析处理(步骤94)时,进入向Lyee ALL登录信息的变换处理(步骤94)。该变换处理把利用直到上述IF语句的分析处理的一连串处理得到的信息(存储在处理路径图信息表中的信息,利用命令语句的展开处理设置新的单词的第2次坐标,现有程序中的IF语句在Lyee程序中的地位等)变换成后述的Lyee ALL处理程序的处理的输入数据形式。因是变更数据形式(数据的排列等)的处理,故省略详细说明。
数据形式的变更(Lyee ALL登录的作成)一结束,则进入Lyee ALL处理(图19;步骤53)。图41是表示Lyee ALL处理的内容的流程图。
如上所述,在Lyee程序中,准备具有预定的处理结构的模块链接函数程序、模块函数程序和要素程序的一般形式(模板)。在模板的规定位置(‘成立?’、‘自己生成’、‘判断’等)代入处理路径图信息表的信息、IF语句(成立条件信息)和现有程序中出现的命令语句。例如,现有程序中的MOVE语句和COMPUTE语句作为自己生成信息代入该命令语句中的端点单词所属的基本结构中的W04P子模块的逻辑要素程序的‘自己生成’中。完成具有现有程序所达到的处理功能并具有符合Lyee法则的程序结构的多个程序(图7所示的程序)(Lyee程序)(步骤96)。
最后,以COBOL程序为例说明现有程序的整理处理(图26,步骤82)。
在由COBOL作成的程序中,有时包含复制语句。预先把原始程序(原语句)的一部分登录在程序库中,对其它程序直接进行复制再利用。当使用复制语句时,进行展开由该复制语句指定的原语句的处理(复制语句展开处理)。
图42示出数据部(DATA DIVISION)中复制语句展开处理的样子。图43、图44分别示出过程部(PROCEDURE DIVISION)复制语句展开处理的样子。
如图42所示,在展开前的程序记述中,包含‘COPY A.’和‘COPYB.’的记述,当复制语句A(A PROC后面的部分(由方框包围))和复制语句B(A PROC后面的部分)另外准备时,在‘COPY A.’的部分和‘COPY B.’的部分分别展开A PROC的内容和B PROC的内容。展开前的程序记述(左侧)改写成展开后的程序记述(右侧)。
图43的展开例子也一样。在‘COPY X.’的部分分别展开X PROC的内容。图44的展开例子也一样。在‘COPY Y.’的部分分别展开Y PROC的内容。
在形成现有程序中(主程序中)有时包含调用子程序的记述。由主程序调出子程序,当调出的子程序执行结束时,再返回主程序的处理。这时,主程序包含调用子程序的命令(子程序的CALL)。代替主程序中的子程序的CALL,进行将该子程序的命令语句在主程序中展开(插入)的处理(子程序展开处理)。图45表示子程序展开处理的样子。
如图45所示,在展开前的主程序中包含读出子程序的CALL命令(CALL’SUB001’USING WK-A WK-B WK-C),当准备子程序(程序ID(PROGRAM-ID.)是‘SUB001.’的子程序),代替主程序中的CALL命令,将由该CALL命令调用的子程序的内容在主程序中展开(插入)(在图45所示的子程序中,因COMPUTE语句后面的部分(‘WK-Z=2*WK-X*WK-Y*WK-Y’)是子程序的实质的部分,故只有该部分在主程序中展开)。安装包含在CALL命令‘USING WK-A WK-BWK-C’的记述,子程序中的WK-X、WK-Y、WK-Z在主程序中分别置换成WK-A、WK-B、WK-C。
当记述了现有程序中不要的程序记述(不能执行的程序记述)时,进行删除这样的记述的处理(清除处理)。删除现有程序中不能执行的部分。
例如,如图46所示,跳转命令(GO TO)的跳转目的地的记述(LABEL-X)存在现有程序中,但当现有程序不存在跳转到该跳转目的地的命令(GO TO LABEL-X)的记述时,利用清除处理删除LABEL-X的记述。
在现有程序所使用的命令中,有可以置换成其它命令的。例如,在COBOL中,使用ADD、SUBTRACT、MULTIPLY和DIVIDE的命令语句可以全部置换成使用了COMPUTE命令语句。使用了SET的命令语句可以使用MOVE进行置换。对于预先决定由最终作成的Lyee程序使用的命令情况,修正程序使其使用该已决定的命令(将其称作变则修正处理)。
例如,在预先决定由最终作成的Lyee程序不使用‘SET’和使用‘MOVE’的情况下,如图47所示,程序中的所谓‘SET IDX TO 1’的记述可以置换成‘MOVE 1托IDX’。
进行整形处理。在整形处理中,对现有程序进行下面的处理。
(a)删除现有程序中的循环,并设置空格。此外,为了明确命令语句的分界,在命令语句的最后附加END语句(命令)。
(b)分解多个单词包含的命令语句。例如,如图48所示,将命令语句‘MOVE A TO B,C’分解成2和命令语句‘MOVE A TO B’和‘MOVE A TO C’。此外,如图49所示,在IF条件的部分中,追加意味IF语句的结束的‘END-IF’。
(c)删除指令行。
(d)单层化。对COBOL的情况,通过使用PERFORM语句等,有时程序变成多层结构。将其变成单层结构。例如,如图50所示,当在现有程序中使用PERFORM语句时,删除PERFORM命令和与其对应的EXIT命令,并使由PERFORM语句调出的程序部分移动到PERFORM命令的部分。
在上述程序再生处理中,说明了将由COBOL语言作成的现有程序再构筑成符合Lyee开发方法的程序(Lyee程序),但对于由其它程序语言作成的现有程序,基本上可以使用同样的思路。即,和由COBOL语言作成的程序相同,由其它程序语言作成的程序(现有程序)也存在规定的规则(程序记述的约束),若能把握该规定的规则,就能够把握使用什么样的单词(数据·字段),该单词是与什么样的输入输出装置(定义体)关连的单词等。对模块分配现有程序出现的单词和满足Lyee的基本结构的新的单词(决定第1次和第2次坐标),通过作成组装有该单词和命令语句的模板(使用了模板的各种程序(图7)),即使对于使用其它程序语言作成的现有程序,也可以再构筑成符合Lyee的法则的Lyee程序。
权利要求
1.一种程序再生方法,将利用Lyee开发方法以外的方法作成的现有的程序再生成具有符合Lyee开发方法的结构的程序而维持上述现有程序达到的功能,其特征在于以识别出与单词关连的定义体的形式从上述现有的程序中抽出那里使用的单词,与和该单词关连的定义体的种类对应,将抽出的单词分配给一个或多个模块,将现有程序的各命令语句或命令变换成符合多个程序构成要素中的某一个的形式,这些程序构成要素是在已分配了该命令语句或命令所包含的单词的一个或多个模块中,而且具有符合Lyee开发方法的结构。
2.权利要求1记载的程序再生方法,其特征在于把在现有程序的命令语句或命令中用来生成应存放在由单词表现的字段中的数据的命令语句或命令变换成符合上述多个程序构成要素中的用于数据生成的程序构成要素的形式。
3.权利要求1记载的程序再生方法,其特征在于在现有程序的命令语句或命令中,对包含2个以上的单词的命令语句或命令,判定该命令语句或命令使用的2个以上的单词各自分配的2个以上的模块之间的关系是否满足规定的顺序,当2个以上的模块之间的关系不满足规定的顺序时,将该命令语句或命令分解成多个命令语句或命令,使分解后的命令语句或命令分别包含新的单词,将新的单词分配给一个或多个模块,使分别包含在分解后的命令语句或命令中的2个以上的单词所分配的2个以上的模块之间的关系满足规定的顺序。
4.权利要求1记载的程序再生方法,其特征在于识别抽出的单词是端点单词还是始点单词。
5.权利要求1记载的程序再生方法,其特征在于在现有程序的命令语句或命令中,把对定义体的进行物理的输入输出处理的命令语句或命令作为上述多个程序构成要素中用来统一控制模块的程序构成要素的一部分。
6.权利要求1记载的程序再生方法,其特征在于上述模块是与输出处理有关的W04模块、与输入处理有关的W02模块和与数据生成处理有关的W03模块中的任何一种模块。当抽出的单词与输入处理使用的定义体关连时,将该单词至少分配给W02模块,当抽出的单词与输出处理使用的定义体关连时,将该单词至少分配给W04模块。
7.权利要求6记载的程序再生方法,其特征在于与和现有程序使用的单词关连的定义体的种类对应,设置W04模块、W02模块和W03模块的组。
8.权利要求6记载的程序再生方法,其特征在于当上述现有程序使用的单词是与定义体不关连的单词时,另外设置用来接受该单词分配的W04模块、W02模块和W03模块的组。
9.权利要求6记载的程序再生方法,其特征在于当上述现有程序中包含错误处理的记述时,另外设置用来处理该错误处理的W04模块、W02模块和W03模块的组。
10.一种程序再生方法,将利用Lyee开发方法以外的方法作成的现有的程序再生成具有符合Lyee开发方法的结构的新程序而维持上述现有程序达到的功能,其特征在于从上述现有的程序中抽出由现有程序控制的定义体,对抽出的定义体,准备用来使由W04模块、W02模块和W03模块的组构成的基本结构动作的多个程序构成要素,以识别该单词所属的定义体和该单词的输入输出区分的形式从上述现有程序中抽出现有程序使用的单词,与抽出的单词所属的定义体和输入输出区分对应,将该单词分配给对该单词所属的定义体的W04模块、W02模块和W03模块中的一个或多个模块,将包含现有程序的单词的命令语句或命令变换成变换成符合多个程序构成要素中的某一个的形式,这些程序构成要素是在通过单词与该命令语句或命令关连的模块中,而且具有符合Lyee开发方法的结构。
11.权利要求10记载的程序再生方法,其特征在于当抽出的单词属于输入处理使用的定义体时,将该单词至少分配给W02模块,当抽出的单词属于输出处理使用的定义体时,将该单词至少分配给W04模块。
12.权利要求10记载的程序再生方法,其特征在于当抽出的单词是不属于任何一个抽出的定义体的单词时,另外准备使该单词所分配的基本结构动作的多个程序构成要素。
13.权利要求10记载的程序再生方法,其特征在于当上述现有程序不包含错误处理的记述时,另外准备使用来处理该错误处理的基本结构动作的多个程序构成要素。
14.权利要求10记载的程序再生方法,其特征在于把在现有程序的命令语句或命令中用来生成应存放在由单词表现的字段中的数据的命令语句或命令变换成符合上述多个程序构成要素中的用于数据生成的程序构成要素的形式。
15.权利要求10记载的程序再生方法,其特征在于在现有程序的命令语句或命令中,对包含2个以上的单词的命令语句或命令,判定该命令语句或命令使用的2个以上的单词各自分配的2个以上的模块之间的关系是否满足规定的顺序,当2个以上的模块之间的关系不满足规定的顺序时,将该命令语句或命令分解成多个命令语句或命令,使分解后的命令语句或命令分别包含新的单词,将新的单词分配给W04模块、W02模块和W03模块中的一个或多个模块,使分别包含在分解后的命令语句或命令中的2个以上的单词所分配的2个以上的模块之间的关系满足规定的顺序。
16.权利要求10记载的程序再生方法,其特征在于在现有程序的命令语句或命令中,把对定义体的进行物理的输入输出处理的命令语句或命令作为上述多个程序构成要素中用来统一控制模块的程序构成要素的一部分。
17.权利要求10记载的程序再生方法,其特征在于利用一个基本结构或多个基本结构的组合,从现有程序作成表示上述现有程序的处理流程的处理路径图。
18.权利要求17记载的程序再生方法,其特征在于当在上述处理路径图中表现了连接2个以上不同的基本结构的路径或与结束处理连接的路径时,从上述现有程序中抽出表示该路径的分支点的分支条件的条件命令语句或条件命令,把抽出的条件命令语句或条件命令变换成符合程序构成要素的形式,该程序构成要素是在上述分支点的分支源中的模块的多个程序构成要素中用于路径判断的程序构成要素。
19.权利要求10记载的程序再生方法,其特征在于根据现有程序的记述,检索表示数据输入条件或数据输出条件的条件命令语句或条件命令,当抽出了表示数据输入条件或数据输出条件的条件命令语句或条件命令时,把抽出的条件命令语句或条件命令变换成符合程序构成要素的形式,该程序构成要素是在该数据输入条件或数据输出条件作用的模块中的多个程序构成要素中用于输入作用或输出作用的程序构成要素。
20.权利要求10记载的程序再生方法,其特征在于根据现有程序的记述,检索表示等效单词的判断条件的条件命令语句或条件命令,当抽出了表示等效单词的判断条件的条件命令语句或条件命令时,把抽出的条件命令语句或条件命令变换成符合程序构成要素的形式,该程序构成要素是在该等效单词分配的模块中的多个程序构成要素中用于数据生成的程序构成要素。
21.一种程序再生装置,其特征在于,包括存储构成Lyee程序的多个程序构成要素的第1存储装置;存储从根据现有程序作成的处理路径图得到的模块链接函数信息、基本结构信息、模块信息、定义体信息、路径信息和指令信息的第2存储装置;存储给定的现有程序的第3存储装置;根据上述第2存储装置存储的模块链接函数信息、基本结构信息、模块信息和定义体信息将第3存储装置存储的现有程序使用的单词分配给包含在与该单词关连的基本结构中的W04模块、W02模块和W03模块中的一个或多个模块的第1分配装置;和变换装置,根据上述第2存储装置存储的路径信息和指令信息,把第3存储装置存储的现有程序的各命令语句或命令变换成符合某一个程序构成要素的形式,该程序构成要素是该命令语句或命令包含的单词分配的一个或多个模块中的、上述第1存储装置存储的多个程序构成要素中任何一个程序构成要素。
22.权利要求21记载的程序再生装置,其特征在于具有读取现有程序中的命令语句或命令的命令语句或命令读取装置。
23.权利要求22记载的程序再生装置,其特征在于上述第1分配装置在利用上述读取装置读取的命令语句或命令使用的单词与输入处理使用的定义体关连时,将该单词至少分配给W02模块,在读取的命令语句或命令使用的单词与输出处理使用的定义体关连时,将该单词至少分配给W04模块。
24.权利要求22记载的程序再生装置,其特征在于,具有判定装置,在利用上述读取装置读取的命令语句或命令中,对包含2个以上的单词的命令语句或命令,判定该命令语句或命令使用的2个以上的单词各自分配的2个以上的模块之间的关系是否满足规定的顺序;当利用上述判定装置判定2个以上的模块之间的关系不满足规定的顺序时,将读取的命令语句或命令分解成多个命令语句或命令,使分解后的命令语句或命令分别包含新的单词的装置;和第2分配装置,将新的单词分配给一个或多个模块,使分别包含在分解后的命令语句或命令中的2个以上的单词所分配的2个以上的模块之间的关系满足规定的顺序。
25.权利要求22记载的程序再生装置,其特征在于具有识别利用上述读取装置读取的命令语句或命令所使用的单词是端点单词还是始点单词的端点单词/始点单词识别装置。
26.权利要求21记载的程序再生装置,其特征在于上述第1存储装置存储用于数据生成的程序构成要素,上述变换装置把在现有程序的命令语句或命令中用来生成应存放在由单词表现的字段中的数据的命令语句或命令变换成符合上述多个程序构成要素中的用于数据生成的程序构成要素的形式。
27.权利要求21记载的程序再生装置,其特征在于上述第1存储装置存储统一控制W04模块、W02模块和W03模块的组的程序构成要素,上述变换装置在现有程序的命令语句或命令中,把对画面进行输入输出处理的命令语句或命令作为上述多个程序构成要素中用来统一控制W04模块、W02模块和W03模块的程序构成要素的一部分。
28.权利要求21记载的程序再生装置,其特征在于上述第1存储装置存储用于路径判断的程序构成要素,具有根据上述第2存储装置存储的路径信息从上述现有程序中抽出表示该路径的分支条件的条件命令语句或条件命令的路径分支条件命令抽出装置,上述变换装置把抽出的条件命令语句或条件命令变换成符合程序构成要素的形式,该程序构成要素是在上述路径分支源中的模块的多个程序构成要素中用于上述路径判断的程序构成要素。
29.权利要求21记载的程序再生装置,其特征在于上述第1存储装置存储用于输入作用和输出作用的程序构成要素,具有根据现有程序的记述检索表示数据输入条件或数据输出条件的条件命令语句或条件命令的数据输入输出条件检索装置,上述变换装置在抽出了表示数据输入条件或数据输出条件的条件命令语句或条件命令时,把抽出的条件命令语句或条件命令变换成符合程序构成要素的形式,该程序构成要素是在该数据输入条件或数据输出条件作用的模块的多个程序构成要素中用于上述输入作用或输出作用的程序构成要素。
30.权利要求21记载的程序再生装置,其特征在于上述第1存储装置存储用于数据生成的程序构成要素,具有根据现有程序的记述检索表示等效单词的判断条件的条件命令语句或条件命令等的等效单词判断条件命令检索装置,上述变换装置在抽出了表示等效单词判断条件的条件命令语句或条件命令时,把该条件命令语句或条件命令变换成符合程序构成要素的形式,该程序构成要素是在该等效单词所分配的模块的多个程序构成要素中用于上述数据生成的程序构成要素。
31.一种记录媒体,记录用来控制上述程序再生装置的分配程序,该程序再生装置将利用Lyee开发方法以外的方法作成的现有的程序再生成具有符合Lyee开发方法的模块结构的新程序而维持上述现有程序达到的功能,其特征在于上述分配程序根据从现有程序得到的模块链接函数信息、基本结构信息、模块信息和定义体信息判别上述现有程序的命令语句或命令所使用的单词所属的定义体的种类,对已判别了所属定义体的种类的上述单词,根据读入的命令语句或命令判别该单词应分配的模块的种类,与已判别的定义体的种类和模块的种类对应控制上述程序再生装置,将上述单词分配给一个或多个模块。
32.权利要求31记载的记录媒体,其特征在于记录分配程序,根据使用上述单词的命令语句或命令的种类,判别上述命令语句或命令使用的单词是端点单词还是始点单词,当判定上述命令语句或命令使用的单词是端点单词或始点单词时,控制上述程序再生装置,将表示是端点单词或始点单词的识别符附加在上述命令语句或命令使用的单词上。
33.一种记录媒体,记录控制程序再生装置的变换程序,该程序再生装置具有存储构成Lyee程序的多个程序构成要素的存储装置,将利用Lyee开发方法以外的方法作成的现有的程序再生成具有符合Lyee开发方法的模块结构的新程序而维持上述现有程序达到的功能,其特征在于上述现有程序是把有关单词应分配的一个或多个模块的信息附加在上述现有程序的命令语句或命令所使用的单词上,上述变换程序把上述现有程序的命令语句或命令变换成符合某个程序构成要素的形式,该程序构成要素是在由附加在该命令语句或命令所包含的单词上的与分配模块有关的信息特定的模块中的多个程序构成要素中的任何一个。
34.权利要求33记载的记录媒体,其特征在于上述多个程序构成要素包含用于数据生成的程序构成要素,上述变换程序把应存放在由单词表示字段中的用来生成数据的命令语句或命令变换成符合上述多个程序构成要素中的用于数据生成的程序构成要素的形式。
35.权利要求33记载的记录媒体,其特征在于上述多个程序构成要素包含统一控制多个模块的组的程序构成要素,上述变换程序把对画面进行输入输出处理的命令语句或命令作为符合上述多个程序构成要素中的统一控制多个模块的组的程序构成要素的一部分。
36.权利要求33记载的记录媒体,其特征在于上述多个程序构成要素包含用于路径判断的程序构成要素,上述变换程序根据从现有程序得到的路径信息,从上述现有程序中抽出表示该路径的分支条件的条件命令语句或条件命令,把已抽出的条件命令语句或条件命令变换成符合上述分支源模块的多个程序构成要素中的用于路径判断的程序构成要素的形式。
37.权利要求33记载的记录媒体,其特征在于上述多个程序构成要素包含用于输入作用和输出作用的程序构成要素,上述变换程序从上述现有程序中检索表示数据输入条件或数据输出条件的条件命令语句或条件命令,在已抽出表示数据输入条件或数据输出条件的条件命令语句或条件命令时,把该条件命令语句或条件命令变换成符合该数据输入条件或数据输出条件作用的模块的多个程序构成要素中的用于输入作用或输出作用的程序构成要素的形式。
38.权利要求33记载的记录媒体,其特征在于上述多个程序构成要素包含用于数据生成的程序构成要素,上述变换程序从上述现有程序中检索表示等效单词的判断条件的条件命令语句或条件命令,在已抽出表示等效单词的判断条件的条件命令语句或条件命令时,把该条件命令语句或条件命令变换成符合该等效单词分配的模块的多个程序构成要素中的用于数据生成的程序构成要素的形式。
39.一种程序再生装置,将利用Lyee开发方法以外的方法作成的现有的程序再生成具有符合Lyee开发方法的结构的新程序而维持上述现有程序达到的功能,其特征在于,包括存储构成Lyee程序的多个程序构成要素的存储装置;从输入的现有程序中抽出定义体的定义体抽出装置;从输入的现有程序中抽出单词的单词抽出装置;从输入的现有程序中抽出单词和定义体的关连性的单词/定义体关连性抽出装置;从输入的现有程序中抽出利用上述单词抽出装置抽出的单词的输入输出区分的输入输出区分抽出装置;根据利用上述单词/定义体关连性抽出装置抽出的单词和定义体的关连性和利用上述输入输出区分抽出装置抽出的单词的输入输出区分,把利用上述单词抽出装置抽出的单词分配给与该单词关连的一个或多个模块的分配装置;和变换装置,把现有程序的各命令语句或命令变换成符合某一个程序构成要素的形式,该程序构成要素是该命令语句或命令包含的单词分配的一个或多个模块中的、上述存储装置存储的多个程序构成要素中的任何一个程序构成要素。
全文摘要
以识别出与单词关连的定义体的形式从上述现有的程序中抽出那里使用的单词,与和该单词关连的定义体的种类对应,将抽出的单词分配给一个或多个模块(WO4、WO2、WO3),将现有程序的各命令语句或命令变换成符合某一个程序构成要素的形式,该程序构成要素是该命令语句或命令包含的单词所分配的一个或多个模块的多个程序构成要素中的任何一个程序构成要素。
文档编号G06F9/44GK1337022SQ00802699
公开日2002年2月20日 申请日期2000年11月10日 优先权日1999年11月11日
发明者根来文生 申请人:信息系统发展协会, 计算机软件方法及技术研究协会
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1