You are currently browsing the category archive for the ‘technology’ category.


 d up              C                   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
 d lo              C                   'abcdefghijklmnopqrstuvwxyz'
 d case            S            100A
 c     *entry        plist
 c                   parm                    case
 /FREE
       case = %xlate(lo:up:case);
 /END-FREE
 
Advertisements

Banyak metode yang dapat digunakan untuk mengambil source code dari AS/400 ke PC. Saya lebih sering menggunakan FTP, karena lebih mudah dapat dibaca di PC berupa text file. Kali ini akan saya coba ulas sedikit cara mengambil source code dari AS/400 ke PC (Os. Windows).

Asumsi bahwa source code yang akan diambil berada di :

AS/400 dengan IP : 10.10.1.10
Library : Eden
Source File : QRPGLESRC
Member : TST1R

Cara simple untuk mengambil code tersebut adalah menggunakan commad prompt yang tersedia di Windows. Berikut langkah-langkahnya

1. Nyalakan aplikasi command prompt. Secara default apliasi ini ada di “Program Files” -> “Accesories” -> “Command Prompt”. Tips : tekan Win+R, kemudian ketikan “cmd” (tanpa tanda kutip) dan Enter.

2. Tuju ke folder yang akan dijadikan tempat untuk menyimpan source code yang akan diambil. Misalkan saya akan menyimpan di Drive D, maka commandnya adalah “D:”.

3. Akses server AS/400 menggunakan FTP. Ketikan command FTP ip-Address, dalam hal ini : “FTP 10.10.1.10” (tanpa tanda kutip). Kemudian Log-in.

4. Set library source code sebagai current library. Gunakan command “CD nama-library”, dalam hal ini : “CD Eden” (tanpa tanda kutip).

6. Ambil source code. Gunakan command “Get nama-source-file.nama-member”, dalam hal ini : “Get QRPGLESRC.TST1R” (tanpa tanda kutip).

7. Maka source code akan ada di dirve D dengan nama file : Qrpglesrc.Tst1R. Source code ini berupa text file, bisa dibuka di notepad atau text editor lainnya.

8. Untuk keluar dari FTP dan Command Prompt, ketikan command bye – enter – exit – enter.

Kurang lebih jika step-step ini dijalankan yang muncul di layar command prompt akan seperti ini :

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings>d:
D:\>FTP 10.10.1.10
Connected to 10.10.1.10.
220-QTCP at AS400.
220 Connection will close if idle more than 5 minutes.
User (10.10.1.10:(none)): eden
331 Enter password.
Password:
230 EDEN logged on.
ftp> cd eden
250 "EDEN" is current library.
ftp> get qrpglesrc.tst1r
200 PORT subcommand request successful.
150 Retrieving member TST1R in file QRPGLESRC in library EDEN.
250 File transfer completed successfully.
ftp: 633 bytes received in 0.09Seconds 6.73Kbytes/sec.
ftp> bye
221 QUIT subcommand received.
D:\> exit

Untuk selanjutnya, dengan beberapa modifikasi, cara ini saya gunakan sebagai salah satu cara dalam mem-backup source code AS/400.

Awalnya cuma buat adik aja.

Kemudian berkembang, saya share buat anak-anak PAMAUNG… lebih banyak di share mungkin akan lebih bermanfaat.

Akhirnya saya post di disini juga, memungkinkan lebih banyak lagi yang bisa pakai.

Apa isi file ini ?

Tabel-tabel untuk melihat gambaran nilai mata kuliah dan pengaruhnya terhadap IP/IPK.

Bagaimana cara menggunakannya ?

Isi beberapa field yang perlu diisi dalam tabel tersebut, kemudian IP/IPK akan terhitung dengan sendirinya.

Tabel Rekapitulasi memberikan gambaran secara umum dari IP/IPK.

Apa yang perlu diisi ?

Identitas diri (optional) dibagian paling atas.

Nama mata kuliah, sks dari mata kuliah tersebut, dan nilai mutu (A,B,C,D,E,F) dari mata kuliah tersebut.

Mata kuliah tertentu masih saya ambil di semester ini, boleh saya langsung isi nama mata kuliahnya dan nilainya ?

Silahkan, ini salah satu manfaat yang ingin diambil dari file ini.

