APLNEWS2007年6月号

 

1.APL2 V2 CSD10

 

4月末にIBMからCSD10(正式にはWorkstation APL2 Version 2 Service level 10)が出荷されました。登録されたユーザーはインターネットですべての資料をダウンロードすることができます。一定期間の試行導入やアカデミック・ライセンスもあり、これらはいずれも無償で提供されます。詳しくはhttp://www-306.ibm.com/software/awdtools/apl/

にアクセスしてください。(CSD10 of APL2 V2 was uploaded to IBM web site for registered users to download. Trial and academic use are also available free. Refer to the IBM web site for details.)

CSD10の目玉はWindowsの環境でAPL2が始めてAPL文字と日本語の同時入出力を可能にしたエディター(Object editor)が出荷されたことです。(The high-light of the CSD 10 for us is the availability of the object editor, which allows simultaneous input and display of APL and Japanese characters)

 

APLで日本語の適用業務プログラムを作成する作業において、作業画面上(=Editor)で、日本語の入力が自然の形ででき、APL関数中に表示されることは作業の効率に絶大な寄与をすることが明らかになってきました。(In developing Japanese business applications, it contributes tremendously to the productivity of the work to have the capability of seeing Japanese texts in APL programs.)

 

西欧諸国で当初より自国語をAPL2で取り扱えることはは当たり前のことですが、日本語や中国語のような非ラテン系の言語がこのように処理できるようになったことは長年の念願でした。現在開発中のプログラム作業はこの最新のエディターを使いながらパイロット・テストを実施していて、大変満足な結果を得ています。またその結果はIBM開発部門にフィードバックして、製品の改善に少しでも役に立てるようにしています。(Unlike west European languages in APL2, it had been a long time dream for us to have non-Latin letters such as Japanese and Chinese to be included in APL program texts. The currently undergoing programming project is being used to test this new function of APL2, and we have obtained a very satisfactory results. We are also trying to feed it back to the IBM development for further improvement of the editor.)

 

現在パイロット・テストの対象としている作業は、かって旧BASICのプログラムで作成されたものを基にしています。最初にBASICのソース・プログラムをエディーター上に表示し、これを最も近いAPLの式に同一画面上で書き換えていきます。これにより、元のプログラム・ロジックを正確に写し取ることが容易になり、作業の第一歩になります。その次に全体をよい高度な近代的なプログラムに変化させていきます。(The work we use for the pilot test happens to be a business application written in old BASIC language. We first edit its source program as a text data, and translate it into some similar pseudo-APL expressions phrase by phrase. This makes it very easy to copy the original logic faithfully, and it becomes the base for the total re-writing to enhance to the level required in today’s data processing.)  

 

対象はテキスト形式のソースプログラムであれば、両方の言語の知識がある人であれば、エディターは非常に強力な編集機能を持っていますから、作業は正確で、安全に効率よく行えるはずです。(Any source programs such as COBOL and Fortran in text format, can be processed this way, provided the knowledge of both language is available.)

 

また背景にはAPL2のセッション・マネジャー画面が控えていますから、APLに変換した部分をどの部分でも、カット・アンド・ペーストでセッションマネジャー画面に移し、式の検証を平行して、進めることができるばかりでなく、同時に複数個のエディターを立ち上げることができますから、複数の作業バージョンを自由に駆使することもできます。(Furthermore, powerful APL2 session manager and interpreter is running a an independent task and APL expressions in development is easily tested (=executed) in session manager window. Besides you can run multiple editors concurrently to manipulate different versions at the same time.)

 

2.APLセッションから隷属APLセッションを立ち上げることの意味。(Significance of starting slave APL sessions from an APL session. =Calling APL from APL)

 

