AS/400 Dasar
i
AS/400 Dasar
AS/400 Dasar
ii
REVISION HISTORY NUMBER
DATE
1.1
2014-01
DESCRIPTION
NAME SF
AS/400 Dasar
iii
Contents 1
Pengantar
1
2
Perangkat
1
3
AS/400 Hosting
1
4
Menu dan Command
2
5
Job dan Message
8
6
Library, File, Member dan DDS
12
7
DFU
14
8
Query
20
9
Pemrogaman RPG Dasar
29
AS/400 Dasar
1
1 / 45
Pengantar
Dalam tutorial ini penulis akan mencoba mengajarkan dasar-dasar konsep dan praktek yang harus dikuasai seseorang supaya bisa menggunakan AS/400 untuk melakukan pengolahan data.
2
Perangkat
Untuk bisa mengakses terminal AS/400 lewat jaringan TCP/IP maka anda membutuhkan software emulator terminal. Software emulator terminal yang digunakan di tutorial ini adalah tn5250. Situs web software ini adalah http://tn5250.sourceforge.net/. Distro Fedora sudah memiliki software ini dalam reponya dan bisa diinstall dengan perintah : sudo yum install tn5250
Sedangkan distro Ubuntu memiliki software ini untuk Ubuntu 10.04 tapi software ini tetap bisa diinstalasi di distro Ubuntu yang lebih baru. Situs download untuk Ubuntu adalah http://packages.ubuntu.com/lucid/tn5250. Install juga software xterm supaya tn5250 menggunakan mode GUI. AS/400 memiliki 24 kunci function sedangkan kebanyakan keyboard PC memiliki 12 kunci function. Tekan Shift lalu kunci function untuk menekan kunci function diatas 12. F13 adalah Shift-F1, F14 adalah Shift-F2 dan seterusnya. Jika anda membuat kesalahan masukan seperti menekan kunci di saat kursor tidak berada di posisi layar yang bisa menerima masukan maka layar akan terkunci dan muncul pesan X II dibagian paling bawah layar. Jika ini terjadi maka tekan tombol Ctrl untuk melepaskan kuncian layar.
3
AS/400 Hosting
Penulis menggunakan hosting AS/400 gratis dari situs http://rzkh.de. Daftarkan diri anda disana untuk mendapatkan akses gratis ke AS/400. Penulis mendaftarkan diri disana dengan nama user SAMUELF. Karena itu penulis mendapatkan 2 library yaitu SAMUELF1 dan SAMUELF2. Tutorial ini menggunakan dua library tersebut. Sesuaikan nama library dalam tutorial ini dengan nama library yang anda dapatkan.
AS/400 Dasar
4
Menu dan Command
Layar Sign On AS/400. Masukkan user name dan password anda untuk masuk.
2 / 45
AS/400 Dasar
3 / 45
Pada saat anda masuk ke AS/400 maka layar pertama yang ditampilkan adalah layar menu GUEST. Menu adalah cara termudah menggunakan fasilitas yang disediakan oleh OS/400. Anda menjalankan item menu dengan mengetik angka item menu dan menekan kunci Enter. Menjalankan item menu bisa menampilkan menu baru atau menjalankan command.
AS/400 Dasar
Menjalankan item menu 10 dari menu GUEST akan menampilkan menu MAIN.
4 / 45
AS/400 Dasar
Menjalankan item menu 1 dari menu MAIN menampilkan menu USER. Keluarlah dari menu dengan menekan F3. Kita juga bisa menampilkan menu USER dengan mengetikkan perintah berikut: ===> GO USER
Command GO adalah command untuk menampilkan menu.
5 / 45
AS/400 Dasar
6 / 45
Menjalankan item menu 1 dari menu USER menampilkan menu dari command WRKJOB. Keluarlah dari command dengan menekan F3. Kita juga bisa menjalankan command WRKJOB dengan mengetikkan perintah berikut: ===> WRKJOB
Maka command WRKJOB akan dijalankan dan menampilkan menu. Keluarlah dari menu ini dengan menekan F3.
AS/400 Dasar
7 / 45
Dari menu MAIN akses kembali menu USER lalu jalankan item menu 4 yaitu Submit a Job. Layar diatas akan ditampilkan. Item menu 4 menu USER menjalankan command SBMJOB. Command ini membutuhkan masukan dari user karena itu layar untuk menerima masukan ditampilkan.
AS/400 Dasar
8 / 45
Jika anda belum paham benar command yang anda panggil maka anda bisa menampilkan layar dokumentasi command. Gerakkan cursor anda ke baris paling atas ke tulisan "Submit Job" lalu tekan F1. Maka layar dokumentasi dari command akan ditampilkan. Jika anda ingin menampilkan masukan yang bisa diterima oleh command maka anda bisa mengetik nama command lalu menekan tombol F4. Silahkan anda menjelajahi menu yang disediakan oleh OS/400. Dengan menjelajahi menu yang disediakan anda akan mendapat gambaran fasilitas apa saja yang disediakan oleh OS/400.
5
Job dan Message
Setiap proses yang berjalan didalam OS/400 dinamakan job. Job yang berjalan melakukan komunikasi dengan user menggunakan message. Job bisa dijalankan secara interaktif ataupun batch. Job yang berjalan secara interaktif akan berjalan didalam subsystem QINTER sedangkan job yang berjalan secara batch akan berjalan dalam subsystem QBATCH. Kita menampilkan message yang ditujukan untuk kita dengan menggunakan command: ===> DSPMSG
AS/400 Dasar
Jika kita sudah membaca semua message maka biasanya message tersebut kita hapus dengan menekan F13 atau F16. Kita menampilkan job yang sedang berjalan dengan menggunakan command: ===> WRKACTJOB
9 / 45
AS/400 Dasar
10 / 45
Dari layar diatas bisa dilihat sebagian user yang sedang aktif memakai sistem. Kita juga dapat melihat command apa saja yang sudah kita jalankan dan message yang dihasilkan job dari command tersebut dengan menggunakan command : ===> DSPJOBLOG
AS/400 Dasar
11 / 45
Layar menampilkan job log mulai dari perintah yang terakhir dijalankan. Untuk bisa menampilkan perintah sebelumnya dalam format detail maka tekan F10 dan PageUp.
AS/400 Dasar
12 / 45
Layar menampilkan command yang sudah dijalankan penulis.
6
Library, File, Member dan DDS
OS/400 adalah sistem operasi berbasis obyek. Semua yang disimpan oleh OS/400 adalah obyek. Obyek disimpan dalam library. Salah satu jenis obyek adalah file. Sebuah file fisik bisa berisi banyak member. Member adalah kumpulan record didalam file fisik. File di AS/400 bisa berupa file fisik (Physical File) atau file logis (Logical File). File fisik digunakan untuk menyimpan source code atau data. File logis digunakan untuk menampilkan sebagian field dari file fisik, menampilkan urutan berdasarkan field-field tertentu dari file fisik atau menampilkan gabungan dari beberapa file fisik. File untuk menyimpan data diciptakan dengan membuat struktur dari file data tersebut dalam member dari source file dengan tipe PF. Buat member CUSTPF di file QDDSSRC dalam library SAMUELF1 dengan tipe PF dengan command berikut: ===> STRSEU SRCFILE(SAMUELF1/QDDSSRC) SRCMBR(CUSTPF) TYPE(PF)
Lalu isi dengan code berikut: * * * * *
AUTHOR : SAMUEL FRANKLYN <SFRANKLYN AT GMAIL.COM> LOCATION : SAMUELF1/QDDSSRC(CUSTPF) DATE : 2014-02-02 FILE DEFINITION
A * RECORD DEFINITION A R CUSPFR * FIELD DEFINITION A CSNUM A
UNIQUE TEXT(’CUSTOMER’) 10S 0
TEXT(’NUMBER’) COLHDG(’NUMBER’)
AS/400 Dasar
A A A A A A A A A A A A
13 / 45
CSNAME
30A
CSBDAY
L
CSADDR
50A
CSPOST
5A
CSEML
50A
TEXT(’NAME’) COLHDG(’NAME’) TEXT(’BIRTH DAY’) COLHDG(’BIRTH DAY’) DATFMT(*ISO) TEXT(’ADDRESS’) COLHDG(’ADDRESS’) TEXT(’POST CODE’) COLHDG(’POST CODE’) TEXT(’EMAIL’) COLHDG(’EMAIL’)
* KEY DEFINITION K CSNUM
Kata kunci UNIQUE di baris pertama digunakan untuk menyatakan bahwa file data ini memiliki 1 atau lebih fields yang nilainya unik. Baris berikutnya dimulai dengan huruf R yang berarti ini adalah definisi record. Kata kunci TEXT digunakan untuk mendokumentasikan keterangan record dan field. Kata kunci COLHDG digunakan untuk mendefinisikan keterangan yang ditampilkan kepada pemakai. Field didefinisikan dengan panjang field, tipe data dan jumlah desimal dibelakang koma untuk field angka. Dalam file CUSTPF tipe data yang digunakan adalah S (Zoned Decimal), A (Character) dan L (Date). Kata kunci DATFMT digunakan untuk menentukan format dari tanggal. Format *ISO berarti tanggal akan ditampilkan dalam format YYYY-MM-DD. Baris yang dimulai dengan huruf K mendefinisikan nama field yang digunakan sebagai key yaitu CSNUM. Bahasa yang digunakan untuk mendefinisikan file fisik dan file logis data dinamakan bahasa DDS (Data Description Specification). Untuk mempelajari DDS lebih mendalam maka anda bisa membaca buku dokumentasi DDS yaitu "DDS Reference Concepts". Untuk mempelajari DDS untuk file fisik dan file logis data maka anda bisa membaca buku dokumentasi "DDS Reference Physical and Logical Files". Sesudah source code untuk file fisik ditulis maka anda harus melakukan kompilasi untuk membentuk file fisik tersebut. Gunakan command berikut untuk melakukan kompilasi. ===> CRTPF FILE(SAMUELF1/CUSTPF) SRCFILE(SAMUELF1/QDDSSRC)
Penulis memasukkan data ke dalam CUSTPF. Anda bisa menampilkan isi file CUSTPF yang sudah anda buat dengan menggunakan command berikut: ===> DSPPFM FILE(SAMUELF1/CUSTPF)
AS/400 Dasar
14 / 45
Mari kita buat file logis berdasarkan file fisik CUSTPF. Kita harus membuat source code untuk file logis tersebut: ===> STRSEU SRCFILE(SAMUELF1/QDDSSRC) SRCMBR(CUSTLF) TYPE(LF)
Lalu isi dengan code berikut: * * * * *
AUTHOR : SAMUEL FRANKLYN <SFRANKLYN AT GMAIL.COM> LOCATION : SAMUELF1/QDDSSRC(CUSTLF) DATE : 2014-02-02
RECORD DEFINITION R CUSLFR FIELD DEFINITION * A CSBDAY A CSNAME * KEY DEFINITION A K CSBDAY A K CSNAME A
PFILE(SAMUELF1/CUSTPF)
Berdasarkan code diatas maka file logis ini hanya menampilkan sebagian field dari file fisik dan merubah urutan data yang ditampilkan. Sesudah source code untuk file logis ditulis maka anda harus melakukan kompilasi untuk membentuk file logis tersebut. Gunakan command berikut untuk melakukan kompilasi. ===> CRTLF FILE(SAMUELF1/CUSTLF) SRCFILE(SAMUELF1/QSRC)
Anda bisa menampilkan isi file CUSTLF yang sudah anda buat dengan menggunakan command berikut: ===> DSPF FILE(SAMUELF1/CUSTLF)
Data yang ditampilkan oleh file logis disortir berdasarkan CSBDAY dan CSNAME. Hanya field CSBDAY dan CSNAME yang ditampilkan oleh file logis CUSTLF sesuai dengan source code file logis.
7
DFU
Salah satu cara memasukkan data kedalam file fisik adalah dengan menggunakan program DFU. Program DFU adalah program yang diciptakan oleh tools DFU. Jalankan command berikut:
AS/400 Dasar
===> STRDFU
Jalankan item menu 5. Layar berikut akan tampil:
15 / 45
AS/400 Dasar
Masukkan nilai untuk Data file dan Library sehingga sesuai dengan layar diatas. Lalu tekan Enter.
16 / 45
AS/400 Dasar
17 / 45
Layar entry data DFU ditampilkan dalam mode CHANGE. Kita ingin mengubah record nomor 25 maka kita masukkan 25 lalu menekan Enter.
AS/400 Dasar
Layar menampilkan record nomor 25. Jika ingin menambah record maka tekan F9.
18 / 45
AS/400 Dasar
Keluarlah dari program DFU dengan menekan F3.
19 / 45
AS/400 Dasar
20 / 45
Tekan Enter untuk mengakhiri program. Tutorial diatas hanya membahas bagaimana memasukkan data lewat DFU menggunakan temporary program. Sesudah selesai memasukkan data maka program DFU yang digunakan akan dihapus. Kita bisa membuat program DFU yang lebih permanen akan tetapi mengingat banyaknya keterbatasan DFU maka penulis tidak akan membahas DFU secara mendalam. Penulis mempersilahkan pembaca bermain-main dengan tools STRDFU jika ingin memahami DFU lebih lanjut.
8
Query
Setelah mempelajari memasukkan data menggunakan DFU maka kita akan mempelajari bagaimana menampilkan/mencetak data yang sudah kita masukkan. Untuk melakukan hal ini kita akan mempelajari bagaimana menggunakan fasilitas query di AS/400. Untuk mengakses fasilitas query di AS/400 anda menjalankan command berikut: ====> WRKQRY
AS/400 Dasar
Masukkan nilai 1 untuk Option, CUSQRY untuk Query dan SAMUELF1 untuk library lalu tekan Enter.
21 / 45
AS/400 Dasar
Pilih sesuai dengan layar diatas lalu tekan Enter.
22 / 45
AS/400 Dasar
Masukkan CUSTPF untuk File dan SAMUELF1 untuk library lalu tekan Enter.
23 / 45
AS/400 Dasar
Tekan Enter lagi untuk konfirmasi.
24 / 45
AS/400 Dasar
Tekan F3 untuk menyimpan dan menjalankan query.
25 / 45
AS/400 Dasar
Simpan definisi query lalu jalankan query secara interaktif. Tekan Enter.
Hasil query ditampilkan dilayar.
26 / 45
AS/400 Dasar
27 / 45
Kita kembali ke layar Work with Queries. Keluarlah dari layar ini dengan menekan F3. Jalankan command berikut untuk menjalankan query dan merubah output query ke printer: ===> RUNQRY QRY(SAMUELF1/CUSQRY) OUTTYPE(*PRINTER)
Untuk melihat hasil query maka kita perlu melihat spool file dengan perintah: ===> WRKSPLF
AS/400 Dasar
28 / 45
Spool file hasil query ditampilkan dengan nama QPQUPRFIL. Isi Opt dengan angka 5 lalu tekan Enter.
Tutorial diatas hanya membahas penggunaan query sesederhana mungkin. Mengingat keterbatasan query penulis tidak akan membahas query secara mendalam. Penulis mempersilahkan pembaca bermain-main dengan tools WRKQRY jika ingin memahami query lebih lanjut. Jika pembaca mampu memasukkan data dengan program DFU dan menampilkan/mencetak data tersebut maka pembaca sudah menguasai dasar-dasar pengolahan data di AS/400.
AS/400 Dasar
29 / 45
DFU dan Query memiliki batasan-batasan tertentu. Untuk bisa mengatasi keterbatasan ini maka dibutuhkan kemampuan pemrograman dari RPG.
9
Pemrogaman RPG Dasar
Pertama-tama kita akan membuat program untuk menambahkan, mengubah, menghapus dan membaca record dalam sebuah tabel. Program macam ini biasanya disebut program CRUD (Create, Read, Update and Delete). Untuk menerima input dari user kita menggunakan display file. Bahasa yang digunakan untuk mendefinisikan display file adalah bahasa yang sama dengan yang digunakan untuk mendefinisikan physical dan logical file yaitu DDS (Data Description Specification). : SAMUEL FRANKLYN <SFRANKLYN AT GMAIL.COM> * AUTHOR * LOCATION : SAMUELF1/QDDSSRC(CUSTDF) : 2014-02-06 * DATE * A REF(SAMUELF1/CUSTPF)
Baris pertama dari CUSTDF menyatakan bahwa CUSTDF menggunakan physical file CUSTPF sebagai referensi. Definisi panjang dan tipe data field dalam CUSTDF bisa menggunakan definisi dalam CUSTPF. 1v A R KEYR 2v A CA03(03) 3v A CA15(15) 4v A 1 2USER 5v A 1 24’CUSTOMER KEY’ A A A A
DSPATR(HI) 1 61DATE(*SYS *YY) EDTCDE(Y) 1 72TIME
v
6
v
7
* A A
CSNUMD
R
3 2’NUMBER :’ 3 15REFFLD(CSNUM)
B
* A A A
23 MSGD
78A
O 24
2’F3=Exit F15=Browse’ COLOR(BLU) 2DSPATR(HI)
v
Layar pertama didefinisikan sebagai record format dengan nama KEYR.
v
Jika function key F3 ditekan akan menyalakan indikator 03.
v
Jika function key F15 ditekan akan menyalakan indikator 15.
v
Tampilkan user yang memakai program.
v
Tampilkan CUSTOMER KEY sebagai nama layar dengan warna putih.
1
2
3
4
5
v
6
v
8
v
9
v
10
Tampilkan tanggal dengan format dari system dan menampilkan abad. Tanggal 6 Maret 2014 akan ditampilkan sebagai 3/06/2014.
v
Tampilkan waktu dengan format HH:MM:SS.
v
Tampilkan dan terima input dalam field CSNUMD. Field CSNUMD menggunakan definisi dari field CSNUM di CUSTPF.
v
Tampilkan keterangan function key yang diterima program dalam warna biru.
v
Tampilkan message dari program. Panjang field 78 dan tipe datanya karakter. Field ditampilkan dengan warna putih.
7
8
9
10
AS/400 Dasar
30 / 45
Layar pertama di gunakan untuk menerima input key dari CUSTPF yaitu field CSNUMD. Key ini jika ada dalam file artinya user mau melakukan perubahan record sedangkan jika key ini tidak ada artinya user mau melakukan penambahan record. Jika user ingin melihat record yang sudah tersimpan maka bisa dilakukan dengan browse record yang ada dengan menekan F15. Jika sudah selesai menggunakan program dan ingin keluar dari program maka user bisa menekan F3. RPG adalah bahasa pemrograman yang pada awalnya menyimpan source code dalam format fixed. Dalam format ini maka karakter pada kolom ke 6 menentukan spesifikasi yang digunakan pada baris tersebut. Karakter tertentu pada kolom tertentu memiliki makna yang berbeda-beda sesuai spesifikasi pada baris tersebut. Komentar ditandai dengan karakter * pada kolom ke 7. Selain format fixed RPG memiliki format free untuk spesifikasi tertentu. Penulis tidak akan menggunakan format free dalam tutorial ini. Source code yang ditulis dalam format free tidak bisa divalidasi oleh tools editing standard yaitu SEU. Kalau kita menggunakan format free maka dibutuhkan tools tambahan. Spesifikasi yang kita gunakan untuk program kita hanyalah 3 yaitu: F, D dan C. Spesifikasi F digunakan untuk mendefisinikan file yang dipakai dan bagaimana kita ingin mengakses file tersebut. Spesifikasi D digunakan untuk mendefinisikan variabel yang digunakan program. Spesifikasi C digunakan untuk melakukan pengolahan data. Versi RPG yang digunakan dalam tutorial ini adalah ILE RPG. Anda dapat membaca buku ILE RPG Programmer’s Guide dan ILE RPG Reference untuk mendalami bahasa pemrograman ILE RPG. Editor yang kita gunakan untuk mengedit source code yaitu SEU (Source Entry Utility) bisa menampilkan prompt yang sesuai dengan spesifikasi dari baris source code. Prompt ditampilkan dengan menekan function key F4. Dalam prompt anda juga dapat membaca dokumentasi dari kolom yang harus diisi dengan menekan function key F1. Dalam program ini kita membuka file fisik CUSTPF dan juga file logis CUSLF1. File CUSTPF digunakan untuk mengubah dan dan menambah record sedangkan file CUSLF1 digunakan untuk browsing record yang ada dalam file. * * * * *
AUTHOR : SAMUEL FRANKLYN <SFRANKLYN AT GMAIL.COM> LOCATION : SAMUELF1/QDDSSRC(CUSLF1) DATE : 2014-02-09
RECORD DEFINITION R CSLF1R * FIELD DEFINITION A CSNUM A CSBDAY A CSNAME * KEY DEFINITION A K CSNAME A
PFILE(SAMUELF1/CUSTPF)
Definisi file logis CUSLF1. : * AUTHOR LOCATION : * : * DATE * FCUSTPF UF FCUSLF1 IF FCUSTDF CF F * D CSNAMES D SFLPAG D SFLPAGP1 * C * C * C * C
SAMUEL FRANKLYN <SFRANKLYN AT GMAIL.COM> SAMUELF1/QRPGLESRC(CUSCRUD) 2014-02-06 A E E E
v v 3v
K DISK K DISK WORKSTN
1 2
SFILE(BROSFLR:RRN) S C C
LIKE(CSNAME) CONST(15) CONST(16)
v v
4 5
v
DOW
NOT *IN03
6
EXFMT
KEYR
7
*IN03
8
v
SELECT WHEN
v
AS/400 Dasar
C
31 / 45
EXSR
BYE
WHEN EXSR
*IN15 BROWSE
* C C * C C C C C C C C
OTHER EVAL IF EVAL ENDIF IF EXSR ENDIF
v
9
v
10
MSGD = ’’ v 11 CSNUMD <= 0 MSGD = ’Number must be greater than zero’ MSGD = ’’ ADDUPD
v
12
* C
ENDSL *
C
v
1
v
2
v
3
v
4
v
5
ENDDO
Kolom ke 7 berisi nama file CUSTPF. Kolom 17 berisi U artinya file CUSTPF dibuka dengan mode update. Kolom 18 berisi F artinya file akan diakses secara prosedural dan tidak menggunakan looping internal RPG. Kolom 20 berisi A artinya record bisa ditambahkan dalam file ini. Kolom 22 berisi E artinya file ini menggunakan definisi eksternal. Kolom 34 berisi K artinya file ini diakses menggunakan key. Kolom 36 berisi DISK artinya artinya file ini adalah file fisik atau logis. Kolom ke 7 berisi nama file CUSLF1. Kolom 17 berisi I artinya file CUSLF1 dibuka dengan mode input. Kolom 18 berisi F artinya file akan diakses secara prosedural dan tidak menggunakan looping internal RPG. Kolom 22 berisi E artinya file ini menggunakan definisi eksternal. Kolom 34 berisi K artinya file ini diakses menggunakan key. Kolom 36 berisi DISK artinya artinya file ini adalah file fisik atau logis. Kolom ke 7 berisi nama file CUSTDF. Kolom 17 berisi C artinya file CUSLF1 dibuka dengan mode input dan output. Kolom 18 berisi F artinya file akan diakses secara prosedural dan tidak menggunakan looping internal RPG. Kolom 22 berisi E artinya file ini menggunakan definisi eksternal. Kolom 36 berisi WORKSTN artinya artinya file ini adalah file display. Kolom 44 berisi SFILE(BROSFLR:RRN) artinya subfile bernama BROSFLR akan menyimpan relative record number dari subfile dalam variabel bernama RRN. Konsep subfile dan relative record number akan dijelaskan belakangan. Kolom 7 berisi nama variabel CSNAMES. Kolom 24 berisi S artinya variabel ini berdiri sendiri dan bukan bagian dari struktur data. Kolom 44 berisi LIKE(CSNAME) artinya panjang dan tipe data variabel mengacu kepada field bernama CSNAME. Field ini didefinisikan di CUSTPF. Kolom 7 berisi nama variabel SFLPAG. Kolom 24 berisi C artinya variabel ini adalah konstanta. Kolom 44 berisi CONST(15) artinya nilai konstanta adalah 15.
v
Lakukan pengulangan selagi indikator 03 tidak hidup. Indikator 03 hidup jika function key F3 ditekan.
v
Lakukan output ke layar bernama KEYR di file display CUSTDF lalu tunggu input dari user.
6
7
v
8
Jika indikator 03 hidup yang artinya function key F3 ditekan maka keluar dari program dengan menjalankan subrutin BYE.
v
Jika indikator 15 hidup yang artinya function key F15 ditekan maka browse record dengan menjalankan subrutin BROWSE.
v
Jika indikator 03 dan 15 mati artinya user menekan enter key. Bersihkan variabel MSGD.
9
10
v
11
v
12
Jika variabel CSNUMD yang diinput user sama atau lebih kecil dari nol maka tampilkan pesan kesalahan pada user dengan mengisi variabel MSGD. Jika MSGD tidak berisi artinya tidak ada kesalahan input CSNUMD maka jalankan subrutin ADDUPD.
AS/400 Dasar
A A A A A A A A A A
32 / 45
R ADDUPDR
1
1 3 3 4 4 5 5 6 6 7 7 8 8
2’NUMBER :’ 15REFFLD(CSNUM) 2’NAME :’ 15 2’BIRTHDAY :’ 15 2’ADDRESS :’ 15 2’POST CODE :’ 15 2’EMAIL :’ 15
4
1 1 1
* A A A A A A A A A A A A
CSNUMD
R
O
CSNAME
R
B
CSBDAY
R
B
CSADDR
R
B
CSPOST
R
B
CSEML
R
B
* A A
LINE POS
3 3
v v
CSRLOC(LINE POS) CA03(03) CA12(12) CA23(23) 2USER 24’CUSTOMER ADD/UPDATE’ DSPATR(HI) 61DATE(*SYS *YY) EDTCDE(Y) 72TIME
2
v
3
v
v
0H 0H
5
* A A A
v
1
v
2
v
3
v
4
v
5
23 MSGD
78A
O 24
2’F3=Exit F12=Cancel COLOR(BLU) 2DSPATR(HI)
F23=Delete’
CSRLOC(LINE POS) artinya lokasi kursor bisa dikendalikan oleh program lewat variabel LINE dan POS. Tiga function key bisa diterima oleh layar ini F3, F12 dan F23. Function key F3 akan menyalakan indikator 03. Digunakan untuk keluar dari program. Function key F12 akan menyalakan indikator 12. Digunakan untuk kembali ke layar sebelumnya. Function key F23 akan menyalakan indikator 23. Digunakan untuk menghapus record yang ditampilkan. Header standard dari program yang menampilkan nama user, nama layar, tanggal dan waktu. Field-field dari CUSTPF sesuai dengan CSNUMD yang diinput user di layar KEYR. CSNUMD hanyalah output karena key dari record tidak boleh diubah. Field lainnya adalah field output/input. Variabel LINE dan POS adalah variabel hidden yang digunakan program untuk mengatur posisi kursor. LINE adalah baris dan POS adalah kolom dari kursor. C
ADDUPD
BEGSR
CSNUMD
CLEAR CHAIN EVAL
CUSPFR *ALL CUSTPF CSNUM = CSNUMD
2
DOU
*IN12
4
EXFMT
ADDUPDR
5
*IN03 BYE
6
* C C C * C * C
v v 3v 1
v
v
* C
SELECT *
C C
WHEN EXSR *
v
AS/400 Dasar
C C
33 / 45
*IN12
7
WHEN IF EXSR IF LEAVE ENDIF ENDIF
*IN23 %FOUND DEL *IN23
8
* C C C C C C C * C C C
v
WHEN LEAVE
OTHER EVAL EVAL
v
v
9
MSGD = ’’ POS = 15
* C
SELECT *
C C C
v
WHEN EVAL EVAL
CSNAME = ’’ MSGD = ’Name must not blank’ LINE = 4
WHEN EVAL EVAL
CSBDAY = D’0001-01-01’ MSGD = ’Birthday must not 0001-01-01’ LINE = 5
WHEN EVAL EVAL
CSADDR = ’’ MSGD = ’Address must not blank’ LINE = 6
WHEN EVAL EVAL
CSPOST = ’’ MSGD = ’Post code must not blank’ LINE = 7
WHEN EVAL EVAL
CSEML = ’’ MSGD = ’Email must not blank’ LINE = 8
10
* C C C * C C C * C C C * C C C * C
ENDSL *
C C C C C C C C
IF IF UPDATE ELSE WRITE ENDIF LEAVE ENDIF
MSGD = ’’ %FOUND CUSPFR
v
11
CUSPFR
* C
ENDSL *
C
ENDDO *
C C C
EVAL EVAL EVAL
*IN12 = *OFF *IN23 = *OFF MSGD = ’’
v
12
* C
v
1
ENDSR
Inisialisasi seluruh field yang ada di record format CUSPFR ke nilai kosong. CUSPFR adalah record format dari file fisik CUSTPF.
AS/400 Dasar
v
2
v
3
34 / 45
Cari record dengan key CSNUMD di file CUSTPF. Jika record ditemukan maka record format CUSPFR akan berisi nilai dari file fisik CUSTPF sedangkan jika tidak ditemukan akan berisi nilai kosong karena diinisialisasi di baris sebelumnya. Isi field CSNUM dengan nilai variabel CSNUMD. Hal ini perlu dilakukan karena jika record tidak ditemukan maka nilai CSNUM akan kosong. Key dari CUSTPF yaitu CSNUM tidak boleh bernilai kosong.
v
Lakukan pengulangan sampai indikator 12 hidup. Indikator 12 hidup jika function key F12 di tekan.
v
Lakukan output ke layar bernama ADDUPDR di file display CUSTDF lalu tunggu input dari user.
4
5
v
6
v
7
v
8
v
9
v
10
v
11
v
12
Jika indikator 03 hidup yang artinya function key F3 ditekan maka keluar dari program dengan menjalankan subrutin BYE. Jika indikator 12 hidup yang artinya function key F12 ditekan maka keluar dari pengulangan. Jika indikator 23 hidup yang artinya function key F23 ditekan dan record ada dalam file CUSTPF maka tampilkan layar konfirmasi untuk menghapus record dengan menjalankan subrutin DEL. Jika indikator 23 hidup sesudah menjalankan subrutin DEL artinya function key F23 ditekan lagi dan record dihapus maka keluar dari pengulangan. Penghapusan record membutuhkan konfirmasi ulang dari user untuk menghindari penghapusan yang tidak disengaja. Jadi untuk menghapus record user harus menekan F23 maka layar konfirmasi ditampilkan. Jika user memutuskan untuk menghapus maka harus menekan F23 sekali lagi barulah record dihapus. Jika indikator 03,12 dan 23 mati artinya user menekan enter key. Maka variabel MSGD untuk menampilkan pesan kesalahan dikosongkan. Lalu kursor ditaruh dikolom 15 dengan mengisi variabel POS. Jika salah satu nilai field tidak lolos validasi nilai maka variabel MSGD diisi dengan pesan kesalahan dan cursor ditaruh dibaris dimana field input berada. Jika variabel MSGD kosong artinya semua field lolos validasi maka lakukan ubah jika record sudah ada dan lakukan tambah jika record belum ada. Jika keluar dari pengulangan dengan menekan F12 maka indikator 12 dan 23 dimatikan dan MSGD diisi nilai kosong.
Subfile adalah file dalam display file. Subfile digunakan untuk menampilkan record dalam file fisik/logis. Karena jumlah record dalam file fisik/logis bersifat dinamis maka subfile juga bersifat dinamis. Ada macam-macam teknik untuk menggunakan subfile. Dalam program ini penulis menggunakan teknik dengan skalabilitas terbaik yang bisa menampilkan file dengan isi jutaan record tanpa masalah. Teknik yang digunakan adalah subfile satu halaman dalam satu waktu (page at a time subfile). Kekurangan teknik ini adalah kompleksitasnya dan teknik ini menggunakan banyak kekuatan CPU. Teknik lain lebih sederhana akan tetapi makin banyak record dalam sebuah file maka makin banyak memori yang digunakan. Teknik subfile lain tidak cocok digunakan untuk file dengan jumlah record yang banyak sekali. Untuk menggunakan subfile maka kita harus mendefinisikan 3 record format dalam file display: 1. Subfile. Definisi field dalam file fisik yang akan ditampilkan. 2. Subfile control. Mengatur perilaku dari subfile. 3. Footer. Menampilkan keterangan function key dan pesan kesalahan. A A A A
R BROSFLR CSNUM CSNAME CSBDAY
SFL R R R
O O O
7 2 7 14 7 46
v
Kolom 45 berisi nilai SFL yang menandakan record format BROSFLR adalah subfile.
v
Field yang akan ditampilkan mengacu ke CUSTPF dan bersifat output saja.
1
2
v 2v 1
AS/400 Dasar
A A A A A A A A A N32 A N31 A 31 A 90 A A A A A A A A A A A A A A A A A
v
1
v
2
35 / 45
R BROSFCR
SFLCTL(BROSFLR) CA03(03) CA12(12) SFLSIZ(0015) SFLPAG(0015) OVERLAY ROLLUP(25) ROLLDOWN(26) SFLDSP SFLDSPCTL SFLCLR SFLEND(*MORE) SFLCSRRRN(&RRNC)
RRN RRNC
CSNAMED
4S 0H 5S 0H
R
B
1 2USER 1 24’CUSTOMER BROWSE’ DSPATR(HI) 1 61DATE(*SYS *YY) EDTCDE(Y) 1 72TIME 4 2’NAME :’ 4 15REFFLD(CSNAME) 6 2’NUMBER’ DSPATR(HI) 6 14’NAME’ DSPATR(HI) 6 46’BIRTHDAY’ DSPATR(HI)
v
Jumlah record dalam 1 halaman subfile adalah 15.
v
5
v
6
v
7
Jika indikator 31 hidup maka kosongkan isi dari subfile.
v
v
11
8
v
13
v
14
v
15
Jika indikator 32 mati maka tampilkan subfile yang dikendalikan oleh subfile control. Indikator ini diperlukan jika tidak ada record dalam file fisik/logis. Menampilkan subfile tanpa record akan menyebabkan error. Jadi jika tidak ada record dalam file fisik/logis maka subfile tidak di tampilkan.
v
10
v v 9v v 10 v 11 v 12 7
Key PgDn akan menyalakan indikator 25 sedangkan key PgUp akan menyalakan indikator 26.
Jika indikator 31 mati maka tampilkan subfile bersama subfile control.
9
4
Kolom 45 berisi nilai OVERLAY artinya layar ini bisa ditampilkan bersama sama dengan layar lain. Perilaku normal file display adalah menghapus sebuah layar sebelum menampilkan layar lain. Dengan kata kunci OVERLAY maka apa yang ditulis layar ini tidak akan dihapus saat kita menampilkan layar lain.
v
8
v v 5v 6v 3
Function key yang bisa diterima layar ini adalah F3 dan F12. Function key F3 akan menyalakan indikator 03. Digunakan untuk keluar dari program. Function key F12 akan menyalakan indikator 12. Digunakan untuk kembali ke layar sebelumnya. Jumlah record dalam subfile adalah 15.
4
2
Kolom 45 berisi nilai SFLCTL(BROSFLR) yang menandakan record format BROSFCR adalah subfile control dari subfile yang bernama BROSFLR.
v
3
v v
1
Jika indikator 90 hidup artinya record terakhir sudah ditampilkan. Masih ada record yang belum ditampilkan diindikasikan dengan text More. . . di bagian kanan paling bawah subfile. Jika record terakhir sudah ditampilkan maka text Bottom akan ditampilkan. Relative record number berdasarkan posisi cursor disimpan dalam variabel RRNC.
AS/400 Dasar
v
12
v
13
v
14
v
15
36 / 45
Relative record number disimpan dalam variabel RRN dan relative record number berdasarkan posisi cursor disimpan dalam variabel RRNC. Kedua variabel ini adalah variabel tersembunyi yang tidak ditampilkan dilayar dan hanya diakses oleh program. Header standard dari program yang menampilkan nama user, nama layar, tanggal dan waktu. Menampilkan dan menerima input variabel CSNAMED. Variabel ini digunakan untuk mencari record yang kolom namanya diawali dengan nilai dari variabel ini. Header keterangan untuk field yang ditampilkan subfile dalam warna putih. A A A A
R BROSFFR 23 MSGD
78A
O 24
2’F3=Exit F12=Cancel’ COLOR(BLU) 2DSPATR(HI)
Layar footer menampilkan keterangan function key dan pesan program. C
BROWSE
BEGSR
v
1
* C C C
EVAL EXSR EXSR
MSGD = ’Select record using cursor and Enter’ CLRSFL SFLBLD
DOU
*IN12
2
WRITE EVAL EXFMT
BROSFFR MSGD = ’’ BROSFCR
3
WHEN EXSR
*IN03 BYE
4
WHEN LEAVE
*IN12
5
WHEN SETLL EXSR EXSR CLEAR
CSNAMED <> *BLANKS CSLF1R CLRSFL SFLBLD CSNAMED
6
WHEN CHAIN EVAL EXSR SETLL EXSR EXSR
CSNAMED = *BLANKS AND RRNC > *ZERO BROSFLR CSNUMD = CSNUM ADDUPD CSLF1R CLRSFL SFLBLD
7
WHEN EXSR EXSR
*IN25 AND (NOT *IN90) CLRSFL SFLBLD
8
WHEN EXSR EXSR EXSR
*IN26 AND (NOT *IN32) GOBACK CLRSFL SFLBLD
9
* C * C C C
v v
* C
SELECT *
C C * C C * C C C C C
CSNAMED
* C C C C C C C
RRNC
CSNAMES
* C C C * C C C C * C
ENDSL
v v v
v
v
v
AS/400 Dasar
37 / 45
* C
ENDDO *
C C
*LOVAL
SETLL EVAL
CSLF1R *IN12 = *OFF
v
10
* C
v
1
ENDSR
Tampilkan pesan cara memilih record untuk diubah dengan memindahkan cursor dan menekan enter. Jalankan subrutin CLRSFL untuk membersihkan subfile lalu jalankan subrutin SFLBLD untuk menampilkan subfile.
v
Lakukan pengulangan sampai indikator 12 menyala yang berarti function key F12 ditekan.
v
Tampilkan layar footer BROSFFR. Bersihkan pesan lalu tampilkan layar subfile control BROSFCR untuk menerima input.
v
Jika function key F3 ditekan maka indikator 03 menyala dan keluar dari program dengan menjalankan subrutin BYE.
v
Jika function key F12 ditekan maka indikator 12 menyala dan keluar dari pengulangan.
v
Jika field CSNAMED diisi maka geser record ke posisi dimana CSNAME sama atau lebih besar dari CSNAMED.
2
3
4
5
6
v
7
v
8
v
9
v
10
Jika field CSNAMED kosong dan RRN dari cursor lebih besar dari nol berarti user menggeser cursor untuk memilih record lalu menekan enter. Ubah nilai CSNUMD ke nilai CSNUM dari record lalu jalankan subrutin ADDUPD. Geser record ke posisi dimana field CSNAME sama atau lebih besar dari CSNAMES. Nilai field CSNAMES berasal dari field CSNAME record pertama dari subfile sebelum dilakukan perubahan atau penghapusan melalui subrutin ADDUPD. Jika function key PgDn ditekan maka indikator 25 menyala dan jika akhir dari record belum tercapai maka jalankan subrutin CLRSFL untuk membersihkan subfile lalu jalankan subrutin SFLBLD untuk menampilkan subfile. Jika function key PgUp ditekan maka indikator 26 menyala dan jika ada record dalam file maka jalankan subrutin GOBACK untuk menggeser mundur posisi record, jalankan subrutin CLRSFL untuk membersihkan subfile lalu jalankan subrutin SFLBLD untuk menampilkan subfile. Jika keluar dari pengulangan maka geser record ke record pertama lalu matikan indikator 12. C C C C C C C
CLRSFL
BEGSR EVAL EVAL WRITE EVAL EVAL ENDSR
RRN = *ZERO *IN31 = *ON BROSFCR *IN31 = *OFF *IN32 = *OFF
Isi nilai RRN dengan nol. Hidupkan indikator 31 dan tampilkan subfile control BROSFCR maka tampilan subfile dilayar akan dibersihkan. Matikan indikator 31 untuk membersihkan subfile dan indikator 32 untuk menampilkan subfile. C
SFLBLD
BEGSR
* C C C C C C C C C C C
SFLPAG CSLF1R *IN90
1
RRN = RRN + 1 BROSFLR RRN = 1 CSNAMES = CSNAME
3
IF
RRN = *ZERO
5
* C
v
DO READ IF LEAVE ENDIF EVAL WRITE IF EVAL ENDIF ENDDO
v
2
v v
4
v
90
AS/400 Dasar
38 / 45
C C
EVAL ENDIF
*IN32 = *ON
* C
v
1
ENDSR
Lakukan pengulangan sebanyak nilai konstanta SFLPAG. Baca file logis CSLF1R dan jika akhir record tercapai maka nyalakan indikator 90.
v
Jika akhir record tercapai maka indikator 90 menyala dan keluar dari pengulangan.
v
Tambahkan 1 ke nilai variabel RRN. Tampilkan layar subfile BROSFLR.
v
Jika record adalah record ke 1 maka simpan nilai field CSNAME ke variabel CSNAMES.
2
3
4
5v
Sesudah keluar dari pengulangan jika RRN berisi nol artinya file logis tidak memiliki record maka hidupkan indikator 32 supaya layar subfile tidak ditampilkan. C
GOBACK
BEGSR
CSNAMES
SETLL DO READP IF SETLL LEAVE ENDIF ENDDO
* C C C C C C C C
*LOVAL
v v
CSLF1R SFLPAGP1 CSLF1R %EOF CSLF1R
1 2
v
3
* C
ENDSR
v
Geser record ke posisi dimana field CSNAME sama atau lebih besar dari CSNAMES.
v
Lakukan pengulangan sebanyak nilai konstanta SFLPAGP1. Baca mundur 1 record.
v
Jika awal record tercapai maka geser record ke posisi pertama lalu keluar dari pengulangan.
1
2
3
A A A A A A A A A
R DELR
1
1 3 3 4 4 5 5 6 6 7 7 8 8
2’NUMBER :’ 15REFFLD(CSNUM) 2’NAME :’ 15 2’BIRTHDAY :’ 15 2’ADDRESS :’ 15 2’POST CODE :’ 15 2’EMAIL :’ 15
3
1 1 1
* A A A A A A A A A A A A
CSNUMD
R
O
CSNAME
R
O
CSBDAY
R
O
CSADDR
R
O
CSPOST
R
O
CSEML
R
O
v
2
v
v
4
* A A A
v
CA03(03) CA12(12) CA23(23) 2USER 24’CUSTOMER DELETE’ DSPATR(HI) 61DATE(*SYS *YY) EDTCDE(Y) 72TIME
23 MSGD
78A
O 24
2’F3=Exit F12=Cancel COLOR(BLU) 2DSPATR(HI)
F23=Delete’
AS/400 Dasar
v
1
v
2
v
3
v
4
39 / 45
Tiga function key bisa diterima oleh layar ini F3, F12 dan F23. Function key F3 akan menyalakan indikator 03. Digunakan untuk keluar dari program. Function key F12 akan menyalakan indikator 12. Digunakan untuk kembali ke layar sebelumnya. Function key F23 akan menyalakan indikator 23. Digunakan untuk menghapus record yang ditampilkan. Header standard dari program yang menampilkan nama user, nama layar, tanggal dan waktu. Field-field dari CUSTPF sesuai dengan CSNUMD yang diinput user di layar KEYR. Semua field hanyalah output karena ini layar konfirmasi delete. Keterangan function key dan pesan program. C
DEL
BEGSR
* C
MSGD = ’Press F23 again to delete’
1
DOU
*IN23
2
EXFMT
DELR
3
WHEN EXSR
*IN03 BYE
4
WHEN LEAVE
*IN12
5
WHEN DELETE
*IN23 CUSPFR
6
*IN12 = *OFF MSGD = ’’
7
* C * C
v
EVAL
v v
* C
SELECT *
C C * C C * C C
v v v
* C
ENDSL *
C
ENDDO *
C C
EVAL EVAL
v
* C
ENDSR
v
Tampilkan pesan untuk menekan F23 sekali lagi untuk menghapus.
v
Lakukan pengulangan sampai indikator 23 menyala yang artinya function key F23 ditekan.
v
Tampilkan layar konfirmasi delete DELR.
v
Jika function key F3 ditekan maka indikator 03 menyala dan keluar dari program dengan menjalankan subrutin BYE.
v
Jika function key F12 ditekan maka indikator 12 menyala dan keluar dari pengulangan.
v
Jika function key F23 ditekan maka indikator 23 menyala dan hapus record.
v
Matikan indikator 12 dan isi field pesan MSGD dengan nilai kosong.
1
2
3
4
5
6
7
C C C C C C C
BYE
BEGSR CLOSE CLOSE CLOSE EVAL RETURN ENDSR
CUSLF1 CUSTPF CUSTDF *INLR = *ON
AS/400 Dasar
40 / 45
Subrutin untuk keluar dari program. Tutup semua file yang dipakai: CUSLF1, CUSTPF dan CUSTDF. Nyalakan indikator INLR untuk memerintahkan RPG melakukan pembersihan internal. Kembali ke program yang memanggil program ini. Source code lengkap display file CUSTDF : SAMUEL FRANKLYN <SFRANKLYN AT GMAIL.COM> * AUTHOR LOCATION : SAMUELF1/QDDSSRC(CUSTDF) * : 2014-02-06 * DATE * A REF(SAMUELF1/CUSTPF) * A R KEYR A CA03(03) A CA15(15) A 1 2USER A 1 24’CUSTOMER KEY’ A DSPATR(HI) A 1 61DATE(*SYS *YY) A EDTCDE(Y) A 1 72TIME * A 3 2’NUMBER :’ A CSNUMD R B 3 15REFFLD(CSNUM) * A 23 2’F3=Exit F15=Browse’ A COLOR(BLU) A MSGD 78A O 24 2DSPATR(HI) * A R ADDUPDR CSRLOC(LINE POS) A CA03(03) A CA12(12) A CA23(23) A 1 2USER A 1 24’CUSTOMER ADD/UPDATE’ A DSPATR(HI) A 1 61DATE(*SYS *YY) A EDTCDE(Y) A 1 72TIME * A 3 2’NUMBER :’ A CSNUMD R O 3 15REFFLD(CSNUM) A 4 2’NAME :’ A CSNAME R B 4 15 A 5 2’BIRTHDAY :’ A CSBDAY R B 5 15 A 6 2’ADDRESS :’ A CSADDR R B 6 15 A 7 2’POST CODE :’ A CSPOST R B 7 15 A 8 2’EMAIL :’ A CSEML R B 8 15 * A LINE 3 0H A POS 3 0H * A 23 2’F3=Exit F12=Cancel F23=Delete’ A COLOR(BLU) A MSGD 78A O 24 2DSPATR(HI) * A R BROSFLR SFL A CSNUM R O 7 2 A CSNAME R O 7 14 A CSBDAY R O 7 46
AS/400 Dasar
* A A A A A A A A A N32 A N31 A 31 A 90 A A A A A A A A A A A A A A A A A * A A A A * A A A A A A A A A * A A A A A A A A A A A A * A A
41 / 45
R BROSFCR
SFLCTL(BROSFLR) CA03(03) CA12(12) SFLSIZ(0015) SFLPAG(0015) OVERLAY ROLLUP(25) ROLLDOWN(26) SFLDSP SFLDSPCTL SFLCLR SFLEND(*MORE) SFLCSRRRN(&RRNC)
RRN RRNC
CSNAMED
4S 0H 5S 0H
R
B
1 2USER 1 24’CUSTOMER BROWSE’ DSPATR(HI) 1 61DATE(*SYS *YY) EDTCDE(Y) 1 72TIME 4 2’NAME :’ 4 15REFFLD(CSNAME) 6 2’NUMBER’ DSPATR(HI) 6 14’NAME’ DSPATR(HI) 6 46’BIRTHDAY’ DSPATR(HI)
R BROSFFR 23 MSGD
78A
O 24
R DELR
1
CA03(03) CA12(12) CA23(23) 2USER 24’CUSTOMER DELETE’ DSPATR(HI) 61DATE(*SYS *YY) EDTCDE(Y) 72TIME
3 3 4 4 5 5 6 6 7 7 8 8
2’NUMBER :’ 15REFFLD(CSNUM) 2’NAME :’ 15 2’BIRTHDAY :’ 15 2’ADDRESS :’ 15 2’POST CODE :’ 15 2’EMAIL :’ 15
1 1 1
CSNUMD
R
O
CSNAME
R
O
CSBDAY
R
O
CSADDR
R
O
CSPOST
R
O
CSEML
R
O
2’F3=Exit F12=Cancel’ COLOR(BLU) 2DSPATR(HI)
23
2’F3=Exit F12=Cancel COLOR(BLU)
F23=Delete’
AS/400 Dasar
A
42 / 45
MSGD
78A
O 24
2DSPATR(HI)
Source code lengkap program RPG ILE CUSCRUD : * AUTHOR * LOCATION : : * DATE * FCUSTPF UF FCUSLF1 IF FCUSTDF CF F * D CSNAMES D SFLPAG D SFLPAGP1 * C * C * C * C C * C C * C C C C C C C C * C * C * C ADDUPD * C C CSNUMD C * C * C * C * C C * C C * C C
SAMUEL FRANKLYN <SFRANKLYN AT GMAIL.COM> SAMUELF1/QRPGLESRC(CUSCRUD) 2014-02-06 A E E E
K DISK K DISK WORKSTN SFILE(BROSFLR:RRN) S C C
LIKE(CSNAME) CONST(15) CONST(16) DOW
NOT *IN03
EXFMT
KEYR
SELECT WHEN EXSR
*IN03 BYE
WHEN EXSR
*IN15 BROWSE
OTHER EVAL IF EVAL ENDIF IF EXSR ENDIF
MSGD = ’’ CSNUMD <= 0 MSGD = ’Number must be greater than zero’ MSGD = ’’ ADDUPD
ENDSL ENDDO BEGSR CLEAR CHAIN EVAL
CUSPFR *ALL CUSTPF CSNUM = CSNUMD
DOU
*IN12
EXFMT
ADDUPDR
SELECT WHEN EXSR
*IN03 BYE
WHEN LEAVE
*IN12
WHEN IF
*IN23 %FOUND
AS/400 Dasar
43 / 45
C C C C C
EXSR IF LEAVE ENDIF ENDIF
DEL *IN23
* C C C
OTHER EVAL EVAL
MSGD = ’’ POS = 15
* C
SELECT *
C C C
WHEN EVAL EVAL
CSNAME = ’’ MSGD = ’Name must not blank’ LINE = 4
WHEN EVAL EVAL
CSBDAY = D’0001-01-01’ MSGD = ’Birthday must not 0001-01-01’ LINE = 5
WHEN EVAL EVAL
CSADDR = ’’ MSGD = ’Address must not blank’ LINE = 6
WHEN EVAL EVAL
CSPOST = ’’ MSGD = ’Post code must not blank’ LINE = 7
WHEN EVAL EVAL
CSEML = ’’ MSGD = ’Email must not blank’ LINE = 8
* C C C * C C C * C C C * C C C * C
ENDSL *
C C C C C C C C
IF IF UPDATE ELSE WRITE ENDIF LEAVE ENDIF
MSGD = ’’ %FOUND CUSPFR CUSPFR
* C
ENDSL *
C
ENDDO *
C C C
EVAL EVAL EVAL
*IN12 = *OFF *IN23 = *OFF MSGD = ’’
* C
ENDSR *
C
BROWSE
BEGSR
* C C C
EVAL EXSR EXSR
MSGD = ’Select record using cursor and Enter’ CLRSFL SFLBLD
DOU
*IN12
WRITE
BROSFFR
* C * C
AS/400 Dasar
44 / 45
C C
EVAL EXFMT
MSGD = ’’ BROSFCR
* C
SELECT *
C C
WHEN EXSR
*IN03 BYE
WHEN LEAVE
*IN12
WHEN SETLL EXSR EXSR CLEAR
CSNAMED <> *BLANKS CSLF1R CLRSFL SFLBLD CSNAMED
WHEN CHAIN EVAL EXSR SETLL EXSR EXSR
CSNAMED = *BLANKS AND RRNC > *ZERO BROSFLR CSNUMD = CSNUM ADDUPD CSLF1R CLRSFL SFLBLD
WHEN EXSR EXSR
*IN25 AND (NOT *IN90) CLRSFL SFLBLD
WHEN EXSR EXSR EXSR
*IN26 AND (NOT *IN32) GOBACK CLRSFL SFLBLD
* C C * C C C C C
CSNAMED
* C C C C C C C
RRNC
CSNAMES
* C C C * C C C C * C
ENDSL *
C
ENDDO *
C C
*LOVAL
SETLL EVAL
CSLF1R *IN12 = *OFF
* C
ENDSR *
C C C C C C C
CLRSFL
BEGSR EVAL EVAL WRITE EVAL EVAL ENDSR
RRN = *ZERO *IN31 = *ON BROSFCR *IN31 = *OFF *IN32 = *OFF
* C
SFLBLD
BEGSR
* C C C C C C C C C
DO READ IF LEAVE ENDIF EVAL WRITE IF EVAL
SFLPAG CSLF1R *IN90
RRN = RRN + 1 BROSFLR RRN = 1 CSNAMES = CSNAME
90
AS/400 Dasar
45 / 45
C C
ENDIF ENDDO *
C C C
IF EVAL ENDIF
RRN = *ZERO *IN32 = *ON
* C
ENDSR *
C
GOBACK
BEGSR
CSNAMES
SETLL DO READP IF SETLL LEAVE ENDIF ENDDO
* C C C C C C C C
*LOVAL
CSLF1R SFLPAGP1 CSLF1R %EOF CSLF1R
* C
ENDSR *
C
DEL
BEGSR
* C
EVAL
MSGD = ’Press F23 again to delete’
DOU
*IN23
EXFMT
DELR
* C * C * C
SELECT *
C C
WHEN EXSR
*IN03 BYE
WHEN LEAVE
*IN12
WHEN DELETE
*IN23 CUSPFR
* C C * C C * C
ENDSL *
C
ENDDO *
C C
EVAL EVAL
*IN12 = *OFF MSGD = ’’
* C
ENDSR *
C C C C C C C
BYE
BEGSR CLOSE CLOSE CLOSE EVAL RETURN ENDSR
CUSLF1 CUSTPF CUSTDF *INLR = *ON