Isikan TARGET nilai mata kuliah-mata kuliah yang diambil semester ini, kmudian kamu akan tahu berapa kira-kira IP kamu smester ini dengan nilai tersebut. Dan berapa IPK kamu pada akhirnya nanti. Nilai IP/IPK akan berubah dengan sendirinya begitu kamu menuliskan Nilai Mata Kuliah tersebut.

Jangan lupa jumlah sks-nya isikan juga.

Boleh saya share file ini ke teman-teman lainnya ?

Silahkan, dengan senang hati. Saya akan merasa senang jika ini dapat berguna dan bermanfaat.

Boleh saya utak-atik function atau isi dari file ini?

Silahkan, namun tanggung jawab juga yah 🙂

Jika ada koreksi dari isi file ini mohon dibahas juga disini, agar saya dapat melakukan perbaikan.

Apakah ini “tested” ?

yup, ketika kuliah saya melakukan hal ini.

 

Download Me : IPK calculation.xls

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 ?

Reminder saya kali ini adalah cara me-non-aktif-kan Auto Play saat USB device atau CD/DVD dihubungkan dengan PC/Laptop. Hal ini salah satu yang WAJIB saya lakukan setelah Instal OS Windows 😀
Me-non-aktif-kan Auto Play ini berguna untuk menangkal aplikasi yang tertanam di FlashDisk/CD/DVD untuk langsung Run dengan sendirinya. Jika aplikasi itu adalah virus, maka akan sangat membantu. Kita tidak perlu khawatir lagi jika ada FlashDisk yang akan nyolok ke PC/Laptop kita.
Namun efek sampingnya adalah ketika autorun itu ada didalam CD/DVD film yang biasanya autorun itu digunakan untuk mempermudah kita dalam menonton film tersebut. yaa… sedikit repot-repot gapapa lah. Jalankan Aplikasi Player Video kita secara manual, trus browse deh ke CD/DVD drive… then Play 😉

Cara me-non-aktif-kan Auto Play saya kutip secara keseluruhan dari Finderonly yang berjudul “Mencegah Virus Dari Flashdisk Menginfeksi Komputer Kita”. Berikut ringkasannya :

Cara me-non-aktif-kan Auto Play :
– Klik Start –> run “gpedit.msc”
– Pilih Computer Configuration –> Administrative Templates
– Lalu Pilih System, cari file Turn Off Auto Play dan klik double
– Lalu centang pilihan enabled dan Turn Off Auto Play pilih All Drive
– Lalu klik OK, Tutup dan restart

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

Banyak cara untuk mendownload video dari youtube. Salah satunya adalah dengan memanfaatkan site keepvid. nah, begini caranya 😉

1. Buka video youtube yang mau di download. Misalnya : video pertandingan AC milan vs AS Roma, ketika perpisahan maldini yang dimenangkan Roma dengan skor 2-3.

