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