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 *

関連記事

AS400/IBMi エミュレータのカスタムセットアップ項目

どこかで控えておいた、クライアントアクセスをインストールする際にカスタマイズする項目の解説。   必要なプログラム サービス、セキュリティ、通信などのサポートを提供します。   オ …

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

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

AS400/IBMi DBCSでないフィールドの文字化け

PHPでデータを引っ張る際、お決まりの  

  をしているのだが、今回引っ張った文字がなぜか文字化けしていた。 & …

AS400/IBMi PHPで配列の文字コードを一気に変換する

AS400からODBCでデータを取得して表示したら、私の環境ではSJISのためそのまま画面に表示すると文字化けする。   ソースコードなどはUTF8で統一しているため、SJIS統一はしない方 …

AS400/IBMi CREATE TABLEで作られるカラム

物理ファイルをDDSで作るのではなく、SQLのCREATE TABLEで作る。 ひたすら物理ファイル畑でやってきた人にとっては、なんとなく怪しい匂いが香る。   なので実験してみることにしま …

Adsense広告




文字で検索

人気記事

なぜだか人気記事

読んでほしい順に