teacup. [ 掲示板 ] [ 掲示板作成 ] [ 有料掲示板 ] [ ブログ ]


新着順:4/112 記事一覧表示 | 《前のページ | 次のページ》

COBOLの連番号

 投稿者:Masa  投稿日:2009年 8月20日(木)01時39分41秒
  通報 返信・引用
  COBOLの連番付与のmocascript拝見しました。すごくいいです。
COBOLに興味があり、最近OpenCOBOLで勉強を始めたのですが、COBOLが扱える適当な
エディタがなかなか見つからなかったので大変助かりました、ありがとうございます。
早速Peggyを入手して使わせて戴いております。

ところで、途中で行を挿入した場合には1の位の単位で
振ってくれるともっといいなと思い、僭越ですが、
下記のようにScriptを追加・変更してみたのですが、どうでしょうか。

  // 追加変数
    strPostSeqno   // 次の行の連番文字列
    intPostSeqno   // 次の行の連番数値
    ..........途中省略..........

    // 前行の一連番号を取得
    ..........途中省略..........

    // 次の行の一連番号を取得
    if ( theView.CP.line > 0 ) {
        strPostSeqno = theView.getTextAt(theView.CP.line + 1, 6);
        if ( strPostSeqno.search(/\d{6}/) != -1 ) {
            intPostSeqno = parseInt(strPostSeqno, 10);
        }
        else {
            intPostSeqno = -1;
        }
    }
    else {
        intPostSeqno = -1;
    }
    ..........省略..........

    // 前行及び現在行に応じて挿入する一連番号を決定
    if ( intCurrentSeqno >= 0 ) {
        // 現在行を取得できた場合
        // 次の行が取得できない場合=現在最終行の時は、新しい番号を振る
        if ( intPostSeqno == -1) {
            intInsertSeqno = (intCurrentSeqno - intCurrentSeqno % intSeqnoInterval)
                           + intSeqnoInterval;
        }
        // 次の行が取得できた場合は
        else {
            // もし、現在行と次の行の番号の差が2以上の場合は現在行+1を挿入
            if ( intPostSeqno > intCurrentSeqno + 1) {
                intInsertSeqno = intCurrentSeqno + 1;
            }
            // もし、現在行と次の行の番号の差が2未満の場合は一連番号が振れないので、現在行と同じものを指定
            else {
                intInsertSeqno = intCurrentSeqno;
            }
            strPreFixBreak = "";
        }
    }
 
 
》記事一覧表示

新着順:4/112 《前のページ | 次のページ》
/112