ホーム › Storage.Jet › JET_RECSIZE2
JET_RECSIZE2
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| cbData | ULONGLONG | 8 | +0 | +0 | レコードの固定列・可変列データの合計バイト数。 |
| cbLongValueData | ULONGLONG | 8 | +8 | +8 | ロング値(BLOB等)のデータ合計バイト数。 |
| cbOverhead | ULONGLONG | 8 | +16 | +16 | レコードのオーバーヘッド(管理領域)バイト数。 |
| cbLongValueOverhead | ULONGLONG | 8 | +24 | +24 | ロング値に伴うオーバーヘッドバイト数。 |
| cNonTaggedColumns | ULONGLONG | 8 | +32 | +32 | タグなし列(固定/可変列)の数。 |
| cTaggedColumns | ULONGLONG | 8 | +40 | +40 | タグ付き列の数。 |
| cLongValues | ULONGLONG | 8 | +48 | +48 | ロング値の個数。 |
| cMultiValues | ULONGLONG | 8 | +56 | +56 | 多値列の値の総数。 |
| cCompressedColumns | ULONGLONG | 8 | +64 | +64 | 圧縮された列の数。 |
| cbDataCompressed | ULONGLONG | 8 | +72 | +72 | 圧縮後のレコードデータバイト数。 |
| cbLongValueDataCompressed | ULONGLONG | 8 | +80 | +80 | 圧縮後のロング値データバイト数。 |
各言語での定義
#include <windows.h>
// JET_RECSIZE2 (x64 88 / x86 88 バイト)
#pragma pack(push, 4)
typedef struct JET_RECSIZE2 {
ULONGLONG cbData;
ULONGLONG cbLongValueData;
ULONGLONG cbOverhead;
ULONGLONG cbLongValueOverhead;
ULONGLONG cNonTaggedColumns;
ULONGLONG cTaggedColumns;
ULONGLONG cLongValues;
ULONGLONG cMultiValues;
ULONGLONG cCompressedColumns;
ULONGLONG cbDataCompressed;
ULONGLONG cbLongValueDataCompressed;
} JET_RECSIZE2;
#pragma pack(pop)using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, Pack = 4, CharSet = CharSet.Unicode)]
public struct JET_RECSIZE2
{
public ulong cbData;
public ulong cbLongValueData;
public ulong cbOverhead;
public ulong cbLongValueOverhead;
public ulong cNonTaggedColumns;
public ulong cTaggedColumns;
public ulong cLongValues;
public ulong cMultiValues;
public ulong cCompressedColumns;
public ulong cbDataCompressed;
public ulong cbLongValueDataCompressed;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, Pack:=4, CharSet:=CharSet.Unicode)>
Public Structure JET_RECSIZE2
Public cbData As ULong
Public cbLongValueData As ULong
Public cbOverhead As ULong
Public cbLongValueOverhead As ULong
Public cNonTaggedColumns As ULong
Public cTaggedColumns As ULong
Public cLongValues As ULong
Public cMultiValues As ULong
Public cCompressedColumns As ULong
Public cbDataCompressed As ULong
Public cbLongValueDataCompressed As ULong
End Structureimport ctypes
from ctypes import wintypes
class JET_RECSIZE2(ctypes.Structure):
_pack_ = 4
_fields_ = [
("cbData", ctypes.c_ulonglong),
("cbLongValueData", ctypes.c_ulonglong),
("cbOverhead", ctypes.c_ulonglong),
("cbLongValueOverhead", ctypes.c_ulonglong),
("cNonTaggedColumns", ctypes.c_ulonglong),
("cTaggedColumns", ctypes.c_ulonglong),
("cLongValues", ctypes.c_ulonglong),
("cMultiValues", ctypes.c_ulonglong),
("cCompressedColumns", ctypes.c_ulonglong),
("cbDataCompressed", ctypes.c_ulonglong),
("cbLongValueDataCompressed", ctypes.c_ulonglong),
]#[repr(C, packed(4))]
pub struct JET_RECSIZE2 {
pub cbData: u64,
pub cbLongValueData: u64,
pub cbOverhead: u64,
pub cbLongValueOverhead: u64,
pub cNonTaggedColumns: u64,
pub cTaggedColumns: u64,
pub cLongValues: u64,
pub cMultiValues: u64,
pub cCompressedColumns: u64,
pub cbDataCompressed: u64,
pub cbLongValueDataCompressed: u64,
}import "golang.org/x/sys/windows"
type JET_RECSIZE2 struct {
cbData uint64
cbLongValueData uint64
cbOverhead uint64
cbLongValueOverhead uint64
cNonTaggedColumns uint64
cTaggedColumns uint64
cLongValues uint64
cMultiValues uint64
cCompressedColumns uint64
cbDataCompressed uint64
cbLongValueDataCompressed uint64
}type
JET_RECSIZE2 = packed record
cbData: UInt64;
cbLongValueData: UInt64;
cbOverhead: UInt64;
cbLongValueOverhead: UInt64;
cNonTaggedColumns: UInt64;
cTaggedColumns: UInt64;
cLongValues: UInt64;
cMultiValues: UInt64;
cCompressedColumns: UInt64;
cbDataCompressed: UInt64;
cbLongValueDataCompressed: UInt64;
end;const JET_RECSIZE2 = extern struct {
cbData: u64,
cbLongValueData: u64,
cbOverhead: u64,
cbLongValueOverhead: u64,
cNonTaggedColumns: u64,
cTaggedColumns: u64,
cLongValues: u64,
cMultiValues: u64,
cCompressedColumns: u64,
cbDataCompressed: u64,
cbLongValueDataCompressed: u64,
};type
JET_RECSIZE2 {.packed.} = object
cbData: uint64
cbLongValueData: uint64
cbOverhead: uint64
cbLongValueOverhead: uint64
cNonTaggedColumns: uint64
cTaggedColumns: uint64
cLongValues: uint64
cMultiValues: uint64
cCompressedColumns: uint64
cbDataCompressed: uint64
cbLongValueDataCompressed: uint64align(4)
struct JET_RECSIZE2
{
ulong cbData;
ulong cbLongValueData;
ulong cbOverhead;
ulong cbLongValueOverhead;
ulong cNonTaggedColumns;
ulong cTaggedColumns;
ulong cLongValues;
ulong cMultiValues;
ulong cCompressedColumns;
ulong cbDataCompressed;
ulong cbLongValueDataCompressed;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; JET_RECSIZE2 サイズ: 88 バイト(x64)
dim st, 22 ; 4byte整数×22(構造体サイズ 88 / 4 切り上げ)
; cbData : ULONGLONG (+0, 8byte) qpoke st,0,値 / qpeek(st,0) ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; cbLongValueData : ULONGLONG (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; cbOverhead : ULONGLONG (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; cbLongValueOverhead : ULONGLONG (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; cNonTaggedColumns : ULONGLONG (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; cTaggedColumns : ULONGLONG (+40, 8byte) qpoke st,40,値 / qpeek(st,40) ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; cLongValues : ULONGLONG (+48, 8byte) qpoke st,48,値 / qpeek(st,48) ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; cMultiValues : ULONGLONG (+56, 8byte) qpoke st,56,値 / qpeek(st,56) ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; cCompressedColumns : ULONGLONG (+64, 8byte) qpoke st,64,値 / qpeek(st,64) ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; cbDataCompressed : ULONGLONG (+72, 8byte) qpoke st,72,値 / qpeek(st,72) ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; cbLongValueDataCompressed : ULONGLONG (+80, 8byte) qpoke st,80,値 / qpeek(st,80) ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global JET_RECSIZE2, pack=4
#field int64 cbData
#field int64 cbLongValueData
#field int64 cbOverhead
#field int64 cbLongValueOverhead
#field int64 cNonTaggedColumns
#field int64 cTaggedColumns
#field int64 cLongValues
#field int64 cMultiValues
#field int64 cCompressedColumns
#field int64 cbDataCompressed
#field int64 cbLongValueDataCompressed
#endstruct
stdim st, JET_RECSIZE2 ; NSTRUCT 変数を確保
st->cbData = 100
mes "cbData=" + st->cbData