Wednesday, September 24, 2014

Ketentuan Deklarasi PowerScript - Kupas Tuntas PowerBuilder







BAB
3


Pada bagian ini akan dibahas mengenai bagaimana mendeklarasikan suatu variabel, konstanta,array serta pemakaiannya dalam script. Selain itu juga akan dibahas bagaimana mendeklarasikan external function yang terdapat pada suatu dynamic link libraries (DLLs) dan Remote Procedure Call (RPCs) pada sebuah Store Procedure yang terdapat dalam suatu database.

1.  Deklarasi Variabel
Suatu variabel hanya dapat digunakan dalam suatu script PowerBuilder jika telah dilakukan pendeklarasian sebelumnya. Pendeklarasian variabel ini erat kaitannya dengan pembahasan kita sebelumnya yaitu mengenai tipe data dan penamaan variabel. Variabel yang dapat kita deklarasikan dapat berupa variabel standard, struktur atau sebuah object.
Dilihat dari ruang lingkup penggunaan dan aksesnya, deklarasi variabel dapat dibagi
menjadi 4 (empat) tingkatan yaitu : Global, Instance,Shared dan Local.

10/04/2014
Ruang Lingkup Deklarasi Variabel
a.    Global
Deklarasi variabel Global yaitu deklarasi variable yang ruang lingkup penggunaannya dapat diakses disemua tempat dalam suatu aplikasi. Biasanya diletakan pada file library utama pada object application, seperti terlihat pada gambar di bawah ini.
Variable yang dideklarasikan sebagai global variable pada suatu aplikasi, maka akan dikenal disemua event script yang ada disemua object yang ada pada aplikasi tersebut.

b.     Instance
Deklarasi variabel Instance yaitu deklarasi variable yang ruang lingkup penggunaannya dapat diakses atau dikenal disemua lingkungan event script yanga ada pada sebuah object. Variable yang dideklarasikan sebagai instance variable pada sebuah object akan dapat dikenal di semua lingkungan event script yang ada pada object tersebut. Misalnya pada object window, user object atau menu, seperti terlihat pada gambar di bawah ini.
Pada contoh tersebut di atas variable : iv_saldo,iv_persen,iv_hasil dan iv_dayfactor dapat dikenal dan dapat digunakan pada event script lainnya, misalnya pada event open window, event klik pada object control CommandButton, atau function yang ada di window tersebut.




c.     Shared
Deklarasi variabel Shared yaitu deklarasi variable yang ruang lingkup penggunaannya dapat diakses pada suatu object tertentu, misalnya pada object window, user object atau menu, seperti terlihat pada gambar di bawah ini.


d.     Local
Deklarasi variabel Local yaitu deklarasi variable yang ruang lingkup penggunaannya hanya dapat diakses pada lingkungan event script tertentu. Misalnya variable yang dideklarasikan pada event open window, maka hanya dapat digunakan atau diakses pada script open window saja, dan tidak akan dikenal pada pada lingkungan event script yang lain.

Contoh variabel Local seperti terlihat pada gambar di bawah ini.

Variable ld_endbal,ld_interest,ld_value,li_dayintrest dan ls_msg hanya dapat digunakan dilingkungan script event klik di object control dw_1. Jika variable-variabel tersebut dipanggil pada script di event yang lain,misalnya pada event doublecliked, maka akan tampil pesan seperti pada gambar berikut ini.

Variabel Global,Instance dan Shared dapat dideklarasikan pada script yang ada di Application, Window, Menu, dan User Object. Untuk variable global, selain pada object-object tersebut juga dapat digunakan pada object Function.
Sedangkan untuk variable local, hanya dapat dideklarasikan pada sebuah object atau control tertentu.

Cara untuk mendeklarasikan variable Global,Instance dan Shared yaitu sebagai berikut :
*         Pilih drop down declare pada salah satu tampilan script yang ada
*         Kemudian pilih tipe deklarasi variabelnya
*         Tuliskan tipe data dan variabel-variabel yang akan digunakan dalam sebuah script



Urutan pencarian variabel ketika PowerBuilder mengeksekusi suatu script yaitu sebagai berikut :
1.   variabel Lokal
2.   variabel Shared
3.   variabel Global
4.   variabel Instance

