|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
変数宣言要否 |
不要(変数名の後ろに記号を付けて明示することも可能) |
不要 |
不要
Option Explicitを付ければ必須 |
必須 |
必須 |
|
ローカル変数は必要 |
必須(ブロックの先頭) |
必須 |
必須 |
不要(いきなり使うのはエラー。宣言か代入をしておけば可) |
必須 |
なし |
必須 |
不要 |
変数名 |
英大文字+英数字
(2文字以内) |
英字+英数字
全角文字 |
英字+英数字
(255文字以内) |
|
英字+英数字 |
英大文字+英数字 |
$英字+英数字
@英字+英数字
%英字+英数字 |
英字+英数字 |
英字+英数字 |
英字+英数字
全角文字 |
英小文字+英数字
全角文字 |
英字+英数字 |
なし |
英字+英数字 |
英字+英数字
|英数字| |
型(整数) |
DEFINT (又は変数名の末尾に「% 」) |
Byte・Integer・Long |
Byte・Integer・Long |
Byte・Short・Integer・Long
System.Byte・Int16・Int32・Int64 |
integer |
BIN FIXED・BIT |
型という概念は無い。演算子によって文字か数値として扱われる。 |
char・short・int・long |
char・short・int・long・BYTE・WORD・DWORD |
byte・short・int・long |
なし |
|
NUMBER
INTEGER |
BINARY_INTEGER
PLS_INTEGER
INTEGER |
|
型(浮動小数) |
DEFSNG (又は変数名の末尾に「! 」)
DEFDBL (変数名の末尾に「# 」) |
Float・Double |
Single・Double |
Single・Double
System.Single・Double |
real |
DEC FLOAT |
float・double |
float・double |
float・double |
なし |
|
|
|
real
short-float
single-float
double-float
long-float |
型(固定整数・小数) |
なし |
Currency |
Currency |
Decimal
System.Decimal |
|
DEC FIXED・PIC |
なし |
|
BigDecimal |
なし |
|
NUMBER |
NUMBER |
integer |
型(分数) |
なし |
|
なし |
|
|
|
|
|
|
なし |
|
|
|
ratio
例→3/2 |
型(複素数) |
なし |
|
なし |
|
|
|
|
|
|
なし |
|
|
|
complex
例→#C(5 3) |
型(1文字) |
なし |
|
なし |
Char
System.Char
定数は「"字"c」 |
char
定数は「' 」で囲む |
|
char (1byte)
定数は「' 」で囲む |
char (1byte)
定数は「' 」で囲む |
char (2byte)
定数は「' 」で囲む |
なし |
|
|
|
character
定数は「#\ 」を前に付ける |
型(文字列) |
DEFSTR (又は変数名の末尾に「$ 」) 定数は「" 」で囲む |
String 定数は「" 」で囲む |
String 定数は「" 」で囲む |
String
System.String 定数は「" 」で囲む |
(char の配列)
定数は「' 」で囲む |
CHAR
定数は「' 」で囲む |
(char の配列)
定数は「" 」で囲む |
CString 定数は「" 」で囲む |
String 定数は「" 」で囲む |
なし |
string 定数は「" 」で囲む |
CHAR
VARCHAR2
CLOB
定数は「' 」で囲む |
CHAR
VARCHAR2
CLOB
定数は「' 」で囲む |
string
定数は「" 」で囲む |
型(真偽値) |
なし
真:0以外(-1 )、偽:0 |
Boolean
真:True 、偽:False |
Boolean
真:True 、偽:False |
Boolean
System.Boolean
真:True 、偽:False |
Boolean
真:true 、偽:false |
|
なし
真:0以外(1 )、偽:0 |
BOOL
真:0以外(TRUE )、偽:FALSE ANSI C++ではbool、true、false |
boolean
真:true 、偽:false |
真:true 、偽:false |
bool
真:true 、偽:false |
|
BOOLEAN
真:TRUE 、偽:FALSE 、その他:NULL |
真:t (nil 以外)、偽:nil |
型変換(キャスト) |
なし |
|
|
CType(値, 型)
DirectCast(値, 型)
CByte(値)・CShort(値)・CInt(値)・CStr(値)… |
|
|
(型)値 |
(型)値
型(値) |
(型)値 |
なし |
(型)値
値 as 型…変換不能な場合はnullになる |
CAST(値 AS 型) |
CAST(値 AS 型) |
(coerce 値 型) |
型種類取得 |
なし |
TypeName(変数)
VarType(変数) |
TypeName(変数)
VarType(変数) |
変数.GetType()
TypeOf 変数 |
|
なし |
なし |
なし
ANSI C++ではtypeid(型)、typeid(変数) |
変数.getClass()
型.class |
typeof(変数)
型名が出るわけではない |
変数.GetType()
typeof(型) |
DUMP(値) で表示される「Typ 」 |
DUMP()は使えない |
(type-of 値) |
型チェック |
なし |
|
|
TypeOf 値 Is 型 |
|
|
|
|
|
値 instanceof 型 |
typeof(変数)!="undefined" |
値 is 型 |
|
|
(typep 値 '型) |
グローバル変数宣言 |
変数は全てグローバル |
関数・サブリーチンの外で宣言 |
|
Sharedを付けて宣言
あるいはブロック内でStaticを付けて宣言 |
|
ブロックの外で宣言 |
|
関数の外で宣言 |
関数の外で宣言 |
なし |
関数の外で宣言 |
|
|
|
defvar
defparameter |
ローカル変数宣言位置 |
ローカルという概念なし |
関数・サブルーチン内で自由 |
|
ブロック内で自由 |
定位置(programとbeginの間) |
ローカルという概念なし? |
自由 |
ブロックの先頭 |
ブロック内で自由 |
ブロック内で自由 |
関数内で自由 |
|
なし |
DECLARE部で宣言 |
letの先頭 |
変数宣言(定義) |
DEFDBL A-B
→AとBで始まる変数はDBL
又は宣言せずに接尾辞を付けて(例:I% ,C# ,A$ )いきなり使うことも可 |
Dim 変数 As 型,変数 As 型
型を省略するとVariant。
「Dim A,B As 型 」→AはVariantになる。
MSX-BASICのような接尾辞も有(例:I%,C#,A$,L&) |
Dim 変数, 変数
型は指定できず、Variantになる。しかし内部的には色々な型を持っている |
Dim 変数 As 型
Dim 変数 As 型 = 初期値
Dim 変数 As New 型 |
var 変数,変数: 型; |
DCL 変数 型,
変数 型;
DCL 変数 型 INIT(初期値); |
my $変数;
my ($変数,$変数);
my $変数=初期値; |
型 変数,変数;
型 変数=初期値; |
型 変数,変数;
型 変数=初期値; |
型 変数,変数;
型 変数=初期値; |
var 変数,変数
var 変数=初期値 |
|
項目名 型,
項目名 型
CREATE TABLE |
変数 型;
変数 型:=初期値; |
(defvar 変数)
(defvar 変数 初期値)
(defparameter 変数 初期値)
(declare 型 変数 …)
(let (変数 …) (declare (型 変数 …)) … 本体〜)
(let ((変数 初期値) …) 〜) |
ポインター変数の宣言 |
整数型変数で代用 |
|
|
|
var 変数:^型; |
|
型 *変数; |
型 *変数; |
なし |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
配列(dimension)宣言
添字:「そえじ」 |
DIM 変数(10)
→添字は0〜10 |
Dim 変数(10) As Integer
→添字は0〜10
Dim 変数(1 To 10) As Integer
→添字は1〜10 |
Dim 変数(10)
→添字は0〜10 |
Dim 変数(10) As Integer
Dim 変数() As Integer = { 初期値,… } |
var 変数:array[1..10] of integer;
→添字は1〜10 |
DCL 変数(10) DEC(15,0) FIXED; |
@変数=(初期値,初期値,…); |
int 変数[10];
→添字は0〜9 |
int 変数[10];
→添字は0〜9 |
|
|
|
CREATE OR REPLACE TYPE 配列型
AS VARRAY(10) OF INTEGER;
/
SHOW ERR |
TYPE 配列型 IS TABLE OF
型 INDEX BY BINARY_INTEGER;
変数 配列型;
→添字は代入した分だけ使える |
(setq 変数 (make-array 10)) |
動的配列 |
|
Dim 変数() As Integer
ReDim 変数(10) |
|
|
|
|
|
|
int 変数[] = new int[10]; |
int[] 変数 = new
int[10];
→添字は0〜9
int[] 変数 = new int[]{
初期値,… };
int[] 変数 = { 初期値,… }; |
var 変数 = new Array(10)
→添字は0〜9
var 変数 = new Array(初期値,…)
var 変数 = [初期値,…] |
int[] 変数 = new int[10];
→添字は0〜9
配列はSystem.Arrayを継承する
int[] 変数 = new int[]{
初期値,… };
int[] 変数 = { 初期値,… }; |
|
|
|
値設定 |
|
変数 = Array(初期値,…) |
変数 = Array(初期値,…) |
|
|
|
|
|
|
変数 = new int[]{
初期値,… }; |
|
|
|
|
|
変数(添字) = 値 |
変数(添字) = 値 |
変数(添字) = 値 |
変数(添字) = 値 |
変数[1] := 値; |
|
$変数[添字] = 値; |
変数[添字] = 値; |
変数[添字] = 値; |
変数[添字] = 値; |
変数[添字] = 値; |
変数[添字] = 値; |
|
|
(setf (apply #'aref 変数 0) 値) |
値取得 |
変数(1) |
変数(1) |
変数(1) |
変数(1) |
変数[1] |
|
$変数[0] |
変数[0] |
変数[0] |
変数[0] |
変数[0] |
変数[0] |
SQL文からは扱えないらしい |
変数(1) |
(aref 変数 0) |
添字変更 |
|
Dim 変数() As Integer
ReDim Preserve 変数(10) |
Dim 変数()
ReDim 変数(10) |
Array.Resize(変数, 10) |
|
|
|
|
|
int[] 変数;
変数=new
int[10]; |
範囲外の添字を使えば自動拡張される |
Array.Resize(変数, 10); |
|
|
(setq 変数 (adjust-array 変数 10)) |
多次元配列 |
DIM 変数(2,3) |
Dim 変数(2,3) As Integer |
Dim 変数(2, 3) |
Dim 変数(2,3) As Integer |
var 変数:array[1..2, 1..3] of integer; |
DCL
1 適当(2),
2 変数(3) 型;
BASICと同様の宣言も可能 |
|
int 変数[2][3]; |
int 変数[2][3]; |
int[][]
変数=new int[2][];
for(int i=0;i<変数.length;i++) 変数[i]=new int[3]; |
var 変数=new Array(2);
for(var i=0;i<変数.length;i++) 変数[i]=new Array(3); |
int[,] 変数=new int[2,3]; |
|
|
(setq 変数 (make-array '(2 3))) |
変数(2,3) |
変数(2,3) |
変数(2,3) |
変数(2,3) |
変数[2,3]
変数[2][3] |
|
|
変数[1][2] |
変数[1][2] |
変数[1][2] |
変数[1][2] |
変数[1][2] |
|
|
(aref 変数 1 2) |
配列の長さ |
なし |
UBound(変数) - LBound(変数) + 1 |
UBound(変数) - LBound(変数) + 1 |
変数.Length
変数.LongLength
変数.GetLength(次元番号) |
|
|
$#変数 + 1 |
sizeof 変数/sizeof 変数[0] |
|
変数.length |
変数.length |
変数.Length
変数.LongLength
変数.GetLength(次元番号) |
|
変数%COUNT |
(array-dimension 変数 次元番号) |
配列の下限・上限 |
なし |
LBound(変数) |
LBound(変数) |
変数.GetLowerBound(次元番号) |
|
|
|
なし |
|
|
|
変数.GetLowerBound(次元番号) |
|
変数%FIRST |
|
UBound(変数) |
UBound(変数) |
変数.GetUpperBound(次元番号) |
$#変数 |
変数.GetUpperBound(次元番号) |
変数%LAST |
配列の次元 |
|
|
|
変数.Rank |
|
|
|
|
|
|
|
変数.Rank |
|
|
|
配列コピー |
|
|
|
Array.Copy(src, spos, dst, dpos, len)
Array.Copy(src, dst, len) |
|
|
|
memcpy(dst+dpos, src+spos, len);
memmove(dst+dpos, src+spos, len); |
|
System.arraycopy(src,
spos, dst, dpos, len);
dst = Arrays.copyOf(src, len); |
|
Array.Copy(src, spos, dst, dpos, len);
Array.Copy(src, dst, len); |
|
|
|
配列ダンプ |
|
|
|
Debug.WriteLine(BitConverter.ToString(配列)) |
|
|
|
|
|
System.out.println(new
HexDumpEncoder().encodeBuffer(配列)); |
|
|
|
|
|
配列クリア |
|
Erase 配列 |
|
|
|
|
|
memset(配列, 0x00, sizeof 配列) |
|
Arrays.fill(配列,
0); |
|
|
|
|
|
配列解放 |
|
Erase 配列 (ReDimによる配列) |
|
|
|
|
|
|
delete[] 配列;
(newによる配列) |
|
|
|
|
|
|
配列か否か |
|
IsArray(obj) |
IsArray(obj) |
obj.GetType().IsArray |
|
|
|
なし |
|
obj.getClass().isArray() |
|
obj.GetType().IsArray |
|
|
|
マップ
(連想配列・ディクショナリー) |
なし |
|
Set 変数 = CreateObject("Scripting.Dictionary") |
|
|
|
%変数 = (キー1,値1,キー2,値2,…);
%変数 = (キー1 => 値1, キー2 => 値2,…); |
|
|
Map 変数=new
HashMap(); |
var 変数=new Object();
var 変数={ キー:値,… }; |
|
|
|
(setq 変数 (make-hash-table)) |
変数.Add "キー", "値" |
$変数{キー}=値; |
変数.put(キー,値); |
変数["キー"]=値; |
(setf (gethash 'キー 変数) '値) |
変数.Item("キー") |
$変数{キー} |
変数.get(キー) |
変数["キー"] |
(gethash 'キー 変数) |
変数.Items |
|
変数.values() |
|
|
変数.Exists("キー") |
|
変数.containsKey(キー) |
|
|
変数.Count |
|
変数.size() |
|
|
変数.Remove("キー") |
delete $変数{キー} |
変数.remove(キー) |
delete 変数["キー"]; |
(remhash 'キー 変数) |
変数.RemoveAll |
|
変数.clear() |
|
|
Dim key as Variant
For Each key In 変数.Keys
Next |
|
for(Iterator i = 変数.keySet().iterator(); i.hasNext();) {
Object key = i.next();
}
for(Object key: 変数.keySet()) {
} |
|
|
十進数 |
12 |
12 |
12 |
|
12 |
12 |
12 |
12 |
12 |
12 |
12 |
|
12 |
12 |
12 |
二進数 |
&B1100 |
なし |
|
|
|
'1100'B |
0b1100 |
0b1100 (gcc拡張) |
なし |
なし |
|
|
|
|
#b1100
#2r1100 |
八進数 |
&O14 (オーを使用) |
&O14 (オーを使用) |
|
|
|
|
014 (ゼロから始まる) |
014 (ゼロから始まる) |
014 (ゼロから始まる) |
014 (ゼロから始まる) |
014 (ゼロから始まる) |
|
|
|
#o14
#8r14 |
十六進数 |
&HC |
&HC |
&HC |
|
|
X'0C' |
0xc |
0xc |
0xc |
0xc |
0xc |
|
|
|
#xc
#16rc |
定数宣言 |
なし |
Const 定数 As Integer = 値 |
Const 定数 = 値 |
|
const 定数=値; |
なし |
|
const int 定数=値; |
const int 定数=値; |
final int 定数=値; |
|
|
|
定数 CONSTANT NUMBER:=値; |
'定数
(quote 定数)
(defconstant 定数 値) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
構造体宣言 |
なし |
Type 構造体名
メンバーA As Integer
メンバーB As Integer
End Type |
|
Structure 構造体名
Dim メンバーA As Integer
Dim メンバーB As Integer
End Structure |
type レコード名=recoed
フィールドA of integer;
フィールドB of integer
end; |
構造体の型を作ることは出来ない(?) |
|
typedef struct{
int メンバーA;
int メンバーB;
} 構造体名; |
struct 構造体名{
int メンバーA;
int メンバーB;
}; |
|
function 構造体名(){
this.メンバーA=初期値;
this.メンバーB=初期値;
} |
|
CREATE OR REPLACE TYPE レコード名 AS OBJECT
(項目A INTEGER,
項目B INTEGER
);
/
SHOW ERR |
TYPE レコード名 IS RECORD(
項目A INTEGER,
項目B INTEGER
);
↓テーブル定義を使った構造体
TYPE レコード名 IS RECORD(
項目A テーブル.項目%TYPE,
項目B テーブル.項目%TYPE
); |
(defstruct 構造体名
メンバーA
メンバーB)
(defstruct 構造体名
(メンバー 初期値 :type 型))
「make-構造体名」「構造体名-p」「copy-構造体名」という関数が自動的に作られる
(defstruct (構造体名
(:include 上位構造体名 (上位メンバー 初期値))
(:conc-name 接頭辞-)
(:constructor コンストラクター名 メンバーの並び…))
メンバーA
メンバーB)
接頭辞を付けると、メンバーは「接頭辞-メンバー」関数でアクセスできる。デフォルトは構造体名 |
名前空間 |
なし |
|
|
Namespace ネームスペース名
〜
End Namespace |
|
|
package クラス名;
〜 |
|
|
package パッケージ名;
〜 |
|
namespace 名前空間
{
〜
} |
|
|
|
クラス宣言
→コンストラクター |
なし |
|
Class クラス名
Private メンバーA
Private メンバーB
Public Function 関数()
〜
End Function
End Class |
Class クラス名 Inherits 上位クラス名 Implements インターフェース,…
Private メンバーA As Integer
Private メンバーB As Integer
Public Function 関数() As Integer
〜
End Function
End Class |
|
なし |
package クラス名; |
|
class クラス名 : public 上位クラス名
{
private:
int メンバーA;
int メンバーB;
public:
int 関数();
};
int クラス名::関数()
{
〜
} |
class クラス名 extends 上位クラス名
implements インターフェース,…{
private int メンバーA;
private int メンバーB;
public int 関数(){
〜
}
} |
function クラス名(引数〜){
this.メンバーA=初期値;
this.メンバーB=初期値;
this.関数=関数名
}
function 関数名(){
〜
} |
class クラス名 : 上位クラス名, インターフェース…
{
private int メンバーA;
private int メンバーB;
public int 関数(){
〜
}
} |
|
CREATE OR REPLACE PACKAGE パッケージ名
IS
変数宣言;
PROCEDURE プロシージャ名(引数);
FUNCTION 関数名(引数) RETURN 型;
CREATE OR REPLACE PACKAGE BODY パッケージ名
IS
変数宣言;
PROCEDURE プロシージャ名(引数)
IS
〜
END プロシージャ名;
FUNCTION 関数名(引数)
IS
〜
END 関数名;
BEGIN
初期処理
END パッケージ名; |
(defclass クラス名 (上位クラス名 …)
((メンバーA :type integer)
(メンバーB :alocation :class又は:instance))
)
defgeneric
(defmethod 関数名 (引数1 (引数2 クラス名))
(with-slots (メンバーA メンバーB) 引数2
本体〜
)) |
#コンストラクター
sub new {
my $class = shift;
my $self = {
メンバーA => 初期値,
メンバーB => 初期値
};
bless $self, $class;
return $self;
} |
#コンストラクター
sub new {
bless {
メンバーA => 初期値,
メンバーB => 初期値
}, shift;
} |
sub 関数 {
$self = shift;
〜
} |
インターフェース |
|
|
|
Public Interface インターフェース名
〜
End Interface |
|
|
|
|
なし |
interface インターフェース名 extends 継承元インターフェース,…{
〜
} |
|
interface インターフェース名 : 継承元インターフェース,…{
〜
} |
|
|
|
構造体(クラス)実体化 |
なし |
Dim 変数 As New クラス名
Set 変数 = New クラス名 |
Dim 変数
Set 変数 = New クラス名 |
|
var 変数:レコード名;
var 変数: recoed
フィールドA of integer;
フィールドB of integer
end; |
DCL
1 変数名,
2 メンバーA DEC(15,0) FIXED,
2 メンバーB DEC(15,0) FIXED; |
use クラス名;
my $変数 = new クラス名; |
構造体名 変数;
構造体名 *p=(構造体名*)malloc(sizeof 構造体名); |
クラス名 変数;
クラス名 *p=new クラス名; |
クラス名 変数=new クラス名(); |
var 変数=new クラス名(); |
|
|
変数 レコード名; |
(setq 変数 (make-構造体名))
(setq 変数 (make-構造体名 :メンバーA 初期値A :メンバーB 初期値B))
(setq 変数 (コンストラクター名 初期値A 初期値B))
(setq 変数 (make-instance 'クラス名 :メンバーA 初期値A)) |
構造体(クラス)のメンバー使用 |
なし |
変数.メンバー |
|
|
変数.フィールド
ポインター変数^.フィールド |
メンバー
メンバーの名前で直接使用可能 |
$変数->{メンバー}
$変数->関数(引数,…) |
変数.メンバー
p->メンバー |
変数.メンバー
p->メンバー |
変数.メンバー |
変数.メンバー
変数["メンバー"] |
|
|
変数.メンバー |
取得→(構造体名-メンバー 変数)
設定→(setf (構造体名-メンバー 変数) 値) |
自クラス |
なし |
Me.メンバー |
|
Me.メンバー |
|
|
$self->{メンバー} |
|
this->メンバー |
this.メンバー |
|
this.メンバー |
|
|
|
親クラス |
|
|
|
MyBase.メンバー |
|
|
|
|
親クラス::メンバー |
super.メンバー |
|
base.メンバー |
|
|
|
共用体の宣言 |
なし |
|
|
|
record
case タグフィールド:char of
'A': 変数A: array[1..2] of char;
'B': 変数B: integer
end |
DCL 変数A CHAR(2),
変数B PIC'99' DEF 変数A; |
|
union{
char 変数a[2];
short 変数b;
} |
union{
char 変数a[2];
short 変数b;
} |
なし |
|
|
|
|
|
|
DCL 変数 CHAR(8),
部分 CHAR(4) DEF 変数 POS(3); |
|
union{
char 変数[8];
struct{
char ダミー[2];
char 部分[4];
}
} |
union{
char 変数[8];
struct{
char ダミー[2];
char 部分[4];
}
} |
部分範囲型 |
なし |
|
|
|
var 変数: 0..39 |
|
|
なし |
なし |
なし |
|
|
|
|
(型 0 39) |
列挙型 |
なし |
|
|
Enum 列挙名 As 型
列挙名 = 値
列挙名
…
End Enum |
var 変数:(列挙名,列挙名,…) |
|
|
typedef enum{ 列挙名=値,列挙名,… } 列挙型名; |
enum 列挙型名{ 列挙名=値,列挙名,… } |
なし |
|
enum 列挙型名 : 型
{
列挙名=値,列挙名,…
}
列挙型はSystem.Enumを継承する |
|
|
|
|
|
|
|
|
|
|
列挙型名 変数; |
列挙型名 変数; |
|
|
列挙型名 変数; |
|
|
|
|
|
|
変数=列挙型名.列挙名; |
|
|
|
変数=列挙名; |
変数=列挙名; |
|
|
変数=列挙型名.列挙名; |
|
|
|
関数型 |
なし |
|
|
Delegate Function 名称(引数…) As 戻り型 |
|
|
|
typedef 戻り型 (*名称)(引数…); |
typedef 戻り型 (*名称)(引数…); |
Method |
|
delegate 戻り型 名称(引数…); |
|
|
|
|
|
|
AddressOf 関数名 |
|
|
|
名称 変数 = 関数名; |
|
|
|
|
|
|
|
プロパティ |
なし |
|
|
|
|
|
|
なし |
なし |
なし |
|
public 型 名称
{
get; set;
} |
|
|
|
Public Property Get プロパティ名
プロパティ名 = 値
End Property
Public Property Let プロパティ名(引数)
〜
End Property |
Public ReadOnly又はWriteOnly
Property プロパティ名() As 型
Get
Return 値
End Get
Set(ByVal 引数)
〜
End Set
End Property |
public 型 名称
{
get
{
return 値;
}
set
{
変数 = value;
}
} |