2. Copy alamat web nya. (exp : http://www.youtube.com/watch?v=5mvQIEfE2Ck )

3. Buka situs keepvid. ( http://www.keepvid.com )

4. Paste alamat web video tadi ke URL di situs Keepvid.

5. Klik Download / tekan Enter.

6. Akan muncul halaman keepvid berikutnya yang menyajikan link video tersebut yang siap di download 😉

7. Pilih dalam format apa file video itu mau di-save : (dot) .flv atau (dot) .mp4

8. Klik kanan kemudian “Save Target As” atau “Save Link As” pada link file tersebut.

9. Rename atau beri nama file sesuai selera…

10. Download in progress deh….

Happy Download 😉

keepVid layar ke pertama keepVid layar ke kedua

thanks to Mr. Colin.W for the answer, it’s works 😀

Mr. Colin. W said :

“I usually get that message when I have not set a parameter in a calling
program, and im trying to use it in the called program,
or I am passing a field that is longer or shorter than the parameter field
that I have declared and so am messing up the parameters somehow”

and that’s true. I’ve got this error to (Pointer not set for location referenced), in my case it cause by the shorter parameter that i’m passing to another program. from CL program to another CL program and from CL program to RPGLE program.

*inti masalah ada di bagian yang dicetak tebal

skenario :

  1. Java Login ke AS400 menggunakan User : EDEN
  2. Java Call Program A (program CL)
  3. Program A memanggil program B. program B adalah program RPG yang akan membuat SpoolFile (output yang dihasilkan dari PRTF)
  4. Program A akan membuat satu file PF kosong yang terdiri dari 1 Field Char dengan panjang 255
  5. Program A kemudian mengcopykan spoolFile (poin 3) ke PF (poin 4) [cpysplf].
  6. PF yang telah terisi tersebut kemudian diambil oleh Java menggunakan FTP.

// ketika java call rpg program, dia akan menggunakan user : QUSER Di SubSystem QUSRWRK

Work with Job
System: ASDEV02
Job: QZRCSRVS User: QUSER Number: 594087

// Namun di Job Status Atribut, Current User Profile nya menggunakan user ketika java login ke AS400 nya

Display Job Status Attributes
System: ASDEV02
Job: QZRCSRVS User: QUSER Number: 594087
Status of job . . . . . . . . . . . . . . . : ACTIVE
Current user profile . . . . . . . . . . . : EDEN
Job user identity . . . . . . . . . . . . . : EDEN
Set by . . . . . . . . . . . . . . . . . : *DEFAULT
Subsystem . . . . . . . . . . . . . . . . . : QUSRWRK
Subsystem pool ID . . . . . . . . . . . . : 1
Type of job . . . . . . . . . . . . . . . . : PJ
Special environment . . . . . . . . . . . . : *NONE
Program return code . . . . . . . . . . . . : 1

// Dan ketika rpg program yang di call java itu membuat spoolfile…. job name, user, dan job number nya beda lagi.

Work with All Spooled Files
File
Opt File     Nbr Job     User Number
TESSPLFT 732 QPRTJOB EDEN 706513

// Nah untuk Copy Spool File To PF (CPYSPLF) diperlukan Job Deskripsi (Job, User dan Number) yang ada di SpoolFile, SpoolFile Number, dan SpoolFile Name.

Copy Spooled File (CPYSPLF)
Spooled file . . . . . . . . . . Name
To data base file . . . . . . . Name
Library . . . . . . . . . . . *LIBL Name, *LIBL, *CURLIB
Job name . . . . . . . . . . . . * Name, *
User . . . . . . . . . . . . . Name
Number . . . . . . . . . . . . 000000-999999
Spooled file number . . . . . . *ONLY 1-999999, *ONLY, *LAST, *ANY
Job system name . . . . . . . . *ONLY Name, *ONLY, *CURRENT, *ANY
Spooled file created:
Creation date . . . . . . . . *ONLY Date, *ONLY, *LAST
Creation time . . . . . . . . Time, *ONLY, *LAST
To member . . . . . . . . . . . *FIRST Name, *FIRST
Replace or add records . . . . . *REPLACE *REPLACE, *ADD

// SpoolFile Name merupakan nama PRTF yang menjadi output.
// SpoolFile Number bisa diperoleh menggunakan INFDS dari 123 sampai 124 (integer Field/I)
// dari Job Deskripsi SpoolFile, saya baru bisa memperoleh User. Yaitu dengan menggunakan Retrieve Job Atribut dengan parameter Current user.
// klo Job Deskripsi (Job name, User dan Job Number) dicari menggunakan Retrieve Job Atribut, mka yang diperoleh adalah Job Deskrispi yang dari WRKACTJOB (QZRCSRVS/QUSER/#number). sedangkan yang diperlukan adalah job deskripsi di spoolFile.
// Untuk mendapatkan Job Name dan Job Number dari Job Deskripsi SpoolFile ada yang bisa bantu? ada yang tau command CL atau RPG nya?

// Sebelumnya saya pernah mencoba menggunakan Submit Job atau Change Job. namun ini berakibat SpoolFile Number kembali dari 1 lagi. sehingga ketika CPYSPLF ditemukan 2 spoolFile. sehingga muncul pesan kesalahan
// Solusi menggunakan option *LAST pernah saya coba juga. Namun ini tidak bisa dilakukan karena kehebatan proses paralelisme.
// Googling pun belum menorehkan hasil 😦
// Ada Solusi menggunakan API, namun belum berhasil juga sampe sekarang 😦
// Ada Solusi lain, namun mengubah skenario. yaitu program B jadinya tidak membuat SpoolFile, namun dia langsung menulis ke PF. ini membutuhkan trik DS sepertinya ;D Read the rest of this entry »