Ketika ada penamaan variabel yang sama maka PowerBuilder akan memberikan pesan peringatan. Penamaan untuk variabel global diusahakan agar spesifik tidak digunakan dalam variabel Shared,Instance ataupun local. Tetapi jika saja ada variabel global yang sama dengan variabel shared atau local, maka variabel local atau shared yang akan pertama kali dikenali.

Agar variabel global tersebut tidak dianggap sama dengan variabel local atau shared, maka saat pemanggilannya dapat menggunakan tanda global scope variabel ( :: ) sebelum nama variabel yang dimaksud.
Syntax penulisannya yaitu sebagai berikut :
::globalvariabelname

 


Contoh :
IF saldo <> ::saldo THEN ....

 


Variabel saldo yang tidak menggunakan tanda :: menyatakan nilai dari variabel local atau shared, sedangkan variabel saldo dengan tanda :: didepannya menyatakan nilai dari variabel global.

Penggunaan referensi variable instance terdapat dua kondisi yang berlaku, yaitu kondisi tanpa menyertakan nama kualiifikasinya dan dengan menyertakan nama kualifikasinya.  Kualifikasi yang dimaksud yaitu object dimana variable instance di deklarasikan.

Contoh kasus penggunaan referensi variable instance tanpa menyebutkan kualifikasinya yaitu :
1.   Untuk variable di tingkat application, yaitu pada object application
2.   Untuk variable di tingkat window, yaitu pada script yang ada di window bersangkutan dan pada script di object control di window tersebut.
3.   Untuk variable di tingkat user object, yaitu pada script yang ada di user object bersangkutan dan pada script di object control di user object tersebut
4.   Untuk variable di tingkat menu, yaitu pada script yang ada di menu, baik pada script di level menu tertinggi maupun pada script di sub menu.

st_hasl.text = hasilhitung

Misalnya pada sebuah window w_simulasi terdapat sebuah variable instance dengan nama hasilhitung, kemudian nilai dari variable tersebut akan ditampilkan pada object control static text st_hasil yang terdapat pada window tersebut, maka penulisan scriptnya yaitu sebagai berikut :


Sedangkan jika kita akan menampilkan pada object control static text atau object control lainnya di luar object window w_simulasi maka kita harus mencantumkan nama object window w_simulasi diikuti dengan nama variabel dengan menggunakan fasilitas notasi titik ( dot notation ) .
Syntax penulisannya yaitu :
object.instancevariable
 


Dengan demikian penulisan script untuk kasus tersebut di atas yaitu sebagai berikut :
st_hasl.text = w_simulasi.hasilhitung

 


Kemudian jika ada pada script object control static text yang ada pada window w_simulasi tersebut terdapat variabel local dengan nama yang sama, maka kita tinggal menggunakan fasilitas kata ganti window, seperti contoh berikut :
st_hasl.text = parent.hasilhitung

 



Syntax Deklarasi Variabel
Syntax penulisan deklarasi varibel secara sederhana yaitu :
datatype variablename
 


Sedangkan syntax penulisan deklarasi variabel secara lengkap yaitu :
{ access } datatype { { size } } { { precision } } variablename { = value }
{, variablename2 { = value2 } }
 



Berikut ini tabel penjelasan pengisian parameter pada pendeklarasian variabel :
No
Parameter
Keterangan
1.    
access
( opsional)
Parameter access bersifat opsional, biasanya khusus digunakan pada deklarasi variable instance
2.    
datatype
Diisi denganTipe data yang akan digunakan. Tipe data yang dapat digunakan yaitu tipe data standard, object system dan object structur.Untuk tipe data decimal dan BLOB dapat mencantumkan jumlah digit decimal atau besaran datanya didalam tanda kurung { }
3.    
size
(opsional)
Diisi hanya untuk tipe data blob, berupa angka besaran data blob dalam satuan byte. Jika parameter size ini dikosongkan maka secara default terisi nol, dan PowerBuilder akan menyesuaikan nilainya pada saat aplikasi dijalankan.Jika ukuran data blob yang kita entri melebihi ukuran saat dideklarasikan maka PowerBuilder akan otomatis memotong ukurannya tersebut sesuai dengan ukuran yang telah dideklarasikan sebelumnya.
4.    
precision
(opsional)
Diisi dengan angka untuk menentukan jumlah digit dibelakang koma ( decimal point ). Parameter ini hanya diisi untuk tipe data decimal
5.    
variablename
Diisi dengan nama variabel yang akan digunakan. Untuk aturan penamaannya dapat dilihat pada pembahasan Identifier / penamaan variable hal 5.
Untuk menambahkan variabel yang lain dengan tipe data yang sama dapat menggunakan tanda koma ( , ) diantara variabel yang satu dengan yang lainnya

