16.4. Mengenal Perintah HOOKS, CALCS dan MAP

Perintah HOOKS menjalankan program pada saat kursor masuk ke field tertentu atau keluar dari field tertentu atau pada saat tombol End ditekan.

Perintah CALCS menghitung nilai tertentu. Nilai yang dihasilkan bisa benar (1) atau salah (0) atau nilai tertentu. Nama CALCS ada di setiap baris, jadi contoh di bawah ini ada 2 CALCS dengan nama cBLANKS dan cbknPU.


CALCS()
c0 0
cBLANKS         BLANKS
cbknPU      bkktype != "PU"

Perintah MAP adalah perintah untuk mengisi satu field dengan satu nilai tertentu. Nama dari MAP adalah di dalam kurung misalnya


MAP(mmut)
c0       bkkjmlmut    DO_CALC
bkkjmlmut       bkkjmlsls     REPLACE
cBLANKS bbmket       DO_CALC

menunjukkan MAP dengan nama mmut. MAP mmut ini mengandung 3 baris perintah yang akan dijalankan pada saat perintah MAP mmut ini dipanggil. Baris pertama akan menghitung c0 yang hasilnya adalah 0 dan memasukkan angka 0 ini ke dalam field bkkjmlmut. Baris ke dua akan mengopi langsung isian bkkjmlmut ke bkkjmlsls dan baris ke tiga akan mengosongkan field bbmket karena cBLANKS yang isinya BLANKS atau kosong dikopikan ke bbmket. Tuliskan perintah di bawah ini di atas perintah END_SCREEN.


/*-----------------------HOOKS(master)--------------------------*/
CALCS()
cPUbknBPO	bkktype == "PU" && bkkstsexp != "BPO" && bkkstsexp != "BT " && bkkstsexp != "BC "

cbkknobbm0      bkknobbm == BLANKS 
c0              0
cBLANKS	        BLANKS
cbknPU     	bkktype != "PU"

MAP(mmut)
c0      	bkkjmlmut   	DO_CALC
bkkjmlmut       bkkjmlsls    	REPLACE
cBLANKS		bbmket	     	DO_CALC

CALCS()
cotY       	stsnokk == "Y"
cnomer     	STRIP(dvsnokk) + THBLS(bkktgl) + "-"
cnomer2     	STRIP(dvsnobk) + THBLS(bkktgl) + "-"
ctypaddKS    	g_curcmd == 1 && stsnokk =="Y" && bkkkb == "KS"
ctypaddBK    	g_curcmd == 1 && stsnokk =="Y" && bkkkb == "BK"
cBI		"BI"
csatu           1
ctypePUPP	bkktype == "PU" || bkktype == "PP"
cyt16T     	stsyt16 == "T"

MAP(mnomer)
cnomer         	bkknum   	DO_CALC_IF ctypaddKS
cnomer2        	bkknum   	DO_CALC_IF ctypaddBK
cBLANKS        	bkkkode  	DO_CALC_IF cPUbknBPO
cBI	       	bkkstsexp  	DO_CALC_IF cbknPU

MAP(mpin)
bkkjmlmut     bkkjmlsls    REPLACE

HOOKS(master)
BEFORE_INPUT	cur_field=bkknum  	DO_SKIP_IF cotY  
BEFORE_INPUT	cur_field=bkkkode 	DO_SKIP_IF cPUbknBPO
BEFORE_INPUT	cur_field=bkkstsexp  	DO_SKIP_IF cbknPU
BEFORE_INPUT	cur_field=bkktgl  	DO_SKIP_IF cyt16T
BEFORE_INPUT	cur_field=bkknama  	DO_SKIP_IF ctypePUPP
BEFORE_INPUT	cur_field=bkkjmlmut 	DO_SKIP_IF cbkknobbm0
BEFORE_INPUT    cur_field=bkktotal   	DO_SKIP_IF csatu  
AFTER_INPUT	cur_field=bkktgl   	DO_MAP SHOW IF cotY mnomer
AFTER_INPUT	cur_field=bkktype  	DO_MAP SHOW IF cotY mnomer
AFTER_INPUT	cur_field=bkkkb    	DO_MAP SHOW IF cotY mnomer
AFTER_INPUT 	cur_field=bkknobbm      DO_MAP SHOW IF cbkknobbm0 mmut
AFTER_INPUT 	cur_field=bkkjmlmut     DO_MAP SHOW mpin

	

Sesudah berhasil melakukan kspar prt9000/sct271, coba perhatikan bahwa pada saat kita menambah rekord dengan menekan tombol 't' maka field langsung berada di field Jenis (bkktype). Ini terjadi karena field bkknum diSKIP atau dilewati.