世の中って、もっと厳しいですよ、JDEさん
今日は、JDEそのものよりも、その教育体制をレポートしましょう。勘違いしないで欲しいのですが、誰かに恨みがある訳ではありません。正直に自分が体験した事を書くだけです。自分は、WorldSoftwareの「共通基盤」、「技術基盤」、「ワールドライター」、「在庫管理」、「購買管理」、「受注管理」と、トレーニング?(ありゃ、訓練でも何でもないな。ただ、お金払って、トレーナーの退屈な話しを我慢して聞くだけ)に出てきました。その上で、正直に言いましょう。
「これで1日5万も取るつもりなの?」
が、毎回出席する度にわき上がる感想です。ひどい場合は、席に頬づえをついて、テキストを一切参照せず、AS/400の端末をプロジェクタに投影して、赤のレーザーポインターで、画面の一部を示して、とうとうと説明するだけの人もいました。そのプロジェクタも、ピンぼけのため、眼精疲労、甚だしかったです。見づらい画面に嫌気がさして、そのとき話題となっているトピックのテキストのページを探して(それすら教えてくれない)、やっと見つけたころには、話しはどんどん進んでいます。ぼーぜん。これがJDEのトレーニングなんだぁ。やがて、
「これだけでは、分からないでしょうから演習をしましょう」
と言い放つ。
「どのお口が言うのかなぁー?」
と、つねり上げてやりたい。それなら、ずっと、演習だけの方が、ましです。
ダンプが走るぞ!?
ところが、その演習も、うまく行かない事が多いのです。どうやら、トレーナーも(トレーニーも)、複雑奇怪、微に入り細にわたる、パラメータ群に手玉に取られているのが現状らしいです。「演習問題」ですよ!たかが「演習問題」!出来て当たり前なものが、うまく動かないなんて、信じられません。それでも、プロか!!と怒鳴りたくなります。
それから、入力中にずーと、入力不可になるので変だと思って、SysReqで調べたら、その入力プログラム、QPPGMDMPを書き出していた。「ダンプ」ですよ!「10進数エラー」と「レコードロック」と「配列の指標エラー」。プログラムメッセージで落ちないのは、エラールーチンに飛んでいるからのようです。そのサブルーチンの中でDUMP命令(ちなみにRPGは、全て、OPMでした)を入れているようです。ユーザーはエラーに気づかず、ただ、遅いとしか考えていません。言っておきますが
「ただ演習問題を、演習テキストの指示通りに実行しただけ」
なんですよ。信じられません。もっと驚くのは、他のトレーニーたち。ただ、我慢して、画面を見つめるだけ。やがて、ダンプを書き終えて画面が解放されると、ほっとして、何事もなかったように、その先を進める。私もAS/400のプログラマー出なければ、気づかなかったかもしれません。頼りのトレーナーは、プログラムなんて縁遠い存在らしいです。「10進データエラーでダンプが出ています」と言っても、その意味も知らないらしい。
多分、このエラーは、本社にすら報告していないでしょう。(そうでしょう?JDEさん?QPPGMDMPはみんなQEZJOBLOGに入っていますよね。あれって、クリーンアップの対象なんでしょう?!消えちゃいますよ??)本来は、フィードバックすべきです。もしかして、今まで、トレーナーも、この処理がやや遅いくらいにしか、考えていないで、まさか、プログラムがダンプを書き出しているなんて、夢にも思わなかったのかもしれませんね。はー。まだまだ、報告されていないバグが山ほど有りそうです。QPPGMDMPを書き出したら、JDEに報告するように要請すべきでしょう。それも、懸賞付きで。でなきゃ、だれも面倒でやりませんよね。
そうそう、中には、ちゃんと教えてくれるトレーナーもいます。私の知っている限りでは、一般的には彼女は普通のトレーナー(インスト)なのですが、あそこでは、希少価値と言えるでしょう。絶対考課でいうと「普通」、相対考課でいうと「優秀」です。
AS/400の標準の画面
いずれ、AS/400の対話型画面の標準(OS400の画面を考えれば良いでしょう)に関しても、このサイトで詳しく取り上げようと思うのですが、皆さんは、ご存じですか?マニュアル「適用業務画面プログラミング:5.1
第21章 IBM AS/400 型画面を設計する」を見て下さい。特に、以下のCUAは大事です。
5.1.10 共通ユーザー・アクセス(CUA)基本レベル・モデルを設計する
CUAでは、既存の単純なトランザクション型の適用業務についての基本モデルを定義し、その適用業務のユーザー・インターフェースを、CUAで定義されている標準インターフェース要素を取り入れたものに設計し直そうとするプログラマーに役立つようにしてあります。基本モデルと他のCUAモデルの主要な違いは、基本モデルが処置本位であって、処置からオブジェクトへの流れに従うのに対し、他のCUAモデルはオブジェクトから処置への方向性をもっていることです。
CUA 基本モデルは、既存の AS/400
インターフェースに密接に対応しています。ユーザーは、普通、メニューまたはリストから処置または作業を選択し、次にその処置の対象となるオブジェクトを選択するよう要求されます。 |
今までも、何度かお話ししましたが、自分は、帳票更新系よりも、対話型のプログラムの方が好きです。「えー?」と言う人もいるでしょうが、自分の工夫次第で、使いやすく、見やすく、ユーザーの要求に、ストレスを与えずに応答する、これが、私の理想とする、プログラムです。いままで、随分とたくさんのプログラムを作ってきました。そして、悟りました。やはりAS/400の画面が一番使いやすいと。OSの画面やPDMの画面は、長い間使っていて、ストレスを感じたことがありません。勿論、毎回「すばらしい」なんて、感動はしていません。でも、重要なのは、うんざり、いらいら、むかむか、「しない」画面レイアウトやキーボード周りは、大切です。
サブファイルの最終行を高輝度で表示してる。それも変なのだが、さらに、なにか選択すると、その高輝度が無くなってしまう。
選択肢を4で選択して、実行キー(心臓に悪い):削除ではなく、リスト項目の選択なのです。
入力後、「****を受け入れるならYを入力_****」はカッコ悪すぎ。何とかならない?いちいち、英語のキーボードの「Y」を入力させるのは、処理能力が落ちるでしょう?機能キーにしてほしいよ。
やたらネストの深いウィンドウ。
などなど。考えて欲しいよねー。出来たら、別のマシンに移植して、AS/400から出ていって欲しいなぁ。
考えさせられるエラーメッセージ
ところで、プログラマーの方に考えて欲しい、ことがあります。自分も含めてですが、エラーメッセージが場合によって、苦しむユーザーを、力強く救済しうると言うことです。以下は、私が体験した実例です。
演習中、日付の設定で、何か単価が決まるところで、入力ミスをしました。入力していると、それが原因で、エラーメッセージが出ます。「レコードが見つからない」と出ます。はぁ?何も得意先や仕入先は正しいし、品目コードも正しい。それなのに、なんで「レコードが見つからない」というエラー何だろうか?もしかして、このメッセージそのものがバグでは無いのか、とまで思いました。RPG一筋15年になる私が、そう思ったのです。プログラマー仲間から、「スーパープログラマー」と呼ばれた、私がそう思ったのです。
しかし、トレーナーは簡単に、私が日付の入力ミスをしていることを告げました。つまり、その日付を設定した日付の範囲の適当な日付にすれば、別のマスターで、単価が決まるのです。つまり、自分は、日付を古いものにしたので、「レコードが見つからない」と出たのです。もし、「日付が単価の判定範囲に無い」とか出てくれれば、良いのですが。なにしろ、日付の入力フィールドはエラー反転なんかもしていない。(日付の妥当性エラー
- つまり、13月 -
なんていうのなら、エラーとなるでしょうが、この場合、論理的に検索した結果、無かったのです。)同じようなことは、この他にも考えられますよね。OPNQRYFで選択して処理するとき、選択する値を間違えただけなのに、「レコードがない」、と出る、不親切さ。そうじゃないだろう、と思うのは私だけだろうか?
さりとて、皆さん、これは簡単そうで、実は簡単では無いのです。そう、「レコードがない」というメッセージは、漠然としていますが、正しいのです。有るファイルにCHAINして、CHAINエラーなら、単純にそのメッセージを出した結果がこれなのです。CHAINではなく、全件読み込み、「ああ、入力日付が、範囲の中にないな」ということで、違うメッセージを出す、というのは、かなり、プログラムとしては無駄に資源を使ってしまいます。何のための、キーアクセスなのでしょうか。
こんな時、OS400は、どうしているでしょう。思い起こせば、OS400は、考えられるエラーの原因を、そのメッセージのセカンドレベルに出していることが多いです。そうです。そのエラーを見て、戸惑うユーザーの為に、あり得るエラーの原因を予め特定して、それらを箇条書きにしています。多分、これが、最も合理的でしょう。
つまり、出来れば、
エラー:単価レコードが見つかりません。 原因:以下のことが考えられます。
- 入力されたxx日付が適切でないために、単価マスタからデータを読み込めなかった.....
- 適切な商品情報が..........です。
- ...云々
|
が出れば、ベストです。
これも、大変だって?
ちょっと待って下さい。JDEって、そんなに安いものではないのですよ。お金出して買っているんですよ。
以上
1999/3/18 |