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

 投稿者
  題名
  内容 入力補助 youtubeの<IFRAME>タグが利用可能です。(詳細)
    
 URL
[ ケータイで使う ] [ BBSティッカー ] [ 書込み通知 ] [ 検索 ]


SUBSTRについて

 投稿者:初心者  投稿日:2010年10月26日(火)15時56分24秒
  ILERPGにDB2コマンドのSUBSTRを組み込んでCRTSQLRPGIでプリコンパイルをしたところ
『関数 SUBSTRING の引き数 3 が正しくない 』のエラーになります。
エラーを取除く方法は無いでしょうか
変数定義、SQLは以下の通りです。
Z-ADD     6             W6                2 0

C/EXEC SQL
C+         DECLARE MA01MC1 CURSOR FOR
C+         SELECT
C+                 DENKD ,
C+                 KAMOKCD ,
C+                 KINGAKU ,
C+                 SZEIPR
C+         FROM  SDBMA01M
C+         WHERE TRHKSKKD = '01'
C+           AND TRHKSKCD = :TK08M_TRHKSKCD
C+           AND SUBSTR(KIKBI,1,:W6) = :W#YYMM
C+           AND DENKD IN('24','34','35','36')
C/END-EXEC
 
 

未入力項目

 投稿者:いわた  投稿日:2010年 8月26日(木)16時07分8秒
  覚蓮坊様,柿の種、様
ありがとうございます。
COMP(NE ' ') に DSPATR(MDT) を追記したら、正常に動作しました。
 

未入力項目

 投稿者:柿の種、  投稿日:2010年 8月26日(木)13時50分29秒
  見かけが空白でも、00と40とが有ります。
00は40に変換されて、プログラムに渡されるはずだが、OSに不具合がみられる。
できるだけRPGで組んでください。
 

MDTビットで

 投稿者:覚蓮坊  投稿日:2010年 8月24日(火)06時33分8秒
  今、出張先でテストをすることができないので、不確かな回答になりますが・・・

たしかMDTビットがオンかオフかを、標識に関連付けることが、できたのでは
なかったかと思っています。
今週末には帰京予定なので、戻り次第テストしてみたいと思います。
それまで、少しお待ちください。
 

未入力項目でのエラーについて

 投稿者:いわた  投稿日:2010年 8月23日(月)13時49分57秒
  前回の質問分は自己解決できたので、こちらを確認できておらず御礼が遅くなりました。
覚蓮坊様,柿の種、様,SolidBalloon様ありがとうございます。

また質問で申し訳ないのですが、お知恵をお借りしたいと思います。
現在、画面上の入出力項目を「未入力ならばエラーを発生させる」という仕様にしたいと思っております。

CHECK(ME) を指定すれば問題なくいくと思っていたのですが、CHECK(ME)を指定した場合、値が打鍵せずに入力済みの状態だとエラーが発生してしまいます。
※初期値やデータ読込後にそのまま操作する場合など

なので、次に COMP(NE ' ') を指定したのですが、この場合は何かしら打鍵しないとエラーが発生しません。
※上記と逆で初期値がBLANKの場合などはエラーが発生してくれません。

何かしら値が入っていればエラーを出さず、値が入っていなければエラーが出るという仕組みはA仕様書では作れないのでしょうか?
 

Re:I仕様書について

 投稿者:初心者  投稿日:2010年 8月11日(水)08時34分5秒
編集済
  返信、遅くなり申し訳ありません。
柿の種、さん、御回答の程、有難うございました。
おかげで、間違った解釈を回避することができました。
 

条件に該当したデータが対象

 投稿者:柿の種、  投稿日:2010年 8月 6日(金)09時35分1秒
  条件に該当したデータが対象 これは、間違い。
条件に該当すると、標識01がONになる。
(該当しないレコードが来ると、プログラムは異常停止します。)
 

I仕様書について

 投稿者:初心者  投稿日:2010年 8月 5日(木)08時53分35秒
  初めまして、急遽、RPG言語をする事になりました。
現在、ソ-ス上以下の内容がI仕様書上で定義されているのですが、
この意味は、
WORKレコードの47バイト目='1' OR
              48バイト目='1' OR
              49バイト目='1' OR
              50バイト目='1' OR
              51バイト目='1' OR
              52バイト目='1' OR
              53バイト目='1' OR
              55バイト目='1' OR
              56バイト目='2' OR '3' OR '4'
の条件に該当したデータが対象と考えて良いのでしょうか?
ご指導の程、宜しくお願いします。

IWORK      AA  01   47 C1
I         OR   01   48 C1
I         OR   01   49 C1
I         OR   01   50 C1
I         OR   01   51 C1
I         OR   01   52 C1
I         OR   01   53 C1
I         OR   01   55 C1
I         OR   01   56 C2
I         OR   01   56 C3
I         OR   01   56 C4
 

試してみました

 投稿者:覚蓮坊  投稿日:2010年 8月 5日(木)08時15分29秒
  基本となるレコードの読み取りと、その前後のレコードの読み取りと
話を二つにわけて考えた方がよさそうです。

次のようなソースで試してみました。

RPGソース
 FMT *  ..... *. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7
        *****************  データの始め  **************************************
0001.00      **---------------------------------------------------------------
0002.00      ** ID   : RPG62
0003.00      ** NAME : CHAIN,READ,READP
0004.00      **---------------------------------------------------------------
0005.00      H            Y-
0006.00      F*---------------------------------------------------------------
0007.00      FFILE1   IF  E           K        DISK
0008.00      C*---------------------------------------------------------------
0009.00      C           'K3'      CHAINFILE1R               99
0010.00      C           DTA01     DSPLY
0011.00      C                     READ FILE1R                   99
0012.00      C           DTA01     DSPLY
0013.00      C           'K3'      CHAINFILE1R               99
0014.00      C                     READPFILE1R                   99
0015.00      C           DTA01     DSPLY
0016.00      C                     SETON                     LR
0017.00      C                     RETRN
        *****************  データの終り  **************************************


FILE1のデータ
*...+....1
K1DATA01..
K2DATA02..
K3DATA03..
K4DATA04..
K5DATA05..
K6DATA06..
K7DATA07..
K8DATA08..
K9DATA09..

実行結果

> CALL  TESTLIB/RPG62
  DSPLY  DATA03..
  DSPLY  DATA04..
  DSPLY  DATA02..
 

結果:READとREADPだけでうまくいく。
 

1つ前のレコード

 投稿者:柿の種、  投稿日:2010年 8月 4日(水)10時17分16秒
  1つ前のレコードには、位置きめは、できません。
SETLL SETGT は 同一キー または、レコードの間 になります。
同一なら、2回戻れば、いいだけです。
 

レンタル掲示板
/17