APL2に最近付与された重要な機能に従属APLセッションというものがあります。これはAPLプログラム実行中に、その支配下で、環境を隔離した別のAPLセッションを立ち上げ、自由に操作する機能です。これは外部関数APLPIAまたは補助プロセサーAP200によって、実現させることができますが、AP200を利用した場合はAPLの並行処理が可能になります。この機能を最近発生した、客先での作業中のプリント待ち時間の解消に関して、三枝由儀が解決した事例の報告書を紹介します。客先における待ち時間はたった45秒ですが、急ぎの作業の合間に発生することが、作業の生産性を大きく阻害する要因のひとつになることが発見されたのです。(Amongst the latest additions to the present-day APL2there is a concept of “Slave session”. This is an APL program to start another APL session and to control its behavior completely. This is realized either by way of an external function APL2PIA or an auxiliary processor AP200. In the case of AP200, it has an effect of running controlled parallel sessions. Here is a report by Yoshinori Saigusa on what he has done to solve an obstructing work flow interruption caused by an un-buffered printer.)        

 

報告書:三枝由儀(Report by Yoshinori Saigusa

 

題:Windows Workstation APL2 Version 2.0 における並行処理(Parallel session under Windows APL2 Version 2)

 

補助プロセッサーAP200を用いた並行処理について、その効率と信頼性の確認を行った。(I have tested the performance and reliability of the parallel procession by AP200) 

 

今回行った処理は、並行処理が有効と思われる帳票印刷処理である。帳票の印刷を行うには主にAP145を用いる方法と、プリンター制御コードを含むプリントデータファイルを作成してWinodowsPRINTコマンドを発行する方法があるが、用紙、印字方向、文字サイズなどを細かく制御するには後者の方法が必要になる。(The case I have adopted is a parallel processing in printer work. We use either AP145 printer functions or control command strings of the target printer, of which the last is often required when we have to select character or line spacing, paper tray selection etc., which is not available in AP145.)

 

この方法では環境によっては大量の帳票印刷を実行すると長い待ち時間が発生して事務処理効率を著しく損なう。APL2 Version 2.0 から追加されたAP200を用いた並行処理を行うと待ち時間を最

小限にすることが出来る。( I have found that the parallel processing has minimized the work interruption in using command string method.)

 

PRINTコマンドの発行はAP100もしくは外部関数HOSTで行うことが出来る。AP200で起動したセッションから上記の2つの方法でPRINTコマンドを発行するプリント関数を作成し、そのプリント関数を60回動かすテスト関数をそれぞれ3回ずつ実行し、それぞれの効率と信頼性を確認した。(print commands for the command strings can be issued either by AP100 or an external function HOST. I have tested various combinations and report on some significant points. The data used was 60 page of print, with each page containing 1000 bytes.Print command was issued for each page and the test program was run 3 times and the average was taken.)

 

1.AP100を用い、AP100の戻り値を確認せず、AP200の戻り値を確認する場合(Case 1. Use AP100 with no check of AP100 return code, and check AP200 return code.) 

 

処理時間(process time)40(sec)

印刷ミス(Print errors)12%

 

2.外部関数HOSTを使用し、AP200の戻り値を確認する場合(Case 2. Use external function HOST and check AP200 return code.)

 

処理時間(process time)40(sec)

印刷ミス(Print errors)0%

 

3.AP100を用い、AP100およびAP200の戻り値を確認しない場合(Case 3. Use AP100 and do not check return codes of both AP100 and 200)

 

処理時間(Process time)15(sec)

印刷ミス(Print errors)50%

 

4.外部関数HOSTを使用し、AP200の戻り値を確認しない場合(Case 4. Use HOST and do not check return code of AP200)

 

処理時間(Process time)15(sec)

印刷ミス(Print errors)0%

 

5.AP100を用い、AP100の戻り値とAP200の戻り値を確認する場合(Case 5. Use AP100 and check both AP100 and 200 return codes.)

 

処理時間(Process time)3分以上(>3min)

印刷ミス(Print errors)0%

 

なお、使用したプリンターはCANON LBP-350Printer 言語はLIPS3である。(Printer used was Canon LBP-350. Printer command used was LIPS 3)