メインコンテンツへスキップ

昔のdbMAGIC 登録リンク

コメント

13件のコメント

  • ISHIJIMA

    登録リンクありましたよ

  • tanda

    登録リンクは元祖dbMAGICからありましたよ。

  • nkmt

    バッチタスク、登録ではなくて、リンク 登録があったのですね。
    ありがとうございます。今見ているPGが1件だけの登録だけど
    バッチタスク、登録になっていたので。もちろんそれもOKですけど。

  • tanda

    昔は新規レコードの登録を行うには、登録リンクしか手がありませんでしたが、その後、登録バッチの機能が追加されて、それ以来、登録リンクはほとんど使われなくなりました。ただ、登録バッチを使い慣れていない人は昔ながらに、登録リンクでやっておられる人も多いようです。

  • tanda

    ちなみに、MagicのAPGで入出力等のバッチ処理が行われている部分は、内部的に登録バッチでしょうね。

  • tanda

    失礼、入出力ではなくて、入力です。

  • nkmt

    もう全くの無駄話になってしまいますが
    呼び出したいマスタのコード値を変数で入力すると
    照会リンク(COBOLで言うREAD INVALID)
    変数上でメンテして
    子タスクで登録バッチ(COBOLで言うWRITE)又は
    子タスクで修正バッチ(COBOLで言うREWRITE)又は
    子タスクで削除バッチ(COBOLで言うDELETE)
    Magicを教えてくれる人が誰もいなかった場合、もしかすると
    こんな作りにしていたかもしれませんね。

    私が作っている売上伝票入力PGなども、似たりよったりです。

    今はマスタメンテ等は、メインソースに指定する事が多いです。

  • nkmt

    tandaさん コメントありがとうございました。
    テキストファイルからの大量取込等は私もバッチ、初期モード=登録を使います。
    テキスト取込ではなく、1件だけ登録をしたい場合、バッチ、初期モード修正、終了条件=Y、
    の1回で終わるバッチタスクに「登録リンク」を指定します。
    この場合、1タスクで複数データに対して、登録リンクを指定できますし。

    tandaさんの言われる「登録リンクはほとんど使われなくなりました」はテキスト取込等の場合を言いたかったのですよね?


  • tanda

    テキスト取込みだけではなく、変数なども扱えますよ。テキスト取込みの場合は、EOFを判定するのが常ですが、変数などからの取り込みの場合は、終了条件のチェック時期を「A=後置」としてやるだけで、1レコードだけループして勝手に終わるという動作が実現できます。

    私も何10年か前に、この登録バッチによるサンプルプログラムをはじめて見たときは、目から鱗で感動した記憶があります。

    もちろん、昔ながらの登録リンクによる方法も間違いではありませんので、今でも使っていただいて問題はないと思います。Magicはどんどん進化していきますから興味が尽きませんね。

  • tanda

    ご参考までに、ヘルプからの抜粋を引用いたします。Magicの体験版にも掲載されています。

    -----
    [タスク終了条件]と[チェック時期]の例
    ●1つの行を処理する場合は、[タスク終了条件]を「Yes」に、また[チェック時期]を「A=後置」に設定します。
    ●どの行も処理しない場合は、[タスク終了条件]を「Yes」に、また[チェック時期]を「B=前置」に設定します。
    ●15の行を処理する場合は、[タスク終了条件]に式として「Counter()=15」を指定し、[チェック時期]を「A=後置」に設定します。
    -----

  • nkmt

    バッチタスクの終了条件の扱い方は承知しております。

  • tanda

    私の場合は、終了条件に感動したのではなく、チェック時期の「B=前置」と「A=後置」に感動しました。かれこれ15年くらい前になりますが。

  • nkmt

    新しい機能が増えいくのでありがたいですね。

サインインしてコメントを残してください。