6.    
Value
(opsional)
Diisi nilai data sesuai tipe data yang digunakan dalam suatu variabel sebagai inisialisasi awal. Untuk tipe data blob tidak bisa dilakukan pengisian nilai parameter ini



Untuk contoh-contoh deklarasi variabel dapat dilihat seperti contoh berikut ini :
Contoh Deklarasi variabel local :
string  ls_kota = "Bogor"
integer li_nomor
dec{4}     ld_Rate1, ld_Rate2
decimal{0} ld_Balance
dec        ld_result

Contoh Deklarasi variabel shared :
time st_process_start
string ss_process_name

decimal{2} sd_Amount
decimal{2} sd_dollars_accumulated

Contoh Deklarasi variabel instance :
integer ii_total = 100
date id_tanggal
blob ib_Emp_Picture:
blob{100} ib_Emp_Picture


Contoh Deklarasi variabel global :
string gs_nama



 

















TIPS :
Dalam merancang sebuah aplikasi yang baik, maka sebaiknya kita perlu membuat standarisasi penamaan variabel. Sehingga variabel-variabel tersebut akan mudah dikenalai, apakah variabel tersebut merupakan variabel local,shared, instance atau global.

Sebagai contoh kita melakukan standarisasi penamaan variabel sesuai dengan ruang lingkup penggunaanya, misalnya untuk variabel lokal maka penamaannya kita awali dengan huruf l, untuk variabel shared kita awali dengan huruf s, variabel instance diawali huruf i, dan variabel global diawali huruf g, diikuti huruf awal tipe data ditambah tanda _ ( underscore ) , kemudian diakhiri nama variabel.
gs_namavariabel // variable global dengan tipe data string
gi_namavariabel // variable global dengan tipe data integer
id_namavariabel // variable instance dengan tipe data decimal
sb_namavariabel // variable instance dengan tipe data decimal


 







Penggunaan variabel X dan Y perlu diperhatikan, karena variable tersebut oleh PowerBuilder sudah didefinisikan sebagai properti untuk menentukan koordinat layar suatu object. Jika kita lupa mendeklarasikan  variabel X dan Y sebelum kita menggunakannya dalam suatu script, Powerbuilder tidak akan menganggap sebagai suatu kesalahan. Tetapi nilai X dan Y yang kita gunakan tersebut dianggap sebagai nilai dari koordinat layar object tertentu.

Inisialisasi Nilai Variabel
Ketika kita mendekalarasikan suatu variabel, kita dapat menerima nilai default atau kita juga dapat menentukan nilai awal suatu variabel tersebut.
Ketentuan inisialisasi nilai variabel yaitu sebagai berikut :
1.   Mencantumkan tanda ‘=’ di depan variabel
2.   Menuliskan nilai yang sesuai dengan tipe data yang dideklarasikan
Contoh :
Integer li_max = 100
 


3.   Tidak menggunakan nilai hasil dari suatu function, seperti pada contoh berikut :
decimal ld_saldo = of_hasilhitung()
 


Jika kita tidak melakukan inisialisai nilai awal variabel maka PowerBuilder akan memberikan nilai default sesuai tipe data masing-masing.
Pada tabel berikut ini diuraikan nilai default suatu variabel sesuai dengan tipe datanya.
No
Tipe Data
Nilai Default PowerBuilder
1.    
Blob
sebuah blob berukuran 0 byte; sebuah blob kosong
2.    
Char (atau character)
Nilai ASCII 0
3.    
Boolean
False
4.    
Date
1900-01-01 (January 1, 1900)
5.    
DateTime
1900-01-01 00:00:00
6.    
Numeric (byte, integer, long, longlong,
decimal, real, double, UnsignedInteger,
dan UnsignedLong)
0
7.    
String
string kosong ("")
8.    
Time
00:00:00

