【第31回補足】RPGでのデータ処理にDATA-INTO命令を使う | IBM i 総合情報サイト

【第31回補足】RPGでのデータ処理にDATA-INTO命令を使う


投稿日:2021年7月8日

今日のITシステムでは、様々なシステムとのデータ交換機能が欠かせません。RPGによるXMLデータの処理にはXML-INTOが役立ちましたが、JSON、CSVそしてその他のデータ形式のデータの処理をRPGで行うにはどうすれば良いのでしょうか?その答えはDATA-INTO命令にあります。本記事は、前回の「【第31回】YAJLとDATA-INTOの出合い」の補足記事です。(編集部)

04/01/2019 ジョン・パリス&スーザン・ガントナー


Q. XML-INTOはXMLデータの処理に役立ちましたが、JSON、CSVそしてその他のデータ型の処理について現在質問を受けています。RPGはこの役に立つのでしょうか?

Db2 for iのデータアクセスに関しては、RPGがもつインターフェースの柔軟性について誰もが知っています。しかし、他の種類のデータについてはどうでしょう?以下に示すデータ形式に馴染みがあるはずです。

•	12345,”Mountain Co-op”,”Ashton Bridge”,CA
•	[ { “customer”: 12345,”name”: “Mountain Co-op”,”city”: “Ashton Bridge”,”state” : “CA” } ]
•	customer=12345  name=Mountain Co-op City=Ashton Bridge state=CA   

どれにも心当たりがない場合に備えて説明しましょう。最初の例はCSV(Caracter-Separated Value)テキスト、2番目はJSON(JavaScript Object Notation)、3番目はしばしばプロパティあるいは名前/値テキストと呼ばれるもので、URLの中で照会文字列として知られているものと僅かに違う形式のデータです。

これらはすべて、システム間で交換するためのデータを定義する方法として一般的に使用されているものです。このリストにXMLを加えれば、データ交換に用いられる現行の形式の大部分がカバーできます。しかしRPGユーザーにとって、これらはもう1つの特徴を共有しています。これらは、RPGの新しいDATA-INTO命令が処理するように設計されているデータ種別の例なのです。

これらはすべて、システム間で交換するためのデータを定義する方法として一般的に使用されているものです。このリストにXMLを加えれば、データ交換に用いられる現行の形式の大部分がカバーできます。しかしRPGユーザーにとって、これらはもう1つの特徴を共有しています。これらは、RPGの新しいDATA-INTO命令が処理するように設計されているデータ種別の例なのです。

DATA-INTO命令は、JSONを処理するためにXML-INTOのような機能が欲しいと繰り返し要求されたことに対するIBMの回答です。IBMは、その機能をJSONの処理に限定せず、どのようなデータ交換方式が将来の「今月のおすすめ」になろうとも、それに適応するために長年に亘って拡張し、機能強化できる一般的なユーザー拡張可能なものにしようとしました。

DATA-INTOはXML-INTOと似たような方法で動作します(つまり、一連のデータを受け入れ、それを構成要素フィールドに分割します)。大きく違うのは、XML-INTOの場合にはデータ形式がXML仕様で決められていることです。DATA-INTOの場合、パーサーが処理する様に設計されていれば、どのようなデータ形式でも構いません。

パーサーについて言えば、今日どのようなものが利用可能でしょう?IBMはコンパイラと一緒に2つのパーサー例を提供しています。最初のもの(実のところ2つの変種がありますが)はプロパティ(つまり、名前/値)テキストを処理します。2つ目のものは、JSONパーサーの例です。後者は大半の状況で機能しますが、実運用で使用することを意図したものではありません。実運用で使用するのであれば、YAJLINTOを使用することをお勧めします。これはスコット・クレメント氏が、広く使用されている彼のYAJL JSONパーサーを基にIBM i用に移植して開発したJSONパーサーです。こちらのリンクから、このパーサーについての更なる情報とその最新版が入手できます。

(私が知っている)もう1つの選択肢は、スーザン・ガントナー氏と私が開発し、「RPGのDATA-INTO命令の詳細」という記事に書いたCSVパーサーです。しかし、もし独自のパーサーを書いたり、私達のパーサーを修正したりする目的でDATA-INTOパーサーを完全に理解したいのであれば、DATA-INTOの基礎を紹介した以前の記事も読むべきです。DATA-INTOはRPGコンパイラにおける新たな力強い動きの偉大な例です。ITの世界は嘗てない程早い速度で動いており、アプリケーションの新しい舞台がどのようなものであれ、RPGがいつでも役割を果たすことは重要です。

Copyright © IGUAZU