一 BASIC介紹
1 一般的BASIC程序是如下一個(gè)格式
[ label ] statement [ ; statement … ] <Return>
2 關(guān)于subroutine
a 如果嵌入到了程序中用GOSUB調(diào)用,如果在外部,使用CALL
b 使用return返回到主程序,如果在return之前subroutine結(jié)束了,自動(dòng)return
c 如果subroutine中有ABORT STOP CHAIN則永遠(yuǎn)回不到主程序。
3 注釋
以REM * ! $* 開頭的為注釋
4 創(chuàng)建一個(gè)BASIC 程序的步驟
使用CREATE.FILE命令創(chuàng)建一個(gè)type 1或type 19 DataStage file來(lái)保存BASIC程序的源碼。(在DSEngine目錄下運(yùn)行CREATE.FILE命令,它將提示你輸入文件名等參數(shù))
使用DataStage Editor或其他編輯器創(chuàng)建BASIC程序源碼,這個(gè)源碼成為你剛才創(chuàng)建的文件的一條記錄。
使用BASIC命令來(lái)編譯你程序,這將創(chuàng)建一個(gè)包含目標(biāo)代碼的文件。目標(biāo)文件的名字不重要,因?yàn)榭偸峭ㄟ^(guò)源文件名來(lái)引用程序。
可以用RUN命令來(lái)執(zhí)行你的程序,使用RAID命令來(lái)調(diào)試你的程序。
二、基礎(chǔ)知識(shí)
數(shù)據(jù)類型、變量和操作符
所有數(shù)據(jù)在內(nèi)部都是以字符串存儲(chǔ),在運(yùn)行時(shí)轉(zhuǎn)換為具體類型。
主要有三種數(shù)據(jù)類型:字符串、數(shù)字型、和unknown(null)
字符串
在BASIC源碼中,字符串產(chǎn)量是ASCII字符的序列,所以不能有0(null)和10(linefeed)字符,而是要使用CHAR(0)和CHAR(10)
數(shù)字型
范圍從10(-307)到10(307),最多15位小數(shù)
unknown
null在內(nèi)部是由單一字節(jié)CHAR(128)代表的,是一個(gè)string,可以用系統(tǒng)變量@NULL.STR來(lái)引用它。在BASIC程序中可以使用系統(tǒng)變量@NULL來(lái)引用null值。
一個(gè)字符串與null連接結(jié)果為null
數(shù)組
dimensioned array
在向量(一維數(shù)組)中,第一個(gè)元素的index為1
向量可以看做第二位為1的二維數(shù)組(矩陣)。
矩陣和向量的第一個(gè)元素分別用vector.name(0)和matrix.name(0,0)表示。它可以在MATPARSE、MATREAD和MATWRITE語(yǔ)句中用來(lái)存儲(chǔ)不合格的字段。
動(dòng)態(tài)數(shù)組
動(dòng)態(tài)數(shù)組的最高層是字段,由(F)分割。字段包含有(V)分割的值組成。每個(gè)值又可以包含由(S)分割的subvalue。
字符串的比較
字符串的比較是一個(gè)個(gè)的比較每個(gè)字符的ASCII的值。如果兩個(gè)字符串可以轉(zhuǎn)換為數(shù)字,總是比較兩個(gè)數(shù)字的數(shù)值大小。任何值與null相比較的結(jié)果都是unknown。空串不是簡(jiǎn)單的等于0。空格看做小于0。
字符串匹配
X代表任何字符 A代表所有字母 N代表所有數(shù)字 前面的數(shù)字代表重復(fù)次數(shù)。如果前面的數(shù)字為0,代表后面的字符重復(fù)0到N次的任意次數(shù)都可以。
0是false 空串是false null非true非false
鎖 事務(wù)和隔離級(jí)別
鎖
鎖有兩種粒度:細(xì)粒度(記錄鎖定)和粗粒度(文件鎖定)
DataStage支持以下幾種鎖:
記錄共享鎖
記錄更新鎖
文件共享鎖
文件意向(intent)鎖 介于共享與排他之間
文件排他鎖
事務(wù)
事務(wù)可以嵌套
子事務(wù)在父事務(wù)提交或回滾之前開始的話,子事務(wù)將變成活動(dòng)事務(wù),而父事務(wù)將繼續(xù)存在但是是非活動(dòng)的。當(dāng)子事務(wù)提交或回滾之后,父事務(wù)將再次變?yōu)榛顒?dòng)的。
在最高層的事務(wù)提交之前,將緩存所有子事務(wù)的數(shù)據(jù)庫(kù)操作。當(dāng)進(jìn)行一個(gè)讀取操作時(shí),首先會(huì)去讀取緩存的數(shù)據(jù),如果找不到才會(huì)從數(shù)據(jù)庫(kù)文件中讀取。