Hak Akses Variabel Instance
Untuk menentukan jangkauan akses suatu variabel instance, kita dapat mengendalikannya dengan fasilitas Hak Akses (Access Right) variabel.
Syntax penulisan hak akses variabel instance yaitu sebagai berikut :
{ access-right } { readaccess } { writeaccess } datatype variablename

 




Berikut ini tabel penjelasan penggunaan parameter hak akses variabel instance :
No
Parameter
Keterangan
1.    
access-right
( opsional)
Diisi dengan keyword(kata kunci) yang menentukan dimana suatu variabel dapat dikenali. Keyword yang digunakan terdiri dari :
·        PUBLIC – (Default)
Dimana semua script dalam aplikasi dapat menggunakan variable tersebut. Untuk dapat dipakai dalam script object yang lain kita gunakan notasi titik kemudian diikuti nama variablenya.
·        PROTECTED
Hanya dapat diakses oleh script yang ada pada object dimana variabel tersebut dideklarasikan
·        PRIVATE – Scripts for the object for which the variable is declared can refer to the variable. You cannot refer to the variable in descendants of the object.
2.    
readaccess
(optional)
Diisi dengan kata kunci yang menyatakan pembatasan hak akses untuk membaca nilai suatu variabel. Keyword yang digunakan yaitu :
·         PROTECTEDREAD – Only scripts for the object and its descendants can read the variable.
·         PRIVATEREAD – Only scripts for the object can read the variable.
When access-right is PUBLIC, you can specify either keyword.
When access-right is PROTECTED, you can specify only
PRIVATEREAD. You cannot specify a modifier for PRIVATE
access, because PRIVATE is already fully restricted.
If readaccess is omitted, any script can read the variable.

3.    
writeaccess
(optional)
Diisi dengan keyword yang membatasi akses suatu sctipt untuk merubah nilai suatu variabel. Terdiri dari :
·         PROTECTEDWRITE – Only scripts for the object and its descendants can change the variable.
·         PRIVATEWRITE – Only scripts for the object can change the variable.
When access-right is PUBLIC, you can specify either keyword.
When access-right is PROTECTED, you can specify only
PRIVATEWRITE. You cannot specify a modifier for PRIVATE
access, because PRIVATE is already fully restricted.
If writeaccess is omitted, any script can change the variable.
4.    
datatype
Diisi dengan tipe data yang sesuai.
5.    
variablename
Diisi dengan nama variabel yang sesuai dengan ketentuan penamaan variabel.





13/04/2014
2.  Deklarasi Konstanta
Pengertian Konstanta secara umum yaitu pendeklarasian suatu variabel yang nilainya bersifat tetap dan tidak bisa diubah. Dengan demikian konstanta juga merupakan sebuah variabel, bedanya dengan variabel umum yaitu pada nilai yang disimpannya. Pada variabel umum nilainya tidak perlu di set di awal pendeklarasian, pengisi nilai suatu variabel dapat dilakukan dimanapun dan kapanpun serta nilainya dapat berubah sesuai dengan kerluan aplikasi.
Jika kita membutuhkan suatu variabel yang nilai datanya sepanjang program berjalan tidak berubah-ubah, maka sebuah varibel lebih baik diperlakukan sebagai konstanta.
Dalam sebuah kode program, biasanya nilai data dari konstanta diberikan langsung di bagian deklarasi konstanta. Sedangkan untuk variabel, biasanya hanya ditentukan nama variabel dan tipe datanya tanpa isian nilai data. Aturan penamaan dan pwnetapan tipe data untuk konstanta sama dengan penamaan dan penetapan tipe data pada variabel
Setiap variable standar dalam PowerScript dapat dideklarasikan ke dalam bentuk kontanta. Untuk mendeklarasikn menjadi konstanta kita tinggal mencantumkan kata CONSTANT pada deklarasi variabel dan menuliskan nilainya setelah penamaan variabel konstanta tersebut.
Syntax penulisannya sebagai berikut :
CONSTANT { access } datatype constname = value
 


