APLNEWS 2006年12月号

 

1.APL2 V2 CSD9

 

11月中旬にWindows版APL2バージョン2(=V2)サービスレベル9すなわちCSD9がIBMから出荷されました。今年5月に出荷されたCSD8はこれまでお伝えしましたようにAPL2の全般にわたるUnicode化の第一歩でしたが、多少混乱があり、正式版としての使用は控えざるを得ませんでした。また私どもの仕事の都合で、十分そのテストに時間を割くことができませんでした。CSD9はAPLの40周年の月に間に合い、CSD8で意図されたことが見事に花を咲かせました。(In mid-November, IBM released Service level 9 (=CSD9) of APL2 V2 for Windows. As we have reported in previous news, CSD8 released last May was the first step of total introduction of Unicode in APL2 interpreter, but had some troubles, and we had to refrain from adopting it officially. In addition we did not spare enough time to cooperate with IBM development. CSD9 was released in time for the 40th anniversary of APL, and materialized what was intended for CSD8.)

 

CSD9ではAP145の設計画面上でAPLの特殊文字と漢字が同時に入出力できるようになりました。IBMが提供するパブリック・ライブラリーのひとつであるGUITOOLSワークスペースに新たにUNIEDITというサンプルプログラムが追加されました。この関数はAPLの関数や文字配列を編集する機能で、近い将来にAPL2オブジェクト・エディターやセッションマネジャーも日本語とAPL特殊文字との共存が実現することが予測されます。これは日本語DOSの元での日本語のサポートに匹敵するもので、OS2の元ですら実現しなかった、画期的なことであるといわざるを得ません。(With CSD9, APL characters and Kanji are displayed and entered in AP145 dialog control windows for the first time officially. IBM supplied public library GUITOOLS contains a new sample program called UNIEDIT. This program edits APL functions and text arrays. It gives us a great hope that the interpreters object editor may soon allow Japanese and APL special characters to co-exist. This is comparable to the IBMs Japanese APL interpreter accepted widely in Japan under Japanese DOS, and is a revolutionary event  which was not realized even under OS2.) 

 

APLの元での日本語の入出力は読み書きするデータや表示する文章としては従来もサポートされていましたので、私どもが作成した業務アップリケーションはすべて日本語をサポートしてきました。しかしそれらのプログラムを作成するに当たりAPL関数の定義の中でコメント、メッセージその他さまざまな日本語のテキストを日本語とコードが重なるAPL文字と如何に共存させるかという問題がありました。私どもはそのためにシフトコードを用い、またその目的に適った特殊なフォントを時間を掛けて作りました。それは汎用性という観点から一時的な解決でしかありませんでした。(Japanese text entry and display had been supported in APL2 for a long time, and all of our existing APL applications handle Japanese language in a natural manner. However APL programmers needed to use Japanese comments and texts as in-line messages and data within APL functions, but under the conventional coding scheme of S-JIS in this country, APL used the same code as used to distinguish Kanji double-byte codes from other single byte codes. Therefore we had to produce our own Japanese support system with privately created Japanese-APL font. It was only a temporary solution and couldnt expect to be used permanently.)     

 

今回IBMが発表したUnicodeによる解決はテストの結果すばらしいものであることが判明しました。すなわちAPL文字と漢字を同時に含むフォントを使用する必要はありません。通常APL2で用いられるCourier APL2のUnicode版(Courier APL2 Unicode)をはじめすべてのAPL文字を含んだUnicode欧文フォントはWindows XPのシステム機能によって、そのフォントに存在しない文字が使用された場合は自動的に他のフォントから補給されます。これは本来IBMのOS2にあった機能ですが、ここで復活したとは夢にも思いませんでした。(The solution by Unicode which IBM presented has proved to be highly acceptable. That is, this method does not require a non-existent fixed pitch Unicode font containing both APL characters and Kanji. You may specify any APL Unicode font such as Courier APL2 Unicode and then Windows XP supplements Kanji from other Kanji fonts automatically. Similar system existed under OS2.)

 

このことが何をもたらすかといえば、日本人が日本のアップリケーションを開発するにあたり、日本語の取り扱いが非常に自然の形で行われ、それがシステムとして正式にサポートされる結果、APLのプログラミングに日本人が気楽に参加しやすくなり、日本語の適用業務の開発が促進され、またエンドユーザーによる私的な用途が日本語APLのように再び復活すると期待されます。またIBMの開発者の言によると、右から書く中近東言語をどのように処理するかという問題はあるそうですが、日本語ばかりでなく中国語、韓国語などMulti−byteの言語も理論的にはサポートされているということです。現在IBMによるAPL2V2の改定は6ヶ月ごとに行われていますから、これが実現するのはさほど時間はかからないと思います。(The benefit that this will bring about will be that APL can be used more naturally by end-user programmers as well as professional programmers to write Japanese applications. It may call back many APL users who had to abandon APL because of the absence of this kind of features in PC APL2 in converting from DOS. IBM developer emphasizes that in principle this design can apply to other multi-byte fonts used in countries like China and Korea.)

 

