結構解析裝置以及程序的制作方法
【專利摘要】結構解析裝置具備:存儲有模塊的存儲單元;和進行存儲單元所存儲的模塊之中的給定的對象模塊的結構解析的解析單元。解析單元在對象模塊的第1對象范圍的層級結構和第2對象范圍的層級結構相同的情況下,將類似通知信息與第1對象范圍以及/或者第2對象范圍建立關聯地創建。第1對象范圍以及第2對象范圍是從存儲單元獲取到的對象模塊的對象范圍之中相互不同的對象范圍。類似通知信息表示在對象模塊內存在相互類似的對象范圍。
【專利說明】結構解析裝置以及程序
【技術領域】
[0001]本發明涉及支援由通過程序語言描述的I個以上的語句構成的模塊(源程序)的結構解析的裝置。
【背景技術】
[0002]在創建程序的情況下,強烈推薦結構化編程。具體而言,例如要求通過組合由比較少數的語句構成的處理單位來創建模塊。此外,在模塊內,并非使用無條件分支語句(GOTO語句),而被要求具備基于條件語句或循環語句的嵌套結構(即、層級結構)。進而,針對關于多個模塊的公共處理,要求模塊化。因此,例如程序的合計行數超過100萬行這樣的大型系統,各自具備由幾十的處理單位構成的幾千的模塊的情形也較為多見。
[0003]上述這樣的大規模系統在開發后不久,參與開發的負責人、即熟知模塊間的關聯以及各個模塊的結構的人要進行系統的維護的情形較為多見。然而,這樣的系統歷經幾十年一邊反復維護一邊被使用的情形較為多見。隨著時間流逝,參與開發的負責人將不在崗位,從而不知曉模塊的結構的人進行系統維護。在這種情況下,起因于已完成結構化編程,必需掌握分散在龐大模塊中被描述的功能,從而維護極其困難。即,模塊的結構解析變得困難。
[0004]為了理解模塊整體的功能或者各處理單位的功能,必需掌握基于條件語句的層級結構(以下簡單稱作“層級結構”。)。然而,大規模的系統中的模塊,在大多情況下具有較深的層級結構(例如10層級以上的層級結構)。在這種情況下,掌握層級結構并非易事。因而,例如有時會看漏與進行過維護的地方類似的地方(例如,具有類似的功能的地方),從而沒被進行必要的維護。
[0005]如根據以上的說明可理解的那樣,如果能夠容易地掌握層級結構,則能夠更容易且更適當地進行系統的維護。進而,通過發現層級結構相同的地方,從而能夠防止遺漏對類似的地方的維護。例如,在專利文獻I以及專利文獻2中公開了用于支援層級結構的掌握的技術。
[0006]專利文獻I所公開的程序開發支援裝置,在顯示程序(模塊)之際,根據基于IF語句的嵌套結構(層級結構)的深度來變更語句的顯示色。由此,程序開發者能夠在視覺上掌握層級結構。根據專利文獻2所公開的結構化程序編輯裝置,在顯示程序(模塊)之際,能夠顯示包含表示層級的關鍵字(例如if或case)的語句,而不顯示或者簡易顯示其他語句。由此,程序開發者能夠比較容易地掌握層級結構。
[0007]在先技術文獻
[0008]專利文獻
[0009]專利文獻1:日本特開平7-219756號公報
[0010]專利文獻2:日本特開2001-154835號公報
【發明內容】
[0011]發明要解決的課題
[0012]然而,無論使用專利文獻I以及專利文獻2所公開的哪種技術,最終程序開發者均必須掌握模塊的層級結構。更具體而言,必須執行掌握需要進行維護的地方的層級結構,且從龐大模塊之中找到類似的地方這樣的困難且費工夫的作業。
[0013]因而,本發明的目的在于提供一種在模塊中檢測具備同一層級結構的地方,由此來支援層級結構的掌握的結構解析裝置。
[0014]用于解決課題的手段
[0015]本發明的一個側面提供一種結構解析裝置,進行由通過程序語言描述的I個以上的語句構成的模塊的結構解析。在所述模塊中能夠描述作為所述語句之一的條件語句。所述條件語句包含成立時執行語句以及/或者不成立時執行語句。所述成立時執行語句是在所述條件語句的條件式成立的情況下被執行的所述語句。所述不成立時執行語句是在所述條件式不成立的情況下被執行的所述語句。所述條件語句之中的至少一個還能夠包含所述條件語句作為所述成立時執行語句以及/或者所述不成立時執行語句,由此能夠進行基于所述條件語句的所述語句的層級化。關于所述模塊中的由連續的所述語句構成的多個對象范圍,能夠分別確定基于所述層級化的層級結構。所述結構解析裝置具備存儲單元和解析單元。在所述存儲單元中存儲有I個以上的所述模塊。所述解析單元構成為進行所述存儲單元所存儲的所述模塊之中的給定的對象模塊的結構解析。所述解析單元具有獲取功能和解析功能。所述獲取功能是從所述存儲單元獲取所述對象模塊的功能。所述解析功能是在第I對象范圍的所述層級結構和第2對象范圍的所述層級結構相同的情況下與所述第I對象范圍以及/或者所述第2對象范圍建立關聯來創建類似通知信息的功能。所述第I對象范圍以及所述第2對象范圍是獲取到的所述對象模塊的所述對象范圍之中相互不同的所述對象范圍。所述類似通知信息表示在所述對象模塊內存在相互類似的所述對象范圍。
[0016]此外,根據本發明的其他側面,可獲得用于使計算機作為所述結構解析裝置而發揮功能的程序。
[0017]發明效果
[0018]根據本發明,在模塊包含相互類似的地方(對象范圍)的情況下,被創建與對象范圍已建立關聯的類似通知信息。因此,根據類似通知信息,能夠更容易發現相互類似的對象范圍。
[0019]進而,在連結系統中的多個模塊來解析的情況下,能夠更容易掌握龐大模塊中的類似的對象范圍。
[0020]參照所添加的附圖來研究下述最優實施方式的說明,從而可準確地理解本發明的目的,且可更完全理解其構成。
【專利附圖】
【附圖說明】
[0021]圖1是表示基于本發明的第I實施方式的結構解析裝置的塊構成圖。
[0022]圖2是示意性表示圖1的結構解析裝置的存儲裝置中所存儲的模塊的文件構成的圖。
[0023]圖3是示意性表示圖1的存儲裝置中所存儲的層級結構數據的文件構成的圖。
[0024]圖4是表示圖1的結構解析裝置的解析單元的功能的流程圖。
[0025]圖5是使用一例來表示圖4的解析單元所進行的解析過程的前半部分的圖。
[0026]圖6是使用一例來表示圖4的解析單元所進行的解析過程的后半部分的圖。
[0027]圖7是使用一例來表示基于圖4的解析單元的顯示結果的圖。
[0028]圖8是使用其他一例來表示圖4的解析單元所進行的解析過程的前半部分的圖。
[0029]圖9是表示基于本發明的第2實施方式的結構解析裝置的塊構成圖。
[0030]圖10是表示圖9的存儲裝置中所存儲的模塊的一例的圖。
[0031]圖11是示意性表示圖9的存儲裝置中所存儲的二次模塊的文件構成的圖。
[0032]圖12是部分地表示圖9的二次模塊的一例的圖。
[0033]圖13是部分地表示圖9的存儲裝置中所存儲的流程圖的一例的圖。
[0034]圖14是表示圖9的結構解析裝置的變換單元的功能的流程圖。
[0035]圖15是更詳細地表示圖14的變換單元的功能的一部分的流程圖。
[0036]圖16是表示圖9的結構解析裝置的加工單元的功能的流程圖。
[0037]圖17是部分地表示圖9的二次模塊的其他一例的圖。
[0038]圖18是表示圖9的結構解析裝置的流程圖創建單元的功能的流程圖。
[0039]圖19是部分地表示根據圖17的二次模塊所創建的流程圖的圖。
[0040]圖20是表示基于本發明的第3實施方式的結構解析裝置的系統構成圖。
【具體實施方式】
[0041]關于本發明,可由多種多樣的變形、各式各樣的形態來實現,作為其一例,以下詳細地說明附圖所示那樣的特定的實施方式。附圖以及實施方式并非將本發明限定于在此公開的特定形態,而假定將所附的權利要求所明示的范圍內完成的所有變形例、均等物、代替例包含在其對象中。
[0042](第I實施方式)
[0043]如圖1所示,基于本發明的第I實施方式的結構解析裝置10具備:裝置主體20、存儲裝置(存儲單元)30、輸入裝置40、以及顯示裝置50。結構解析裝置10進行由通過程序語言描述的I個以上的語句構成的模塊(源程序)的結構解析。
[0044]基于本實施方式的程序語言為COBOL。然而,本發明也可適用于COBOL以外的程序
;五古
P口口 ο
[0045]基于本實施方式的模塊可以通過組合了字符、數字、記號等的模塊名來確定。
[0046]在模塊中能夠描述由I個以上的語句構成的處理單位。基于本實施方式的處理單位是COBOL中的節(sect1n)。各個節能夠通過節名(處理單位名)來確定。但是,處理單位也可以不是節。例如在程序語言為JAVA(在日本的注冊商標)的情況下,處理單位可以是能通過函數名(處理單位名)來確定的函數。
[0047]模塊能夠調用其他模塊或者該模塊自身。此外,模塊的節能夠執行其他節或者該節自身。更具體而言,在模塊中,作為語句能夠描述用于通過節名來確定并執行節的處理單位執行語句、和用于通過模塊名來確定并執行模塊之一的模塊調用語句。根據本實施方式,處理單位執行語句為PERFORM語句,模塊調用語句為CALL語句。其他程序語言中的處理單位執行語句以及模塊調用語句分別為例如指定了函數名的語句。在模塊調用語句為指定了函數名的語句的情況下,通過模塊調用語句來執行模塊之中的被指定的函數部分(即、模塊的一部分)。在此情況下,在模塊調用語句中有可能未顯式地描述模塊名。即,有可能通過函數名來間接性地確定模塊名。
[0048]進而,在模塊中能夠描述作為語句之一的條件語句。條件語句具備條件式,可以在條件語句之中描述成立時執行語句以及/或者不成立時執行語句。換言之,條件語句能夠包含成立時執行語句以及/或者不成立時執行語句。成立時執行語句是在條件語句的條件式成立的情況下被執行的語句。不成立時執行語句是在條件式不成立的情況下被執行的語句。基于本實施方式的條件語句為IF語句以及EVALUATE語句。在IF語句中,成立時執行語句為在THEN句中被描述的語句,不成立時執行語句為在ELSE句中被描述的語句。同樣地,在EVALUATE語句中,成立時執行語句為在WHEN句中被描述的語句。
[0049]基于本實施方式的條件語句之中的至少一個還能夠包含條件語句作為成立時執行語句以及/或者不成立時執行語句,由此能夠進行基于條件語句的語句的層級化。例如,作為IF語句的成立時執行語句,還能夠描述IF語句。換言之,模塊由能通過條件語句來層級化的I個以上的語句構成,由此具有給定的層級結構(即、基于條件語句的層級結構)。為了易于理解,關于模塊中的由連續的語句構成的多個地方(對象范圍),能夠分別確定基于層級化的層級結構。
[0050]如圖1所示,存儲裝置30例如為磁盤裝置。存儲裝置30能夠存儲例如通過文件夾(未圖示)被層級化的各式各樣的文件。存儲裝置30被連接成可與裝置主體20進行通信,能夠按照來自裝置主體20的指示來進行文件的讀入(獲取)、寫入(存儲)。在基于本實施方式的存儲裝置30中存儲有I個以上的模塊31。此外,在存儲裝置30中能夠存儲層級結構數據36。
[0051]模塊31例如使用編程工具(未圖示)來創建。各個模塊31可以為一個文件。多個模塊31可以作為一個文件被存儲。層級結構數據36分別存儲模塊31所含的I個以上的對象范圍的層級結構。根據本實施方式,關于各個模塊31來創建層級結構數據36。
[0052]輸入裝置40例如為鍵盤、鼠標。輸入裝置40被連接成可與裝置主體20進行通信,能夠將從鍵盤輸入的字符、或通過鼠標指示的位置通知給裝置主體20。
[0053]顯示裝置50例如為顯示器、打印機。顯示裝置50被連接成可與裝置主體20進行通信,能夠對從裝置主體20轉發的數據(例如,字符、圖形)進行顯示或者印刷。
[0054]裝置主體20例如為PC (Personal Computer ;個人電腦)的主體。裝置主體20具備CPU(Central Processing Unit ;中央處理單元)、主存儲裝置等(未圖示)。在存儲裝置30中存儲有各式各樣的程序的執行格式文件(未圖示)。CPU將執行格式文件加載至主存儲裝置中,通過使執行格式文件內的命令字執行,由此來實現各式各樣的功能。在CPU執行命令字的過程中,存儲裝置30所存儲的給定的文件經由主存儲裝置內的緩沖區而被讀入至程序的變量區。被讀入至程序的變量區中的文件的內容,根據需要而經由主存儲裝置內的緩沖區寫入至存儲裝置30。如根據上述的說明可理解的那樣,存儲裝置30以及主存儲裝置分別作為本實施方式中的可讀入以及寫入的存儲單元而發揮功能。換言之,基于本實施方式的存儲單元既可以是存儲裝置30以及主存儲裝置的一者,也可以是兩者。在以后的說明中,作為存儲單元而使用存儲裝置30。
[0055]在基于本實施方式的存儲裝置30中存儲有解析程序等的各式各樣的程序(未圖示)。上述的程序被加載至主存儲裝置中,通過CPU來執行,由此計算機作為各式各樣的單元(即、作為裝置)而發揮功能。例如,解析程序使計算機作為進行存儲裝置30所存儲的模塊31之中的給定的對象模塊31的結構解析的解析單元27 (結構解析裝置10)而發揮功能。換言之,基于本實施方式的結構解析裝置10的裝置主體20具備解析單元27。
[0056]如圖2所示,基于本實施方式的模塊31由η個(η彡I)的行310構成。基于本實施方式的模塊31為文本文件。但是,模塊31例如可以為MICROSOFT EXCEL(注冊商標)的工作表。在模塊31為工作表的情況下,解析單元27例如能夠通過EXCEL宏來實現。行310至少由連續編號(行識別)311和語句312構成。連續編號311用于確定行310并且判斷行310的排列順序。連續編號311不僅是數字還可以包含字符、記號。在語句312中描述了語句(例如,數據定義語句、執行語句、注釋語句)。在語句312中也可以描述一個已完結的語句整體。在語句312中也可以描述一個語句的一部分。例如,MOVE語句被分成兩個的行310的語句312來描述。
[0057]如圖3所示,基于本實施方式的層級結構數據36由m個(m彡I)的行360構成。基于本實施方式的層級結構數據36為MICROSOFT EXCEL(注冊商標)的工作表。但是,層級結構數據36例如也可以是文本文件。層級結構數據36通過解析單元27解析模塊31的層級結構而被創建的,與模塊31建立關聯地進行存儲。具體而言,例如層級結構數據36的文件名與所對應的模塊31的文件名相同。或者,相互對應的模塊31以及層級結構數據36也可以是同一工作簿的不同工作表。
[0058]層級結構數據36的行360由連續編號(行識別)361、層級模式362、結束行(連續編號)363、和類似通知信息364構成。基于本實施方式的類似通知信息364具備類似行(連續編號)364η。在連續編號361中設定有所對應的模塊31的連續編號311。在結束行363中設定有模塊31中的自連續編號361起開始的對象范圍(即、成為進行層級結構的解析的對象的范圍)結束的行310的連續編號311。在層級模式362中設定有能確定關于連續編號361至結束行363的對象范圍的層級結構的數據。在類似通知信息364中設定有表示在模塊31內存在相互類似的對象范圍的數據。更具體而言,在基于本實施方式的類似行364η中設定有具有與該行360的層級模式362相同的層級模式362的行360的連續編號361。
[0059]以下,關于基于本實施方式的結構解析裝置10的功能以及動作,參照圖5至圖8所示的例子,使用圖4來詳細地說明。首先,以只有IF語句為模塊31所含的條件語句的情況(參照圖5以及圖6)為例來進行說明。其次,關于在模塊31中包含IF語句以外的條件語句的示例(參照圖8)來進行說明。
[0060]如由圖4可理解的那樣,基于本實施方式的解析單元27具有獲取功能(S400、S402)、解析功能(S404?S416)、寫入功能(S418)以及顯示功能(S420)。獲取功能是從存儲裝置30 (或者主存儲裝置)獲取模塊31之中設為處理對象的對象模塊31的功能。解析功能是解析對象模塊31的層級結構的功能。寫入功能是將對象模塊31和層級結構數據36 (因此為類似通知信息364)建立關聯而存儲至存儲裝置30的功能。顯示功能是將對象模塊31和類似通知信息364建立關聯而顯示至顯示裝置50的功能。
[0061]詳細而言,解析單元27通過例如從輸入裝置40輸入的啟動指示而被啟動,獲取用于確定對象模塊31的對象模塊名(S400)。對象模塊名只要作為例如啟動指示的一部分來輸入即可。解析單元27從存儲裝置30讀入通過獲取到的對象模塊名所確定的對象模塊31 (S402)。此時,也可以只有例如給定的文件夾所存儲的模塊31為讀入對象。當對象模塊31未存儲在存儲裝置30中的情況下,解析單元27結束處理(未圖示)。
[0062]其次,解析單元27確定對象模塊31的各語句的層級等級(S404)。具體而言,解析單元27從第I行到最終行依次獲取對象模塊31的行310,對行310分別賦予層級等級。此時,解析單元27將第I行的層級等級設為1,每當檢測到IF語句的THEN句時相加層級等級。另一方面,解析單元27每當檢測到IF語句的END-1F(即、IF語句的結束)時減去層級等級。另外,在可以省略THEN句、END-1F的描述的情況下,只要解析IF語句中的語句的排列等來進行層級等級的加減法即可。
[0063]例如,參照圖5所例示的對象模塊31,排頭的語句312 (連續編號311為0001的語句312)的層級等級為1,其次的THEN句的層級等級為2。在上述的示例中,層級等級為數值,解析單元27每當檢測到THEN句時使層級等級增1,每當檢測到END-1F時使層級等級減I。然而,只要能夠比較層級等級的深度,層級等級可以不是數值。進而,設計成通過THEN句的檢測而被更新后的層級等級通過對應的END-1F的檢測而返回到更新前的值即可。層級等級關于執行語句進行賦予即可。進而,層級等級賦予給IF語句的排頭行以及結束行、和描述了 THEN句或者ELSE句的行即可。因此,解析單元27關于對象模塊31的排頭的執行語句至最后的執行語句的范圍賦予層級等級即可。
[0064]其次,解析單元27提取對象范圍(即、設為進行層級結構的解析的對象的范圍)(S406)。詳細而言,解析單元27關于對象模塊31所含的條件語句的每一個來檢測開始行以及結束行。解析單元27將檢測到的開始行與結束行之間的范圍作為對象范圍來使用。另一方面,解析單元27在對象模塊31中未包含條件語句的情況下、或者在對象模塊31中所含的條件語句只有一個的情況下,結束處理(未圖示)。如根據以上的說明可理解的那樣,根據本實施方式,在對象范圍中包含至少一個條件語句。進而,在對象范圍中包含對象范圍所含的條件語句的各自的開始至結束的整體。但是,對象范圍也可以從條件語句之前開始或者從條件語句的中途開始。
[0065]參照圖5所例示的對象模塊31,IF語句(條件語句)從連續編號311為0001、
0003、0005、0011以及0014的行310分別開始。此外,IF語句在連續編號311為0020、0010、0008,0018以及0017的行310分別結束。如圖6的上部所示的那樣,如以上檢測到的開始行以及結束行作為對象范圍的開始行以及結束行分別被使用。
[0066]解析單元27針對提取出的對象范圍分別創建層級模式(S406)。具體而言,解析單元27關于條件語句分別連結開始行至結束行的層級等級,來創建層級模式(壓縮前)。進而,解析單元27壓縮在層級模式(壓縮前)中連續的同一層級等級來創建層級模式(壓縮后)。
[0067]參照圖5的對象模塊31,如圖6的上部所示那樣,針對例如開始行為0001、結束行為0020的IF語句,依次連結層級等級:1、2、2、3…3、2、2、I (參照圖5的層級等級),來創建層級模式(壓縮前)。進而,在層級模式(壓縮前)中連續的同一層級等級被壓縮成一個層級等級,由此來創建層級模式(壓縮后)。
[0068]如根據以上的說明可理解的那樣,本實施方式中的層級等級表示以對象范圍的排頭的語句作為基準而確定的層級的深度。此外,對象范圍中的層級結構能夠通過連結了對象范圍所含的層級等級的層級模式來識別。
[0069]如圖6的下部所示,解析單元27將如上述那樣檢測到的對象范圍的開始行、層級模式(壓縮后)以及結束行分別設定為層級結構數據36的連續編號361、層級模式362以及結束行363(S406的處理的一部分)。換言之,通過連續編號361、層級模式362以及結束行363而分別確定的I個以上的對象范圍被設定為層級結構數據36。此時,層級模式362被變換成表示以對象范圍的排頭的語句(即、IF語句)作為基準而確定的層級的深度。具體而言,例如”2 3 4 3 2”被變換成”1 2 3 2 I”。如根據圖6的右下部的示意圖可理解的那樣,如上述那樣創建出的層級模式362能夠比作山岳地形。在該情況下,被連結成層級模式362的層級等級分別表示將山岳的山腳設為基準的相對高度。
[0070]其次,解析單元27將創建出的層級結構數據36的行360按照層級模式362的長度(即、被連結成層級模式362的層級等級的數目)的降序進行排序(S408)。在層級模式362的長度相同的情況下,解析單元27例如按照連續編號361的升序進行排序。在圖6的下部例示出排序后的層級結構數據36。參照圖6的下部的示例,例如”1 2 3 4 3 2 3 4 32 I”的層級模式362的長度為11。由于該層級模式362具有5個層級模式362之中的最大的長度,因此通過排序而配置在層級結構數據36的第I行。
[0071]其次,解析單元27選擇創建出的層級結構數據36的對象范圍(即、對象模塊31的對象范圍)之中相互不同的兩個對象范圍(即、第I對象范圍和第2對象范圍)。解析單元27在第I對象范圍的層級結構和第2對象范圍的層級結構相同的情況下,將類似通知信息364與第2對象范圍建立關聯地創建(S410?S416)。更具體而言,解析單元27針對創建出的層級結構數據36的行360,分別判定有無同一層級模式362(S410?S416)。
[0072]詳細而言,解析單元27首先獲取排序后的排頭的(第I行的行360的)層級模式362作為第I對象范圍的層級模式(S410)。參照圖6的下部的示例,獲取” I 2 3 4 3 2 34 3 2 1”。
[0073]其次,解析單元27判定在層級結構數據36中是否存在與獲取到的層級模式362相同的層級模式362(S412)。換言之,解析單元27搜索不同于第I對象范圍、且具有與第I對象范圍相同的層級模式的第2對象范圍。當存在第2對象范圍的情況下,解析單元27在第2對象范圍的類似通知信息364的類似行364η中設定第I對象范圍的連續編號361(S412)。參照圖6的下部的示例,由于不存在與”1 234323432 I”相同的層級模式362,因此任何行360的類似行364η均未被設定(即、保持初始值不變)。
[0074]其次,解析單元27判定是否處理了所有的層級模式362(S414),在處理結束的情況下(S414中“是”的情況下),進行S418的處理。另一方面,當存在未處理的層級模式362的情況下(S414中“否”的情況下),解析單元27獲取層級結構數據36中的下一行360的層級模式362。參照圖6的下部的示例,如根據以上的說明可理解的那樣,獲取” I 2 3 2I”。在該情況下,由于連續編號361為0011的行360的層級模式362也為” 12 3 2 I”、即一致,因此在連續編號361為0011的行360的類似行364η中設定”0003” (S412)。
[0075]如以上所說明過的那樣,基于本實施方式的解析單元27在解析功能中將層級模式362按照長度的降序進行排序,由此將多個對象范圍按照被連結成層級模式362的層級等級的數目的降序作為第I對象范圍來使用。然而,也可以不排序而比較層級結構。進而,不創建層級模式362,也能夠使對象模塊31的行310各錯開I行地比較層級等級。但是,在考慮性能的情況下,優選如本實施方式那樣進行設計。
[0076]如根據以上的說明可理解的那樣,基于本實施方式的解析單元27的解析功能,在第I對象范圍的層級模式362和第2對象范圍的層級模式362相同的情況下,判定為第I對象范圍的層級結構和第2對象范圍的層級結構相同(即、第I對象范圍和第2對象范圍相類似)。但是,層級結構能夠通過與上述的方法不同的方法來進行比較。例如,也可以通過圖6所示的層級模式(壓縮前)來比較層級結構。這樣一來,能夠更嚴格地比較層級結構。此外,在創建層級模式(壓縮前)之際,也可以還對IF語句、THEN句、ELSE句、END-1F以外的語句(例如,MOVE語句)賦予層級等級,連結成層級模式(壓縮前)。這樣一來,能夠進一步嚴格地比較兩個對象范圍的類似性。
[0077]兩個對象范圍的類似性還能夠通過層級模式以外的方式進行比較。例如,還能夠根據在兩個對象范圍中所使用的執行語句的種類或數目、所使用的函數的種類或數目、所使用的項目名稱的種類或數目來計算評價點。在該情況下,當層級模式相同、且所計算出的評價點為給定點數以上時,判定為兩個對象范圍相類似即可。
[0078]當結束解析處理(S404?S416)時,解析單元27將類似通知信息364寫入至存儲裝置30 (S418)。更具體而言,解析單元27將創建出的層級結構數據36寫入至存儲裝置30。如前所述,層級結構數據36與對象模塊31建立關聯地被存儲。因此,通過參照層級結構數據36的類似行364n(即、與對象范圍已建立關聯的類似通知信息364),從而能夠容易地發現對象模塊31中的相互類似的對象范圍。
[0079]其次,解析單元27將對象模塊31顯示于顯示裝置50以使得能夠識別類似的地方(S420),然后結束處理。更具體而言,解析單元27例如像圖7所示那樣顯示對象模塊31。如圖7所示,對象模塊31之中相互類似的對象范圍分別被框包圍來顯示。進而,在框的內側顯示表示與哪個對象范圍相類似的類似識別代碼(在圖7中用圓包圍的數字)。但是,也可以不顯示類似識別代碼,通過改變框的屬性(顏色或粗細等)來表示對象范圍與哪個對象范圍相類似。此外,在對象模塊31內,當相互類似的對象范圍遠離的情況下,例如只要顯示與對象模塊31的排頭最近的對象范圍即可。通過按照在視覺上可容易地掌握的方式顯示相互類似的地方,從而能夠容易地檢測需要維護的地方。進而,也能夠檢測要設為共同的處理單位的地方。
[0080]在顯示處理(S420)中,解析單元27也可以不顯示對象模塊31,而顯示創建出的層級結構數據36。換言之,解析單元27將對象模塊31和類似通知信息364建立關聯地顯示于顯示裝置50即可。
[0081]基于本實施方式的解析單元27具有寫入功能(S418)和顯示功能(S420),但解析單元27只要具有寫入功能(S418)以及顯示功能(S420)的一者即可。進而,也可以不具有上述的兩個功能的任何功能,取而代之具有將對象模塊31和類似通知信息364建立關聯地發送至其他裝置或單元的功能。
[0082]如圖8所示,也可以在對象模塊31中包含IF語句以外的條件語句。例如,關于EVALUATE語句,解析單元27只要每當檢測到WHEN句時更新層級等級,每當檢測到對應的END-EVALUATE時將層級等級返回到更新前即可。關于IF語句、EVALUATE語句以外的條件語句,也能夠同樣地進行處理。為了容易理解,賦予了層級等級后的解析單元27的功能?動作與在對象模塊31中僅包含IF語句作為條件語句的情況相同。
[0083]基于本實施方式的解析單元27,如以下所說明的那樣可以各式各樣地變形。
[0084]例如,解析單元27也可以并非在第2對象范圍(即、被比較的一側的對象范圍)的類似行364η中設定第I對象范圍(即、進行比較的一側的對象范圍)的連續編號361,而在第I對象范圍的類似行364η中設定第2對象范圍的連續編號361。此外,也可以在第I對象范圍以及第2對象范圍的類似行364η中分別設定第2對象范圍以及第I對象范圍的連續編號361。換言之,解析單元27只要將類似通知信息364與第I對象范圍以及/或者第2對象范圍建立關聯地進行創建即可。
[0085]此外,解析單元27也可以在第I對象范圍(或者第2對象范圍)與多個第2對象范圍(或者第I對象范圍)類似的情況下,在類似行364η中設定最初檢測到相類似的第2對象范圍(或者第I對象范圍)的連續編號361。另一方面,解析單元27也可以在類似行364η中設定檢測到相類似的所有的第2對象范圍(或者第I對象范圍)的連續編號361。
[0086]但是,如根據圖7可理解的那樣,如果類似的對象范圍的檢測數變大(即、如果類似的對象范圍的檢測精度高),則與對象模塊31建立關聯地進行顯示變得困難。此外,在大多數的情況下,在相互類似的對象范圍中還包含相互類似的對象范圍。在這種情況下,如果將類似的所有對象范圍存儲至層級結構數據36,則設定有類似行364η的行360的數目不必要地變大,有可能導致關于是否需要維護的調查?研究工時增加。另一方面,如果縮減進行類似判斷的對象范圍,則有可能導致遺漏關于是否需要維護的調查?研究。因此,類似的對象范圍的檢測精度最好與維護的內容等相匹配地進行調整。
[0087]例如,在檢測到類似的地方后的維護效率較為重要的情況下,解析單元27只要在解析功能(圖4的S404?S416)中不將滿足給定的條件的對象范圍(行360)作為第I對象范圍來使用即可。作為給定的條件,例如只要采用將行360的被連結成層級模式362的層級等級的數目設為基準的條件即可。更具體而言,在被連結成層級模式362的層級等級的數目小于給定的數目(例如10)的情況下,只要不將該對象范圍作為第I對象范圍來使用即可。或者,在對象范圍中的層級等級的最大值小于給定的數目(例如4)的情況下,也可以不將該對象范圍作為第I對象范圍來使用。
[0088]作為對象模塊31,也可以使用連結了多個模塊31的對象模塊。例如,也可以將多個模塊31從各自的開始行至結束行單純地依序連結來作為對象模塊31。這樣一來,能夠一并檢測系統整體中的類似的對象范圍。此外,也可將多個模塊31如以下所說明的第2實施方式那樣進行連結。
[0089](第2實施方式)
[0090]如圖9所示,基于本發明的第2實施方式的結構解析裝置10'具備:裝置主體20'、存儲裝置(存儲單元)30'、輸入裝置40、以及顯示裝置50。結構解析裝置10'與基于第I實施方式的結構解析裝置10同樣地,進行由通過程序語言描述的I個以上的語句構成的模塊(源程序)的結構解析。基于第2實施方式的程序語言、模塊、輸入裝置40以及顯示裝置50與第I實施方式同樣地分別構成。
[0091]如圖9所示,存儲裝置30'是與存儲裝置30同樣的磁盤裝置。在存儲裝置30'中,與第I實施方式同樣地存儲有I個以上的模塊31。此外,在存儲裝置30'中存儲有二次模塊(模塊)32和流程圖33。基于本實施方式的二次模塊32連結模塊31進行變換而被創建。此外,流程圖33是根據二次模塊32創建的。
[0092]裝置主體2(V與裝置主體20相同,例如是PC的主體。裝置主體2(V具備CPU、主存儲裝置等(未圖示)。與第I實施方式同樣地,存儲裝置30'和主存儲裝置作為本實施方式中的可讀入以及寫入的存儲單元而分別發揮功能。作為以后說明中的存儲單元而例示存儲裝置30'。
[0093]在基于本實施方式的存儲裝置30'中存儲有變換程序、加工程序、流程圖創建程序、和解析程序(未圖示)。上述的程序被加載至主存儲裝置中,通過CPU來執行,由此計算機作為變換單元21、加工單元22、流程圖創建單元25、以及解析單元2V而分別發揮功能。即、上述的程序用于使計算機作為支援模塊的結構解析的結構解析裝置10'而發揮功能。換言之,基于本實施方式的結構解析裝置10'的裝置主體20'具備:變換單元21、力口工單元22、流程圖創建單元25、以及解析單元27'。
[0094]基于本實施方式的變換單元21將存儲裝置3(V所存儲的模塊31之中的給定的對象模塊31變換成二次模塊32而存儲至存儲裝置30/。加工單元22對存儲裝置30/所存儲的二次模塊32進行加工。流程圖創建單元25根據存儲裝置30'所存儲的二次模塊32來創建表格式的流程圖33。解析單元27'與第I實施方式的解析單元27同樣地進行存儲裝置30'所存儲的模塊31的結構解析。但是,基于本實施方式的解析單元27'并非直接解析模塊31,而進行二次模塊32之中的給定的對象模塊32的結構解析。
[0095]如圖10所示,在存儲裝置30'中存儲有例如模塊名為XXX的模塊31 (XXX模塊)、模塊名為AAA的模塊31 (AAA模塊)、模塊名為BBB的模塊31 (BBB模塊)、和模塊名為CCC的模塊31 (CCC模塊)。模塊31分別通過由連續編號311和語句312組成的多個行310而構成。以下,參照該示例來更具體地說明模塊31的結構。
[0096]XXX模塊是主要模塊(即、成為處理的起點的模塊)。XXX模塊具有分別描述了用于通過模塊名來確定并調用AAA模塊和BBB模塊的CALL語句的行310。AAA模塊具有描述了調用CCC模塊的CALL語句的行310。
[0097]圖10所例示的模塊31分別由I個以上的節構成。例如,XXX模塊具有主要節(即、成為模塊中的處理的起點的主要的處理單位)、和從屬的節(從屬的處理單位)。主要節由從描述了” PROCEDURE DIVIS1N.” 的行 310 的下一行 310 至描述了” STOP RUN.” 的行 310為止的行310構成。從屬的節(子節)由從描述了”AAA-SUB SECT1N.”的行310至描述了”EXIT.”的行310為止的行310構成。上述的子節的節名(處理單位名)為AAA-SUB。主要節具備通過節名來確定并執行AAA-SUB節的行310。更具體而言,主要節具備描述了” PERFORM AAA-SUB.” 的行 310。
[0098]圖10所例示的節的一部分具備描述了條件語句的行310。例如,XXX模塊的主要節具備:描述了具有5個WHEN句的EVALUATE語句的行310、和描述了具有THEN以及ELSE的IF語句的行310。CCC模塊的主要節在IF語句的ELSE中還具備描述了 IF語句的行310,由此來進行基于條件語句的語句312的層級化。
[0099]如圖11所示,基于本實施方式的二次模塊32由P個(m彡I)的二次行(行)320構成。基于本實施方式的二次模塊32為MICROSOFT EXCEL (在日本的注冊商標)的工作表。但是,二次模塊32例如可以是文本文件。基于本實施方式的行320至少由模塊識別321、行編號322、層級識別323、命令識別324、連續編號(行識別)326、二次語句327、以及層級結構329構成。層級結構329具備層級模式329p、以及類似通知信息329r。基于本實施方式的類似通知信息329r具備類似有無329f。
[0100]二次模塊32從I個以上的模塊31之中收集描述了執行語句等的行310來進行加工,由此生成。基于本實施方式的二次模塊32由變換單元21來生成,由加工單元22以及解析單元27^來加工。尤其是,二次模塊32的層級結構329與第I實施方式中的層級結構數據36同樣地,由解析單元27'來設定。
[0101]如圖12所示,基于本實施方式的二次模塊32例如收集XXX模塊、AAA模塊、BBB模塊以及CCC模塊的PROCEDURE DIVIS1N的行310來進行加工后的模塊。
[0102]如根據圖10以及圖12可理解的那樣,在行320的二次語句327中行310的語句312所描述的CALL語句被注釋化(即、被變更成注釋語句)。通過CALL語句而調用的AAA模塊的PROCEDURE DIVIS1N的語句312作為行320的二次語句327被展開(即、被展開而生成行320的二次語句327)。進而,通過CALL語句被AAA模塊調用的CCC模塊的PROCEDUREDIVIS1N的語句312,作為行320的二次語句327被展開。同樣地,行310的語句312所描述的PERFORM語句,在行320的二次語句327中被注釋化。此外,通過PERFORM語句執行的AAA-SUB節的語句312,作為行320的二次語句327被展開。
[0103]此外,語句312所描述的條件語句之中IF語句以外的條件語句(在本實施方式中是指EVALUATE語句),在二次語句327中被變換成IF語句。例如,分別描述了 ” EVALUATEWK-A-0”、” WHEN CS-1 ”、” MOVE CS-1T0 WK-B-1 ” 的 3 個語句 312 被變換成分別描述7 ” *#E EVALUATE WK-A-O” (注釋語句)、” *#E WHEN CS-1 ” (注釋語句)、” IF (WK-A-0 =CS-1)”、”THEN”、”MOVE CS-1T0 WK-B-1”的5個二次語句327。根據本實施方式,除了上述的變換之外,還生成用于補足IF語句中的THEN、ELSE以及END IF的遺漏的二次語句327。此外,否定的條件式被變換成肯定的條件式。進而,具有由AND、0R結合的條件式的IF語句被分解成多個IF語句,從而被變換成具有僅通過一個邏輯運算符來評價兩個評價對象操作數之間的關系的單純的二次條件式的IF語句。但是,也可以不進行上述的變換的一部分(例如,由AND、OR結合的條件式的分解)。
[0104]除了上述之外,被多個語句312分寫的MOVE語句等匯集成一個二次語句327。SP、二次模塊32的行320分別基于模塊31的行310來生成。更具體而言,二次語句327是原封不動地拷貝語句312的語句,或者是通過加工.展開語句312而生成的語句。
[0105]基于本實施方式的模塊識別321表示各個行320是基于哪個模塊31的。更具體而言,在模塊識別321中設定模塊名(例如XXX)。但是,也可以取代模塊名,來設定可唯一地識別模塊31的編號等。
[0106]對于連續編號326,在二次語句327為語句312的拷貝的行320中,設定了拷貝源的行310的連續編號311。關于與行310 —一對應的行320 (例如,使語句312注釋化的二次語句327的行320),在連續編號326中設定了所對應的行310的連續編號311。另一方面,在所生成的(所追加的)行320的連續編號326中設定了可識別是所生成的行320的標識符(例如,記號的組合)。如此一來,當進行系統的維護之際,能夠容易地將行320和行310建立對應。
[0107]在基于本實施方式的行編號322中,從I開始的序列號沿著行320的排列順序進行設定。但是,行編號322只要可以比較行編號322的大小關系,則也可以不是序列號。例如,行編號322可以是字符、記號的組合。
[0108]基于本實施方式的層級識別323由分支層級和分支的深度構成。分支層級為了識別基于條件語句的層級而被使用。基于本實施方式的分支層級通過使用I作為第I行的行320中的起點值,由此來設定。換言之,第I行的行320的分支層級為I。分支層級,在IF語句的描述了 THEN的行320中被變更為1.1,在描述了 ELSE的行320中被變更為1.2。分支層級,從IF語句的描述了 END IF的行320的下一行起返回至I。一般而言,在描述了 THEN的行320中,在緊前面的行320的分支層級的術尾添加1”,在描述了 ELSE的行320中,緊前面的行320的分支層級的末尾I”被變更為2”,在描述了 END IF的行320的下一行中,描述了 END IF的行320的分支層級的末尾“.2”被刪除。除了上述的情況,在分支層級中設定與前面緊挨的行320相同的值。
[0109]基于本實施方式的分支的深度與分支層級同樣地,通過使用I作為第I行的行320中的起點值,由此來設定。換言之,第I行的行320的分支的深度為I。分支的深度,在IF語句的描述了 THEN的行320中被變更為1.1,從描述了 END IF的行320的下一行起返回至
I。進而,在其后的IF語句的描述了 THEN的行320中被變更為1.2,從描述了 END IF的行320的下一行起返回至I。一般而言,分支的深度將I作為起點值,在描述了 THEN的行320中,在末尾添加q”(q為I以上的整數)這一位,在描述了 END IF的行320的下一行中末尾的“.q”這一位被刪除。“.q”中的q的值,關于各個位而將I作為起點值。詳細而言,第I位的“.q”(例如1.2的“.2”)中的q的值將I作為起點值,每當被附加時進行增量。另一方面,第2位以后的q”(例如1.2.1的I”)中的q的值在除了該位之外的分支的深度為相同值的行320連續的范圍中將I作為起點值,在該連續的范圍中每當被附加時進行增量。
[0110]命令識別324表示在二次語句327中描述的語句的類別。基于本實施方式的命令識別324由命令名、表示是否為條件命令的分類(條件命令恰當與否:在圖12中簡單記載為“條件命令”)、和表示是否為處理命令的分類(處理命令恰當與否:在圖12中簡單記載為“處理命令”)構成。當在二次語句327中描述了 IF語句的要素的一部分的情況下(即、描述了 IF、THEN、ELSE或者END-1F的情況下),對于條件命令恰當與否而設定了 O。當在二次語句327中描述了 IF語句以外的執行語句的情況下(例如,描述了 MOVE語句、COMPUTE語句的情況下),對于處理命令恰當與否而設定了 O。當對于條件命令恰當與否、或者處理命令恰當與否而設定了 O的情況下,對于命令名而設定在二次語句327中描述的命令名(IF、THEN、END-1F、MOVE 等)。
[0111]層級模式329p與第I實施方式同樣用于確定對象范圍的層級結構。詳細而言,與第I實施方式同樣地,在IF語句開始的(即、對象范圍開始的)行320的層級模式329p中設定連結了層級等級的層級模式。在圖12中如虛線A所示的部分可理解的那樣,根據本實施方式,層級識別323的長度(例如,分支的深度的位數)表示層級等級。
[0112]對于類似通知信息329r,也與第I實施方式同樣地設定表示在二次模塊32內是否存在相互類似的對象范圍的數據。根據本實施方式,對于類似有無329f設定表示是否存在具有與該行320的層級模式329p相同的層級模式329p的行320的標記。
[0113]行320除了以上說明過的項目之外還能夠具備各式各樣的項目。例如,在行320具備對應的行310的節名的情況下,能夠更容易地掌握行320與行310之間的對應。
[0114]根據本實施方式,能夠基于存儲在存儲裝置30'中的二次模塊32來創建各式各樣的文件。所創建的文件能夠作為用于支援模塊31的句法解析的資料而顯示.印刷于顯示裝置50。更具體而言,例如,能夠基于二次模塊32來創建流程圖33。
[0115]如根據圖13可理解的那樣,基于本實施方式的流程圖33為MICROSOFT EXCEL (日本中的注冊商標)的工作表。但是,流程圖33也可以是其他格式的文件等。根據本實施方式,流程圖33由二次模塊32來生成。
[0116]流程圖33將二次模塊32的二次語句327編輯成流程圖樣子。更具體而言,與IF語句不關聯的二次語句327按照二次模塊32中的行320的排列順序而排列在第2列(在報頭中顯示出”2”的列)。另一方面,與IF語句關聯的二次語句327(即、描述了從IF至END-1F的語句的二次語句327)被左右分別劃分排列了在IF語句中的條件式成立的情況下被執行的二次語句327、和在IF語句中的條件式不成立的情況下被執行的二次語句327。
[0117]在流程圖33的第I列設定了排列在第2列的二次語句327的行編號322,由此能夠使流程圖33的行與二次模塊32的行320分別建立對應。并不限于行編號322,能夠將行320的任意項目設定為流程圖33。
[0118]如根據以上的說明可理解的那樣,基于本實施方式的流程圖33的列隨著基于IF語句的層級的加深而增加。換言之,二次模塊32之中描述了更為復雜的條件語句的地方,按照在表的列方向上延伸的方式進行顯示。因此,使流程圖33顯示于顯示裝置50,并對比排列顯示在左右的列上的執行語句,從而能夠掌握條件式的成立與否所引起的處理的差異。也能夠對流程圖33中的處理塊附加顏色后使之顯示于顯示裝置50。例如,能夠在流程圖33的設定了 IF以及END-1F的欄中設定給定的背景色A,在THEN的情況下被執行的二次語句327設定給定的背景色B,在ELSE的情況下被執行的二次語句327設定給定的背景色C。如此一來,在使流程圖33顯示于顯示裝置50之際,能夠將基于IF語句的層級結構作為基于背景色的組合的模式而在視覺上進行掌握。
[0119]以下,關于基于本實施方式的結構解析裝置10'的功能以及動作來詳細地進行說明。
[0120]如根據圖14可理解的那樣,基于本實施方式的變換單元21具有:控制信息獲取功能(S1400)、讀入功能(S1402、S1404)、變換功能(S1406?S1412)、以及寫入功能(S1414)。控制信息獲取功能是獲取展開控制信息的功能。讀入功能是從存儲裝置30'讀入模塊31之中作為處理對象的對象模塊31的功能。變換功能是將對象模塊31變換成二次模塊32的功能。寫入功能是將二次模塊32存儲至存儲裝置30'的功能。
[0121]更具體而言,如圖14所示,如果變換單元21通過例如從輸入裝置40輸入的啟動指示而被啟動,則獲取作為例如啟動指示的一部分而被輸入的展開控制信息(S1400)。能夠使在基于本實施方式的展開控制信息中包含展開限制指示。關于展開限制指示,指示的是:僅在初次限制執行對象的節或者調用對象的模塊31的語句312中描述的語句的展開。
[0122]其次,變換單元21獲取用于確定對象模塊31的對象模塊名(S1402)。對象模塊名能夠以與展開控制信息同樣的方法來獲取。變換單元21從存儲裝置30'讀入由獲取到的對象模塊名而確定的對象模塊31 (S1404)。此時,例如也可以僅存儲在給定的文件夾中的模塊31為讀入對象。當對象模塊31未存儲在存儲裝置30'中的情況下,變換單元21結束處理(未圖不)。
[0123]其次,變換單元21獲取對象模塊31的處理開始地方的語句312(S1406)。基于本實施方式的處理開始地方為主要節的排頭。變換單元21針對獲取到的語句312進行二次語句輸出處理(S1408)。其次,變換單元21判定是否處理完畢處理結束地方的語句312 (S1410)。基于本實施方式的處理結束地方為主要節的末尾。當處理已結束的情況下(S1410中“是”的情況下),變換單元21將所創建的二次模塊32寫入至存儲裝置30' (S1414),然后結束處理。另一方面,當處理未結束的情況下(S1410中“否”的情況下),變換單元21獲取其次要處理的語句312 (后續的行310的語句312) (S1412),針對獲取到的語句312進行二次語句輸出處理(S1408)。
[0124]圖15是更詳細地表示圖14所示的變換單元21的處理(功能)之中二次語句輸出處理(S1408)的流程圖。如圖15所示,變換單元21在二次語句輸出處理中將語句312作為二次語句327來輸出(S1500)。更具體而言,根據本實施方式,將在語句312中描述的執行語句等拷貝至工作表的給定的行?列。此時,如前所述,被進行使PERFORM語句變為注釋語句等的加工。進而,變換單元21針對模塊識別321、行編號322、以及連續編號326而設定前述那樣的值。
[0125]其次,變換單元21判定在語句312中是否描述了條件語句(S1502)。當在語句312中描述的執行語句為條件語句的情況下(S1502中“是”的情況下),變換單元21如前所述那樣進行將IF語句以外的條件語句變換成IF語句等的處理。更具體而言,變換單元21基于條件語句的條件式來生成描述了作為二次語句之一的二次條件語句(IF語句)的二次語句327,通過二次條件語句而使二次語句327層級化并輸出至二次模塊(S1504),然后結束二次語句輸出處理。上述的二次條件語句是通過僅由一個邏輯運算符來評價兩個評價對象操作數之間的關系這樣的二次條件式是成立還是不成立,來選擇要執行的二次語句327的條件語句(二次語句327)。
[0126]當在語句312中描述的執行語句(即、判定對象語句)不是條件語句的情況下(S1502中“否”的情況下),變換單元21進行判定對象語句是否為處理單位執行語句(PERFORM語句)的判定(S1506)。當判定對象語句為處理單位執行語句的情況下(S1506中“是”的情況下),變換單元21獲取執行對象的處理單位(根據本實施方式是指節)的處理開始地方的語句312。在本實施方式中,處理單位的處理開始地方為節的排頭。
[0127]當判定對象語句不是處理單位執行語句的情況下(S1506中“否”的情況下),變換單元21進行判定對象語句是否為模塊調用語句(根據本實施方式是指CALL語句)的判定(S1510)。當判定對象語句為模塊調用語句的情況下(S1510中“是”的情況下),變換單元21從存儲裝置30'讀入由CALL語句而確定的調用對象的模塊31 (S1512),獲取調用對象的模塊31的處理開始地方的語句312(S1514)。根據本實施方式,調用對象的模塊31的處理開始地方為該模塊31的主要節的排頭。當判定對象語句不是模塊調用語句的情況下(S1510中“否”的情況下),變換單元21結束二次語句輸出處理。
[0128]變換單元21針對執行對象的節的語句312或者調用對象的模塊31的語句312,遞歸式地進行二次語句輸出處理(S1516)。其次,變換單元21判定是否處理完畢處理結束地方的語句312(S1518)。基于本實施方式的處理結束地方,關于執行對象的節而言是該節的末尾,關于調用對象的模塊31而言是主要節的末尾。當處理已結束的情況下(S1518中“是”的情況下),變換單元21結束二次語句輸出處理。另一方面,當處理未結束的情況下(S1518中“否”的情況下),變換單元21獲取其次要處理的語句312 (后續的行310的語句312) (S1520),針對獲取到的語句312遞歸式地進行二次語句輸出處理(S1516)。
[0129]變換單元21針對遞歸式的(執行自己本身的)PERFORM語句不進行執行對象的節的語句312的展開。同樣地,變換單元21針對遞歸式的(調用自己本身的)CALL語句不進行調用對象的模塊31的語句312的展開。進而,變換單元21當對于展開控制信息而指定了展開限制指示的情況下,針對執行節名與已經進行了二次語句輸出處理的節相同的節的PERFORM語句,不進行二次語句輸出處理(S1506)。同樣地,變換單元21當對于展開控制信息而指定了展開限制指示的情況下,針對調用模塊名與已經進行了二次語句輸出處理的模塊31相同的模塊31的CALL語句,不進行二次語句輸出處理(S1510)。
[0130]如根據以上的說明可理解的那樣,變換單元21的變換功能將從對象模塊31的給定的處理開始地方起至給定的處理結束地方為止所描述的語句312分別作為二次語句327而依次輸出至二次模塊。進而,變換單元21的變換功能,在語句312為處理單位執行語句或者模塊調用語句的情況下,通過將在執行對象的處理單位或者調用對象的模塊31中描述的語句312展開,從而生成二次語句327并輸出至二次模塊32。進而,變換單元21的變換功能,針對被展開的語句312中的處理單位執行語句或者模塊調用語句,還進一步進行展開(即、遞歸式展開)。因此,能夠使在多數的處理單位或模塊31中分散的功能拉近到對象模塊31的主要節來進行收集。如前所述,根據本實施方式,關于模塊31的給定的處理開始地方以及給定的處理結束地方分別為主要節的排頭以及末尾。但是,關于模塊31的給定的處理開始地方以及給定的處理結束地方也可以分別設為PROCRDURE DIVIS0N的排頭以及末尾。例如,也能將給定的處理開始地方以及給定的處理結束地方之中的至少一方設為主要節的中途。但是,為了避免不必要的展開,且獲得充分的展開結果,優選設為本實施方式的構成。
[0131]如根據以上的說明可理解的那樣,基于本實施方式的變換單元21的變換功能,當對于展開控制信息而指定了展開限制指示的情況下,針對同一處理單位,將在執行對象的處理單位中描述的語句312的展開只進行初次的一次(即,將同一處理單位只展開一次),針對同一模塊31,將在調用對象的模塊31中描述的語句312的展開只進行初次的一次(即,將同一模塊31只展開一次)。但是,變換單元21的變換功能也可以與是否指定了展開限制指示無關地,將同一處理單位或同一模塊31只展開一次。進而,變換單元21的變換功能也可以與是否指定了展開限制指示無關地,將同一處理單位或同一模塊31反復展開。
[0132]如以上說明過的那樣,通過變換單元21,由二次語句327構成的二次模塊32被存儲至存儲裝置30'。
[0133]如根據圖16可理解的那樣,基于本實施方式的加工單元22具有:讀入功能(S1600、S1602)、層級識別附加功能(S1606)、命令識別附加功能(S1608)、以及寫入功能(S1014)o讀入功能是從存儲裝置30'讀入處理對象的二次模塊32的功能。層級識別附加功能是針對二次模塊32的二次語句327的至少一部分來附加層級識別323的功能。基于本實施方式的層級識別323表示二次語句327位于哪一層級。命令識別附加功能是針對二次模塊32的二次語句327的至少一部分來附加命令識別324的功能。基于本實施方式的命令識別324表示在二次語句327中描述的語句的類別。寫入功能是將由附加了層級識別323以及命令識別324的二次語句327構成的二次模塊32存儲至存儲裝置30'的功能。
[0134]更具體而言,如圖16所示,如果加工單元22例如與變換單元21同樣地被啟動,則獲取用于確定處理對象的二次模塊32的二次模塊名(S1600)。加工單元22從存儲裝置30'讀入由獲取到的二次模塊名而確定的二次模塊32 (S1602)。當處理對象的二次模塊32未存儲在存儲裝置30中的情況下,加工單元22結束處理(未圖示)。
[0135]其次,加工單元22獲取處理對象的二次模塊32的處理開始地方的二次語句327(S1604)。基于本實施方式的處理開始地方為二次模塊32的排頭。
[0136]加工單元22針對獲取到的二次語句327來附加層級識別323 (S1606)。更具體而言,基于本實施方式的加工單元22在記錄了處理對象的二次模塊32的工作表(即、對象工作表)中與行320的層級識別323對應的行和列,設定前述那樣的分支層級和分支的深度。其次,加工單元22針對獲取到的二次語句327來附加命令識別324(S1608)。更具體而言,基于本實施方式的加工單元22在對象工作表中與行320的命令識別324對應的行?列,設定前述那樣的命令名、條件命令恰當與否、和處理命令恰當與否。
[0137]其次,加工單元22判定是否處理完畢處理結束地方的二次語句327 (S1612)。基于本實施方式的處理結束地方為二次模塊32的末尾。當處理已結束的情況下(S1612中“是”的情況下),加工單元22將已加工的二次模塊32寫入至存儲裝置30' (S1614),然后結束處理。另一方面,當處理未結束的情況下(S1612中“否”的情況下),加工單元22獲取其次要處理的二次語句327 (后續的行320的二次語句327) (S1616),針對獲取到的二次語句327進行層級識別323的附加等(S1606、S1608)。
[0138]如以上說明過的那樣,由通過加工單元22附加了層級識別323以及命令識別324的二次語句327構成的二次模塊32(根據本實施方式是指追記了層級識別323等的工作表)被存儲至存儲裝置30'。
[0139]基于本實施方式的解析單元TV具備與基于第I實施方式的解析單元27同樣的功能。以下,以與解析單元27不同的功能作為中心,參照圖17所示的例子,使用圖4來進行說明。
[0140]如果解析單元27'與解析單元27同樣地被啟動,則從存儲裝置30'(或者主存儲裝置)讀入對象模塊32 (S400.S402)。換言之,解析單元27,不將模塊31而將二次模塊32作為解析對象。
[0141]解析單元2V在確定對象模塊32的各語句的層級等級之際(S404),根據命令識別324的命令名來判定IF語句的開始、結束等。此外,解析單元27'將層級識別323的長度作為層級等級來使用。如果參照圖17的例子,則針對各行320如從右起第2列所示那樣賦予層級等級。
[0142]解析單元27'與解析單元27同樣地提取對象范圍(即、作為進行層級結構的解析的對象的范圍)(S406)。但是,基于本實施方式的解析單元27'不將對象范圍所含的范圍作為對象范圍來使用。具體而言,如果參照圖17所例示的對象模塊32,則IF語句(條件語句)之中的兩個,從行編號322為874以及2397的行320起分別開始。此外,上述的IF語句,在行編號322為921以及2437的行320分別結束。解析單元TV將從行編號322為874的行320至行編號322為921的行320為止、以及從行編號322為2397的行320至行編號322為2437的行320為止,作為對象范圍來使用。另一方面,解析單元27'例如不將從行編號322為882的行320至行編號322為920的行320為止作為對象范圍來使用。
[0143]解析單元27'與解析單元27同樣地創建層級模式(S406)。如果參照圖17所例示的對象模塊32,則針對行編號322為874的行320、以及行編號322為2397的行320,分別創建” 1 2 3 4 3 4 5 4 3 2 I”的層級模式,設定為層級模式329p。
[0144]解析單元27'與解析單元27同樣地,選擇所創建的層級結構329的對象范圍(即、對象模塊31的對象范圍)之中相互不同的兩個對象范圍(即、第I對象范圍和第2對象范圍)。解析單元21'在第I對象范圍的層級結構和第2對象范圍的層級結構相同的情況下,創建類似通知信息329r(S408?S416)。解析單元27'使類似通知信息329r與第I對象范圍以及第2對象范圍建立關聯地創建。更具體而言,解析單元27'針對對象模塊32的行320,分別判定有無同一層級模式329p (S410?S416)。解析單元27'在檢測到具有彼此相同的層級模式329p的兩個行320的情況下,對檢測到的兩個行320的各自的類似有無329f設定意味著“有類似”的標記。
[0145]如果參照圖17所例示的對象模塊32,則從行編號322為874的行320至行編號322為921的行320為止的第I對象范圍(Rl)、和從行編號322為2397的行320至行編號322為2437的行320為止的第2對象范圍(R2)具有同一層級模式329p。因而,對于行編號322為874的行320以及行編號322為2397的行320的類似有無329f分別設定” I” (有類似對象范圍)。
[0146]其次,解析單元27'判定是否結束了所有的層級模式329p的處理(S414),當已結束的情況下(S414中“是”的情況下),進行S418的處理。更具體而言,將設定了層級結構329的二次模塊32寫入(更新)至存儲裝置30'。另一方面,當存在未處理的層級模式329p的情況下(S414中“否”的情況下),獲取其次要處理的層級模式329p。
[0147]如根據以上的說明可理解的那樣,基于本實施方式的解析單元27'與基于第I實施方式的解析單元27同樣地,能夠比較兩個對象范圍的類似性。進而,根據本實施方式,在對象模塊32中按照處理順序來連結關聯的多個模塊31。因此,能夠以更易于調查的形式一并檢測系統整體中的類似的對象范圍。
[0148]如根據圖18可理解的那樣,基于本實施方式的流程圖創建單元25具有讀入功能(S1800、S1802)、流程圖創建功能(S1804、S1805)、和寫入功能(S1806)。
[0149]更具體而言,如圖18所示,如果流程圖創建單元25例如與變換單元21同樣地被啟動,則獲取用于確定處理對象的二次模塊32的二次模塊名(S1800)。流程圖創建單元25從存儲裝置30'讀入由獲取到的二次模塊名而確定的處理對象的二次模塊32 (S1802)。當處理對象的二次模塊32未存儲在存儲裝置30'中的情況下,流程圖創建單元25結束處理(未圖示)。
[0150]其次,流程圖創建單元25創建將與二次條件式的成立與否分別對應的二次語句327排列在表的左右的表格式的流程圖33(S1804)。更具體而言,針對二次模塊32的二次語句327之中由層級識別323表示的層級相同的二次語句327,創建將在二次條件式成立了的情況下被執行的二次語句327和在二次條件式不成立的情況下被執行的二次語句327分別排列在表的左右的流程圖33。此時,對于流程圖33按照與二次語句327對應的方式設定行編號322。基于本實施方式的流程圖創建單元25,當層級識別323的分支的深度相同、且分支層級之中除了末尾的I位(”1”或者”2”)之外的部分相同的情況下,判定為由層級識別323表示的層級相同。
[0151]其次,流程圖創建單元25對流程圖中的相互類似的地方(對象范圍)進行標識(S1805)。更具體而言,如圖19所例示的那樣,對于二次模塊32的行320之中類似有無329f設定了“有類似”的地方(對象范圍)用框來包圍,進行“模式nn”(nn例如為序列號)等的顯示。序列號(nn)只要例如從流程圖的排頭起依次被賦予即可。
[0152]其次,流程圖創建單元25將流程圖33寫入至存儲單元30' (S1806),結束處理。
[0153]如根據圖19可理解的那樣,通過在視覺上明示相互類似的地方(對象范圍),從而例如能夠發現維護的遺漏。例如,在相互類似的對象范圍的一方被變更而另一方未被變更的情況下,能夠注意到需要對另一方的變更。
[0154]流程圖創建單元25也可以具備解析單元27'的解析功能、寫入功能以及顯示功能。換言之,流程圖創建單元25也可以是解析單元。
[0155](第3實施方式)
[0156]如圖20所示,基于本發明的第3實施方式的結構解析裝置10"具備:裝置主體20"、存儲裝置(存儲單元)30"、輸入裝置40、以及顯示裝置50。基于本實施方式的存儲裝置30"為裝置主體20"的主存儲裝置。裝置主體20"與基于第2實施方式的裝置主體20'同樣地具備:變換單元21、加工單元22、解析單元27'、以及流程圖創建單元25。
[0157]結構解析裝置10"經由通信線路80而與文件服務器60可通信地連接。通信線路80例如既可以為LAN (Local Area Network ;局域網),也可以為互聯網。文件服務器60具備存儲裝置(存儲單元)70。存儲裝置70能夠存儲模塊31、二次模塊32、以及流程圖33。因此,結構解析裝置10"能夠從存儲裝置70寫入模塊31等,并將模塊31等寫入至存儲裝置70。
[0158]為了容易理解,根據本實施方式,與第I以及第2實施方式同樣地,能夠發現在模塊31中類似的地方。進而,能夠由多個結構解析裝置10"來共享所發現的類似地方。
[0159]本發明基于在2012年4月9日向日本專利局提出的日本專利申請第2012-088098號,其內容通過參照而構成了本說明書的一部分。
[0160]雖然關于本發明的最優的實施方式進行了說明,但是如本領域的技術人員可明確的那樣,在不脫離本發明的精神的范圍內可使實施方式變形,這樣的實施方式屬于本發明的范圍。
[0161]標號說明
[0162]10,10/、10"結構解析裝置
[0163]20、20'、20"裝置主體
[0164]21變換單元
[0165]22加工單元
[0166]25流程圖創建單元
[0167]27、27'解析單元
[0168]30,30' ,30"存儲裝置(存儲單元)
[0169]31模塊(源程序)
[0170]310行
[0171]311連續編號(行識別)
[0172]312語句
[0173]32次模塊(模塊)
[0174]320次行(行)
[0175]321模塊識別
[0176]322行編號
[0177]323層級識別
[0178]324命令識別
[0179]326連續編號(行識別)
[0180]327次語句
[0181]329層級結構
[0182]329p層級模式
[0183]329r類似通知信息
[0184]329f類似有無
[0185]33流程圖
[0186]36層級結構數據
[0187]360行
[0188]361連續編號(行識別)
[0189]362層級模式
[0190]363結束行(連續編號)
[0191]364類似通知信息
[0192]364η類似行(連續編號)
[0193]40輸入裝置
[0194]50顯示裝置
[0195]60文件服務器
[0196]70存儲裝置(存儲單元)
[0197]80通信線路
【權利要求】
1.一種結構解析裝置,進行由通過程序語言描述的I個以上的語句構成的模塊的結構解析, 在所述模塊中能夠描述作為所述語句之一的條件語句,所述條件語句包含成立時執行語句以及/或者不成立時執行語句,所述成立時執行語句是在所述條件語句的條件式成立的情況下被執行的所述語句,所述不成立時執行語句是在所述條件式不成立的情況下被執行的所述語句,所述條件語句之中的至少一個還能夠包含所述條件語句作為所述成立時執行語句以及/或者所述不成立時執行語句,由此能夠進行基于所述條件語句的所述語句的層級化,關于所述模塊中的由連續的所述語句構成的多個對象范圍,能夠分別確定基于所述層級化的層級結構, 所述結構解析裝置具備存儲單元和解析單元, 在所述存儲單元中存儲有I個以上的所述模塊, 所述解析單元構成為進行所述存儲單元所存儲的所述模塊之中的給定的對象模塊的結構解析,所述解析單元具有獲取功能和解析功能,所述獲取功能是從所述存儲單元獲取所述對象模塊的功能,所述解析功能是在第I對象范圍的所述層級結構和第2對象范圍的所述層級結構相同的情況下與所述第I對象范圍以及/或者所述第2對象范圍建立關聯來創建類似通知信息的功能,所述第I對象范圍以及所述第2對象范圍是獲取到的所述對象模塊的所述對象范圍之中相互不同的所述對象范圍,所述類似通知信息表示在所述對象模塊內存在相互類似的所述對象范圍。
2.根據權利要求1所述的結構解析裝置,其中, 在所述對象范圍中包含至少一個所述條件語句,在所述對象范圍中包含所述對象范圍所含的所述條件語句的各自的開始至結束的整體。
3.根據權利要求1或2所述的結構解析裝置,其中, 所述對象范圍的所述層級結構能夠通過連結了所述對象范圍所含的層級等級的層級模式來識別,所述層級等級表示以所述對象范圍的排頭的所述語句作為基準而被確定的層級的深度。
4.根據權利要求3所述的結構解析裝置,其中, 所述解析單元在所述解析功能中,當所述第I對象范圍的所述層級模式和所述第2對象范圍的所述層級模式相同的情況下,判定為所述第I對象范圍的所述層級結構和所述第2對象范圍的所述層級結構相同。
5.根據權利要求3或4所述的結構解析裝置,其中, 所述解析單元在所述解析功能中按照被連結成所述層級模式的所述層級等級的數目的降序將多個所述對象范圍作為所述第I對象范圍來使用。
6.根據權利要求5所述的結構解析裝置,其中, 所述解析單元在所述解析功能中將滿足給定的條件的所述對象范圍不作為所述第I對象范圍來使用。
7.根據權利要求6所述的結構解析裝置,其中, 所述給定的條件是將所述對象范圍的被連結成所述層級模式的所述層級等級的數目設為基準的條件。
8.根據權利要求1至7中任一項所述的結構解析裝置,其中, 所述對象模塊連結了多個所述模塊。
9.根據權利要求1至8中任一項所述的結構解析裝置,其中, 所述解析單元還具有寫入功能,所述寫入功能是將所述對象模塊和所述類似通知信息建立關聯地存儲至所述存儲單元的功能。
10.根據權利要求1至9中任一項所述的結構解析裝置,其中, 所述結構解析裝置還具備顯示裝置, 所述解析單元還具有顯示功能,所述顯示功能是將所述對象模塊和所述類似通知信息建立關聯地顯示至所述顯示裝置的功能。
11.一種程序,使計算機作為權利要求1至10中任一項所述的結構解析裝置而發揮功倉泛。
【文檔編號】G06F9/44GK104169875SQ201380015262
【公開日】2014年11月26日 申請日期:2013年4月5日 優先權日:2012年4月9日
【發明者】石田伸一 申請人:松崎務, I系統株式會社, 石田伸一