You are currently browsing the category archive for the ‘coding’ category.
klo RPGLE pake %trim, CL pake *TCAT.
exp :
CHGVAR VAR(&LINK) VALUE('/' *TCAT &HOME *TCAT '/' *TCAT &FOLDER *TCAT '/' *CAT &ALL)
Bagi para pecinta indicator, mungkin ini sedikit tips untuk mempermudah membaca code dikemudian hari.
Buat variable found/not found :
D Found S 1A INZ('0')
D NotFound S 1A INZ('1')
Kemudian di kodingan bisa seperti ini :
c DISKEY chain T1KEN10LR 96
c if *in96 = NotFound
atau
c DISKEY chain T1AGUNAR 98
c if *in98 = NotFound or
c (*in98 = Found and aStaval = 'S')
Toh ini akan sama aja dengan :
c DISKEY chain T1KEN10LR 96
c if *in96 = '1'
atau
c DISKEY chain T1AGUNAR 98
c if *in98 = '1' or
c (*in98 = '0' and aStaval = 'S')
Cuma perlu diingat, untuk command LOOKUP found itu bernilai ‘1’ dan not found bernilai ‘0’ (kebalikan dari chain/reade)
*Nb. Tips ini didapat dari mas Prayugo ketika diskusi optimalisasi JF.
Error/Message CPF4131 adalah Runtime Error. Hal ini biasanya terjadi karena Program RPG dan FILE tidak sinkron. Skenario kasus yang biasanya menyebabkan CPF4131 :
1. RPG A di-compile dengan kondisi FILE 1 (PF/LF).
2. Ada perubahan struktur di File 1 tersebut, lalu di-compile.
3. RPG A yang menggunakan File 1 tidak di-compile ulang.
4. Run RPG A, maka MSGW CPF4131
Pertanyaannya : “Bagaimana bisa tahu atau memastikan bahwa RPG A sudah benar menggunakan File 1 ?“
Jawab : Menggunakan command DSPPGMREF dan DSPFD
Penjelasan :
Isi dari Error CPF4131 adalah sebagai berikut :
Message ID . . . . . . . . . : CPF4131
Message file . . . . . . . . : QCPFMSG
Library . . . . . . . . . . : QSYS
Message . . . . : Level check on file &2 in library &3 with member &4.
Cause . . . . . : The file requested to be opened is file &1. The file
actually opened is file &2 in library &3. For the file actually opened, the
record format level identifiers supplied by the program does not match the
file actually opened.
Recovery . . . : Do one of the following, then try the request again:
-- Compile the program again.
-- Specify the *NO value for the LVLCHK parameter as an override using the
appropriate OVRDBF, OVRDSPF, OVRICFF, or OVRPRTF command.
Perhatikan yang di cetak tebal. Dikatakan bahwa : “Record Format Level Indentifier does not match”.
1. Cara untuk mengetahui untuk mengetahui Record Format Level Identifier pada File adalah dengan menggunakan command DSPFD <nama file>. Contoh, berikut adalah bagian informasi menggunakan DSPFD dari File T1MSTRKO :
Record Format Level
Format Fields Length Identifier
T1MSTRKR 108 1083 37DC85F1F3062
Diketahui bahwa Identifier dari T1MSTRKO adalah 37DC85F1F3062. Nilai ini tentunya berbeda-beda pada setiap file.
2. Cara untuk mengetahui Record Format Level Identifier dari setiap File yang digunakan pada program RPG adalah dengan menggunakan command DSPPGMREF <nama program>. Contoh, berikut adalah bagian informasi menggunakan DSPPGMREF dari Program DISMVALR (Program ini menggunakan File T1MSTRKO) :
Object . . . . . . . . . . . . . . . . . : T1MSTRKO
Library . . . . . . . . . . . . . . . . . : JF-(sensor :p)-D
Object type . . . . . . . . . . . . . . . : *FILE
File name in program . . . . . . . . . . : T1MSTRKO
File usage . . . . . . . . . . . . . . . : Input
Output
Update
Number of record formats . . . . . . . . : 1
Record Format Format Level Identifier Field Count
T1MSTRKR 37DC85F1F3062 108
Terlihat bahwa Identifier dari T1MSTRKO yang digunakan adalah 37DC85F1F3062. Dan ini sama dengan File Identifier pada T1MSTRKO, sehingga ketika DISMVALR di-run tidak akan memunculkan message CPF4131 untuk file T1MSTRKO. Jika Berbeda ?
Apa yang harus diperhatikan ketika mereviu suatu code ?
1. Jangan sampai ada LOOP yang tidak punya exit condition. Jika terjadi kasus ini FATAL akibatnya, bisa bikin server down karena cpu proses bisa mencapai 100%.
2. Jangan pelit kasih komentar, bikin susah orang lain buat baca code.
3. Khusus RPG. Jika menggunakan File dengan Spec File Type : “U” dan kita hanya perlu Read Data tanpa UPDATE (atau proses record lainnya) MAKA gunakan extend operation code N. (exp : “CHAIN(N)”). Chain terhadap File dengan Type “U” akan me-lock record tersebut. Lock akan lepas ketika telah sampai pada line Update/Delete terhadap File tersebut.
4. …
*Ini sama aja dengan Apa yang harus diperhatikan ketika coding