2.弊社の諸ツール関数群のUnicode化(Conversion of our existing tools to accept Unicode)

 

CSD9および今後IBMが予定しているUnicodeによる日本語処理の正式導入に伴い従来より開発使用していた弊社の日本語サポートの方式を変更しなければなりません。しかし残念ながらCSD9をわれわれが入手したのがつい数日前ですので、プログラムの書き換えは現在進行中です。したがってこの書き換え作業が終了するまでは旧方式を継続使用し、しばらくの間はCSD9の採用は行いません。ちなみに従来の方式での設計画面の利用に関して、CSD9の元ではアップリケーション画面上APL文字は表示されますが、入力することができません。また日本語を含むAPL関数の印刷では文字化けが起こります。(As the expected IBMs plan to complete Japanese language support using Unicode, we have to alter our existing system. We obtained CSD9 only a few days ago, we are still working on converting our tools, and until it will complete we will not adopt CSD9 and distribute it for the promised APL leaning assistance system for downloading. Our existing tools wont allow APL character input, and APL characters are not correctly printed.) 

 

CSD9の元でのAPL関数は日本語を使用しないものでも、Unicodeで記録されるものとシフトJISで記録されるもとが並存します。これはIBMが2つの異なるシステムの互換性を維持するために採用された仕組みです。したがって基本的にはこの区別をAPLシステムが自動的に認識し対応いたします。しかしわれわれの採用してきた仕組みはIBMが正式に認めたものではありませんので、関数はすべてUnico0de記録方式に変換する予定です。(Under CSD9, APL functions are recorded in either Unicode or Multi-byte even for those not using Japanese. Wee imagine that this is IBMs consideration to maintain compatibility with the old system. There is no problem with APL functions not using Shift-JIS kanji, which is not recognized valid. Therefore we are planning to switch entirely to Unicode encoding, while retaining compatibility with the multi-byte encoding.)  

 

関数印刷のツール△PRINTFの書き換えは完了し、従来の環境でもCSD9の元でも、シフトジス方式、Unicode方式どちらの関数にも対応するようにしました。印刷出力ではすべてUnicodeに変換して印刷装置に送ります。われわれのテストではキャノン、エプソン、ブラザー、沖の現行印刷装置はすべてUnicodeに対応していることが判明しました。(So far we have converted PRINTF (our function print tool) and it works under CSD9 as well as under the previous service levels. We found that the existing printer devices of Canon, Epson, Brother and Oki accept Unicode.)     

 

 

3.APLによる業務開発の具体例−シリーズその2:(An example of APL application development Series 2)

 

操作画面を設計する−その2:(Designing dialog windows part 2)

 

△DIALOGの操作の結果生成されるプログラム“SAMPLE”は前回の設計画面の事例の場合次の画面の左側で示すように‘COMMON2’に収められたAPL関数エディター‘△EDITF’を呼び出し、関数‘SAMPLE’を引数として実行すると画面右側のように表示されます。そのとき同時に画面下部に示すようなAPLソフトウエアーキーボードが現れます。(APL function SAMPLE generated as a result of the operation of DIALOG is shown in our function editor window when the editor is associated from the external library COMMON2 as illustrated below on the left and started with the target function name as left argument. Simultaneously a software keyboard appears to visually allow entry of  APL characters and Hiragana for Kanji.)

 


関数‘SAMPLE’を拡大表示すると次のようになります。(Program SAMPLE is shown in enlarged characters below.)

 

 

関数の説明:(Explanation of the function.)

 

0行目(line 0):関数ヘッダー、関数名と局所名を指定(Function header, and Function name and local names are specified.)

 

1行目(line 1):インデックス・オリジンを1にセットする。(Set index origin to 1)

    外部関数‘INIT’と‘ ÷0’を‘COMMON2’から呼び出す。(Associates INIT and ÷0 from library COMMON2.)

 