Berikut ini tabel penjelasan pendeklarasian parameter variabel konstanta.
No
Parameter
Keterangan
1.    
CONSTANT
Pendeklarasian suatu kontanta dari sebuah variable. Kata CONSTANT dapat diletakan sebelum maupun setelah parameter access.
2.    
access
Parameter access bersifat opsional, biasanya khusus digunakan pada deklarasi variable instance
3.    
datatype
Diisi denganTipe data yang akan digunakan. Tipe data standard yang tidak dapat digunakan dalam konstanta yaitu tipe data BLOB
4.    
constname
Diisi dengan nama konstanta yang akan digunakan. Untuk aturan penamaannya sama dengan aturan penamaan variable
5.    
value
Diisi nilai data sesuai tipe data yang digunakan dalam suatu konstanta.

Pada powerscript,saat pendeklarasian suatu variabel konstanta selalu diikuti dengan nilai konstanta tersebut, jika tidak maka akan dianggap sebagai suatu kesalahan ketika dilakukan compile. Begitupun ketika kita melakukan pengisian nilai setelah pendeklarasian variabel konstanta maka akan dianggap kesalahan juga,seperti pada gambar dibawah ini.
Meskipun dalam powerscript tidak mengenal case sensitive, tetapi untuk penamaan variabel konstanta biasanya ditulis dengan huruf capital, seperti dapat dilihat pada contoh berikut ini :
Constant String DBMAIN_NAME = 'dbtest'
Atau
constant Integer DBMAIN_PORT = 5000
 






3.  Deklarasi Array
Sebuah array yaitu merupakan sekumpulan elemen data yg terurut dalam sebuah tipe data tunggal.Dalam pemrograman PowerBuilder ,variabel array dapat berupa array satu dimensi ataupun multi dimensi. Setiap dimensi pada suatu array dapat berisi maximum 2.147.483.647 byte elemen data.
Adapun syntax pendeklarasian sebuah array yaitu sebagai berikut :
{ access } datatype variablename { d1, ..., dn } { = { valuelist } }
 



Tabel berikut ini menjelasankan fungsi parameter-parameter dalam pendeklarasian variabel Array.
No
Parameter
Keterangan
1.    
access
(optional)
Parameter access bersifat opsional, biasanya khusus digunakan pada deklarasi variable instance
2.    
datatype
Diisi denganTipe data yang akan digunakan. Tipe data standard yang tidak dapat digunakan dalam konstanta yaitu tipe data BLOB
3.    
variablename
Diisi dengan nama variabel yang sesuai dengan ketentuan penamaan variabel.
4.    
[ { d1, ..., dn } ]
Brackets and (for fixed-size arrays) one or more integer values (d1 through dn, one for each dimension) specifying the sizes of the dimensions.
For a variable-size array, which is always one- imensional, specify brackets only.
For more information on how variable-size arrays change size, see “Size of variable-size arrays” on page 52.
For a fixed-size array, the number of dimensions is determined
by the number of integers you specify and is limited only by the amount of available memory.
For fixed-size arrays, you can use TO to specify a range of element numbers (instead of a dimension size) for one or more of the dimensions. Specifying TO allows you to change the lower bound of the dimension (upperbound must be greater than lowbound):
[
d1lowbound TO d1upperbound {, ... ,
dnlowbound TO dnupperbound }
]
5.    
{ valuelist }
(optional)
A list of initial values for each position of the array. The values are separated by commas and the whole list is enclosed in braces. The number of values cannot be greater than the number of positions in the array. The datatype of the values must match datatype.

These declarations create variable-size arrays:
integer li_stats[ ] // Array of integers.
decimal {2} ld_prices[ ] // Array of decimals with
// 2 places of precision.
blob lb_data[ ] // Array of variable-size
// blobs.
date ld_birthdays[ ] // Array of dates.
string ls_city[ ] // Array of strings.
// Each string can be
// any length.
This statement declares a variable-size array of decimal number (the declaration does not specify a precision, so each element in the array takes the precision of the value assigned to it):
dec lc_limit[ ]

These declarations create fixed-size, one-dimensional arrays:
integer li_TaxCode[3] // Array of 3 integers.
string ls_day[7] // Array of 7 strings.
blob ib_image[10] // Array of 10
// variable-size blobs.
dec{2} lc_Cost[10] // Array of 10 decimal
// numbers.
// Each value has 2 digits
// following the decimal
// point.
decimal lc_price[20] // Array of 20 decimal
// numbers.
// Each takes the precision
// of the value assigned.

