IT関連

AS400/IBMi 物理ファイルとテーブル INTEGER系で違和感

投稿日:2020年7月7日 更新日:

SQLを使って物理ファイルではなくテーブルとしてファイルを作る。

 

その中でINT系で違和感があったので試した実験。

INT系なら何でもいいと思うが、今回はSMALLINTでカラムを作り、ここにSQLを使ってINSERT INTO してみる。

 

IBMのマニュアルを見る限りSMALLINTに入る値は-32768~+32767の間と決まっているがはたして・・。

  • 32767 → 入る
  • 32768 → エラー
  • -32768 → 入る

やはり値の制限は伊達ではないみたい。

SQLのSELECT文でファイルの中を見てもちゃんと表示されている。

 

しかし、SMALLINTを指定した場合、作られるカラムの桁数は4で、バイト数は2です。

AS400のQRY/400でみたところもLEN(4)のDEC(0)になっています。

でも5桁の数字が入るんですよね。

これはどういうことなのでしょう。

 

でもこれをQRY/400で確認してみると******表示されます。

UPDDTAで入力しようとしても4桁しか入りません。

恐らくSMALLINTは桁数を4しか保持しないから。

 

UPDDTAで3276と4桁だけ入力すると、QRY/400の表示は3,276とカンマ区切りになる。

 

ゆえにデータベースとしては-32768~+32767の枠は確保しているけど、AS400/IBMiのクライアントアクセスやACSでは認識しないし、操作もうまくいかないことがあるみたい。

そのファイルはWebやSQL限定で使うのならよさそうだけど、AS400と共用する場合は注意したほうが良さそう。

 

ちなみに数字、整数のなかでは

  • SMALLINT -32768から+32767
  • INTEGER -2147483648から+2147483647(20億)
  • BITINT -9223372036854775808 から +9223372036854775807

こうなる。

INT系は桁数指定できないみたいなので使い勝手はどうなのかな。

しかもフィールド属性はBだし。

DECで作るとPACになるので、整数もDECで作ったほうが無難っぽいけどマニュアルではダメと書いてありました。

うーん、謎は深まるばかり。

スポンサーリンク




スポンサーリンク




-IT関連
-, ,

執筆者:


comment

Your email address will not be published. Required fields are marked *

関連記事

Windows10 パスを通すとは、パスを通す方法

パスを通す方法だけを書こうと思ったけど、わかりやすくその意味も書こうと思います。 説明が下手なのでむしろわかりにくいかも・・。   パスを通すとは 普通のソフト、例えばメモ帳のようなソフトは …

ExcelVBA マクロ アドインをエクセル本体に登録する方法

エクセルで作ったマクロをエクセル本体に保存して、いつでも使えるようにする方法。 要するにファイルではなくエクセル本体に保存する方法。 今さら当たり前の話ですが、備忘録として載せておきます。 &nbsp …

AS400/IBMi からデータを取得 ExcelVBA VB.NET設定編

注意 これは私の環境下における私の備忘録です。お使いの環境によっては内容が異なる場合があります。システム管理者でない方は絶対にやらないでください。システムにはログが残るものなので、万が一があればクビに …

WordPress プラグインでディレクトリを作成できませんでしたと怒られる

ワードプレスをまっさらにして戻ってきたの投稿以来、ちょこちょこ投稿を重ねている。     そこで表でも作りたいなと思ったので、プラグインのTablePressでも入れようかと思った …

AS400/IBMi ACSの印刷設定

ACSの導入テスト時でレーザープリンターの設定でハマったので備忘録。 テストはMacで行いましたが、Windowsも同じだと思います。   現状 使用プリンターはキャノンLBP8610という …

Adsense広告




文字で検索

人気記事

なぜだか人気記事

読んでほしい順に