You are on page 1of 12

LP TRNH JBASE

A. Trnh son tho trong jbase


1.Lm quen vi tin ch REFLEXTION
Sau khi kt ni thnh cng vo h thng thng qua c ch telnet, c 2 ch cho
php ngi dung la chn l START GLOBUS hoc ch dng lnh
a. START GLOBUS: c 2 cch thc hin:
+ START GLOBUS Y/N chn Y4nhp usernhp password
+ START GLOBUS Y/N chn NETSEXnhp usernhp password
Mt s lnh hay dung:
F1 hoc Ctrl + U + Enter: Thot khi bn ghi hoc ng dng
F2 hoc Ctrl + B +Enter : Nhy ln trng trc
F3 hoc Ctrl + F +Enter: To mi bn ghi hoc nhy xung trng sau
F4 hoc Ctrl + E + Enter: a con tr xung command line
F5 hoc Ctrl + V + Enter: Commit bn ghi
b. Ch dng lnh: START GLOBUS Y/N chn N
c. Mt s lnh trong JBASE hay dng:
- To th mc cha chng trnh: CREATE-FILE tn_th_mc TYPE=UD
(TYPE thng c mt trong hai cc gi tr sau:UD (directory), J4(hash file)
Th mc cha chng trnh nn c dng *.BP
- Lit k cc file trong mt th mc hoc cc bn ghi trong mt bng:
LIST tn_th_mc ( hoc tn bng ) iu_kin
V d: LIST IT.BP : lit k tt c cc file c trong th mc IT.BP
LIST FBNK.CUSTOMER : lit k tt c cc bn ghi trong bng
CUSTOMER
Cc ton t iu kin:
EQ hoc = ( ton t bng)
NE hoc != ( ton t khng bng )
GT hoc > (ton t ln hn)
LT hoc < ( ton t nh hn )
GE hoc >= (ton t ln hn hay bng )
LE hoc <= (ton t nh hn hay bng )
LK (ging )
UL ( khng ging )
RG (trong khong)
NR ( khng trong khong)
V d: LIST FBNK.CUSTOMER WITH @ID EQ 49409 : s lit k d liu ca khch
hng c m l 49409
- Chn cc file trong mt th mc hoc cc bn ghi trong mt bng
SELECT tn_th_mc ( hoc tn bng ) iu_kin
- Xa d liu la chn:
DELETE tn_th_mc ( hoc tn bng )
Lnh ny dng sau lnh SELECT
1

- Sao lu d liu:
COPY FROM source TO dest dataSource,dataDest
Sao lu mt bn ghi t mt bng hoc mt file t mt th mc
COPY FROM source TO dest ALL
Sao lu ton b d liu t mt bng hoc ton b file t mt th mc
Source Bng ngun hoc th mc ngun
Dest Th mc ch
dataSource file ngun hoc ID ca bn ghi ngun
dataDest file ch hoc ID ca bn ghi ch
Ch : Nu copy t mt ngun vo chnh n th khng cn TO dest
- Xa ton b d liu trong mt bng hoc trong mt th mc
CLEAR.FILE tn_bng (hoc tn th mc )
2. Son tho v bin dch chng trnh
- Trong jbase s dng JED (JBASE EDITOR) son tho chng trnh
- Khi ng JED: Vo REFLEXTION chn N
jsh coretest ~ -->
- Son tho: JED tn_th_mc tn_chng_trnh
V d: jsh coretest ~ -->JED
IT.BP
TEST
- Bin dch : EB.COMPILE tn_th_mc tn_chng trnh
V d: jsh coretest ~ -->EB.COMPILE
IT.BP TEST
Bin dch nhiu chng trnh:
SELECT IT.BP
> EB.COMPILE IT.BP
- Mt s lnh hay dng:
FS: Lu chng trnh
FI :Lu v thot chng trnh
EX hoc Ctrl + X:Thot, khng lu
nEnter: Nhy xung dng n
DE hoc Ctrl +D +D: Xa dng
CB :Copy khi nh du v pase vo v tr con tr hin thi
CB n :Copy khi nh du v pase vo v tr con tr hin thi n ln
DB : Xa khi nh du
MB : Chuyn khi nh du ti v tr con tr
Ctrl + K: Xa t v tr con tr n ht dng
Ctrl + L: Chn hng
Ctrl + T : Copy k t trn xung hng di
Ctrl +G : nh du khi
Ctrl +V : nh dng code

3.Cu trc chng trnh


Cc dng chng trnh : PROGRAM , SUBROUTINE V FUNCTION
a. PROGRAM : Chy bn ngoi GLOBUS, sau khi bin dch file chy c t trong
th mc bnk/bnk.run/bin
Dng:
PROGRAM tn_chng_trnh
{ tp lnh}
END
b. SUBROUTINE: Chy bn trong GLOBUS, sau khi bin dch file chy c t
trong th mc bnk/bnk.run/lib
Dng:
SUBROUTINE tn_chng_trnh
{ tp lnh}
RETURN
END
Cc SUBROUTINE c th gi ln nhau, cch gi: CALL tn_subroutine(cc tham
s)
c. FUNCTION: c gi t SUBROUTINE , PROGRAM v hm khc. Sau khi
bin dch, file chy c t trong c th mc bin v lib
FUNCTION tn_hm(cc tham s)
Y.RERULT=
{tp lnh}
RETURN Y.RERULT
END
Cch gi hm :
- Khai bo hm: DEFFUN tn_hm(cc tham s)
- Y.RERULT=tn_hm(cc tham s)
B. Lp trnh
1.Bin , th vin, cu trc d liu, ton t, ch thch
a.Bin:

Thng thng khng cn khai bo kiu bin, h thng s t chuyn ng


kiu khi bin c gn gi tr.
Cch thc lu tr trong mng:
Trong jbase, mng c th lu tr cc phn t multi value v sub value. Khi gia cc
phn t c ngn cch vi nhau bng cc k t c bit. C th nh sau:
3

+ Ngn cch gia cc phn t mng : k t c m ASCCI l 254 th hin trn


JBASE bng FM
+ Ngn cch gia cc multi value: k t c ASCCI l 253 th hin trn JBASE l
VM
+ Ngn cch gia cc sub value: k t c ASCCI l 252 th hin trn JBASE l
SM
d liu c lu tr theo dng sau
Y.DATA=PHANTU1.1.1VM PHANTU1.2.1SM PHANTU1.2.2 FM PHANTU2..
b. Th vin: Khai bo th vin: $INSERT tn_th_vin
c. Cu trc d liu:
- Cu lnh iu kin IF THEN
Dng 1:
IF <DK> THEN { LENH }
Dng 2:

IF <DK> THEN
{ TAP LENH }
END

Dng 3:

IF <DK> THEN
{ TAP LENH }
END
ELSE
{ LENH }

Dng 4:

IF <DK> THEN
{ TAP LENH }
END
ELSE
{ TAP LENH }
END

Dng 5:

Y=IF <DK> THEN VALUE 1 ELSE VALUE 2

- Cu lnh la chn CASE:


BEGIN CASE
CASE BIN=GI TR
{TP LNH}
.
CASE 1
{TAP LNH }
END CASE
- Vng lp FOR
4

Dng 1:

FOR I=gi_tr_nh TO gi_tr_ln


{ TAP LENH }
NEXT I

Dng 2:

FOR I= gi_tr_1 TO gi_tr_2 STEP bc_nhy


{ TAP LENH }
NEXT I
Nu gi_tr_1 < gi_tr_2 bc nhy >0,ngc libc nhy <0

- Vng lp REPEAT
LOOP
< LENH 1>
WHILE <DK>
< LENH 2>
REPEAT
Thc hin lnh LENH 1 , kim tra iu kin DK, nu tha mn iu kin th thc
hin lnh LENH 2
- REMOVE bin FROM mng SETTING pos: Ly d liu ca phn t trong
mng v tr v bin, v tr ca phn t s nh du cho ln gi sau, pos=0 nu c n
phn t cui cng ca mng v khc 0 nu cha c n phn t cui.
- Cu lnh BREAK: Thot khi vng lp gn nht
- Cu lnh CONTINUE: Quay tr li vng lp t v tr t lnh
- Cu lnh GOSUB nhn: Nhy ti nhn sau khi kt thc th tc nhn th tr con
tr v v tr ngay sau lnh GOSUB
- Cu lnh GOTO nhn: Nhy ti nhn v khng quay v v tr c
d. Cc ton t:
- Ton t cng: +
- Ton t tr : - Ton t nhn: *
- Ton t chia: /
- Ton t ni chui: :
e. ch thch : dng du * u dng
2.Mt s hm hay dng :
CRT CHUI: in CHUI ra mn hnh
LEN(CHUI): Tr v di ca CHUI
COUNT(CHUI,CHUI_1): m s ln xut hin ca CHUI_1 c
trong CHUI
5

DCOUNT(CHUI,CHUI_1): m s ln xut hin ca CHUI_1 c


trong CHUI +1
UPCASE(CHUI): Chuyn ton b CHUI thnh ch hoa
DOWNCASE(CHUI): Chuyn ton b CHUI thnh ch thng
CHANGE CHUI_1 TO CHUI_2 IN CHUI: Thay th ton b
CHUI_1 bng CHUI_2 trong CHUI.
INDEX(CHUI,CHUI_1,n):Tr v v tr ca chui CHUI_1 c trong
CHUI v tr n
FIELD(CHUI,CH,N): Tch chui CHUI ngn cch bi k t CH, phn
t th N
CHUI[m,l] :Tr v chui con ca CHUI t v tr m,l k t tnh t tri
qua phi. V d: ABCDEFGH[2,3] tr v BCD
CHUI[l]: Tr v chui con ca CHUI l k t tnh t phi qua tri. V
d : ABCDEFGH[2] tr v GF

Bi tp v d1: Vit mt Program in ra mn hnh 10 dng ch GOOD MORNING


Li gii:
PROGRAM PGM.YOURNAME
FOR I=1 TO 10
CRT GOOD MORNING
NEXT I
END
Bi tp v d 2: Vit mt Subroutine in ra mn hnh cc s t 10 n 1
Li gii:
SUBROUTINE RTN.YOURNAME
FOR I=10 TO 1 STEP 1
CRT I
NEXT I
RETURN
END
ng k trong PGM: Log vo T24PGM RTN.YOURNAMEtype=M,
PRODUCT=RE
Bi tp v d 3: Vit mt hm tnh tng hai s nguyn sau gi n t mt program
ca bn
Li gii:
~ JED IT.BP FUN.YOURNAME
FUNCTION FUN.YOURNAME(VAR1,VAR2)
VAR3=VAR1+VAR2
RETURN VAR3
END
Bin dch hm trn
6

~ JED IT.BP PGM.YOURNAME.1


PROGRAM PGM.YOURNAME.1
VAR1=5;VAR2=10
DEFFUN FUN.YOURNAME(VAR1,VAR2)
Y.RERULT=FUN.YOURNAME(VAR1,VAR2)
CRT Y.RERULT
END
Bin dch v chy PGM.YOURNAME.1
3.c d liu t cc bng trong JBASE
a. c bn ghi khi bit ID :
- M File : CALL OPF(tn_file,th mc)
Tn_file: C dng F.tn_bng
Th mc: Th mc cha file thc trong JBASE c tr v
V d: M bng CUSTOMER:
FN.CUS=F.CUSTOMER
F.CUS=
CALL OPF(FN.CUS,F.CUS)
- c file :CALL F.READ(FN.CUS,Y.CUS.ID,R.CUS,F.CUS,CUS.ERR)
FN.CUS: Tn bng
Y.CUS.ID: ID ca bn ghi
R.CUS: Mng tr v, cha ton b d liu ca bn ghi ID
F.CUS: Th mc cha file
CUS.ERR: m li
- Ly d liu :
Y.DATA=R.CUS<RECORD_NUMBER>
RECORD_NUMBER: C th l s hiu trng trong bn ghi hoc l bin
c nh ngha trong GLOBUS.BP I_F.TN_BNG
Nu l gi tr Multi value th ly v nh sau:
Y.DATA=R.CUS<RECORD_NUMBER, n>
n-s hiu multivalue th hin trn T24
Nu l subvalue th ly v nh sau:
Y.DATA=R.CUS<RECORD_NUMBER, n, m>
m-S hiu subvalue th hin trn T24
Bi tp v d: Vit mt subroutine in ra mn hnh cc thng tin v bn. Thng tin a ra
c nh dng sau:
M khch hng *tn gi nh * tn khch hng * a ch * in thoi * s chng minh th
nhn dn.
7

Li gii:
SUBROUTINE CUS.INFOR.YOURNAME
$INSERT I_COMMON
$INSERT I_EQUATE
$INSERT I_F.CUSTOMER
*kHOI TAO
GOSUB INIT
*MO FILE
GOSUB OPENFILE
*XU LY LAY DU LIEU
GOSUB PROCESS
RETURN
INIT:
FN.CUS='F.CUSTOMER'
F.CUS=''
Y.CUS.ID=100175
RETURN
OPENFILE:
CALL OPF(FN.CUS,F.CUS)
RETURN
PROCESS:
CALL F.READ(FN.CUS,Y.CUS.ID,R.CUS,F.CUS,CUS.ERR)
*lay gia tri cua cac truong
Y.MNEMONIC=R.CUS<EB.CUS.MNEMONIC>
Y.NAME= R.CUS<EB.CUS.SHORT.NAME,1>
Y.ADD= R.CUS<EB.CUS.STREET,1>
Y.PHONE= R.CUS<EB.CUS.LOCAL.REF,44>
Y.CUSTOMID= R.CUS< EB.CUS.LOCAL.REF,12,1>
*IN RA
Y.DATA=Y.CUS.ID:*:Y.MNEMONIC:*:Y.NAME:*:Y.ADD:*:Y.PHONE:*:Y.C
USTOMID
CRT Y.DATA
RETURN
END

b.c bn ghi khi khng bit ID:


- Cu lnh SELECT:
+ select ton b : SEL.CMD =SELECT :TN_BNG
v d: SEL.CMD= SELECT F.CUSTOMER
+ select la chn: SEL.CMD =SELECT :TN_BNG : WITH ..
v d: SEL.CMD= SELECT F.CUSTOMER WITH SHORT.NAME LK
HUNG
+ select c sp xp:
SEL.CMD= SELECT :TN_BNG : BY nu sp xp tng dn
hoc
SEL.CMD= SELECT :TN_BNG : BY-DSND nu sp xp gim
dn.
8

C th sp xp theo nhiu trng, khi h thng s u tin


trng t trc.
V d: Sp xp cc khch hng gim dn theo tn, nu trng
tn th sp xp tng theo m khch hng:
SELECT FBNK.CUSTOMER BY-DSND SHORT.NAME BY @ID
Routine EB.READLIST:
CALL EB.READLIST(SEL.CMD,SEL.LIST,'',NO.OF.REC,RET.CODE)

INPUT:
+ SEL.CMD :cu lnh select
OUTPUT:
+ SEL.LIST: Mng tr v cha cc ID ca bn ghi
+ NO.OF.REC: S bn ghi c tr v
+ RET.CODE: m li
Bi tp v d: Vit mt subroutine in ra mn hnh cc thng tin v 10 khch hng .Thng
tin in ra c nh dng sau:
M khch hng * tn khch hng * a ch * in thoi * s chng minh th nhn dn.
Li gii:
SUBROUTINE CUS.INFOR.YOURNAME
$INSERT I_COMMON
$INSERT I_EQUATE
$INSERT I_F.CUSTOMER
*kHOI TAO
GOSUB INIT
*MO FILE
GOSUB OPENFILE
*XU LY LAY DU LIEU
GOSUB PROCESS
RETURN
INIT:
FN.CUS='F.CUSTOMER'
F.CUS=''
Y.CUS.ID=
I=0
RETURN
OPENFILE:
CALL OPF(FN.CUS,F.CUS)
RETURN
PROCESS:
SEL.CMD=SELECT :FN.CUS
CALL EB.READLIST(SEL.CMD,SEL.LIST,'',NO.OF.REC,RET.CODE)
LOOP

REMOVE Y.CUS.ID FROM SEL.LIST SETTING POS


WHILE Y.CUS.ID:POS

END

CALL F.READ(FN.CUS,Y.CUS.ID,R.CUS,F.CUS,CUS.ERR)
*lay gia tri cua cac truong
Y.MNEMONIC=R.CUS<EB.CUS.MNEMONIC>
Y.NAME= R.CUS<EB.CUS.SHORT.NAME,1>
Y.ADD= R.CUS<EB.CUS.STREET,1>
Y.PHONE= R.CUS<EB.CUS.LOCAL.REF,44>
Y.CUSTOMID= R.CUS< EB.CUS.LOCAL.REF,12,1>
*IN RA
Y.DATA=Y.CUS.ID:*:Y.MNEMONIC:*:Y.NAME:*:Y.ADD:*:Y.PHONE:
*:Y.CUSTOMID
CRT Y.DATA
I++
IF I>9 THEN BREAK
REPEAT
RETURN

Bi tp : Vit mt subroutine in ra mn hnh cc thng tin v khch hng c s ID nh


nht v ln nht.Thng tin in ra c nh dng sau:
M khch hng * tn khch hng * a ch * in thoi * s chng minh th nhn dn.
4.Truy xut text file
a) Ghi file:

M file
OPENSEQ FILE.DIR,FILE.NAME TO FILE.POINTER ELSE
CREATE FILE.POINTER ELSE
CRT "KHONG TAO DUOC FILE "
STOP
END
END

Ghi file
i. Ghi :
WRITESEQ y.data TO FILE.POINTER ELSE
CRT "LOI GHI FILE"
END

ii.Ghi chn:
WRITESEQ y.data APPEND TO FILE.POINTER ELSE
CRT "LOI GHI FILE"
END

ng file
CLOSESEQ FILE.POINTER

Bi tp v d: Vit mt SUBROUTINE ghi file cho php ty chn hai ch


ghi chn v ghi sau gi n t mt SUBROUTINE khc.
10

Li gii:
SUBROUTINE WRITE.FILE.YOURNAME(Y.FILE.DIR,Y.FILE.NAME,Y.OPTION,Y.DATA)

OPENSEQ Y.FILE.DIR,Y.FILE.NAME TO FILE.POINTER ELSE


CREATE FILE.POINTER ELSE
CRT "KHONG TAO DUOC FILE "
STOP
END
END
IF Y.OPTION=0 THEN
WRITESEQ y.data
CRT "LOI
END
END ELSE
WRITESEQ y.data
CRT "LOI
END
END

APPEND TO FILE.POINTER ELSE


GHI FILE"
TO FILE.POINTER ELSE
GHI FILE"

CLOSESEQ FILE.POINTER
RETURN
END

b) c file:

M file:
OPEN FILE.DIR TO R.RERULT ELSE
CRT "KHONG MO DUOC FILE"
END

c file
READ R.LINE FROM R.RERULT,FILE.NAME ELSE CRT ERROR"

ng file

CLOSE R.RERULT
Bi tp v d: Vit mt SUBROUTINE c file text c nhiu hng v in ra mn hnh tng
hng ca file.
Li gii:
SUBROUTINE READ.FILE.YOURNAME
OPEN IT.BP TO R.RERULT ELSE
CRT "KHONG MO DUOC FILE"
END
READ R.LINE FROM R.RERULT,TEST.TXT ELSE CRT ERROR"

11

LOOP

REMOVE Y.LINE FROM R.LINE SETTING POS


WHILE Y.LINE:POS
CRT Y.LINE
REPEAT

CLOSE R.RERULT
RETURN
END

12

You might also like