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 *

関連記事

WordPress Stinger8で固定ページにAdsense広告を表示する

なんでStringer8を使い出したんだろうか。もう経緯も忘れたが、Adsense広告も簡単に貼れるし、特に不自由はしていない。というかとても便利だ。   トップの画像がいまだにString …

エクセルVBA 汎用プログラム サンプル集

エクセルVBAの素晴らしさを伝えたいと思って動画を作っています。 正直私は人に教えられるほどスキルは高くありませんが、素晴らしさを伝えるくらいは出来ると思っております。 下記がその動画の1回目です。現 …

AS400/IBMi Laravel Ajax通信 エラー419 CSRFトークンの設置 JavaScript

基本私の記事はIBMi/AS400をベースにやっています。ご了承のほど。   LaravalではPOST通信時にCSRFトークンを送らないといけないのはすでに知っている。   なの …

AS400/IBMi 論理ファイルでJOINしても結合した側のカラムは主キーにできない

もう表題で話は完結しているのだが、AS400(IBM i)でJOINをした対象のファイルのカラムを主キーにして論理ファイルを作ろうと試行錯誤をしたが、結局できなかったという話。   IBMの …

AS400/IBMi Laravel-Excelで文字化けするので文字コードを変換する

Laravel-Excelというのを見つけたので使ってみたのだが、いかんせんAS400だと色々と面倒くさい。   AS400はEBCDICという文字コードらしく、そこからODBCかPDOで引 …

Adsense広告




文字で検索

人気記事

なぜだか人気記事

読んでほしい順に