*

[jt400, Java]AS400のファイルを更新するためにREADした時にRecord Lockをかける

公開日: : 最終更新日:2015/04/17 AS400, java

RPG3なんかだと更新用のファイルはREADの瞬間に自動でレコードロックがかかります。
で、それをjt400のAS400Fileクラスを使った場合のレコードロックの掛け方を残しておきます。
こんな情報を必要とする人はいないと思いますが……。

ちなみにjt400はデフォルトだとREADした後にレコードロックがかからないので注意してください。

    public static void main(String[] args){
        AS400 sys = new AS400();
        QSYSObjectPathName path = new QSYSObjectPathName("HOGEDLIB", "HOGEFILE", "HOGEFILE", "MBR");
        SequentialFile file = new SequentialFile(sys, path.getPath());
        RecordFormat recFmt = new RecordFormat("HOGEFILER");    // 文字列はHOGEFILEのレコード様式名を指定します。
        recFmt.addFieldDescription(new CharacterFieldDescription(new AS400Text(10, 5026), "FILER"));    // 最初桁は10桁の文字フィールド(FILERという名前)を定義しています。
        try {
            file.setRecordFormat(recFmt);
            file.open();
            file.startCommitmentControl(AS400File.COMMIT_LOCK_LEVEL_CHANGE);
            file.commit();
            Record rec;
            if((rec = file.read(1)) != null){
                System.out.println("このタイミングではレコードロックがかかっています。");
                file.update(rec);
                System.out.println("このタイミングでレコードロックが解除されます。");
            }
            file.close();
        } catch (Exception ex) {
            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
        }
        
    }

file.commit(); を実行するまで、startCommitmentControlの変更が反映されないみたいです。
ちなみに今回はファイルのDDSを定義しないで、内部定義チックに記述してます。
XMLで定義できるのでそっちのがお勧めです。

ad

関連記事

logo

[AS400]5250エミュレータの挙動がおかしいときの対処

というわけで前回から引き続き解決編です。 ちなみに前回は↓こんなん↓になったりしてましたね。

記事を読む

logo

[Java, jt400]AS400のCLからJavaをCallする方法。

久しぶりにAS400ネタ。 CLからJavaを呼び出したい!! JavaをCLから実行したい

記事を読む

AS400_

[java, JDBC]AS400からOracleに接続をする

javaでAS400からOracleに接続する必要があったときのメモを清書。 AS400のPG

記事を読む

logo

[C#]AS400に対してODBC接続でトランザクションによりSQLを実行する。

データベースに対するトランザクション処理 と銘打ちましたが、要するに安全にinsert文などを実行

記事を読む

wannabenote

[jt400, java]AS400用のJavaをPCで実行したとき、終了しない理由

終了しない JavaでAS400をいじってると、たまに、終了しないんです。 プロセスが残ったまま

記事を読む

logo

AS400のインターフェースファイル

AS400にODBC接続するときに、ライブラリ名一覧が欲しい場合があります。 さて、それでは、

記事を読む

logo

[jt400, Java]レコードレベルアクセスの実現

到着順 AS400のファイルシステムですと、レコードを読み込んで、処理して、出力して、次のレコード

記事を読む

logo

[SQL, DB2]FETCH FIRSTで指定した行数データを取得する(営業日計算)

営業日計算 営業日を計算するのは結構面倒です。 特に独自のテーブルだと非常に厄介です。 例

記事を読む

logo

[C#]AS400のメンバーを指定してデータにアクセスする

◆前提条件◆ CliantAccessをインストールしている。 .NET Framework3.

記事を読む

logo

[Java, DBUtils]ApacheのDBUtilsを利用して、データベースにアクセスする。

手抜きがしたい オブジェクト指向をする上で、o/r mapperが欲しくなります。 かなーり昔に

記事を読む

ad

Message

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

ad

  •  Auther;わなび

     「オープン系得意だよね? 俺のPCの調子悪いんだけど」という無茶振りから解き放たれゲームエンジニアに。
    C#とかUnityを扱います。
    Twitterフォロー大歓迎です。
    githubアカウント→wannabenote
  • follow us in feedly
PAGE TOP ↑