JP2023057721A - Verification program, verification method, and information processing device - Google Patents
Verification program, verification method, and information processing device Download PDFInfo
- Publication number
- JP2023057721A JP2023057721A JP2021167367A JP2021167367A JP2023057721A JP 2023057721 A JP2023057721 A JP 2023057721A JP 2021167367 A JP2021167367 A JP 2021167367A JP 2021167367 A JP2021167367 A JP 2021167367A JP 2023057721 A JP2023057721 A JP 2023057721A
- Authority
- JP
- Japan
- Prior art keywords
- data
- program
- data change
- execution
- history
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012795 verification Methods 0.000 title claims abstract description 54
- 230000010365 information processing Effects 0.000 title claims abstract description 16
- 238000000034 method Methods 0.000 title claims description 54
- 230000008859 change Effects 0.000 claims abstract description 183
- 238000012545 processing Methods 0.000 claims abstract description 79
- 230000008569 process Effects 0.000 claims description 37
- 238000012986 modification Methods 0.000 claims description 10
- 230000004048 modification Effects 0.000 claims description 10
- 238000011161 development Methods 0.000 description 50
- 238000013508 migration Methods 0.000 description 31
- 230000005012 migration Effects 0.000 description 31
- 230000006399 behavior Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 16
- 238000007667 floating Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 11
- 238000004891 communication Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- 238000012790 confirmation Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 238000005401 electroluminescence Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012552 review Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000013509 system migration Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
Description
本発明は、検証プログラム、検証方法、および情報処理装置に関する。 The present invention relates to a verification program, verification method, and information processing apparatus.
業務に使用されるアプリケーションソフトウェア(以下、単に「アプリケーション」と呼ぶ)の中には、古くに開発され、現在も運用され続けているものがある。特にCOBOL言語で記述されたアプリケーションにはそのようなものが多い。 Some application software (hereinafter simply referred to as "applications") used in business were developed long ago and are still in operation today. In particular, applications written in the COBOL language have many such cases.
それに対して、アプリケーションを実行する実行環境(ハードウェア、OS(Operating System)、文字コード体系など)は、時代と共に変遷する。そのため長期にわたって同じアプリケーションを運用し続けるために、実行環境の変化に合わせたアプリケーションの新たな実行環境への移行作業が行われる。 On the other hand, the execution environment (hardware, OS (Operating System), character code system, etc.) for executing applications changes with the times. Therefore, in order to continue to operate the same application over a long period of time, work is performed to migrate the application to a new execution environment in accordance with changes in the execution environment.
新たな実行環境へアプリケーションを移行させる場合、アプリケーションを大きく改修することなく実行環境の切り替えのみで移行できることが望まれる。しかし、移行前後の実行環境で取り扱うデータのデータ形式(CPU(Central Processing Unit)のビット幅、エンディアン、浮動小数点形式、文字コードなど)が異なる場合がある。この場合、アプリケーションのプログラムの処理ロジックに変更がなくとも、データ形式の違いに起因して、アプリケーション実行時に意図しない動作(非互換動作)が発生する可能性がある。そのため運用者は、アプリケーションの実行環境を変更する場合、移行先環境での動作検証を行うこととなる。 When migrating an application to a new execution environment, it is desirable to be able to migrate by simply switching the execution environment without making major modifications to the application. However, the data format of data handled in the execution environment before and after migration (bit width of CPU (Central Processing Unit), endian, floating point format, character code, etc.) may differ. In this case, even if there is no change in the processing logic of the application program, unintended behavior (incompatible behavior) may occur during application execution due to differences in data formats. Therefore, when changing the execution environment of an application, the operator must verify the operation in the migration destination environment.
アプリケーションの実行環境の移行に伴う検証作業の自動化に関して、様々な技術が提案されている。例えばシステム移行テストにおいて、現行システムと新システムとの間の差分を解析するにあたり、アプリケーションが改修されている部分を解析対象から除外し、新旧システム間の相違原因を分析し易くする移行テスト支援システムが提案されている。 Various techniques have been proposed for automating verification work associated with migration of an application execution environment. For example, in a system migration test, when analyzing the difference between the current system and the new system, the part where the application has been modified is excluded from the analysis target, and the migration test support system makes it easier to analyze the cause of the difference between the old and new systems. is proposed.
しかし従来技術では、移行前後の実行環境のデータ形式の違いに起因して発生する非互換動作の原因箇所を事前に特定するのが困難である。例えば運用者は、移行先環境においてアプリケーションをテスト実行させ、非互換動作が発生した場合にコードレビューやデバッガによるデバッグを行い、非互換動作部分からロジックをさかのぼり原因箇所を特定する。この方法では、原因箇所の特定が手作業となるため工数がかかる。またテストの対象となっていない状況で発生する非互換動作が存在する場合、そのような非互換動作を検出できない。この非互換動作がアプリケーションの移行先における運用開始後に顕在化すると、実運用環境において障害を引き起こす可能性がある。 However, with the conventional technology, it is difficult to identify in advance the cause of an incompatible operation that occurs due to the difference in the data format of the execution environment before and after migration. For example, the operator performs test execution of the application in the migration destination environment, performs code review and debugging with a debugger when incompatible behavior occurs, and traces the logic from the incompatible behavior portion to identify the cause. This method requires a lot of man-hours because the location of the cause is identified manually. Also, if there is an incompatible behavior that occurs in a situation not covered by the test, such incompatible behavior cannot be detected. If this incompatible behavior becomes apparent after the application starts operating at the migration destination, it may cause a failure in the actual operating environment.
1つの側面では、本件は、非互換動作の発生箇所を容易に特定できるようにすることを目的とする。 In one aspect, this application aims to make it possible to easily identify the location of occurrence of incompatible behavior.
1つの案では、以下の処理をコンピュータに実行させる検証プログラムが提供される。
コンピュータは、データの値を変更する検証対象命令を含む検証対象プログラムに従った処理を第1のプログラム実行環境で実行するための第1の実行プログラムに、検証対象命令に基づいて第1の実行プログラム内に設定された第1のデータ変更命令による変更内容を記録させる第1の記録命令を追加する。コンピュータは、第1のプログラム実行環境で第1の実行プログラムを実行させることで、第1のデータ変更命令による第1のデータの値の変更内容が記録された第1のデータ変更履歴を取得する。コンピュータは、検証対象プログラムに従った処理を第2のプログラム実行環境で実行するための第2の実行プログラムに、検証対象命令に基づいて第2の実行プログラム内に設定された第2のデータ変更命令による変更内容を記録させる第2の記録命令を追加する。コンピュータは、第2のプログラム実行環境で第2の実行プログラムを実行させることで、第2のデータ変更命令による第2のデータの値の変更内容が記録された第2のデータ変更履歴を取得する。そしてコンピュータは、第1のデータ変更履歴と第2のデータ変更履歴とを比較することで非互換動作を検出する。
In one proposal, a verification program is provided that causes a computer to perform the following processes.
The computer causes a first execution program for executing, in a first program execution environment, a process according to the verification target program including the verification target instruction that changes the value of the data, based on the verification target instruction. A first recording command is added to record the content of change made by the first data change command set in the program. The computer executes the first execution program in the first program execution environment, thereby obtaining a first data change history in which changes to the value of the first data according to the first data change instruction are recorded. . The computer changes the second data set in the second execution program based on the verification target instruction to the second execution program for executing the process according to the verification target program in the second program execution environment. Add a second recording instruction that causes the changes made by the instruction to be recorded. The computer executes the second execution program in the second program execution environment to obtain a second data change history in which changes to the value of the second data according to the second data change instruction are recorded. . The computer then detects the incompatible operation by comparing the first data change history and the second data change history.
1態様によれば、非互換動作の発生箇所を容易に特定可能となる。 According to one aspect, it is possible to easily identify the location where the incompatible operation occurs.
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
まず第1の実施の形態について説明する。第1の実施の形態は、プログラムの実行環境を移行させる際に、データ形式の違いに起因する非互換動作の発生箇所を容易に特定できるようにする検証方法である。
Hereinafter, this embodiment will be described with reference to the drawings. It should be noted that each embodiment can be implemented by combining a plurality of embodiments within a consistent range.
[First Embodiment]
First, the first embodiment will be explained. The first embodiment is a verification method that makes it possible to easily identify a location where an incompatible operation due to a difference in data format occurs when migrating a program execution environment.
図1は、第1の実施の形態に係る検証方法の一例を示す図である。図1には、検証方法を実現する情報処理装置10の例を示している。情報処理装置10は、検証プログラムを実行することにより、検証方法を実施することができる。 FIG. 1 is a diagram showing an example of a verification method according to the first embodiment. FIG. 1 shows an example of an information processing device 10 that implements the verification method. The information processing device 10 can implement the verification method by executing the verification program.
情報処理装置10は、検証方法を実現するために、記憶部11と処理部12とを有する。記憶部11は、例えば情報処理装置10が有するメモリまたはストレージ装置である。処理部12は、例えば情報処理装置10が有するプロセッサまたは演算回路である。
The information processing device 10 has a
記憶部11は、検証対象プログラム1を記憶する。検証対象プログラム1は、例えば高級言語で記述されたソースプログラムである。検証対象プログラム1には、データの値を変更する検証対象命令が含まれる。
The
処理部12は、第1のプログラム実行環境12aと第2のプログラム実行環境12bとを有する。処理部12は、例えば検証対象プログラム1を第1のプログラム実行環境12a用にコンパイルするコンパイラと、第2のプログラム実行環境12b用にコンパイルするコンパイラとを有する。
The
第1のプログラム実行環境12aと第2のプログラム実行環境12bとは、ハードウェア、OSなどを含めたプログラムの実行環境である。第1のプログラム実行環境12aと第2のプログラム実行環境12bとは、例えば仮想マシンを用いて実現することができる。また情報処理装置10が複数のコンピュータを含むコンピュータシステムであれば、第1のプログラム実行環境12aと第2のプログラム実行環境12bとを異なるコンピュータ上に実現してもよい。また第1のプログラム実行環境12aと第2のプログラム実行環境12bとは、主として取り扱うデータのデータ形式(CPUのビット幅、エンディアン、浮動小数点形式、文字コードなど)が異なる。
The first
ここで情報処理装置10のユーザは、検証対象プログラム1に基づいて生成した実行プログラムを用いて第1のプログラム実行環境12a上で運用しているサービスを、第2のプログラム実行環境12bに移行させることを予定しているものとする。この場合、ユーザは、検証対象プログラム1を第2のプログラム実行環境12b用にコンパイルしたプログラムが正常に動作するかの動作検証を行う。動作検証では、運用者は、処理部12に以下の処理を実行させる。
Here, the user of the information processing apparatus 10 uses the execution program generated based on the
処理部12は、例えば第1のプログラム実行環境12aにおいて検証対象プログラム1をコンパイルすることで、検証対象プログラム1に記述された処理を第1のプログラム実行環境12aで実行するための第1の実行プログラム2を生成する。このとき処理部12は、第1の実行プログラム2に、検証対象命令に基づいて第1の実行プログラム2内に設定された第1のデータ変更命令による変更内容を記録させる第1の記録命令を追加する。さらに処理部12は、第1のプログラム実行環境12aで第1の実行プログラム2を実行させることで、第1のデータ変更命令による第1のデータ4の値の変更内容が記録された第1のデータ変更履歴6を取得する。
The
また処理部12は、例えば第2のプログラム実行環境12bにおいて検証対象プログラム1をコンパイルすることで、検証対象プログラム1に記述された処理を第2のプログラム実行環境12bで実行するための第2の実行プログラム3を生成する。このとき処理部12は、第2の実行プログラム3に、検証対象命令に基づいて第2の実行プログラム3内に設定された第2のデータ変更命令による変更内容を記録させる第2の記録命令を追加する。さらに処理部12は、第2のプログラム実行環境12bで第2の実行プログラム3を実行させることで、第2のデータ変更命令による第2のデータ5の値の変更内容が記録された第2のデータ変更履歴7を取得する。
Further, the
なお、第2のデータ5は、例えば非互換動作がなければ第1のデータ4と同じ意味を有する値が設定されるデータである。例えば第1のデータ4が文字列の場合、第2のデータ5にも同じ文字列を示す値が設定される。ただし、第2のデータ5のデータ形式は、第1のデータ4のデータ形式とは異なる場合がある。例えば第1のデータ4の文字列を表す文字コード体系と、第2のデータ5の文字列を表す文字コード体系とが異なる。この場合、第1のデータ4の値(文字コード)と第2のデータの値(文字コード)とは異なるが、それぞれの文字コードによって表される意味(文字列)は同一である。
The
第1のデータ変更履歴6と第2のデータ変更履歴7とを取得すると、処理部12は、第1のデータ変更履歴6と第2のデータ変更履歴7とを比較することで、データ形式の違いに起因する非互換動作を検出する。例えば処理部12は、第1のデータ4の変更前の値または変更後の値を含む第1のデータ変更履歴6を取得する。また処理部12は、第2のデータ5の変更前の値または変更後の値を含む第2のデータ変更履歴7を取得する。そして処理部12は、第1のデータ変更履歴6に示される第1のデータ4の値によって表される意味と第2のデータ変更履歴7に示される第2のデータ5の値によって表される意味とを比較し、異なる意味を表している場合に非互換動作があると判断する。すなわち異なる意味を表している場合、第1のデータ変更命令と第2のデータ変更命令とは、同じ検証対象命令に基づいて設定された命令であるものの、異なる意味を表す値へのデータ変更動作(非互換動作)を行っている。
After acquiring the first
例えば第1の実行プログラム2の第1のデータ変更命令は、第1のプログラム実行環境12aにおいて標準のデータ形式のデータの値への変更を意図しているものとする。この場合、第1のデータ変更命令に基づいて、第1のデータ4が、第1のプログラム実行環境12aにおいて標準のデータ形式のデータであるものと解釈して変更処理が行われる。
For example, it is assumed that the first data change instruction of the
同様に、第2の実行プログラム3の第2のデータ変更命令が、第2のプログラム実行環境12bにおいて標準のデータ形式のデータの値への変更を意図しているものとする。この場合、第2のデータ変更命令に基づいて、第2のデータ5が、第2のプログラム実行環境12bにおいて標準のデータ形式のデータであるものと解釈して変更処理が行われる。
Similarly, assume that the second data modification instruction of the second executable program 3 is intended to modify the value of data in the standard data format in the second
このとき第2のデータ5のデータ形式が、想定されているデータ形式とは異なっている場合、変更後の第2のデータ5の値で表される意味が、変更後の第1のデータ4の値で表される意味とは異なる意味となる。その結果、非互換動作(異なる意味を表す値へのデータ変更)があると判定される。
At this time, if the data format of the
データ形式の相違に基づく非互換動作を検知する場合、例えば処理部12は、第1のデータ4に求められる第1のデータ形式と、第1のデータ4の変更前の値または変更後の値とを含む第1のデータ変更履歴6を取得する。また処理部12は、第2のデータ5に求められる第2のデータ形式と、第2のデータ5の変更前の値または変更後の値とを含む第2のデータ変更履歴7を取得する。さらに処理部12は、第1のデータ変更履歴6に示される第1のデータ形式と第2のデータ変更履歴7に示される第2のデータ形式とに基づいて、第1のデータ4と第2のデータ5との少なくとも一方のデータ形式を変換する。そして処理部12は、第1のデータ4と第2のデータ5との値を比較する。
When detecting an incompatible operation based on a difference in data format, for example, the
図1の例では、第1のデータ変更履歴6には、データの値が「A4A2A4A4A4A68140」であること、データの形式が「日本語EUC(Extended UNIX(登録商標) Code)文字列」であることが示されている。また第2のデータ変更履歴7には、データの値が「A4A2A4A4A4A68140」であること、データの形式が「UTF(Unicode Transformation Format)-16LE(Little Endian)文字列」であることが示されている。図1の例では、第1のデータ変更履歴6と第2のデータ変更履歴7とのそれぞれに示されるデータの値は同じである。しかし第1の実行プログラム2の実行時に解釈した文字コード体系と、第2の実行プログラム3の実行時に解釈した文字コード体系とは異なる。これは、第2のプログラム実行環境12bにおいても日本語EUCのデータが第2の実行プログラム3の処理対象として入力された場合に起こり得る。
In the example of FIG. 1, the first
この場合、処理部12は、第1のデータ4と第2のデータ5との文字コードを統一し、第1のデータ4と第2のデータ5との値を比較する。例えば処理部12は、第1のデータ4の値(日本語EUCの文字コード)をUTF-16LEの文字コードに変換して、第1のデータ4の変換後の値と第2のデータ5の値とを比較する。すると値は不一致となる。すなわち、第1のデータ変更履歴6と第2のデータ変更履歴7とのそれぞれに示されるデータの値で表される意味(文字列)は異なる。この場合、処理部12は、検証対象プログラム1の検証対象命令の部分において非互換動作が生じていると判断する。
In this case, the
このように情報処理装置10は、非互換動作の原因箇所が容易に特定できる。しかもデータ形式の違いに起因する非互換動作を高精度に検出可能である。
例えば、第2のデータ5の文字コード体系が、第2のデータ変更命令で想定される文字コード体系と異なる場合において、第2のデータ5の文字コードが想定される文字コード体系に存在しない値であれば、従来から第2のデータ5の不正を検出するのは容易である。しかし、一般には、第2のデータ5の値として設定されている文字コードが、第2のデータ変更命令で想定している文字コード体系にも存在する文字コードであった場合、それをエラーとして検出するのは困難である。多くの場合、エラーとして検出されずに処理が続行され、文字化けとして問題が顕在化する。
In this manner, the information processing apparatus 10 can easily identify the cause of the incompatible operation. Moreover, it is possible to detect incompatible operations caused by differences in data format with high accuracy.
For example, when the character code system of the
それに対して処理部12は、第1のデータ変更履歴6と第2のデータ変更履歴7との比較により非互換動作を検出している。これにより、第2のデータ5の文字コードが、第2のデータ変更命令で想定している文字コード体系にも存在する場合であっても、第2のデータ5の文字コード体系が想定されているものと異なれば、非互換動作として検出できる。そのため、データ形式の違いに起因する非互換動作を正確に検出可能である。
On the other hand, the
データ形式の違いに起因する非互換動作が生じる場合、ユーザは、例えば原因箇所である検証対象命令までの処理ロジックを見直し、想定と異なるデータ形式のデータが入力されても正しく処理できるように検証対象プログラム1を修正する。または、ユーザは、検証対象命令で読み込んでいるデータを確認し、入力されるデータのデータ形式が想定通りのデータ形式となるように、第2のプログラム実行環境12bにおける環境設定を行うこともできる。
If an incompatible operation occurs due to a difference in data format, the user should, for example, review the processing logic up to the verification target instruction, which is the cause of the problem, and verify that even if data with a different data format than expected is input, it can be processed correctly. Correct the
また処理部12は、第1のデータ4と第2のデータ5とのデータ名を照合して、同じデータ名のデータが比較対象となっていることを確認してもよい。その場合、処理部12は、第1のデータ4を識別する第1のデータ名を含む第1のデータ変更履歴6を取得する。また処理部12は、第2のデータ5を識別する第2のデータ名を含む第2のデータ変更履歴7を取得する。そして処理部12は、第1のデータ変更履歴6に示される第1のデータ名と第2のデータ変更履歴7に示される第2のデータ名とを比較し、一致することを確認する。第1の実行プログラム2と第2の実行プログラム3との処理ロジックが等しければ、第1のデータ変更命令で値を変更する第1のデータ4のデータ名と第2のデータ変更命令で値を変更する第2のデータ5のデータ名とは同じとなる。そのため第1のデータのデータ名と第2のデータ名とが不一致となる場合、処理ロジックが異なる(2つの実行プログラムが等価のプログラムではない)と判断できる。すなわち、第1のプログラム実行環境12aで実行されていた第1の実行プログラム2による処理を第2のプログラム実行環境12bに移行する際に、処理ロジックが変更されていないことを確認できる。
In addition, the
なおデータのデータ形式としては、文字コード以外にも、エンディアン、浮動小数点の表現形式などがある。なお処理部12は、第1のデータ4と第2のデータ5とで浮動小数点の表現形式が異なる場合、いずれか一方のデータのデータ形式に統一すると、浮動小数点で表される数値の精度が劣化してしまう可能性がある。そこで処理部12は、第1のデータ4と第2のデータ5とで浮動小数点の表現形式が異なる場合、第1のデータ4と第2のデータ5とを第3の表現形式に変換してもよい。例えば処理部12は、第1のデータ4と第2のデータ5とを、それらのデータの値で示される数値(数字と小数点との配列)に変換してもよい。これにより、第1のデータ4と第2のデータ5との値(浮動小数点)で表される意味(数値)を、正しく比較することができる。
In addition to the character code, the data format includes endian, floating point representation, and the like. Note that if the
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、ある実行環境のコンピュータで運用中のアプリケーションを、異なる実行環境のコンピュータに移行させる際に、開発環境において事前に動作検証を行い、データ形式の違いによる非互換動作の有無を確認するものである。
[Second embodiment]
Next, a second embodiment will be described. In the second embodiment, when an application running on a computer with a certain execution environment is migrated to a computer with a different execution environment, operation verification is performed in advance in the development environment, and incompatible operations due to differences in data formats are verified. It confirms the presence or absence of
図2は、第2の実施の形態のシステム構成の一例を示す図である。図2には、運用システム200において実行されているアプリケーションの実行環境を移行させる際に、開発システム100を用いてアプリケーションの動作検証を事前に実施する場合のシステム構成例が示されている。
FIG. 2 is a diagram showing an example of a system configuration according to the second embodiment. FIG. 2 shows a system configuration example in which the
例えばネットワーク20を介して開発システム100と運用システム200とが接続されている。開発システム100には、アプリケーションの開発者が使用する2台の開発マシン100a,100bが含まれている。運用システム200には、アプリケーションを用いたサービスの提供に使用される2台の運用マシン200a,200bが含まれている。
For example, a
開発マシン100a,100bは、アプリケーションの開発とテスト用に用意されたコンピュータである。運用マシン200a,200bは、アプリケーションを用いた処理を実行し、各種サービスなどの運用を行うために用意されたコンピュータである。
The
ここで運用マシン200aにおいて運用していたアプリケーションを、運用マシン200bに移行させるものとする。運用マシン200bは、運用マシン200aとは異なる動作環境を有している。この場合、開発システム100では、移行元の運用マシン200aと同じ動作環境が開発マシン100aに構築され、移行先の運用マシン200bと同じ動作環境が開発マシン100bに構築される。
Assume that an application that has been operated on the operating machine 200a is migrated to the operating machine 200b. The operating machine 200b has an operating environment different from that of the operating machine 200a. In this case, in the
なお開発マシン100a,100bは、それぞれ運用マシン200a,200bの動作環境を再現した仮想マシンであってもよい。開発マシン100a,100bが共に仮想マシンである場合、同一のコンピュータ内に両方の開発マシン100a,100bを構築することができる。
The
図3は、開発マシンのハードウェアの一例を示す図である。開発マシン100aは、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
FIG. 3 is a diagram illustrating an example of hardware of a development machine. The
メモリ102は、開発マシン100aの主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOSのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に利用する各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
The
バス109に接続されている周辺機器としては、ストレージ装置103、GPU(Graphics Processing Unit)104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108がある。
Peripheral devices connected to the bus 109 include a
ストレージ装置103は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置103は、開発マシン100aの補助記憶装置として使用される。ストレージ装置103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置103としては、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)を使用することができる。
The
GPU104は画像処理を行う演算装置であり、グラフィックコントローラとも呼ばれる。GPU104には、モニタ21が接続されている。GPU104は、プロセッサ101からの命令に従って、画像をモニタ21の画面に表示させる。モニタ21としては、有機EL(Electro Luminescence)を用いた表示装置や液晶表示装置などがある。
The
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をプロセッサ101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
A keyboard 22 and a
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取り、または光ディスク24へのデータの書き込みを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD-RAM、CD-ROM(Compact Disc Read Only Memory)、CD-R(Recordable)/RW(ReWritable)などがある。
The
機器接続インタフェース107は、開発マシン100aに周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
The
ネットワークインタフェース108は、ネットワーク20に接続されている。ネットワークインタフェース108は、ネットワーク20を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。ネットワークインタフェース108は、例えばスイッチやルータなどの有線通信装置にケーブルで接続される有線通信インタフェースである。またネットワークインタフェース108は、基地局やアクセスポイントなどの無線通信装置に電波によって通信接続される無線通信インタフェースであってもよい。
開発マシン100aは、以上のようなハードウェアによって実現することができる。他の開発マシン100bおよび運用マシン200a,200bも、開発マシン100aと同様のハードウェアで実現することができる。また、第1の実施の形態に示した情報処理装置10も、図3に示した開発マシン100aと同様のハードウェアにより実現することができる。
The
開発マシン100aは、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。開発マシン100aに実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、開発マシン100aに実行させるプログラムをストレージ装置103に格納しておくことができる。プロセッサ101は、ストレージ装置103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。また開発マシン100aに実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、ストレージ装置103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
The
例えば運用マシン200aでアプリケーションを実行させてサービスを提供する運用者は、アプリケーションを別の運用マシン200bに移行する場合、例えば事前に開発マシン100a,100bを用いて、アプリケーションの実行環境の互換性の検証を行う。互換性の検証では、データ形式の違いに起因して意図しない動作(非互換動作)が実行されるか否かが検証される。
For example, when an operator who executes an application on the operation machine 200a and provides a service moves the application to another operation machine 200b, for example, the
ここでデータ形式の違いに起因する非互換動作としては、例えば以下のような動作がある。
第1の例は、エンディアンの違いに起因する非互換動作である。エンディアンとは、複数のバイトを並べる順序の種類である。エンディアンの種類には、ビッグエンディアン、リトルエンディアンなどがある。ビッグエンディアンでは、バイト単位のデータが上位のバイトから順に並べられる。リトルエンディアンでは、バイト単位のデータが下位のバイトから順に並べられる。
Examples of incompatible operations due to differences in data formats include the following operations.
The first example is incompatible behavior due to endian differences. Endianness is the type of order in which multiple bytes are arranged. Endian types include big endian and little endian. In big-endian, byte-wise data is ordered from the most significant byte. In little-endian, byte-wise data is ordered from the least significant byte.
ビッグエンディアンのデータ入力を前提とするプログラム実行環境からリトルエンディアンのデータ入力を前提とするプログラム実行環境へ移行する場合がある。例えば移行元のプログラム実行環境では、ネットワークからネットワークバイトオーダー(ビッグエンディアン)のバイト列を4バイト読み込み、それをそのままバイナリ整数と見なして処理しているものとする。このとき移行先のプログラム実行環境では、取得するデータをリトルエンディアンとして取り扱う場合がある。この場合、エンディアンが異なるため、ビッグエンディアンのデータをそのまま実行してしまうと、本来の値とは異なる整数値として処理が実行され、意図しない結果が出力される。 A program execution environment that assumes big-endian data input may shift to a program execution environment that assumes little-endian data input. For example, in the program execution environment of the migration source, it is assumed that a 4-byte byte string in network byte order (big endian) is read from the network and processed as it is as a binary integer. At this time, the program execution environment of the transfer destination may handle the acquired data as little endian. In this case, since the endian is different, if the big endian data is executed as it is, the processing is executed as an integer value different from the original value, and an unintended result is output.
第2の例は、文字コードの違いに起因する非互換動作である。例えばプログラムを実行するOSを、システム文字コードがEUCのOSからUTF-16のOSに移行する場合がある。この場合、移行先のコンピュータでは処理ロジックがEUCを想定しているため、取得した文字データがUTF-16のまま入力されると意図しない結果が出力される。 A second example is an incompatible operation caused by a difference in character codes. For example, there is a case where the OS for executing a program is shifted from an OS whose system character code is EUC to an OS whose system character code is UTF-16. In this case, the processing logic of the destination computer assumes EUC, so if the acquired character data is input as it is in UTF-16, an unintended result will be output.
その他、浮動小数点の表現形式の違いも非互換動作の原因となり得る。このように、プログラム実行環境において取り扱われるデータ形式の違いにより、非互換動作が発生する。そこで運用者は、開発システム100を用いた実行環境移行に伴う動作検証を行い、データ形式の違いに起因する非互換動作の検出と非互換動作の原因箇所の特定を行う。
In addition, differences in floating-point representation formats can also cause incompatible behavior. In this way, incompatible operations occur due to the difference in data format handled in the program execution environment. Therefore, the operator performs operation verification accompanying execution environment migration using the
図4は、アプリケーションの動作検証のために動作開発システムが有する機能の一例を示す図である。開発マシン100aは、記憶部110、コンパイラ120、および実行部130を有する。
FIG. 4 is a diagram showing an example of functions that the behavior development system has for verifying the behavior of an application. The
記憶部110は、ソースファイル111、実行ファイル112、複数のデータファイル113a,113b,・・・、ランタイムライブラリ114、およびデータ変更履歴115を有する。ソースファイル111は、アプリケーションの処理内容が高級言語で記述されたプログラムファイルである。実行ファイル112は、ソースファイル111に基づいて生成された実行形式の機械語のプログラムファイルである。データファイル113a,113b,・・・は、実行ファイル112の実行時に使用するデータが設定されたファイルである。ランタイムライブラリ114は、実行ファイル112の実行時に利用可能なランタイム(ソフトウェア部品)が登録されたファイルである。データ変更履歴115は、実行ファイル112によるアプリケーション実行時のデータ変更履歴が格納されたログファイルである。
The storage unit 110 has a
コンパイラ120は、ソースファイル111の機械語への翻訳(コンパイル)を実行する。すなわちコンパイラ120は、ソースファイル111に記述されたプログラムを解釈し、開発マシン100aにおけるプログラム実行環境に適合する実行ファイル112を生成する。なお開発マシン100aのプログラム実行環境は運用システム200における移行元の運用マシン200aと同じであるため、生成される実行ファイル112は移行元の運用マシン200aにも適合している。コンパイラ120は、データ領域内のデータの変更を伴う命令を検出した場合、変更前後においてデータの値を記録する命令を、実行ファイル112に追加する。
The
実行部130は、実行ファイル112を実行するプロセスである。実行部130は、実行ファイル112の実行過程で処理対象のデータ読み込み命令がある場合、例えばデータファイル113a,113b,・・・から該当するデータを読み込む。また実行部130は、実行ファイル112の実行途中でランタイムが呼び出された場合、ランタイムライブラリ114から該当するランタイムを取得して、取得したランタイムを実行する。例えば指定されたデータをデータ変更履歴115に記録するランタイムが用意されている場合、実行部130は、データの値を記録する命令の実行時にそのランタイムを呼び出して実行する。実行部130が実行ファイル112を実行することで、実行ファイル112の実行過程で変更されたデータの変更前後での値がデータ変更履歴115に格納される。
開発マシン100bは、記憶部140、コンパイラ150、実行部160、およびデータ履歴比較部170を有する。
記憶部140は、ソースファイル141、実行ファイル142、複数のデータファイル143a,143b,・・・、ランタイムライブラリ144、およびデータ変更履歴115を有する。ソースファイル141は、ソースファイル111と同じ内容のプログラムファイルである。実行ファイル142は、ソースファイル141に基づいて生成された実行形式のプログラムである。データファイル143a,143b,・・・は、実行ファイル142の実行時に使用するデータが設定されたファイルである。ランタイムライブラリ144は、実行ファイル142の実行時に利用可能なランタイムが登録されたファイルである。データ変更履歴145は、実行ファイル142によるアプリケーション実行時のデータ変更履歴が格納されたログファイルである。
The
The storage unit 140 has a
なおデータファイル143a,143b,・・・は、例えば開発マシン100aが有するデータファイル113a,113b,・・・に含まれるデータのデータ形式を、移行先のプログラム実行環境に対応するデータ形式に変換することで生成される。ここで、データファイル143a,143b,・・・が大量にあるとき、データ形式の変換漏れが発生する可能性がある。このようなデータ形式の変換漏れは、非互換動作の発生原因となる。 The data files 143a, 143b, . generated by Here, when there are a large number of data files 143a, 143b, . Such omission of data format conversion causes incompatible operations.
コンパイラ150は、ソースファイル141の機械語へのコンパイルを実行する。すなわちコンパイラ150は、ソースファイル141に記述されたプログラムを解釈し、開発マシン100bにおけるプログラム実行環境に適合する実行ファイル142を生成する。なお開発マシン100bのプログラム実行環境は運用システム200における移行先の運用マシン200bと同じであるため、生成される実行ファイル142は移行先の運用マシン200bにも適合している。コンパイラ150は、データ領域内のデータの変更を伴う命令を検出した場合、変更前後においてデータの値を記録する命令を、実行ファイル142に追加する。
実行部160は、実行ファイル142を実行するプロセスである。実行部160は、実行ファイル142の実行過程で処理対象のデータ読み込み命令がある場合、例えばデータファイル143a,143b,・・・から該当するデータを読み込む。また実行部160は、実行ファイル142の実行途中でランタイムが呼び出された場合、ランタイムライブラリ144から該当するランタイムを取得して、取得したランタイムを実行する。例えば指定されたデータをデータ変更履歴145に記録するランタイムが用意されている場合、実行部160は、データの値を記録する命令の実行時にそのランタイムを呼び出して実行する。実行部160が実行ファイル142を実行することで、実行ファイル142の実行過程で変更されたデータの変更前後での値がデータ変更履歴145に格納される。
データ履歴比較部170は、両方の開発マシン100a,100bのデータ変更履歴115,145の値で表される意味を比較し、非互換動作を検出する。
開発システム100による非互換動作の検出と非互換動作の原因箇所の特定処理は、以下の手順で行われる。
The data
The process of detecting an incompatible operation and identifying the cause of the incompatible operation by the
まずソースファイル111,141に記述されたプログラムの記述言語に対応するコンパイラ120,150が、実行ファイル112,142に示されるプログラム実行時のすべてのデータの変更履歴を自動的に記録するようにプログラムを生成する。
First, the
図5は、実行ファイルの生成状況の一例を示す図である。例えば開発マシン100aにおいて、コンパイラ120がソースファイル111をコンパイルし、実行ファイル112を生成する。また開発マシン100bにおいて、コンパイラ150がソースファイル141(ソースファイル111のコピー)をコンパイルし、実行ファイル142を生成する。コンパイラ120,150は、ソースファイル111,141をコンパイルする際、データの変更を伴う命令を検出すると、その命令の前後に、データの記録命令を追加する。
FIG. 5 is a diagram illustrating an example of how an executable file is generated. For example, in the
図6は、コンパイルの処理手順の一例を示す図である。以下、開発マシン100a内のコンパイラ120がコンパイルする場合を例にとり、図6に示す処理をステップ番号に沿って説明する。
FIG. 6 is a diagram illustrating an example of a compilation processing procedure. The processing shown in FIG. 6 will be described below along with the step numbers, taking as an example the case where the
[ステップS101]コンパイラ120は、ソースファイル111の命令文を一文ずつ上から順に選択し、選択した命令文に応じて実行する処理を解釈する。
[ステップS102]コンパイラ120は、解釈した命令文に応じた処理によりデータの変更が行われるか否かを判断する。例えばコンパイラ120は、メモリ102のデータ領域へのデータの読み込みを伴う命令であれば、データの変更があると判断する。コンパイラ120は、データの変更がある場合、処理をステップS104に進める。またコンパイラ120は、データの変更がなければ、処理をステップS103に進める。
[Step S101] The
[Step S102] The
[ステップS103]コンパイラ120は、解釈した命令文に対応する機械語の命令を、実行ファイル112に追加する。その後、コンパイラ120は処理をステップS107に進める。
[Step S<b>103 ] The
[ステップS104]コンパイラ120は、変更されるデータの変更前の値をデータ変更履歴115に記録する機械語の命令を、実行ファイル112に追加する。この際、コンパイラ120は、例えば記録対象のデータの変更前の値に加え、データのアドレス、そのアドレスに対応するデータの名前、データ形式などを記録対象とする。
[Step S<b>104 ] The
例えばCOBOLなどの高級言語では、ソースファイル111上の記述と翻訳オプションなどによって、データ形式(例えば文字コードUTF-8の文字列)を把握することができる。そこでコンパイラ120は、ソースファイル111の翻訳オプションなどに基づいてデータ形式を把握し、データのデータ形式をデータ変更履歴115への記録対象とする。またコンパイラ120は、例えば、データとそのデータ形式を対応付けたファイルをソースファイル111とともにコンパイル時の入力とし、そのファイルに基づいてデータ形式を把握し、データのデータ形式をデータ変更履歴115への記録対象とすることもできる。
For example, in a high-level language such as COBOL, the data format (for example, a character string of character code UTF-8) can be grasped from the description on the source file 111 and the translation option. Therefore, the
[ステップS105]コンパイラ120は、解釈した命令文に対応する機械語の命令を、実行ファイル112に追加する。
[ステップS106]コンパイラ120は、変更されるデータの変更後の値をデータ変更履歴115に記録する機械語の命令を、実行ファイル112に追加する。この際、コンパイラ120は、例えば記録対象のデータの変更後の値に加え、データのアドレス、そのアドレスに対応するデータの名前、データ形式などを記録対象とする。
[Step S<b>105 ] The
[Step S<b>106 ] The
[ステップS107]コンパイラ120は、ソースファイル111に記述されたプログラムの最後の命令まで解釈が終了したか否かを判断する。コンパイラ120は、最後の命令まで解釈が終了した場合、コンパイルを終了する。コンパイラ120は、未解釈の命令がある場合、処理をステップS101に進める。
[Step S107] The
このようにしてコンパイラ120によりコンパイルが実行され、機械語の命令によって処理が記述された実行ファイル112が生成される。なお上記の説明では、移行元と同一の実行環境を有する開発マシン100aにおける処理を示したが、移行先と同一の実行環境を有する開発マシン100bにおいても、コンパイラ150によって図6に示した処理手順でコンパイルが実行される。
Compilation is executed by the
図7は、コンパイルの一例を示す図である。図7では、COBOL言語で記述されたグラムのソースファイル111をコンパイルする例が示されている。ソースファイル111のファイル名は「a.cob」であり、そのソースファイル111に記述されたプログラムは「PROG-A」である。なお実行ファイル112の内容としては、機械語の命令そのものではなく、記述された命令の意味を示している。
FIG. 7 is a diagram showing an example of compilation. FIG. 7 shows an example of compiling a gram source file 111 written in the COBOL language. The file name of the source file 111 is "a.cob", and the program described in the source file 111 is "PROG-A". Note that the contents of the
例えばコンパイラ120は、データの変更を記述するすべての命令文の前後に操作対象データのその時点の値を記録する命令を生成する。以下、プログラム中の「READ FILE-1.」という文(行番号「000100」)に対してデータの値を記録する命令を生成する例を詳細に説明する。
For example, the
コンパイラ120は、その言語の文の仕様を理解している。そのためコンパイラ120は、その文を解析した結果、その文がどのデータを変更する可能性があるかを把握することができる。図7に示すソースファイル111のREAD文(ファイルからデータを読み込む命令文)の場合、コンパイラ120は以下の事柄を認識する。
・READ文はデータ領域WK-RECORDを書き換える可能性がある。
・WK-RECORDの定義から、WK-RECORDは以下の末端項目から構成されている。
WK-ITEM-1:4バイト
WK-ITEM-2:8バイト
コンパイラ120はこの例のREAD文に対する命令の前後に、変更される可能性のあるデータ領域の値を記録する命令を生成する。この命令生成は、変更される可能性のあるデータ領域のそれぞれに対して行われる。この例の場合、変更される可能性があるデータ領域はWK-RECORDのみなので、コンパイラ120はWK-RECORDに対してのみデータの値を記録する命令を生成する。ただしコンパイラ120は、その命令をWK-RECORDに対して生成するのではなく、末端のデータ項目(この場合、WK-ITEM-1とWK-ITEM-2)ごとに順番に出力する。
・A READ statement may rewrite the data area WK-RECORD.
• From the definition of WK-RECORD, WK-RECORD consists of the following terminal items.
WK-ITEM-1: 4 bytes WK-ITEM-2: 8
これにより実行ファイル112には、「READ FILE-1.」に相当する命令の前後に、WK-ITEM-1とWK-ITEM-2とのそれぞれを記録する命令が追加される。
As a result, instructions for recording WK-ITEM-1 and WK-ITEM-2 are added to the
「データ領域の値を記録する命令」は、例えばデータの値をデータ変更履歴115に記録する機能を持つランタイム関数の読み出し命令である。その場合、コンパイラ120は、データの値をデータ変更履歴115に記録するために、ランタイム関数に以下の情報を渡す命令を生成する。
・記録対象とする文の位置(図7の例では「a.cob」の行「000100」)
・イベント種類(記録対象とする文の実行前か実行後か)
・データ領域の先頭アドレス
・データ領域のサイズ
・データ名(実行プロセス内でデータを一意に識別できるように修飾された名前(例えばPROG-A/WK-RECORD/WK-ITEM-1))
・データ形式
コンパイラ120は、翻訳にあたり、各データ領域のデータ形式を例えば以下の情報から決定する。
・データの種類に応じたCOBOLのデフォルト値(多くは実行環境ごとに設定される)
・COBOL翻訳オプションなどによる指定(例えばユーザによるデフォルト値の書き換え)
・ソースファイル111上でのデータに対する明示的な記述
このようにして、データの値を記録する命令を含む実行ファイル112が生成される。同様にして、移行先の実行環境を有する開発マシン100bにおいても実行ファイル142が生成される。そして、移行元と移行先とのそれぞれの実行環境を有する開発マシン100a,100bにおいて、実行ファイル112,142が実行されデータ変更履歴115,145に変更前後でのデータの値が記録される。そして移行元と移行先との実行環境ごとのデータ変更履歴115,145を比較することで、非互換動作の有無を示す比較結果が生成される。
The “instruction to record the value of the data area” is, for example, a run-time function readout instruction that has the function of recording the data value in the
- The position of the sentence to be recorded (in the example of FIG. 7, the line "000100" of "a.cob")
- Event type (whether before or after executing the statement to be recorded)
・Start address of data area ・Size of data area ・Data name (name qualified to uniquely identify data within execution process (eg PROG-A/WK-RECORD/WK-ITEM-1))
Data format The
・Default value of COBOL according to data type (many are set for each execution environment)
・Specification by COBOL translation options (for example, rewriting of default values by the user)
• Explicit description for data on source file 111 In this way, an
図8は、データ変更履歴の生成と比較処理の一例を示す図である。例えば開発マシン100aへの実行ファイル112の実行を指示する入力に応じて、実行部130は、実行ファイル112から機械語のプログラム112aを読み込み、プログラム112aを実行する。実行部130は、データの値を記録する命令(ランタイム関数の呼び出し命令)の実行時には、ランタイムライブラリ114から対応するランタイム114aを読み込む。そして実行部130は、ランタイム114aに記述された命令を実行することで、データの値をデータ変更履歴115に格納する。
FIG. 8 is a diagram illustrating an example of data change history generation and comparison processing. For example, in response to an input instructing the
開発マシン100bへの実行ファイル142の実行を指示する入力に応じて、実行部160は、実行ファイル142から機械語のプログラム142aを読み込み、プログラム142aを実行する。実行部160は、データの値を記録する命令(ランタイム関数の呼び出し命令)の実行時には、ランタイムライブラリ144から対応するランタイム144aを読み込む。そして実行部160は、ランタイム144aに記述された命令を実行することで、データの値をデータ変更履歴145に格納する。
In response to an input instructing the
実行部130による実行ファイル112の実行と、実行部160による実行ファイル142の実行とが終了すると、データ履歴比較部170がデータ変更履歴115とデータ変更履歴145とを比較し、比較結果171を出力する。比較結果171には、実行ファイル112,142によって提供されるアプリケーションの移行前後での動作の互換性の有無が示される。
When execution of
図9は、データ変更履歴の一例を示す図である。実行部130がプログラム112aを実行すると、ランタイム114aによって、プログラム中の各命令文の前後におけるデータの値を含むログレコードが、命令文の実行順にデータ変更履歴115に記録される。図9の例では、繰り返し処理により同じREAD文が2回実行された場合に、データ変更履歴115に記録されたログレコードを示している。
FIG. 9 is a diagram showing an example of a data change history. When the
データ変更履歴115には、操作対象のデータ領域全体(この場合WK-RECORD)ごとではなく、末端項目ごと(この場合WK-ITEM-1とWK-ITEM-2)に分割して、ログレコードが順番に出力されている。
In the
ログレコードには、通し番号、ソースファイル名、行番号、イベント種類、アドレス、サイズ、値、データ名、およびデータ形式の各情報が含まれる。通し番号は、ログレコードに付与された識別番号であり、ログレコードへの記録が早い順に1から昇順の番号が付与される。ソースファイル名は、実行された実行ファイル112の生成元となったソースファイル111のファイル名である。行番号は、ログレコードを出力する原因となった命令に対応する、ソースファイル111内の命令が記述されたソースファイル111内の行番号である。イベント種類は、ログレコードが、データの変更を伴う命令の実行前のログ(実行前)なのか、あるいはデータの変更を伴う命令の実行後のログ(実行後)なのかを示す情報である。アドレスは、変更されるデータのメモリ内のアドレスである。サイズは、変更されるデータのバイト数である。値は、データの変更前または変更後のそのデータの値である。データ名は、プログラム112aを実行する実行部130内で該当データを一意に識別できるように修飾された名前である。データ形式は、変更されるデータのデータ形式を示す情報である。
A log record contains serial number, source file name, line number, event type, address, size, value, data name, and data format information. The serial number is an identification number assigned to each log record, and numbers are assigned in ascending order starting from 1 in order of earliest recording to the log record. The source file name is the file name of the source file 111 from which the executed
図9の例では、WK-ITEM-1のデータ形式は、ビッグエンディアンバイナリ整数である。WK-ITEM-2のデータ形式は、日本語EUC文字列である。
移行先の事項環境を有する開発マシン100bで生成されたデータ変更履歴145も、データ変更履歴115と同じ種別の情報を含んでいる。データ変更履歴115とデータ変更履歴145とでは、同じ通し番号を有するログレコード同士が対応関係にある。データ履歴比較部170は、対応関係にあるログレコード同士を比較して、そのログレコードに示されている行番号の命令文に応じた処理の移行前後での互換性の有無を判断する。
In the example of FIG. 9, the data format of WK-ITEM-1 is big endian binary integer. The data format of WK-ITEM-2 is Japanese EUC character string.
The data change
図10は、データ変更履歴比較処理の手順の一例を示すフローチャートである。以下、図10に示す処理をステップ番号に沿って説明する。
[ステップS201]データ履歴比較部170は、比較対象のログレコードの通し番号を示す変数iを「1」に初期化する。
FIG. 10 is a flowchart illustrating an example of the procedure of data change history comparison processing. The processing shown in FIG. 10 will be described below along with the step numbers.
[Step S201] The data
[ステップS202]データ履歴比較部170は、双方のデータ変更履歴115,145それぞれから、i番目のログレコード(通し番号がi)を取得する。
[ステップS203]データ履歴比較部170は、取得した2つのログレコードに示されるデータ名が同一か否かを判断する。データ履歴比較部170は、データ名が同一であれば処理をステップS205に進める。またデータ履歴比較部170は、データ名が異なれば処理をステップS204に進める。
[Step S202] The data
[Step S203] The data
[ステップS204]データ履歴比較部170は、データ変更履歴115,145それぞれを生成する際に実行されたプログラムが不一致であると判定し、データ変更履歴115,145の比較処理を終了する。
[Step S204] The data
[ステップS205]データ履歴比較部170は、取得した2つのログレコードに示されるデータ形式に相違があるか否かを判断する。データ履歴比較部170は、データ形式が異なる場合、処理をステップS206に進める。またデータ履歴比較部170は、データ形式が同じ場合、処理をステップS209に進める。
[Step S205] The data
[ステップS206]データ履歴比較部170は、データ形式の相違が浮動小数点の相違か否かを判断する。データ履歴比較部170は、浮動小数点の相違の場合、処理をステップS208に進める。またデータ履歴比較部170は、浮動小数点以外の相違の場合、処理をステップS207に進める。
[Step S206] The data
[ステップS207]データ履歴比較部170は、一方のデータのデータ形式に他方のデータのデータ形式を変換する。これにより、比較対象の2つのログレコードのデータのデータ形式が一致する。その後、データ履歴比較部170は処理をステップS209に進める。
[Step S207] The data
[ステップS208]データ履歴比較部170は、比較対象のログレコード両方のデータのデータ形式を所定のデータ形式に変換する。例えばデータ履歴比較部170は、浮動小数点を数値形式(例えば数字と小数点との文字列)に変換する。
[Step S208] The data
[ステップS209]データ履歴比較部170は、比較対象のログレコードに示されるデータの値を比較する。
[ステップS210]データ履歴比較部170は、データの値が同一か否かを判断する。データ履歴比較部170は、データの値が同一であれば処理をステップS211に進める。またデータ履歴比較部170は、データの値が相違する場合、処理をステップS212に進める。
[Step S209] The data
[Step S210] The data
[ステップS211]データ履歴比較部170は、動作に互換性があることが確認できたことを示す比較結果レコードを比較結果171内に出力する。その後、データ履歴比較部170は処理をステップS213に進める。
[Step S211] The data
[ステップS212]データ履歴比較部170は、非互換動作の検出を示す比較結果レコードを比較結果171内に出力する。
[ステップS213]データ履歴比較部170は、変数iに1を加算する。
[Step S212] The data
[Step S213] The data
[ステップS214]データ履歴比較部170は、データ変更履歴115,145にi番目のログレコードがあるか否かを判断する。データ履歴比較部170は、i番目のログレコードがあれば処理をステップS202に進める。またデータ履歴比較部170は、i番目のログレコードがなければデータ変更履歴比較処理を終了する。
[Step S214] The data
このようにして通し番号が同じログレコード同士が比較され、データ形式の違いによる非互換動作の有無が判断される。
図11は、データ比較処理の第1の例を示す図である。移行元の実行環境上で取得したデータ変更履歴115の13番目のログレコードには、WK-ITEM-1について、バイナリ整数であり、エンディアンはビッグエンディアンであるものとして翻訳したことが示されている。データ変更履歴115の14番目のログレコードには、WK-ITEM-2について、日本語EUC文字列として翻訳したことが示されている。
In this way, log records with the same serial number are compared to determine whether or not there is an incompatible operation due to a difference in data format.
FIG. 11 is a diagram showing a first example of data comparison processing. The 13th log record of the data change
移行先の実行環境上で取得したデータ変更履歴145の13番目のログレコードには、WK-ITEM-1について、バイナリ整数であり、エンディアンはリトルエンディアンであるものとして翻訳したことが示されている。データ変更履歴145の14番目のログレコードには、WK-ITEM-2について、UTF-16LE文字列として翻訳したことが示されている。
The 13th log record of the data change
データ履歴比較部170は、ログレコード同士を比較する場合、まずデータ名が一致していることを確認する。データ名が不一致の場合、データ履歴比較部170は、プログラムの処理ロジックが異なっている(同一プログラムではない)と判断し、比較を中止する。なおプログラムのロジックが同じであっても実行環境に応じてアドレスは異なるため、比較対象のログレコードに示されるアドレスは異なっていてもよい。図11の例では、13番目のログレコードのデータ名は共に「WK-ITEM-1」である。また14番目のログレコードのデータ名は共に「WK-ITEM-2」である。従って、いずれもデータ名は一致する。
When comparing log records, the data
データ履歴比較部170は、データ名が一致した場合、データ形式が一致するか否かを判断し、データ形式が一致していれば、データ形式の変換をせずにデータの値を比較する。他方、データ形式が不一致の場合、データ履歴比較部170は、データ形式を一致させた後にデータの値を比較する。
If the data names match, the data
13番目のログレコードの比較の場合、データ履歴比較部170は、移行元の実行環境に基づいて取得したデータ変更履歴115内のログレコードのデータのエンディアンを、ビッグエンディアンからリトルエンディアンに変更している。そしてデータ履歴比較部170は、エンディアンを揃えて、データの値を比較している。13番目のログレコードのデータの値で表される意味は、共に10進数で表すと「123456」となる。そこでデータ履歴比較部170は、比較結果171に、互換確認を示す比較結果レコード171aを出力する。
In the case of the 13th log record comparison, the data
14番目のログレコードの比較の場合、データ履歴比較部170は、移行元の実行環境に基づいて取得したデータ変更履歴115内のログレコードのデータの文字コードをUTF16-LEに変換している。そしてデータ履歴比較部170は、文字コードを揃えて、データの値を比較している。14番目のログレコードのデータの値は文字コードの変換をする前に既に同一である。これは、例えばデータファイル143a,143b,・・・を生成する際のデータ形式の変換漏れによって発生する。同じ値となっている比較対象の文字コードの一方を変換することで、比較の結果は不一致となる。そこでデータ履歴比較部170は、比較結果171に、非互換動作の検出を示す比較結果レコード171bを出力する。
In the case of the 14th log record comparison, the data
比較結果171には、ログレコードが比較されるごとに、比較結果レコード171a,171bが格納される。比較結果レコード171a,171bには、結果、通し番号、ソースファイル名、行、およびイベント種類が含まれる。結果は、互換性の有無を示す情報であり、互換性が確認できた場合は「OK」、非互換動作を検出した場合は「NG」と設定される。通し番号は、比較されたログレコードの通し番号である。ソースファイル名は、比較対象のデータ変更履歴115,145を生成するために実行された実行ファイル112,142に対応するソースファイル111,141のファイル名である。行は、比較されたログレコードを記録する命令に対応するソースファイル111,141内の命令文の行番号である。イベント種類は、比較されたログレコードが、データの変更を伴う命令の実行前のログ(実行前)なのか、あるいはデータの変更を伴う命令の実行後のログ(実行後)なのかを示す情報である。データ名は、比較されたログレコードに示されるデータのデータ名である。
The comparison result 171 stores comparison result records 171a and 171b each time log records are compared. Comparison result records 171a and 171b include result, serial number, source file name, line, and event type. The result is information indicating the presence or absence of compatibility, and "OK" is set when compatibility is confirmed, and "NG" is set when incompatible operation is detected. The serial number is the serial number of the compared log records. The source file name is the file name of the
また比較結果レコード171a,171bには、移行元のログレコードのデータのデータ形式、サイズ、および値、並びに移行先のログレコードのデータのデータ形式、サイズ、および値が含まれる。 The comparison result records 171a and 171b also include the data format, size, and value of the log record data of the migration source, and the data format, size, and value of the log record data of the migration destination.
例えば比較結果レコード171aは、結果が「OK」である。すなわち、互換性が確認されたことが示されている。また比較結果レコード171bは、結果が「NG」である。すなわち、非互換動作が検出されたことが示されている。 For example, the result of the comparison result record 171a is "OK". That is, it indicates that compatibility has been confirmed. The result of the comparison result record 171b is "NG". That is, it indicates that an incompatible operation has been detected.
図12は、データ比較処理の第2の例を示す図である。図12には、浮動小数点の形式が異なる場合の比較処理の例が示されている。
移行元の実行環境上で取得したデータ変更履歴115の23番目のログレコードには、WK-ITEM-1について、バイナリ整数であり、エンディアンはビッグエンディアンであるものとして翻訳したことが示されている。データ変更履歴115の24番目のログレコードには、WK-ITEM-2について、ホスト形式浮動と呼ばれる浮動小数点として翻訳したことが示されている。
FIG. 12 is a diagram showing a second example of data comparison processing. FIG. 12 shows an example of comparison processing when the floating-point formats are different.
The 23rd log record of the data change
移行先の実行環境上で取得したデータ変更履歴145の23番目のログレコードには、WK-ITEM-1について、バイナリ整数であり、エンディアンはリトルエンディアンであるものとして翻訳したことが示されている。データ変更履歴145の24番目のログレコードには、WK-ITEM-2について、IEEE(Institute of Electrical and Electronics Engineers)浮動と呼ばれる浮動小数点として翻訳したことが示されている。
The 23rd log record of the data change
23番目のログレコードの比較の場合、データ履歴比較部170は、移行元の実行環境に基づいて取得したデータ変更履歴115内のログレコードのデータのエンディアンを、ビッグエンディアンからリトルエンディアンに変更している。そしてデータ履歴比較部170は、エンディアンを揃えて、データの値を比較している。23番目のログレコードのデータの値で表される意味は、共に10進数で表すと「123456」となる。そこでデータ履歴比較部170は、比較結果171に、互換確認を示す比較結果レコード171cを出力する。
In the case of the 23rd log record comparison, the data
24番目のログレコードの比較の場合、データ履歴比較部170は、両方のログレコードのデータの浮動小数点を、数値に変換している。そしてデータ履歴比較部170は、データの値(浮動小数点)で表される数値を比較している。24番目のログレコードのデータの値で表される数値は共に「0.125」となる。そこでデータ履歴比較部170は、比較結果171に、互換確認を示す比較結果レコード171dを出力する。
When comparing the 24th log record, the data
例えば比較結果レコード171c,171dは、結果が共に「OK」である。すなわち、互換性が確認されたことが示されている。
このように、データ履歴比較部170は、比較対象のログレコードの両者のデータ形式が異なっていれば、どちらかのデータ形式または所定のデータ形式にデータ形式を統一したうえでデータの値を比較する。これにより、データの値で表させる意味の同一性を判断できる。
For example, comparison result records 171c and 171d are both "OK". That is, it indicates that compatibility has been confirmed.
In this way, if the data formats of both log records to be compared are different, the data
なおデータ履歴比較部170は、データ形式が一致していればデータの値をそのまま比較する。そしてデータ履歴比較部170は、比較の結果、データの値が相違することを検出した場合、移行先の実行環境において非互換動作が発生していると判断し、その旨を示す比較結果レコードを比較結果117に出力する。
Note that the data
比較結果117には、比較されたログレコードの順に、比較によって互換性が確認できたのか(OK)、非互換動作を検出したのか(NG)が示される。比較結果171をモニタ21に表示することで、運用者は、最も早く非互換動作が検出されたログレコードに対応するソースファイル111,141の行を特定することができる。最も早く非互換動作が検出された行は、非互換動作発生の原因箇所であると推測される。すなわち、運用者は、比較結果171を参照することで、非互換動作発生の原因箇所を容易に特定することができる。
The comparison result 117 indicates whether compatibility was confirmed by comparison (OK) or whether incompatible operation was detected (NG) in the order of the compared log records. By displaying the
またコンパイラ120,150は、データを変更する命令の前後にデータの値を記録する命令を追加している。これにより、非互換動作の発生箇所においてどのようなデータ変換が行われたのかを比較結果から容易に確認でき、非互換動作の原因特定を迅速に行うことができる。
〔その他の実施の形態〕
第2の実施の形態では運用マシン200a,200bとは別に開発マシン100a,100bを用意したが、運用マシン200a,200bを用いてアプリケーションの互換性の検証を行ってもよい。
[Other embodiments]
In the second embodiment, the
第2の実施の形態では、コンパイラ120,150によって、データを変更する命令の前後にデータの値を記録する命令を追加しているが、コンパイラ120,150以外の手段でデータの値を記録する命令を追加してもよい。例えば開発マシン100a,100bは、既に生成されている実行ファイル内の機械語のプログラムを解析し、データを変更する命令の前後にデータの値を記録する命令を追加することもできる。
In the second embodiment, the
また第2の実施の形態では、データを変更する命令の前と後の両方にデータの値を記録する命令を追加しているが、開発マシン100a,100bは、データを変更する命令の前または後の一方でのみデータの値を記録する命令を追加してもよい。 In the second embodiment, an instruction for recording data values is added both before and after an instruction that changes data. An instruction may be added to record the value of the data only in the latter one.
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。 Although the embodiment has been exemplified above, the configuration of each part shown in the embodiment can be replaced with another one having the same function. Also, any other components or steps may be added. Furthermore, any two or more configurations (features) of the above-described embodiments may be combined.
1 検証対象プログラム
2 第1の実行プログラム
3 第2の実行プログラム
4 第1のデータ
5 第2のデータ
6 第1のデータ変更履歴
7 第2のデータ変更履歴
10 情報処理装置
11 記憶部
12 処理部
12a 第1のプログラム実行環境
12b 第2のプログラム実行環境
1
Claims (6)
前記第1のプログラム実行環境で前記第1の実行プログラムを実行させることで、前記第1のデータ変更命令による第1のデータの値の変更内容が記録された第1のデータ変更履歴を取得し、
前記検証対象プログラムに従った処理を第2のプログラム実行環境で実行するための第2の実行プログラムに、前記検証対象命令に基づいて前記第2の実行プログラム内に設定された第2のデータ変更命令による変更内容を記録させる第2の記録命令を追加し、
前記第2のプログラム実行環境で前記第2の実行プログラムを実行させることで、前記第2のデータ変更命令による第2のデータの値の変更内容が記録された第2のデータ変更履歴を取得し、
前記第1のデータ変更履歴と前記第2のデータ変更履歴とを比較することで非互換動作を検出する、
処理をコンピュータに実行させる検証プログラム。 a first execution program for executing, in a first program execution environment, a process according to a verification target program including a verification target instruction that changes a data value, based on the verification target instruction; Add a first record command to record the change content by the first data change command set in
By executing the first execution program in the first program execution environment, acquiring a first data change history in which change contents of the value of the first data according to the first data change instruction are recorded. ,
A second data change set in the second execution program based on the verification target instruction in a second execution program for executing processing according to the verification target program in a second program execution environment. Add a second recording command to record the changes made by the command,
By executing the second execution program in the second program execution environment, acquiring a second data change history in which changes to the value of the second data by the second data change instruction are recorded. ,
detecting an incompatible operation by comparing the first data change history and the second data change history;
A verification program that causes a computer to perform a process.
前記第2のデータ変更履歴の取得では、前記第2のデータの変更前の値または変更後の値を含む前記第2のデータ変更履歴を取得し、
非互換動作の検出では、前記第1のデータ変更履歴に示される前記第1のデータの値によって表される意味と前記第2のデータ変更履歴に示される前記第2のデータの値によって表される意味とを比較し、異なる意味を表している場合に非互換動作が生じていると判断する、
請求項1記載の検証プログラム。 Acquiring the first data change history includes acquiring the first data change history including the value before or after the change of the first data,
Acquiring the second data change history includes acquiring the second data change history including the value before or after the change of the second data,
In detecting an incompatible operation, the meaning represented by the value of the first data indicated in the first data change history and the value of the second data indicated in the second data change history. compare the meanings of the terms and determine that incompatible behavior occurs when different meanings are expressed;
The verification program according to claim 1.
前記第2のデータ変更履歴の取得では、前記第2のデータに求められる第2のデータ形式と、前記第2のデータの変更前の値または変更後の値とを含む前記第2のデータ変更履歴を取得し、
非互換動作の検出では、前記第1のデータ変更履歴に示される前記第1のデータ形式と前記第2のデータ変更履歴に示される前記第2のデータ形式とに基づいて、前記第1のデータと前記第2のデータとの少なくとも一方のデータ形式を変換し、前記第1のデータと前記第2のデータとの値を比較する、
請求項2記載の検証プログラム。 In acquiring the first data change history, the first data change includes a first data format required for the first data and a value before or after the change of the first data. get history,
In acquiring the second data change history, the second data change includes a second data format required for the second data and a value before or after the change of the second data. get history,
detecting an incompatible operation based on the first data format indicated in the first data change history and the second data format indicated in the second data change history; Converting the data format of at least one of and the second data, and comparing the values of the first data and the second data;
3. The verification program according to claim 2.
前記第2のデータ変更履歴の取得では、前記第2のデータを識別する第2のデータ名を含む前記第2のデータ変更履歴を取得し、
非互換動作の検出では、前記第1のデータ変更履歴に示される前記第1のデータ名と前記第2のデータ変更履歴に示される前記第2のデータ名とを比較する、
請求項1から3のいずれかに記載の検証プログラム。 Acquiring the first data change history includes acquiring the first data change history including a first data name that identifies the first data,
Acquiring the second data change history includes acquiring the second data change history including a second data name that identifies the second data,
Detecting an incompatible operation includes comparing the first data name indicated in the first data change history with the second data name indicated in the second data change history;
The verification program according to any one of claims 1 to 3.
前記第1のプログラム実行環境で前記第1の実行プログラムを実行させることで、前記第1のデータ変更命令による第1のデータの値の変更内容が記録された第1のデータ変更履歴を取得し、
前記検証対象プログラムに従った処理を第2のプログラム実行環境で実行するための第2の実行プログラムに、前記検証対象命令に基づいて前記第2の実行プログラム内に設定された第2のデータ変更命令による変更内容を記録させる第2の記録命令を追加し、
前記第2のプログラム実行環境で前記第2の実行プログラムを実行させることで、前記第2のデータ変更命令による第2のデータの値の変更内容が記録された第2のデータ変更履歴を取得し、
前記第1のデータ変更履歴と前記第2のデータ変更履歴とを比較することで非互換動作を検出する、
処理をコンピュータが実行する検証方法。 a first execution program for executing, in a first program execution environment, a process according to a verification target program including a verification target instruction that changes a data value, based on the verification target instruction; Add a first record command to record the change content by the first data change command set in
By executing the first execution program in the first program execution environment, acquiring a first data change history in which change contents of the value of the first data according to the first data change instruction are recorded. ,
A second data change set in the second execution program based on the verification target instruction in a second execution program for executing processing according to the verification target program in a second program execution environment. Add a second recording command to record the changes made by the command,
By executing the second execution program in the second program execution environment, acquiring a second data change history in which changes to the value of the second data by the second data change instruction are recorded. ,
detecting an incompatible operation by comparing the first data change history and the second data change history;
A verification method in which processing is performed by a computer.
を有する情報処理装置。 a first execution program for executing, in a first program execution environment, a process according to a verification target program including a verification target instruction that changes a data value, based on the verification target instruction; By adding a first recording instruction for recording the change content by the first data modification instruction set in the first data modification instruction, and executing the first execution program in the first program execution environment, A second data change history for acquiring a first data change history in which changed contents of a first data value by a data change instruction are recorded, and executing a process according to the verification target program in a second program execution environment. adding, to the execution program, a second recording instruction for recording changes made by a second data modification instruction set in the second execution program based on the verification target instruction, and creating the second program execution environment; by executing the second execution program in the second data change instruction, acquiring a second data change history in which changes to the value of the second data are recorded, and performing the first data change a processing unit that detects an incompatible operation by comparing the history with the second data change history;
Information processing device having
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021167367A JP2023057721A (en) | 2021-10-12 | 2021-10-12 | Verification program, verification method, and information processing device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021167367A JP2023057721A (en) | 2021-10-12 | 2021-10-12 | Verification program, verification method, and information processing device |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023057721A true JP2023057721A (en) | 2023-04-24 |
Family
ID=86054781
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021167367A Pending JP2023057721A (en) | 2021-10-12 | 2021-10-12 | Verification program, verification method, and information processing device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2023057721A (en) |
-
2021
- 2021-10-12 JP JP2021167367A patent/JP2023057721A/en active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4148527B2 (en) | Functional test script generator | |
RU2395836C2 (en) | User configurable software libraries | |
US20070271553A1 (en) | Method and system for translating assembler code to a target language | |
JP2018156133A (en) | Compiler program, information processing apparatus and compilation method | |
US10839124B1 (en) | Interactive compilation of software to a hardware language to satisfy formal verification constraints | |
CN113760266B (en) | Method and device for creating function module file and electronic equipment | |
CN107077365B (en) | Selectively loading precompiled headers and/or portions thereof | |
JP2023057721A (en) | Verification program, verification method, and information processing device | |
JP7410269B2 (en) | Automated verification of high-level construct optimization using test vectors | |
WO2022068559A1 (en) | Code processing method and apparatus, and device | |
US11537308B2 (en) | Information processing system, information processing device, storage medium, and information processing method of detecting destruction of data due to file transfer | |
JP2024142008A (en) | Verification program, verification method, and information processing device | |
JP4983027B2 (en) | Check program and check method | |
CN117075912B (en) | Method for program language conversion, compiling method and related equipment | |
KR101449657B1 (en) | Method for transforming intermediate language using range of values of operator, system and computer-readable recording medium with program therefor | |
WO2024232193A1 (en) | Information processing device, information processing method, and computer program | |
JPH10293683A (en) | Device for comparatively analyzing program, method therefor and mechanically readable recording medium recording comparative analytic program for program | |
EP4206904A1 (en) | Code processing method and apparatus, and storage medium | |
US20170103011A1 (en) | Information processing apparatus and system | |
WO2022127263A1 (en) | Code processing method and related device | |
JP2022156575A (en) | Analysis program, analysis method, and information processing apparatus | |
JP6639238B2 (en) | Programs and computers | |
CN114327469A (en) | Code analysis method, device, equipment and medium | |
CN113971043A (en) | Device library generation method, device, chip and storage medium | |
EP0911743A1 (en) | Converter for tag-delimited files |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20240711 |