2行目(line 2):関数‘SAMPLE’を引数としてINITを実行し、結果値を変数intに代入する。INITは関数SAMPLEの11行から18行のコメントを解釈し、内部変数配列intに記録し、AP145を起動させ、必要な諸変数を初期化し、Dialog Windowを画面上に表示する。結果値intからDialogとそのMenuのハンドルを取り出し変数h1とh2に記憶させる。(Executes INIT with SAMPLE as an argument, and obtain internal dialog information and set it to the variable init. INIT converts comments(line-11 thru 18) to internal representation as int and starts AP145 and initialize all necessary variables and eventually create a dialog window. Handles for the dialog and it menu are extracted from int and set to H1 and H2.)

 

    äL0|で始まるコメントは△DIALOGで設定した画面設計情報を記述した式で、DIALOGおよび各コントロール・ウインドウの情報が数行で記録されている。基本的な式は次のとおりです(comment lines starting with äL0| record the definitions of dialog box and other control boxed in few lines. Basic syntax is as follows)

 

    ID=識別コード:テキスト文(コントロールの種類によって意味が異なる)

              (control id:text(varies according to different controls.))

            

         TYPE=コントロールの種類;SIZE(LOC)=XxY(X,Y)

                     (Control type: size and location)

 

       STYLES=コントロールの種類により異なる

                           (optional styles. Varies with different controls)

 

    註:詳しくは資料(日本語のみ)を提供しますので、メール<kyosuke.saigusa@nifty.com)にて送付先のメール・アドレスを記載して請求してください(無料)。(detailed description is contained in a separate manual (Japanese only) based on IBM reference material Developping GUI applications). Upon request to our mail address the material will be e-mailed to the address specified(free).) 

   

3−4行目(lines 3-4):2画面設定(SPLIT COLUMNなどの特殊な場合の対応)で説明省略。(Used only special case like split columns, and the explanation is skipped.)

          

 

5行目(line 5):ユーザーがDIALOG左上隅のX印をクリックするとCLOSEイベントが発生するが、その場合のアクション、ここではラベルEND(=8行目)に分岐させることを宣言している。(Upon the user clicking the X mark at the top left corner of the dialog window, a CLOSE event occurs. This statement specifies the program control branches to the label END(=Line 8).)

 

   註:変数svはAP145に対する共用変数で、s_pはAP145のコマンドAplSetPropertyと同義。このほかg_p(=AplGetProperty),s_r(=AplSetRange)、g_r(=AplGetRange)があり、APLの式が冗長になることを回避している。これらはすべて関数INITで設定されるのでユーザーが設定する必要はない。(The variable SV is a shared variable with AP145. the variable s_p stands for AP145 command AplSetProperty, other variables g_p, s_r, g_r representing AplGetProperty AplSetRange AplgetRange are also available for brevity of APL statements and all of them are initialized by INIT automatically and the users need not define them.)  

 

6−7行目(line 6-7):プログラムをウエイとさせ、イベントの発生を待たす。イベントはあらかじめ‘EVENTS’式で設定されたアクションを実行する。(Waits for previously defined events and executes actions.)

 

 

関数‘SAMPLE’はできるだけ別の名前に付け替え手置くことを薦めます。何故ならば△DIALOGで作られる新規の関数はすべて‘SAMPLE’という名前がつけられますので、異なる画面設計操作の結果で置き換えられてしまう恐れがあるからです。(We advise that the function name is altered, because the new function created by DIALOG is always given the name SAMPLE.)

 

関数を目的に適った形に完成させるには画面記述のコメント部分以外にプログラムの式を追加する必要があります。画面の操作や動的に変更させる設定に関してはすべてAP145のコマンドを使用して設定します。それ以外の処理は通常のAPLの式で表現します。(To complete the function to the desired state, you must add APL statements. Any dynamic operations must be given in the part above the static dialog definitions given in the form of comments.)

 

AP145の式は通常次のように表現してください。(Commands to AP145 are given as shown below.)

 

 1.設定指定の場合(To speicify)

 

   SV½s_p h1 (プロパティー) (パラメーター) (対象BOXのid) Ø T½sv

 

   (SV½s_p h1 (PROPERTY) (PARAMETER) (Id og target control box) Ø T½sv)

 

 2.設定問合わせの場合(To query)

 

    SV½g_p h1 (プロパティー) (対象BOXのid) Ø(パラメーター)½34ãT½sv

     

    (SV½g_p h1 (PROPERTY) (Id of target control box) Ø (PARAMETER) ½34ãT½sv

 

プロパティーは各対象コントロールBOXの種類によって異なるものと全体で共通のものがあり、その数は大変数が多いです。代表的なコントロールとしては次のようなものがあります。(There are commonly used properties and properties unique to particular controls and there are  many properties. Some of the examples of properties are shown below.)

 

 EVENTS

 

DATA

 

STATE VISIBLE

 

 FONT

 

 BACKGROUND COLOR

 

 

 註:詳細に関しては資料を請求してください(無料)

 (Note: Please request detailed description (now in Japanese only) by e-mail- no charge)

 

画面設計の静的部分は画面設計情報のコメント部分を変更追加するか、再び△DIALOGを起動して対象関数の画面設計部分を対話式に変更します。その場合すでにプログラムされている動的な部分は通常のAPLのコメント式としてのこれいますので、ユーザーはその関数の元の形を復活させたり、その一部を利用することができます。(The static setting of the dialog can be altered by changing the dialog specification part of the function given in the form of comments or re execute DIALOG against your program.)

 

関数の編集は△EDITFを用いることができます。

(To edit the function, you may use EDITF.)