JP2019160243A - 制御プログラム、制御方法および情報処理装置 - Google Patents

制御プログラム、制御方法および情報処理装置 Download PDF

Info

Publication number
JP2019160243A
JP2019160243A JP2018050189A JP2018050189A JP2019160243A JP 2019160243 A JP2019160243 A JP 2019160243A JP 2018050189 A JP2018050189 A JP 2018050189A JP 2018050189 A JP2018050189 A JP 2018050189A JP 2019160243 A JP2019160243 A JP 2019160243A
Authority
JP
Japan
Prior art keywords
program
data type
data
cobol
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018050189A
Other languages
English (en)
Other versions
JP7073813B2 (ja
Inventor
貴史 大畑
Takashi Ohata
貴史 大畑
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2018050189A priority Critical patent/JP7073813B2/ja
Priority to US16/283,922 priority patent/US10853225B2/en
Publication of JP2019160243A publication Critical patent/JP2019160243A/ja
Application granted granted Critical
Publication of JP7073813B2 publication Critical patent/JP7073813B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】プログラムから他のプログラムを呼び出して実行することにかかるユーザの作業負荷を低減することを課題とする。【解決手段】情報処理サーバは、プログラム、データ種類及びデータ型の指定を受け付ける。続いて、情報処理サーバは、プログラムが実行する処理の対象データのデータ型を該プログラム及び該データのデータ種類に対応付ける情報を記憶する記憶部を参照して、指定されたプログラム及びデータ種類に対応付けられたデータ型を特定する。そして、情報処理サーバは、特定したデータ型を、指定されたプログラム及びデータ型に対応付ける情報を生成する。【選択図】図1

Description

本発明は、制御プログラム、制御方法および情報処理装置に関する。
近年、COBOLで記述された業務アプリケーション(以下では、COBOLアプリケーションと記載する場合がある)がモバイル端末で利用されている。COBOLアプリケーションはモバイル端末上で直接動作することができないので、サーバ上で動作するRESTサービスを用いることで、モバイル端末からCOBOLプログラムを間接的に実行することが行われている。
一般的に、RESTサービスを生成するには、RESTサービスを生成するためのフレームワークが利用され、例えばC#言語やVB(Visual Basic)などを用いて生成される。このため、COBOLプログラムをRESTサービスで用いるためには、フレームワーク上で動作する、C#言語やVBなどで生成されたRESTサービスからCOBOLプログラムの呼び出しが実行される。この呼び出しに関する技術として、呼び出し対象のCOBOLプログラムの引数を、フレームワークと共通の型にする技術が知られている。また、フレームワークのデータ型とCOBOLのデータ型を変換し、変換されたCOBOLデータ型を利用して、COBOLプログラムを呼び出すプログラムであるブリッジプログラムを利用する技術が知られている。
特表2017−523506号公報 特開平05−307473号公報
しかしながら、上記技術では、モバイル端末で直接実行できないCOBOLプログラムなどのプログラムを、RESTサービスを利用して実行するために、ユーザが呼出用のプログラムやデータ型変換用の各プログラムを作成することになるので、ユーザの作業負荷が高い。
例えば、共通の型を用いる上記技術では、ユーザがCOBOL資産に変更を加えなければならないが、すでに安定稼働しているプログラムに変更を行うことはユーザにとってリスクが高く、他のプログラムなどへの影響を検証するなどの副次的な作業の負荷が高くなる。
また、ブリッジプログラムを用いる上記技術では、COBOL資産への変更は発生しないが、ブリッジプログラムの生成や更新にかかる作業負荷が高い。例えば、ブリッジプログラムには、静的型変換を行うブリッジプログラムと動的型変換を行うブリッジプログラムとが考えられる。なお、静的型変換を行うブリッジプログラムは、ウィザード等でユーザに情報を入力させ、型変換処理を含むブリッジプログラムのソースコードを生成するツールや機能を提供する手法である。動的型変換を行うブリッジプログラムは、プログラム実行時に、動的に情報を取得してCOBOL以外の他のプログラミング言語のデータ型とCOBOLの独自データ型の変換を行うことにより、動的なプログラム呼び出しを行うブリッジプログラムをライブラリとして提供する手法である。
しかし、静的型変換を行うブリッジプログラムでは、呼び出し対象であるCOBOLプログラムのインタフェース毎にブリッジプログラムのソースコードを生成することになり、COBOLプログラムのインタフェースに変更があった場合には、生成コードを最初から再生成することになるので、ユーザの資産管理コストが増大する。
また、動的型変換を行うブリッジプログラムでは、リフレクションを利用して、プログラム実行時に呼び出し対象のCOBOLプログラムのメタデータの解析が行われるが、メタデータのみでは、COBLOの独自的なデータ型(独自型)を変換することが難しい。また、リフレクションを利用しない場合は、変換ルール等の定義を用意し、その定義に沿った単純な変換しかできないので、現実的ではない。
一つの側面では、プログラムから他のプログラムを呼び出して実行することにかかるユーザの作業負荷を低減することができる制御プログラム、制御方法および情報処理装置を提供することを目的とする。
第1の案では、制御プログラムは、コンピュータに、プログラム、データ種類及びデータ型の指定を受け付ける処理を実行させる。制御プログラムは、コンピュータに、プログラムが実行する処理の対象データのデータ型を該プログラム及び該データのデータ種類に対応付ける情報を記憶する記憶部を参照して、指定された前記プログラム及び前記データ種類に対応付けられたデータ型を特定する処理を実行させる。制御プログラムは、コンピュータに、特定した前記データ型を、指定された前記プログラム及び前記データ型に対応付ける情報を生成する処理を実行させる。
一実施形態によれば、プログラムから他のプログラムを呼び出して実行することにかかるユーザの作業負荷を低減することができる。
図1は、実施例1にかかる情報処理システムの全体構成例を示す図である。 図2は、実施例1にかかる情報処理サーバの機能構成を示す機能ブロック図である。 図3は、デバッグ情報の一例を説明する図である。 図4は、集団項目を説明する図である。 図5は、COBOL型へのデータ変換例を説明する図である。 図6は、全体的な処理の流れを示すフローチャートである。 図7は、引数の設定処理の流れを示すフローチャートである。 図8は、呼出処理の流れを示すフローチャートである。 図9は、COBOLデータ型への変換処理の流れを示すフローチャートである。 図10は、呼出側のデータ型への変換処理の流れを示すフローチャートである。 図11は、効果を説明する図である。 図12は、実施例2にかかる情報処理サーバを説明する図である。 図13は、実行ユニットが保持するデータの変化例を説明する図である。 図14は、データ共有化による処理負荷の軽減を説明する図である。 図15は、ブリッジプログラムによる処理負荷の増大を説明する図である。 図16は、ハードウェア構成例を説明する図である。
以下に、本願の開示する制御プログラム、制御方法および情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、各実施例は、矛盾のない範囲内で適宜組み合わせることができる。
[全体構成]
図1は、実施例1にかかる情報処理システムの全体構成例を示す図である。この情報処理システムは、モバイル端末1と、情報処理サーバ10と、COBOLプログラム5を保持する記憶装置などを有するシステムである。この情報処理システムは、モバイル端末1からの要求に応じて、ユーザ等によって作成されたRESTサービスのアプリケーション(REST API(Application Programming Interface) プログラム)からCOBOLプログラム5を間接的に実行するシステムである。
モバイル端末1は、小型軽量で持ち運ぶことができる情報端末であり、例えばスマートフォンや携帯端末などの通信端末の一例である。このモバイル端末1は、ユーザ等によって作成されたプログラム1aを実行し、情報処理サーバ10を介したRESTサービスによって、COBOLプログラム5を間接的に実行する。プログラム1aは、C#言語、Java(登録商標)、Swift(登録商標)などで記述されたプログラムであり、呼出対象のCOBOLプログラム5を呼び出すREST API プログラムを、HTTP(Hypertext Transfer Protocol)通信を利用して呼び出して実行するプログラムである。
COBOLプログラム5は、価格計算など各種処理内容5aがCOBOLで記述されたプログラムである。COBOLプログラム5は、モバイル端末1のプログラム1aから要求を受け付けたREST API プログラムによって呼び出されて各処理内容5aを実行し、REST API プログラムを介して、実行結果をプログラム1aに応答する呼出対象のプログラムである。また、コンパイラ等によって、COBOLプログラム5のコンパイル時にデバッグ情報5bが出力される。このデバッグ情報5bは、例えば、実行バイナリのデータ構造(構造体や型情報)とコード構造(関数やサブルーチンなど)、ローカル変数や引数の情報などを含む。また、デバッグ情報5bは、COBOLプログラム5内またはコンパイラ等によって指定された領域(出力先)に出力されて保存される。
情報処理サーバ10は、モバイル端末1のプログラム1aに対して、COBOLプログラム5による各種処理を実行するRESTサービスを提供するサーバ装置の一例である。この情報処理サーバ10は、呼出対象のプログラムの型情報を受け付ける。そして、情報処理サーバ10は、呼出対象のプログラムのデバッグ情報を参照して、呼出対象のプログラムが実行する処理の対象データのデータ型を特定する。その後、情報処理サーバ10は、特定したデータ型を、呼出対象のプログラム等に対応付ける情報を生成する。
具体的には、情報処理サーバ10は、REST API プログラム、実行ユニット、呼出側データ変換器、COBOL側データ変換器を有する。REST API プログラムは、モバイル端末1からCOBOLプログラム5を利用するためのアプリケーションであり、呼出元のプログラムである。なお、REST APIとは、RESTと呼ばれる規約に従って作成されたAPIであり、APIとは、ある目的のために作成されたプログラム(ここではCOBOLプログラム5)を他のソフトウェア(ここではモバイル端末1のプログラム1a)から利用可能にするものである。また、REST API プログラムとは、HTTP通信を受信し、ロジックを実行(ここでは実行ユニットを介してCOBOLを実行)し、処理した結果のデータを返すアプリケーションである。
実行ユニットは、COBOLプログラム5の呼出関数を有する。この実行ユニットは、モバイル端末1のプログラム1aの要求に応じて実行されたREST API プログラムからの要求に応じてCOBOLプログラム5を実行し、その結果をREST API プログムに返す。そして、REST API プログラムが、COBOLプログラム5の結果を利用して、モバイル端末1のプログラム1aにデータを返す。呼出側データ変換器は、デバッグ情報5bから取得したCOBOLプログラム5のデバッグ情報5b(例えば型情報など)にしたがって、COBOLプログラム5のデータ型をREST API プログラムのデータ型に変換する。COBOL側データ変換器は、デバッグ情報5bから取得したCOBOLプログラム5のデバッグ情報5b(例えば型情報など)にしたがって、REST API プログラムのデータ型をCOBOLプログラム5のデータ型に変換する。
ここで、実施例1にかかるRESTサービスの流れを具体的に説明する。まず、モバイル端末1のプログラム1aが、REST API アプリケーションに要求を送る。続いて、REST API アプリケーションが、デバッグ情報のアクセスに必要な型情報(リフレクションのための情報)を指定して、情報処理サーバ10の実行ユニットに通知する。その後、プログラム1aが、情報処理サーバ10の実行ユニットにCOBOLプログラム5に渡す引数をREST API プログラムのデータ型で渡す。
そして、情報処理サーバ10の実行ユニットが、COBOL側データ変換器を利用して、受け取ったREST API プログラムのデータ型をCOBOLのデータ型に変換して保持する。
その後、モバイル端末1のプログラム1aが、情報処理サーバ10のREST API プログラムに対して、HTTPリクエスト(要求)を行い、要求を受けたREST API プログラムが、実行ユニットが有するCOBOLプログラム5の呼出関数を実行する。すると、情報処理サーバ10の実行ユニットが、COBOLデータ型を引数にしてCOBOLプログラム5を呼び出す。この結果、COBOLプログラム5が実行される。
その後、情報処理サーバ10の実行ユニットが、COBOLプログラム5から、COBOLのデータ型の復帰値を受け取る。続いて、情報処理サーバ10の実行ユニットが、呼出側データ変換器を利用して、COBOLプログラム5のデータ型である復帰値をREST API プログラムのデータ型に変換する。そして、情報処理サーバ10の実行ユニットが、REST API プログラムのデータ型に変換された復帰値を、REST API プログラムに返す。その後、REST API プログラムからモバイル端末1のプログラム1aに、型変換された復帰値が返される。
このようにして、情報処理サーバ10が、モバイル端末1の要求に応じてCOBOLプログラム5を呼び出して実行し、実行結果を取得してモバイル端末1に応答する。したがって、COBOLプログラム5の引数の型が変更されたとしても、実行時に呼出対象のCOBOLプログラム5のとりうる値の範囲を動的に取得して型変換を行うことができるので、引数の値がとりうる値の範囲内であればREST API プログラムやプログラム1a側に変更を加えることもない。この結果、プログラムから他のプログラムを呼び出して実行することにかかるユーザの作業負荷を低減することができる。
[機能構成]
次に、図1に示した各装置の機能構成について説明する。なお、モバイル端末1は、一般的なスマートフォンなどと同様の構成を有するので、ここでは、情報処理サーバ10について説明する。
図2は、実施例1にかかる情報処理サーバ10の機能構成を示す機能ブロック図である。図2に示すように、情報処理サーバ10は、通信部11、記憶部12、制御部20を有する。
通信部11は、有線や無線を問わず、他の装置の間の通信を制御する処理部であり、例えばユーザによって生成される上記REST API プログラムに対応する。通信部11は、モバイル端末1と間の各種情報の送受信やCOBOLプログラム5と間の各種情報の送受信を実行する。
記憶部12は、データやプログラムなどを記憶する記憶装置の一例であり、例えばメモリやハードディスクなどである。この記憶部12は、COBOLデータ記憶部13と型情報記憶部14を有する。
COBOLデータ記憶部13は、COBOLプログラム5に渡す引数(引数データ)を記憶する。型情報記憶部14は、COBOLプログラム5の型情報を記憶する。これらの記憶部は、例えばメモリが有する記憶領域の一部などの一例である。
制御部20は、情報処理サーバ10全体を司る処理部であり、例えばプロセッサなどである。この制御部20は、実行ユニット処理部21、第1変換部22、第2変換部23を有する。なお、実行ユニット処理部21、第1変換部22、第2変換部23は、プロセッサが実行するプロセスの一例などである。また、実行ユニット処理部21は、図1に示した実行ユニットに対応し、第1変換部22は、図1に示したCOBOL側データ変換器に対応し、第2変換部23は、図1に示した呼出側データ変換器に対応する。
実行ユニット処理部21は、COBOLプログラム5の呼出やデータ変換などを行う実行ユニットを実行する処理部であり、生成部21a、設定部21b、呼出部21c、取得部21dを有する。
生成部21aは、指定したCOBOLプログラムを実行するための実行ユニットを生成または実行ユニットの設定を実行する処理部である。具体的には、生成部21aは、プログラム1aでリフレクション機能を利用するには型情報を用いるので、例えば実行ユニットのプロセス生成時に呼び出し対象のCOBOLプログラム5の型情報を指定する。例えば、生成部21aは、REST API プログラムから受け付けた型情報がCOBOLプログラム5の型情報か否かを判定する。そして、生成部21aは、型情報がCOBOLプログラム5の型情報である場合は、実行ユニットのプログラム等に型情報を設定する。一方、生成部21aは、型情報がCOBOLプログラム5の型情報ではない場合は、実行時エラー等を出力する。
設定部21bは、実行ユニットにCOBOLプログラム5へ渡す引数データを設定する処理部である。設定部21bは、対象引数のシンボル名とREST API プログラムのデータ型を引数にし、処理内でREST API プログラムのデータ型をCOBOLのデータ型に変換し、実行ユニットに保持させる。
例えば、設定部21bは、REST API プログラムから引数データを受け付けると、COBOLデータ記憶部13に格納する。そして、設定部21bは、COBOLプログラム5のデバッグ情報を取得し、デバッグ情報を利用したデータの型変換処理を第1変換部22(COBOL側データ変換器)に要求する。その後、設定部21bは、実行ユニットが有する動的型付け変数に、COBOLデータを設定する。
ここで、COBOLプログラム5のデバッグ情報5bの一例を説明する。図3は、デバッグ情報の一例を説明する図である。図3には、税込み価格を計算するCOBOLプログラムを呼び出す際の具体例を示し、プログラムの引数は1つで、価格という引数名の符号なし9ケタの数値(PIC9(9))とする。図3に示すように、COBOLプログラム5のデバッグ情報5bは、シンボル名とデータの分類とバイト数などを含む。シンボル名、引数データ型の分類は、数字・文字・特定のデータの持ち方をする数字などを指定する情報であり、バイト数は、引数データのバイト数を表す。図5の例では、シンボル名は「価格」であり、データの分類は「ZoneDecimal」であり、バイト数が「9」である。
呼出部21cは、生成部21aで実行ユニットに指定したCOBOLプログラム5を、設定部21bによって設定された引数データを利用して呼び出す処理部である。呼出部21cは、呼び出し対象のCOBOLプログラム5の引数と実行ユニットがもつ引数とのマッピングを、引数名やデバッグ情報の持つ型情報などを用いて実行する。また、呼出部21cは、COBOLプログラム5からの戻り値を取得するために、呼び出し時に戻り値のデータ型(REST API プログラムのデータ型)を指定する。そして、データ型が指定された場合、COBOLプログラム5の戻り値は、指定されたデータ型に変換される。
取得部21dは、実行ユニットが保持する引数のCOBOLのデータ型を、REST API プログラムのデータ型で取得する処理部である。具体的には、取得部21dは、取得時には、取得対象の引数のシンボル名と、受け取るREST API プログラムのデータ型を指定する。例えば、取得部21dは、シンボル名と受け取り型の指定を受け付けると、デバッグ情報を利用したデータの型変換処理を第2変換部23(呼出側データ変換器)に要求する。その後、取得部21dは、REST API プログラムのデータ型に変換された値を第2変換部23から取得して、プログラム1aに応答する。
第1変換部22は、デバッグ情報5bを利用して、REST API プログラムのデータ型をCOBOLプログラム5のデータ型に変換する処理部である。第2変換部23は、デバッグ情報5bと変換先のREST API プログラムの型情報とを利用して、COBOLプログラム5のデータ型をREST API プログラムのデータ型に変換する処理部である。
また、各変換部は、集団項目のような構造体についてもデータ型の変換を実行することができる。図4は、集団項目を説明する図である。図4に示すように、データ全体として、社員情報が名前と年齢と所属とを有し、さらに所属が人事部や総務部などを有する場合がある。このような場合であっても、例えば第1変換部22は、名前、年齢、所属だけではなく、子要素である人事部や総務部等についても、デバッグ情報を利用して、REST API プログラムのデータ型からCOBOLプログラム5のデータ型に変換する。
ここで、COBOLプログラムのデータ型へのデータ変換について説明する。図5は、COBOL型へのデータ変換例を説明する図である。図5に示すように、第1変換部22がデバッグ情報を利用したデータ型変換を行うことで、REST API プログラムにおける「Int32」型の値「100」は、COBOLプログラム5における「PIC9(9)」型の内部表現である値[48,48,48,48,48,48,49,48,48]、外部表現である値[100]に変換される。なお、COBOLには内部表現(バイト配列)と外部表現があり、同じ外部表現の数字でも、型により内部表現が変わったり、バイト数が異なることがある。
[処理の流れ]
次に、情報処理サーバ10が実行する処理の流れについて説明する。ここでは、全体的な処理の流れ、各処理部が実行する各処理の流れについて説明する。
(全体的な処理)
図6は、全体的な処理の流れを示すフローチャートである。図6に示すように、情報処理サーバ10は、実行ユニットの生成処理を実行し(S101)、引数の設定処理を実行し(S102)、COBOLプログラム5の呼出処理を実行する(S103)。
その後、情報処理サーバ10は、与えられたデータが値域の範囲内である場合(S104:Yes)、処理を終了し、与えられたデータが値域の範囲内ではない場合(S104:No)、実行時エラーを出力する(S105)。
(引数の設定処理)
図7は、引数の設定処理の流れを示すフローチャートである。この処理は、図6のS102に該当する処理であり、呼出対象のCOBOLプログラム5に渡すデータ型の引数を実行ユニットに設定する処理である。図7に示すように、設定部21bは、モバイル端末1のプログラム1aから引数データに関する情報を受け付けると、与えられた引数名に対応するデバッグ情報があるか否かを判定する(S201)。
そして、設定部21bは、与えられた引数名に対応するデバッグ情報がある場合(S201:Yes)、COBOLプログラム5のデバッグ情報を取得する(S202)。続いて、設定部21bの要求等によって、COBOLプログラム5のデータ型への変換処理が実行される(S203)。その後、設定部21bは、実行ユニットのもつ動的型付け変数にCOBOLのデータを設定する(S204)。一方、設定部21bは、与えられた引数名に対応するデバッグ情報がない場合(S201:No)、エラーを出力する(S205)。
(呼出処理)
図8は、呼出処理の流れを示すフローチャートである。この処理は、図6のS103に該当する処理である。図8に示すように、呼出部21cは、戻りの型指定を受け付けると、型情報を利用して、呼出対象のCOBOLプログラム5を特定する(S301)。
続いて、呼出部21cは、デバッグ情報もしくはCOBOLプログラム5のメタデータを参照し、COBOLプログラム5に渡す引数を実行ユニットが持っているか否かを判定する(S302)。
ここで、呼出部21cは、実行ユニットが当該引数を持っている場合(S302:Yes)、実行ユニットが持つ引数データを利用して、COBOLプログラム5を呼び出す(S303)。その後、呼出部21cは、戻り値の型指定があるか否かを判定する(S304)。
そして、戻り値の型指定がある場合(S304:Yes)、呼出側(呼出元)のデータ型への変換処理が実行される(S305)。その後、呼出部21cは、S305で変換された型の値をプログラム1aに返す(S306)。
一方、呼出部21cは、戻り値の型指定がない場合(S304:No)、処理を終了する。また、S302において、実行ユニットが当該引数を持っていない場合(S302:No)、呼出部21cは、処理を終了する。
(COBOLデータ型への変換処理)
図9は、COBOLデータ型への変換処理の流れを示すフローチャートである。この処理は、図7のS203に該当する処理であり、呼出元のREST API プログラムのデータ型を呼出先のCOBOLのデータ型に変更する処理である。図9に示すように、第1変換部22は、デバッグ情報に含まれる各データについてS401からS407のループ処理を実行する。
具体的には、第1変換部22は、シンボル名に対応するデバッグ情報を取得する(S402)。そして、第1変換部22は、取得したデバッグ情報が集団項目に該当しない場合(S403:No)、デバッグ情報からCOBOLの型情報を取得し(S404)、型に応じて変換処理を実行する(S405)。
一方、第1変換部22は、取得したデバッグ情報が集団項目に該当する情報である場合(S403:Yes)、集団項目の子要素すべてのデータ型をCOBOLプログラム5のデータ型に変換するデータ変換を実行する(S406)。
(呼出側のデータ型への変換処理)
図10は、呼出側のデータ型への変換処理の流れを示すフローチャートであり、COBOLのデータ型をREST API プログラムのデータ型に変更する処理である。この処理は、図8のS305に該当する処理である。図10に示すように、第2変換部23は、デバッグ情報に含まれる各データについてS501からS507のループ処理を実行する。
具体的には、第2変換部23は、復帰値のデバッグ情報を取得する(S502)。そして、第2変換部23は、取得したデバッグ情報が集団項目に該当しない場合(S503:No)、デバッグ情報からCOBOLの型情報を取得する(S504)。続いて、第2変換部23は、REST API プログラムの返り値の型情報に応じて、COBOL型からREST API プログラムへの型に変換する変換処理を実行する(S505)。
一方、第2変換部23は、取得したデバッグ情報が集団項目に該当する場合(S503:Yes)、REST API プログラムの返り値の型情報に応じて、集団項目の子要素すべてのデータ型を、REST API プログラムのデータ型に変換する(S506)。
[効果]
上述したように、情報処理サーバ10は、COBOL以外の言語で作成されたプログラム1aからCOBOLプログラム5の呼出要求を受信した際に、COBOLプログラム5を実行する実行ユニットを実行する。そして、実行ユニットが、呼び出し対象のCOBOLプログラム5のデバッグ情報に基づいて、COBOL以外の言語のデータ型と、呼び出し先のCOBOLプログラム5のデータ型の型変換を行う。この結果、モバイル端末1からCOBOLプログラム5を呼び出す場合に、ブリッジプログラムを用いずに、呼び出すことができる。また、COBOLプログラム5のインタフェースが変更されても呼び出し元のソースコードを変更しなくともよくなり、COBOL以外の言語で作成されたプログラム1aからCOBOLプログラム5を動的に呼び出すことができる。
図11は、効果を説明する図である。図11に示すように、情報処理サーバ10のCOBOL側データ変換器および呼出側データ変換器の各変換器は、COBOLプログラム5のデバッグ情報5bを用いて、データの型変換を実行する。その後、COBOLプログラム5のソースコード5aがソースコード5cに変更された場合、各変換器は、修正前のプログラムのデバッグ情報5bではなく、修正後のデバッグ情報5dを取得して、データの型変換を実行することができる。この結果、呼出先のプログラムが変更された場合であっても、呼出元であるREST API プログラムのソースコードを修正することなく、データの型変換を実行することができる。
また、情報処理サーバ10は、動的な呼び出しプログラムの作成により、ユーザがソースコードを管理する手間を省くことができる。情報処理サーバ10は、COBOLプログラム5が変更されても、COBOLプログラム5の呼出側のREST API プログラムの引数型の値とCOBOLデータ型の値に互換性があれば、呼出側のプログラム1aやREST API プログラムを変更することなくCOBOLプログラム5を呼び出すことができる。また、ユーザがコーディング時にCOBOLプログラム5を呼び出す処理を記述する際、一時変数を定義しなくともよくなり、COBOLの呼び出し処理の記述を簡素化できる。
ところで、情報処理サーバ10は、実行ユニットがCOBOLプログラム5に渡す引数の参照変数を持つことで、複数の実行ユニット間で同じデータを共有することができる。図12は、実施例2にかかる情報処理サーバ10を説明する図である。
図12に示すように、実行ユニット処理部21は、COBOL引数データセット関数、COBOL引数データ取得関数、COBOL引数オブジェクトを有する。なお、これらは、実行ユニット処理部21は有する機能部として実行することができ、プロセッサが実行するプロセスの一例として説明することもできる。なお、ここでは、実行ユニット処理部21が実行する例で説明するが、実行ユニット処理部21によって実行されるプロセスの一例である実行ユニットが実行することもできる。
ここで、実行ユニット処理部21が、COBOLプログラム5に渡す引数の参照変数を持つことで、実行ユニット間で同じデータを共有することができる。COBOLプログラム5に渡す引数の値は、COBOL引数データセット関数を利用して行う。COBOL引数データセット関数は、COBOLプログラム5の引数名と、それに対応する他のプログラミング言語のデータを引数にセットする。
COBOL引数データ取得関数は、実行ユニット処理部の参照するCOBOLの引数データを、指定した他のプログラミング言語のデータ型に変換する関数である。COBOL引数オブジェクトは、COBOL引数データポインタをフィールドとして持つオブジェクトである。フィールド名は、引数データに対応するCOBOLプログラム5の引数名をフィールド名とする。COBOL引数データポインタはCOBOL引数データへの参照をもつ変数である。
このように、実行ユニット処理部21は、共有で参照可能なメモリ領域30に記憶されるCOBOLの引数データを用いて、参照渡しによってCOBOLプログラム5を呼び出す。COBOLプログラム5は、処理結果をメモリ領域30に格納する。図13を用いて具体例を説明する。図13は、実行ユニットが保持するデータの変化例を説明する図である。図13は、モバイル端末1のプログラム1aから税込み価格計算を実行するCOBOLの計算プログラムを呼び出す例である。
図13に示すように、実施例1と同様、情報処理サーバ10の実行ユニット処理部21は、税込み価格計算プログラムのデバッグ情報を利用して、REST API プログラム内の呼出側のREST API プログラムのデータ型と、COBOLで記述された税込み価格計算プログラムのデータ型との変換を行う。
そして、プログラム1aによるREST API プログラムの実行に伴い、情報処理サーバ10の実行ユニット処理部21は、メモリ領域内のデータ30aの参照変数を引数にして税込み価格計算プログラムを呼び出す。そして、税込み価格計算プログラムは、税込み計算を実行し、メモリ領域内のデータ30aをデータ30bに書き換える。その後、情報処理サーバ10の実行ユニット処理部21は、メモリ領域内のデータ30bをREST API プログラムのデータ型に変換して、モバイル端末1のプログラム1aに送信する。このようにすることで、税込み価格計算プログラムの処理結果を複数のプログラムや実行ユニットで共有することができる。
ここで、データ共有化について説明する。図14は、データ共有化による処理負荷の軽減を説明する図である。図14に示すように、プログラム1aの要求によってREST API プログラムが、実行ユニットAを介してCOBOL(A)を呼び出すとともに、実行ユニットBを介してCOBOL(B)を呼び出す例を想定する。ここで、実行ユニットは、上記情報処理サーバ10に対応し、各COBOLプログラムは、同じデータを引数にするものとする。また、各データ型の変換は、実施例1と同様、各COBOLプログラムのデバッグ情報を利用することとする。
実施例2の手法では、実行ユニットAが、COBOL(A)を呼び出すための、REST API プログラムのデータ型からCOBOLデータ型の変換を実行して、共有メモリ30内に変換結果を格納する。その後、REST API プログラムの要求に伴って、共有メモリ30内のCOBOLの引数データの参照渡し(参照変数)によってCOBOL(A)を呼び出す。すると、COBOL(A)が、該当処理を実行して、共有メモリ30内のデータを書き換える。そして、実行ユニットAは、共有メモリ30内に記憶される処理結果(COBOLデータ型)を、REST API プログラムのデータ型に変換して応答する。
その後、REST API プログラムが実行ユニットBにCOBOL(B)の呼出を実行した場合、実行ユニットBは、同じ処理を実行した実行ユニットAから処理結果を取得することができる。例えば、実行ユニットBは、実行ユニットAやCOBOL(A)等によって書き込まれた共有メモリ30のデータを読み出す。そして、実行ユニットBは、読み出したデータをREST API プログラムに応答する。このとき、実行ユニットBは、読み出したデータがCOBOLのデータ型であれば、REST API プログラムのデータ型に変換して応答し、読み出したデータが実行ユニットAによってREST API プログラムのデータ型に変換済みであれば、読み出してそのまま応答できる。このように、実行ユニットBは、REST API プログラムのデータ型とCOBOLデータ型の変換との変換処理を省略することができる。この結果、プログラム1a内でソースコードの簡略化も実現できる。
一方で、一般的なブリッジプログラムを用いた手法では、処理負荷が高い。図15は、ブリッジプログラムによる処理負荷の増大を説明する図である。図15も図14と同様、プログラム1aが、実行ユニットAを介してCOBOL(A)を呼び出すとともに、実行ユニットBを介してCOBOL(B)を呼び出す例を想定する。
図15の場合、REST API プログラムは、実行ユニットAを介してCOBOLプログラム(A)を呼び出す要求を送信する。実行ユニットAは、型変換を行った後にCOBOLプログラム(A)を呼び出し、COBOLプログラム(A)から取得した値に型変換を行って、プログラム1aに送信する。
その後、REST API プログラムは、実行ユニットBを介してCOBOLプログラム(B)を呼び出す要求を送信する。実行ユニットBは、実行ユニットAと同様に、型変換を行った後にCOBOLプログラム(B)を呼び出し、COBOLプログラム(B)から取得した値に型変換を行って、REST API プログラムに送信する。
このように、モバイル端末等の要求に伴って、REST API プログラムが同じ処理を実行するCOBOLプロフラムを別々の実行ユニットを用いて実行する場合には、呼出側に、引数の処理結果を受け取るための一時変数を定義しなければならない。また、各COBOLプログラムの呼出後に同じ型変換を実行しなければならない。したがって、一般的なブリッジプログラムを用いた手法では、処理数が増大し、処理負荷が高い。
上述したように、実行ユニット間でCOBOLプログラムのデータの値を共有時に、実行ユニットが、呼び出し対象COBOLプログラムのデバッグ情報に基づいて、COBOL以外の言語のデータ型と、呼び出し先のCOBOLプログラムのデータ型の型変換を行う。実行ユニットが、変換したCOBOLプログラムに渡す引数の実データへの参照を保持する。この結果、実行ユニット間でCOBOLプログラムのデータの値を共有時に、一時変数の定義やCOBOL以外のプログラミング言語のデータ型への変換を省略することができる。
また、ユーザがコーディング時に、COBOLプログラムの実行ユニットが実行した結果の引数値を、呼び出し側のプログラミング言語のデータ型に変換しなくともよくなり、COBOLプログラムの実行ユニット間でデータを使いまわす際に余分な変換処理を省略することができる。
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。
[言語]
実施例1で記載したプログラム言語は一例であり、これに限定されるものではない。例えば、呼出元のプログラムは、モバイル端末で実行できるプログラムであれば、どのようなプログラムも採用することができる。また、呼出対象のプログラムは、モバイル端末で実行できないプログラムであれば、どのようなプログラムも採用することができる。
[デバッグ情報]
上記実施例では、デバッグ情報を用いる例で説明したが、これに限定されるものではなく、COBOLプログラムのソースコードを用いることもできる。この場合、RESTサービス化したCOBOLアプリケーションを配備する情報処理サーバ10に、アプリケーションとソースコードを配備することになる。
したがって、デバッグ情報を用いることで、ソースコードのコピーの抑制、不正アクセス等によりソースコードに記述されたプログラムの動作を解析の危険性やサービスの脆弱性を読み取られる危険性を低減することができる。また、デバッグ情報を用いることで、アプリケーション配備や構成の制約を低減できる。
[システム]
上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。また、実施例で説明した具体例、分布、数値などは、あくまで一例であり、任意に変更することができる。また、処理の順番なども矛盾のない範囲内で適宜変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
[ハードウェア]
図16は、ハードウェア構成例を説明する図である。図16に示すように、情報処理サーバ10は、通信装置10a、HDD(Hard Disk Drive)10b、メモリ10c、プロセッサ10dを有する。また、図16に示した各部は、バス等で相互に接続される。
通信装置10aは、ネットワークインタフェースカードなどであり、他のサーバとの通信を行う。HDD10bは、図2に示した機能を動作させるプログラムやDBを記憶する。
プロセッサ10dは、図2に示した各処理部と同様の処理を実行するプログラムをHDD10b等から読み出してメモリ10cに展開することで、図2等で説明した各機能を実行するプロセスを動作させる。すなわち、このプロセスは、情報処理サーバ10が有する各処理部と同様の機能を実行する。具体的には、プロセッサ10dは、実行ユニット処理部21、第1変換部22、第2変換部23等と同様の機能を有するプログラムをHDD10b等から読み出す。そして、プロセッサ10dは、実行ユニット処理部21、第1変換部22、第2変換部23等と同様の処理を実行するプロセスを実行する。
このように情報処理サーバ10は、プログラムを読み出して実行することでデータ変換方法を実行する情報処理装置として動作する。また、情報処理サーバ10は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、情報処理サーバ10によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク(FD)、CD−ROM、MO(Magneto−Optical disk)、DVD(Digital Versatile Disc)などのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することができる。
10 情報処理サーバ
11 通信部
12 記憶部
13 COBOLデータ記憶部
14 型情報記憶部
20 制御部
21 実行ユニット処理部
21a 生成部
21b 設定部
21c 呼出部
21d 取得部
22 第1変換部
23 第2変換部

Claims (7)

  1. プログラム、データ種類及びデータ型の指定を受け付け、
    プログラムが実行する処理の対象データのデータ型を該プログラム及び該データのデータ種類に対応付ける情報を記憶する記憶部を参照して、指定された前記プログラム及び前記データ種類に対応付けられたデータ型を特定し、
    特定した前記データ型を、指定された前記プログラム及び前記データ型に対応付ける情報を生成する、
    処理をコンピュータに実行させることを特徴とする制御プログラム。
  2. 前記情報は、前記プログラムがコンパイルされたことに応じて生成されるデバッグ情報であることを特徴とする請求項1に記載の制御プログラム。
  3. 第1のプログラムから呼び出される第2のプログラムのデバッグ情報へのアクセス先を特定する型情報を、前記第1のプログラムから受け付け、
    前記型情報を利用して前記第2のプログラムのデバッグ情報を参照し、前記第1のプログラムのデータ型と前記第2のプログラムのデータ型とを対応付ける処理を、前記コンピュータに実行させることを特徴とする請求項1に記載の制御プログラム。
  4. 前記第1のプログラムから、前記第2のプログラムへの引数を前記第1のプログラムのデータ型で取得し、
    前記デバッグ情報を用いて、前記引数を前記第1のプログラムのデータ型から前記第2のプログラムのデータ型に変換し、
    前記第2のプログラムのデータ型に変換された引数を前記第2のプログラムに通知して、前記第2のプログラムの実行結果を取得し、
    前記デバッグ情報を用いて、前記第2のプログラムの実行結果を、前記第2のプログラムのデータ型から前記第2のプログラムのデータ型に変換し、
    前記第1のプログラムのデータ型に変換された実行結果を前記第1のプログラムに応答する処理を、前記コンピュータに実行させることを特徴とする請求項3に記載の制御プログラム。
  5. 他のプログラムから参照可能な記憶領域に格納される前記第2のプログラムへの引数を参照するための参照変数を、前記第2のプログラムに通知して、前記第2のプログラムを実行し、
    前記第2のプログラムの実行結果を、前記記憶領域から取得して、前記第1のプログラムに応答する処理を、前記コンピュータに実行させることを特徴とする請求項4に記載の制御プログラム。
  6. プログラム、データ種類及びデータ型の指定を受け付け、
    プログラムが実行する処理の対象データのデータ型を該プログラム及び該データのデータ種類に対応付ける情報を記憶する記憶部を参照して、指定された前記プログラム及び前記データ種類に対応付けられたデータ型を特定し、
    特定した前記データ型を、指定された前記プログラム及び前記データ型に対応付ける情報を生成する、
    処理をコンピュータが実行することを特徴とする制御方法。
  7. プログラム、データ種類及びデータ型の指定を受け付ける受付部と、
    プログラムが実行する処理の対象データのデータ型を該プログラム及び該データのデータ種類に対応付ける情報を記憶する記憶部を参照して、指定された前記プログラム及び前記データ種類に対応付けられたデータ型を特定する特定部と、
    特定した前記データ型を、指定された前記プログラム及び前記データ型に対応付ける情報を生成する生成部と、
    を有することを特徴とする情報処理装置。
JP2018050189A 2018-03-16 2018-03-16 制御プログラム、制御方法および情報処理装置 Active JP7073813B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018050189A JP7073813B2 (ja) 2018-03-16 2018-03-16 制御プログラム、制御方法および情報処理装置
US16/283,922 US10853225B2 (en) 2018-03-16 2019-02-25 Control method, apparatus, and non-transitory computer-readable storage medium for generating data body adjusted to second program by converting data type of parameter of first program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018050189A JP7073813B2 (ja) 2018-03-16 2018-03-16 制御プログラム、制御方法および情報処理装置

Publications (2)

Publication Number Publication Date
JP2019160243A true JP2019160243A (ja) 2019-09-19
JP7073813B2 JP7073813B2 (ja) 2022-05-24

Family

ID=67905596

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018050189A Active JP7073813B2 (ja) 2018-03-16 2018-03-16 制御プログラム、制御方法および情報処理装置

Country Status (2)

Country Link
US (1) US10853225B2 (ja)
JP (1) JP7073813B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7014199B2 (ja) * 2019-03-08 2022-02-01 オムロン株式会社 制御システム、情報処理装置、および情報処理プログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11296359A (ja) * 1998-04-10 1999-10-29 Hitachi Ltd プログラム開発支援ツール
JP2002342078A (ja) * 2001-05-17 2002-11-29 Hitachi Ltd プログラム開発システム及び方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5361351A (en) * 1990-09-21 1994-11-01 Hewlett-Packard Company System and method for supporting run-time data type identification of objects within a computer program
JPH05307473A (ja) 1992-05-01 1993-11-19 Toshiba Corp プログラム自動生成装置
US20030126590A1 (en) * 2001-12-28 2003-07-03 Michael Burrows System and method for dynamic data-type checking
JP4846493B2 (ja) * 2006-09-05 2011-12-28 富士通セミコンダクター株式会社 デバッグシステム及びデバッグ回路
US8042099B2 (en) * 2007-05-30 2011-10-18 Red Hat, Inc. Facilitating availability of object data types at runtime
US9916137B2 (en) 2014-06-25 2018-03-13 Oracle International Corporation Rest service source code generation
WO2017072828A1 (ja) * 2015-10-26 2017-05-04 株式会社日立製作所 デバッグを支援する方法及び計算機システム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11296359A (ja) * 1998-04-10 1999-10-29 Hitachi Ltd プログラム開発支援ツール
JP2002342078A (ja) * 2001-05-17 2002-11-29 Hitachi Ltd プログラム開発システム及び方法

Also Published As

Publication number Publication date
US10853225B2 (en) 2020-12-01
JP7073813B2 (ja) 2022-05-24
US20190286550A1 (en) 2019-09-19

Similar Documents

Publication Publication Date Title
US8386636B2 (en) Business process system management method
US11157242B2 (en) Systems, methods, and apparatuses for local web components development within a cloud based computing environment
JPH0827775B2 (ja) 遠隔ノードからの処理手順呼出し方法及びシステム
CN114189525B (zh) 服务请求方法、装置和电子设备
US11893367B2 (en) Source code conversion from application program interface to policy document
JP2021128760A (ja) Opc uaサーバ、opc uaを用いたシステム処理、及びopc uaシステムを実行する方法
CN110888972A (zh) 一种基于Spark Streaming的敏感内容识别方法及装置
CN114115884B (zh) 一种编程服务的管理方法以及相关装置
KR102443171B1 (ko) 이기종 컴퓨팅 환경에서 데이터 타입 변환을 지원하기 위한 시스템 및 방법
JP7073813B2 (ja) 制御プログラム、制御方法および情報処理装置
CN110941443B (zh) 修改sdk中文件名的方法、装置及电子设备
CN108984158A (zh) 计算装置及在该计算装置中执行的方法
CN116342283A (zh) 可信智能合约实现方法、装置、设备及可读存储介质
CN117971350A (zh) 小程序运行方法、装置和计算机可读存储介质
EP3872630A2 (en) Request processing method and apparatus, electronic device, and computer storage medium
CN114064176A (zh) 一种视图交互方法、装置、电子设备及计算机可读介质
CN113626001A (zh) 一种基于脚本的api动态编排方法及装置
CN114253595A (zh) 代码仓库管理方法、装置、计算机设备及存储介质
CN113032004A (zh) 在开发环境中管理开发作业的方法、设备和程序产品
CN115955409B (zh) 一种变更编排方法及相关装置
CN110955430A (zh) 应用程序原生能力的调用方法、装置及电子设备
CN117978554B (zh) 一种基于配置的微服务隔离运行方法、设备及介质
CN114443316B (zh) 一种对象访问方法、装置及电子设备
JP2013080281A (ja) 実行制御プログラム、コンパイラ、実行制御装置および実行制御方法
JP2007510210A (ja) コンピュータ装置におけるダイナミック・リンク・ライブラリのマッピング

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201210

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211014

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220114

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220412

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220425

R150 Certificate of patent or registration of utility model

Ref document number: 7073813

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150