These fixed-size arrays use TO to change the range of index values for the array:
real lr_Rate[2 to 5] // Array of 4 real numbers:
// Rate[2] through Rate[5]
integer li_Qty[0 to 2] // Array of 3 integers
string ls_Test[-2 to 2] // Array of 5 strings
integer li_year[76 to 96] // Array of 21 integers
string ls_name[-10 to 15] // Array of 26 strings

In an array dimension, the second number must be greater than the first. These declarations are invalid:
integer li_count[10 to 5] // INVALID: 10 is
// greater than 5
integer li_price[-10 to -20] // INVALID: -10
// is greater than -20

This declaration creates a six-element, two-dimensional integer array. The individual elements are li_score[1,1], li_score[1,2], li_score[1,3], li_score[2,1], li_score[2,2], and
li_score[2,3]:
integer li_score[2,3]
This declaration specifies that the indexes for the dimensions are 1 to 5 and 10 to 25:
integer li_RunRate[1 to 5, 10 to 25]
This declaration creates a 3-dimensional 45,000-element array:
long ll_days[3, 300, 50]

This declaration changes the subscript range for the second and third dimension:
integer li_staff[100, 0 to 20, -5 to 5]
More declarations of multidimensional arrays:
string ls_plant[3,10] // two-dimensional array
// of 30 strings
dec{2} lc_rate[3,4] // two-dimensional array of 12
// decimals with 2 digits
// after the decimal point
This declaration creates three decimal arrays:
decimal{3} lc_first[10],lc_second[15,5],lc_third[ ]


PowerBuilder akan menginisialisasikan setiap elemen dalam sebuah array dengan nilai default yang sama sesuai ketentuan tipe datanya. Misalnya,  ketika sebuah array dideklarasikan dengan tipe data integer, maka semua elemen dalam array tersebut terisi default nol (0), seperti contoh berikut ini :
integer li_counter[5]

 


Maka  elemen data di li_counter[1], li_ counter[2], sampai dengan elemen li_ counter[5] semuanya terisi nilai awal nol (0).

In a simple array, you can override the default values by initializing the elements of the array when you declare the array. You specify the values in a comma-separated list of values enclosed in braces. You do not have to initialize all the elements of the array, but you cannot initialize values in the middle or end without initializing the first elements.

In a multidimensional array, you still provide the values in a simple, comma-separated list. When the values are assigned to array positions, the first dimension is the fastest-varying dimension, and the last dimension is the slowest-varying. In other words, the values are assigned to array positions by looping over all the values of the first dimension for each value of the second dimension, then looping over all the values of the second dimension for each value of the third, and so on.

Assigning values
You can assign values to an array after declaring it using the same syntax of a list of values within braces:
integer li_Arr[]
Li_Arr = {1, 2, 3, 4}



Example 1
This statement declares an initialized one-dimensional array of
three variables:
real lr_Rate[3]={1.20, 2.40, 4.80}

Example 2
This statement initializes a two-dimensional array:
integer li_units[3,4] = {1,2,3, 1,2,3, 1,2,3, 1,2,3}
As a result:
Li_units[1,1], [1,2], [1,3], and [1,4] are all 1
Li_units[2,1], [2,2], [2,3], and [2,4] are all 2
Li_units[3,1], [3,2], [3,3], and [3,4] are all 3

Example 3
This statement initializes the first half of a 3-dimensional array:
integer li_units[3,4,2] = &
{1,2,3, 1,2,3, 1,2,3, 1,2,3}
As a result:
Li_units[1,1,1], [1,2,1], [1,3,1], and [1,4,1] are all 1
Li_units[2,1,1], [2,2,1], [2,3,1], and [2,4,1] are all 2
Li_units[3,1,1], [3,2,1], [3,3,1], and [3,4,1] are all 3
Li_units[1,1,2], [1,2,2], [1,3,2], and [1,4,2] are all 0
Li_units[2,1,2], [2,2,2], [2,3,2], and [2,4,2] are all 0
Li_units[3,1,2], [3,2,2], [3,3,2], and [3,4,2] are all 0

No comments:

Post a Comment