專利名稱:自動程序生成裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種自動程序生成裝置,該裝置無需熟悉程序語言就可以在程序生成過程中產(chǎn)生一個源碼程序。
一般地,當(dāng)顧客需要從軟件銷售商那里購買一個程序時,他要向銷售工程師說明工作內(nèi)容并要求必需的處理內(nèi)容。然后銷售工程師將處理內(nèi)容向系統(tǒng)工程師說明,系統(tǒng)工程師則根據(jù)處理內(nèi)容來定義程序條件并進行基本而詳細的設(shè)計。基于此詳細的設(shè)計,程序員進行編碼。
如上所述,生成源編碼程序所需的過程可分為(1)由顧客向銷售工程師轉(zhuǎn)達處理內(nèi)容;(2)由銷售工程師向系統(tǒng)工程師轉(zhuǎn)達處理內(nèi)容,進行基本設(shè)計,然后根據(jù)基本設(shè)計進行程序詳細部分和設(shè)計;(3)使程序進行最終編碼。雖然步驟(1)未產(chǎn)生錯誤,但如果轉(zhuǎn)達內(nèi)容時步驟(2)和(3)中產(chǎn)生錯誤(比如遺漏一項),則由于以下原因很難找出錯誤。因為將詳細的內(nèi)容由系統(tǒng)工程師向程序員轉(zhuǎn)達一項艱巨而繁重的工作,所以系統(tǒng)工程師僅轉(zhuǎn)達給程序設(shè)計員必要的條件。得到必要的條件后,程序設(shè)計依據(jù)他/她自己的判斷進行編碼。在這種情況下,所獲程序本身會提供一個布局、打印和圖象顯示內(nèi)容,所有這些都不用于所予期的。
如上所述,一般程序生成過程需要很多步驟,這往往會發(fā)生錯誤,并且操作起來很費時間。
本發(fā)明的目的在于提供自動程序生成裝置,該裝置能夠形成如工廠似的生產(chǎn)過程的程序生成過程,以便根據(jù)工業(yè)技術(shù)一致地生成準(zhǔn)確,無錯誤的程序,并且使設(shè)計過程操作簡單以便縮短程序生成時間。
為了達到上述發(fā)明目的,提供一個自動程序生成裝置,它包括存儲裝置,用以存儲許多骨架語句,每一骨架語句具有規(guī)則的,工作內(nèi)容的固定處理項目的指令數(shù)據(jù)形成的格式,用于讀出指定格式的骨架語句的裝置,用于請求在讀出骨架語句的未定義的指令區(qū)中按預(yù)定的順序輸入予定指令字的裝置,和程序編碼裝置,用于確定將必要的指令數(shù)據(jù)輸入到讀出骨架語句的所有未定義指令區(qū),并將所獲得的結(jié)構(gòu)進行編碼以生成程序。
根據(jù)上述裝置,當(dāng)作為未定義指令部分的可變指令輸入到具有滿足顧客所需要的格式的骨架語句(永久指令組)時,就能自動產(chǎn)生一個具有準(zhǔn)確編碼的詳細程序。
本發(fā)明的目的和優(yōu)點將在以下描述中給出,在一定程度上,它們對于以下描述是顯而易見的,或者可通過實施本發(fā)明來了解。本發(fā)明的其他目的和優(yōu)點可以通過在所附加權(quán)利要求中特別指出的裝置來實現(xiàn)并獲得。
附圖作為說明書的一部分,描述了本發(fā)明的最佳實施例并且與上述一般性描述和以下將對最佳實施例的詳細描述一道說明本發(fā)明的原理。
圖1是表示本發(fā)明一個實施例的基本配置的方框圖;
圖2是對圖1中系統(tǒng)功能進行說明的視圖;
圖3A至3C是對本發(fā)明裝置的應(yīng)用進行說明的視圖;
圖4是對應(yīng)用于本發(fā)明的裝置中的骨架語句進行說明的視圖;
圖5是對本發(fā)明裝置的操作進行說明的流程圖;
圖6是表示本發(fā)明的裝置中使用的又一骨架語句的一部分視圖;
圖7是表示圖6所示骨架語句的剩余部分的視圖;
圖8表示在本發(fā)明的裝置中使用的又一骨架語句的一部分的視圖;
圖9表示在本發(fā)明的裝置中使用的又一骨架語句的一部分的視圖;
圖10是表示圖9中的骨架語句剩余部分的視圖;
圖11表示在本發(fā)明的裝置中使用的又一骨架語句的一部分的視圖;
圖12表示圖11中骨架語句的剩余部分的視圖;
圖13表示在本發(fā)明的裝置中使用的又一骨架語句的一部分為視圖;
圖14表示圖13中骨架語句的剩余部分的視圖;
圖15表示在本發(fā)明的裝置中使用的又一骨架語句的一部分的視圖;
圖16表示在圖15中骨架語句的剩余部分的視圖;
圖17表示在本發(fā)明的裝置中使用的又一骨架語句的一部分的視圖;
圖18表示在圖17中骨架語句的剩余部分的視圖;
圖19表示在本發(fā)明的裝置中使用的又一骨架語句的一部分的視圖;
圖20表示在圖19中骨架語句的剩余部分的視圖;
圖21表示在本發(fā)明的裝置中使用的又一骨架語句的一部分的視圖;
圖22表示在圖21中骨架語句的剩余部分的視圖;
圖23表示在本發(fā)明的裝置中使用的又一骨架語句的一部分的視圖;
圖24表示在圖23中骨架語句的剩余部分的視圖;
圖25表示在本發(fā)明的裝置中使用的又一骨架語句的一部分的視圖;
圖26表示在圖25中骨架語句的剩余部分的視圖;
圖27表示在本發(fā)明的裝置中使用的又一骨架語句的一部分的視圖;
圖28表示在圖27中骨架語句的剩余部分的視圖;
圖29表示在本發(fā)明的裝置中使用的又一骨架語句的一部分的視圖;
圖30表示在圖29中骨架語句的剩余部分的視圖;
圖31表示在本發(fā)明的裝置中使用的又一骨架語句的一部分的視圖;
圖38表示在圖37中骨架語句的剩余部分的視圖;
圖39表示在本發(fā)明的裝置中使用的又一骨架語句的一部分的視圖;
圖40表示在圖39中骨架語句的剩余部分的視圖;
圖41表示在本發(fā)明的裝置中使用的又一骨架語句的一部分的視圖;
圖42表示在圖41中骨架語句的剩余部分的視圖;
圖43表示在本發(fā)明的裝置中使用的又一骨架語句的一部分的視圖;
圖44表示在圖43中骨架語句的剩余部分的視圖;
圖45表示在本發(fā)明的裝置中使用的又一骨架語句的一部分的視圖;
圖46表示在圖45中骨架語句的剩余部分的視圖;
圖47表示在本發(fā)明的裝置中使用的又一骨架語句的一部分的視圖;
圖48表示在圖47中骨架語句的剩余部分的視圖;
圖49表示在本發(fā)明的裝置中使用的又一骨架語句的一部分的視圖;
圖50表示在圖49中骨架語句的剩余部分的視圖;
圖51表示在本發(fā)明的裝置中使用的又一骨架語句的一部分的視圖;
圖52表示在圖51中骨架語句的剩余部分的視圖;
圖53表示在本發(fā)明的裝置中使用的又一骨架語句的一部分的視圖;
圖54表示在圖53中骨架語句的剩余部分的視圖;
圖55表示在本發(fā)明的裝置中使用的又一骨架語句的一部分的視圖;
圖56表示在圖55中骨架語句剩余的部分的視圖;
圖57表示在本發(fā)明裝置中使用的又一骨架語句的一部分的視圖;
圖58表示在圖57中骨架語句的剩余部分的視圖;
圖59表示在本發(fā)明裝置中使用的骨架語句一部分的視圖;
圖60表示在圖59中骨架語句的剩余部分的視圖;
圖61表示在本發(fā)明裝置中使用的骨架語句一部分的視圖;和圖62表示在圖61中骨架語句剩余部分的視圖。
參照附圖,下面將描述本發(fā)明的最佳實施例。
圖1表示本發(fā)明最佳實施例的整個設(shè)備的基本裝置。作為操作單元的工作站200,骨架語句文件300、和選擇文件400集中在程序生成部分100中,在程序生成部分100中的用程序語言生成的程序用自動編碼部分500來編碼,從而獲得一個使用源碼的機器語言程序。
以下描述各個部分。
具有予定格式和由相應(yīng)于工作內(nèi)容的永久指令,數(shù)據(jù)所組成的不同類型的骨架根據(jù)該工作內(nèi)容被存儲在骨架語句文件300中。也就是說,每個骨架是產(chǎn)生一個工作程序的基礎(chǔ)。每一個骨架語句由其數(shù)據(jù)處理步驟是予定的指令的作業(yè)步區(qū)域和未定義指令的作業(yè)步區(qū)域所組成。骨架語句語言例如可以是RPG語言。當(dāng)一個讀出骨架語句菜單的命令輸入工作站200時,在工作站200中的顯示器201顯示一個骨架語句組菜單。當(dāng)指定一個所需的骨架語句ID時,程序生成部分100從骨架語句文件300中讀出指定的骨架語句,并將讀出的骨架語句儲存在一個工作存儲器中。
圖2表示了給定程序X的所有作業(yè)步11。圖2中被點劃線圍起來的作業(yè)步12構(gòu)成了執(zhí)行予定過程的骨架語句。
使用這一骨架語句12的程序是未完成的,所以指令數(shù)據(jù)被填充在未定義的部分中。為此,程序生成部分100請求操作者通過工作站200按予定的順序?qū)⒅噶顢?shù)據(jù)輸入到未定義的部分。
操作者不用程序語言輸入數(shù)據(jù),而是利用鍵盤操作將數(shù)據(jù)作為這一系統(tǒng)中被分類和排列的字進行輸入。程序生成部分100確定輸入字,從選擇文件400中讀出相應(yīng)的指令程序字(RPG)并將讀出的字存儲在骨架語句的未定義區(qū)域中。
因為既使在未定義的部分中也會使用予定的子程序,所以選擇文件400具有一內(nèi)部成份文件401和可變項文件402。例如內(nèi)部成分文件401存儲一個過程,它用來限制字符顯示中的屏幕上顯示字符的數(shù)量,存儲另一過程它用來將日期數(shù)據(jù)轉(zhuǎn)換力domincal年的數(shù)據(jù)或年代名等。變量項文件402存儲屏幕格式,移動格式,輸入檢查標(biāo)準(zhǔn),文件更新標(biāo)準(zhǔn)等的指定數(shù)據(jù)。
將變量項程序填入一個未定義區(qū)域時,程序生成部分100請求操作員根據(jù)予定的優(yōu)先順序?qū)⒆兞宽棾绦蛱钊胂乱粋€未定義區(qū)域。在這種情況下,程序生成部分100在顯示工作單屏幕上發(fā)出申請,此屏幕有待指定的空區(qū)域。
圖3A至3C表示填充按予定格式從鍵盤簡單地輸入的數(shù)據(jù)的程序,如圖3A所示,在基本設(shè)計中,在屏幕上顯示輸入幀,從而啟動一數(shù)據(jù)輸入操作(A1步),鍵輸入過程(A2步)以及傳送和寫操作(A3步)按步驟先后順序執(zhí)行。
更特別指出的是如圖3B所示,幀顯示數(shù)據(jù)從予定存儲器地址中讀出,并被傳送到顯示存儲器(B1步)。然后產(chǎn)生光標(biāo)數(shù)據(jù)并將其傳送到顯示存儲器(B2步)。檢查鍵輸入(B3步)。鍵輸入被傳送到緩沖器和顯示存儲器(B4步)。運行光標(biāo)處理使光標(biāo)移到下一個寫入位置(B5步),還需要一個確定是否數(shù)字位計數(shù)超過了予定計數(shù)(B7步)的過程。
在這程序生成中,予定作業(yè)步(骨架語句20)被圖3B中的虛線所包圍,其它作業(yè)步由可變部分組成,它可以根據(jù)用戶需要的改變。如果圖3C所示的幀被用戶請求作為數(shù)據(jù)輸入幀,則在B1步中必須指定幀模式。利用這指定就設(shè)置了顯示存貯中的數(shù)據(jù)寫入?yún)^(qū)域(B4步)。用于確定數(shù)字位置計數(shù)是否超過每行數(shù)據(jù)位置計數(shù)(B7步)的比較過程的參數(shù)亦被確定。
在光標(biāo)生成過程中(步B2),如果有搜索在幀中的非記錄部分,以便將光標(biāo)數(shù)據(jù)傳送到具有最小數(shù)字位置計數(shù)和最小計數(shù)的位置的程序,則光標(biāo)數(shù)據(jù)可被確定。即使在一行確認按鈕過程中(S6步),也可以這樣進行編碼,使得行返回過程在確認按鈕的釋放被確認時,被啟動,否則流程到達步的B70。
當(dāng)指定了這一骨架語句20時,請求數(shù)據(jù)輸入以便設(shè)計幀的提示符顯示在工作站200上。這一請求包括數(shù)字位置計數(shù)數(shù)據(jù),橫向塊計數(shù)和垂直行計數(shù)。當(dāng)填充了所有的請求數(shù)據(jù),程序生成部分100就顯示表示輸入結(jié)束的信息。并執(zhí)行編碼過程。
幀,數(shù)據(jù)輸入狀態(tài),輸入數(shù)據(jù)請求信息和要輸入的關(guān)鍵字等都顯示屏幕上。因此,用戶能夠選擇關(guān)鍵字以輸入數(shù)值和字符,從而促進程序產(chǎn)生。
以上例子非常簡單,它表示只有一個主要部分的程序的生成。但是,在實際編碼中,需要更細微的步驟。
每一骨架語句本身的步驟數(shù)很大,在上述系統(tǒng)中,許多骨架語句存儲在骨架語句文件300中。
在上述描述中,圖2表示給一程序X的所有作業(yè)步11,圖2中被點劃線包圍的部分被定義為以上所述的骨架語句。但是,在將這一骨架語句的數(shù)據(jù)存儲在骨架語句文件中時,未定義部分13的區(qū)域確信浪費了存儲容量,這就是說,骨架語句文件300的容量被浪費了。
如圖4所示,在此系統(tǒng)中,表示未定義部分對應(yīng)于這些未定義部分插入了13的標(biāo)志,以便減少未定義部分13的容量。為此,即使骨架語句有大量可變部分和很大的未定義部分,它仍可以被壓縮,并以小的容量存儲到骨架語句文件300中去。
在程序生成期間,當(dāng)從程序生成部分100讀出骨架語句,以便用外部輸入來填充標(biāo)識部分時,所獲得的程序就具有指定的長度。
當(dāng)骨架語句被存儲到工作存儲器時,程序生成部分100就有了按程序步順序查找標(biāo)志的功能,當(dāng)檢測每個標(biāo)志時,根據(jù)此標(biāo)志數(shù),請求數(shù)據(jù)輸入到工作站200。程序生成部分100還有一個功能即確定轉(zhuǎn)移指令是在骨架語句中還是額外的步驟。以便管理和改正轉(zhuǎn)移指令地地址(步驟數(shù))。當(dāng)骨架語句的未定義部分填入了外部數(shù)據(jù),轉(zhuǎn)移地址(步驟)改變了,這一改變最終利用程序生成部分100的功能來校正。
圖5是表示一操作的流程圖。
流程開始于C1步,在程序生成部分100中,從骨架語句文件300裝入讀出的骨架語句,程序生成部分100通過順序閱讀骨架語句步驟(步驟C2和C3)遞增地址,以便確認程序數(shù)據(jù)。程序生成部分100確定程序結(jié)束的數(shù)據(jù)是否出現(xiàn)(C4步)。若在C4步中沒有出現(xiàn),則程序生成部分100確定標(biāo)志是否出現(xiàn)(C5步),如果標(biāo)志被找到,則讀取此標(biāo)志對應(yīng)的程序數(shù)據(jù),并請求將數(shù)據(jù)輸入到工作站200(C6步)請求方式屬于工作圖類型。這是一個對應(yīng)于請求內(nèi)容的固定格式。用戶可以將請求可變項(數(shù)值和符號)只填充到工作站上顯示的工作圖的予定部分,若所有的請求項目都滿足了,則條件等不會產(chǎn)生遺漏。也就是說,編碼不因程序員而改變,而是能夠一致地進行。
當(dāng)完成了數(shù)據(jù)輸入并檢測了表示輸入結(jié)束的鍵輸入時(步C7),就根據(jù)在下一步(C8步)中進入用戶規(guī)定的步數(shù)的加/減校正后面的骨架語句的步驟地址。后面的骨架語句步驟地址可以被變量項增加,或者可以部分地刪去或減少一個不必要的程序。這個不必要的程序根據(jù)存儲在標(biāo)志的程序數(shù)據(jù)地址的請求項能夠有選擇地刪去。
C8產(chǎn)生一個步驟地址管理圖,它用于根據(jù)骨架語句的部分校正順序管理原始骨架語句步驟(地址)和指令字的所有步驟(地址),這樣一來,當(dāng)外部數(shù)據(jù)填充到標(biāo)志部分并且檢測了程序結(jié)束數(shù)據(jù)時,流程前進列C9步,返回到生成程序的起始步。然后地址增大,將步驟進到確定是否在此位置中存在轉(zhuǎn)移指令(C10和C12步)。若檢測到轉(zhuǎn)移指令,則此指令表示的轉(zhuǎn)移目的的地址必須被更正。對已經(jīng)管理了地址的步驟地址管理圖進行存取,以便檢測一專門的地址,該地址的轉(zhuǎn)移目的地的地址將被改變,以檢測具體地址,從而更正轉(zhuǎn)移目的地址到一個新的轉(zhuǎn)移目的地地址(C13步)。這樣一來,可以順序更正轉(zhuǎn)移目的地地址。當(dāng)檢測到程序結(jié)束數(shù)據(jù)時,此數(shù)據(jù)輸入過程結(jié)束(C14和C15步)。
上述描述的系統(tǒng)壓縮并存儲骨架語句步驟,以減少存儲骨架語句用的容量,當(dāng)可變項和成分項被加到標(biāo)識部分時,轉(zhuǎn)移指令的轉(zhuǎn)移目的地地址改變了,所以系統(tǒng)具有轉(zhuǎn)移目的地地址更正功能。
圖6和圖7表示通過部分的轉(zhuǎn)換用于生成,例如顧客主文件程序的骨架語句得到的普通字形。骨架語句的步驟(地址)位于左端并且可變項和成分項輸入到標(biāo)識位置(未定義區(qū)域)。
圖8表示通過部分地轉(zhuǎn)換獲得的程序,使得在骨架語句的標(biāo)識位置中插入了可變項和成分項并對得到的結(jié)構(gòu)進行編碼而得到的普通字。左下的步驟1.00到29.00和33.00到35.00是用可變項自動生成的步驟。步驟30.00到32.00和40.00到43.00是用成分自動生成的步驟。步驟36.00到39.00和44.00到60.00是骨架語句中原來就有的步驟。
圖9表示各種骨架語句。圖9和10表示了一部分成批更新的骨架語句。圖11和12也表示了一部分成批更新的骨架語句。圖13和14也表示了另外一部分骨架語句。圖15到62中的兩幅圖表示一個骨架語句的一部分。
綜上所述,根據(jù)本發(fā)明程序生成過程可以是一個類似工廠生產(chǎn)的過程。根據(jù)工業(yè)技術(shù)可以一致地生成準(zhǔn)確;無錯誤的程序。此外,設(shè)計步驟是簡單的工作,縮短了程序生成的時間。
權(quán)利要求
1.自動程序生成裝置,其特征在于包含存儲裝置300,存儲多個骨架語句,每個骨架語句具有由工作內(nèi)容的,固定處理項的指令數(shù)據(jù)形成的格式;讀出指定格式的骨架語句的裝置(100);請求按照予定順序,在讀出的骨架語句的未定義指令區(qū)域中輸入予定指令字的裝置(100);以及,程序編碼裝置(100,500)確定必需的指令數(shù)據(jù)輸入到讀出的骨架語句的所有未定義的指令區(qū)域,編碼獲得的結(jié)構(gòu),以便產(chǎn)生程序。
2.根據(jù)權(quán)利要求1的裝置,其特征在于多個骨架語句被存儲在所述存儲裝置中,使得相應(yīng)于未定義區(qū)域的部分的地址被壓縮,以便有效地利用所述存儲裝置的容量。
3.根據(jù)權(quán)利要求1的裝置其特征在于進一步包含,當(dāng)轉(zhuǎn)移指令在指令字被插入到骨架語句的未定義區(qū)域的狀態(tài)中存在于固定處理項中時,校正轉(zhuǎn)移指令的轉(zhuǎn)移目的地的地址的裝置。
4.根據(jù)權(quán)利要求1的裝置其在于所述程序編碼裝置進一步包含根據(jù)程序編碼讀出編碼的程序數(shù)據(jù)逆向轉(zhuǎn)換讀出的編碼的程序數(shù)據(jù)并自動地生成表示程序的結(jié)構(gòu)和過程的程序文件的裝置。
5.自動程序生成裝置,其特征在于包括存儲多個骨架語句的存儲裝置(300),多個骨架語句的每一個是用于生成程序的基礎(chǔ)并具有用于其數(shù)據(jù)處理步驟是予定的指令的作業(yè)步區(qū)域以及用于未定義指令的作業(yè)步區(qū)域;顯示表示相應(yīng)于存儲在所述存儲裝置中的多個骨架語句的工作內(nèi)容的字符的顯示裝置;從鍵盤輸入在所述顯示裝置上顯示的工作內(nèi)容的識別碼的選擇裝置(200);根據(jù)從所述選擇裝置輸入的識別碼讀出多個骨架語句中的任一個的讀出裝置(200,100),讀出的骨架語句在程序生成部分中等待。通過所述顯示裝置顯示和請求指令數(shù)據(jù)的輸入請求裝置(100),指令數(shù)據(jù)將填入未定義的作業(yè)步區(qū)域中并被包括在所述程序生成部分中等待的骨架語句中,以及,在等待的骨架語句的未定義的作業(yè)步區(qū)域中被填入了指令數(shù)據(jù)之后、將程序轉(zhuǎn)換為機器語言的自動編碼裝置(100,500)。
6.根據(jù)權(quán)利要求5的裝置,其特征在于所述輸入請求裝置包括順序地檢查等待的骨架語句的程序步,以便檢測在程序中是否存在標(biāo)志的裝置(C1-C5);當(dāng)標(biāo)志被檢測時,使所述顯示裝置顯示指令數(shù)據(jù)輸入請求的裝置(C6)以及以指令數(shù)據(jù)響應(yīng)輸入請求而被輸入時,根據(jù)步驟數(shù)目的變化校正等待的骨架語句的步驟地址的裝置。
7.根據(jù)權(quán)利要求6的裝置,其特征在于還包括與等待的骨架語句的步驟地址被校正時,建立表示校正之前的等待的骨架語句的步驟地址和校正之后的等待的骨架語句的步驟地址之間的對應(yīng)的地址映象的裝置(C8);檢測等待的骨架語句的程序結(jié)束指令的裝置(C4);在程序結(jié)束指令被檢測后檢測在等待的骨架語句的作業(yè)步中是否存在轉(zhuǎn)移指令的裝置(C12);以及當(dāng)存在轉(zhuǎn)移指令時參照地址映象校正由轉(zhuǎn)移指令指定的轉(zhuǎn)移目的地的地址的裝置(C13)。
全文摘要
程序生成過程是類似工廠的生產(chǎn)過程,根據(jù)工業(yè)技術(shù)一致地生成準(zhǔn)確,無錯誤地程序,設(shè)計過程需要簡單工作,縮短了程序生成時間,骨架語句文件(300)存儲具有預(yù)定格式和由規(guī)則的工作中的固定處理項的指令數(shù)據(jù)構(gòu)成的骨架語句,以便響應(yīng)各種類型的工作內(nèi)容。程序生成部分(100)包括從工作站(200)讀出指定格式的骨架語句的單元,請求通過顯示單元以預(yù)定的順序在讀出的骨架語句的未定義指令區(qū)域中輸入預(yù)定的指令字的單元以及確定必需的指令數(shù)據(jù)被輸入到讀出的骨架語句的未定義指令區(qū)域并使自動編碼部分(500)編碼所獲得的結(jié)構(gòu),以便獲得程序的程序編碼單元。
文檔編號G06F9/44GK1101143SQ9410773
公開日1995年4月5日 申請日期1994年5月20日 優(yōu)先權(quán)日1993年5月21日
發(fā)明者松月忠雄 申請人:松月忠雄