Data entry aplikasi dibuat setelah menyelesaikan pengisian data dictionary dan form specification untuk mengarahkan alur data (data flow).
1. Penulisan data entry application dimulai dengan mengaktifkan new Klik lambang tersebut yang ada di pojok kiri atas, kemudian pilih Application dan select pada menu data entry application Selanjutnya akan muncul gambar 2.40 dibawah ini.
Gambar 2.41: Memberi nama file data entry application.
Tampilan selanjutnya akan meminta konfirmasi file dictionary yang digunakan untuk entry application. Secara otomatis memberikan tampilan nama file tersebut seperti di gambar di bawah ini, lansung menekan tombol OK.
Tampilan selanjutnya sebagai berikut:
Gambar 2.43: Tampilan data entry application.
Letakkan kursos pada jendela sebelah kiri, kemudian pilih lokasi sec1 dan tekan pada lambang pada menu bagian atas untuk memperoleh tampilan untuk penulisan program aplikasi.
Perintah Preproc dan Postproc
Preproc adalah perintah membaca kondisi persyaratan sebelum data di input kedalam variabel yang ditetapkan.
Postproc adalah perintah membaca kondisi persyaratan setelah data di input kedalam variabel yang sedang dijalankan.
Contoh penempatan preproc dan postproc pada variabel PROP
PROC PROP preproc $=b1r1; noinput; postproc if (B1R1<>$) then e=err; reenter B1R1; endif;
petugas membetulkan pengisian yang benar. Perintah reenter b1r1 menunjukkan kursor akan kembali ke posisi b1r1 untuk mengisi ulang isian yang betul tersebut.
Perintah If, Then dan Reenter
Perintah if dan then sering sekali digunakan berpasangan dalam setiap instruksi yang berguna untuk mengecek atau mengklarifikasi konsistensi data antar dua atau lebih dari dua variabel.
Perintah if dan then biasanya diikuti oleh instruksi error bisa dituliskan dengan e saja. Selain itu juga diikuti oleh perintah reenter dan endif. Berikut diberikan contoh penulisan tersebut:
PROC B5R1G
if $=1 and umur=0 then e=display("APA BENAR BAYI SAKIT GIGI",umur); reenter;endif;
Lambang $ adalah kata lain dari nama variabel yang ruangnya sedang di tuliskan instruksi program, alias dari $ adalah b5r1g. Perintah program tersebut menyatakan apabila mengalami sakit gigi ($=1) dan diperiksa konsistensinya dengan umurnya (umur=0) yaitu bayi, apabila terpenuhi syarat tersebut maka dinyatakan salah (error), karena tidak mungkin bayi sudah mempunyai gigi dan sakit gigi?
Penulisan selanjutnya reenter;endif; dua kata tersebut memberikan instruksi loncatan kebelakang ke arah variabel yang sama (program berhenti sampai dengan persyaratan diperbaiki menjadi benar). Penulisan reenter kemudian diikuti dengan nama variabel yang berada di awal atau sebelum variabel yang sedang di input diperbolehkan, seperti penulisan berikut:
reenter b1r1a;
Perintah tersebut memberikan instruksi loncat kembali ke belakang sampai dengan posisi input variabel b1r1a.
Perintah Melompati (Skip to Next)
Perintahan melompati pengisian berdasarkan persyaratan kondisional tertentu sesuai dengan alur pengisian data dengan menggunakan perintah skip to. Sebagai contoh dituliskan program sebagai berikut:
PROC B4K8 preproc
if b4k5>6 and b4k1<b2r2 then skip to next b4k1;endif; if b4k5>6 and b4k1=b2r2 then endsect;endif;
Perintah diatas memberikan perintah apabila b4k5>6 (umur lebih besar dari 6 tahun) dan b4k1<b2r2 (dan nomor urut art (b4k1) masih lebih kecil dari jumlah anggota rumah tangga (b2r2)), maka selanjutnya loncatan kursor (skip to) mengarah pada b4k1 (next b4k1) yaitu anggota rumah tangga selanjutnya. Biasanya digunakan juga perintah pendukung lainnya yaitu endsect. Penggunaan endsect untuk memberikan eksekusi jika persyaratan sudah terpenuhi maka proses input data di section tersebut sudah selesai dan dilanjutkan ke section selanjutnya.
Penggunaan perintah skip yang sering digunakan adalah melewati variabel yang tidak relevan untuk diinput seperti contoh, yaitu apabila isian b5r7 sama dengan kode 2, maka lompat pengisian langsung ke b5r9a. Dengan demikian apabila isian b5r7 berkode 1, maka alur program tidak meloncat ke b5r9a.
PROC B5R7
if $=2 then skip to b5r9a; endif;
Perintah Box
Perintahan box digunakan untuk mengecek pengisian terdahulu dalam bentuk yang lebih kompleks. Apabila persyaratan pengecekan melibatkan lebih dari satu variabel dan mempunyai persyaratan yang sangat prinsip harus dilakukan serta kompleks, maka perlu dibuat logika dalam bentuk format box seperti yang dituliskan di bawah ini.
PROC B5R15 box b5r13 : $ : umur =>x; 2 : 1,2 : 5-17 =>1; 2 : 3,4 : 11-30 =>1; 2 : 5,6,7 : 12-64 =>1; 2 : 8,9,10 : 15-64 =>1; 2 : 11 : 15-64 =>1; 3 : 1,2 : 5-98 =>1; 3 : 3,4 : 11-98 =>1; 3 : 5,6,7 : 12-98 =>1; 3 : 8,9,10 : 15-98 =>1; 3 : 11 : 20-98 =>1;
sekolah lagi), b5r15 (tingkat pendidikan yang ditamatkan mulai dari SD, SMP, SLTA, D3, S1, S2, dan S3), kemudian konsisten dengan umur. Apabila persyaratan yang ditetapkan tidak terpenuhi maka program akan terhenti dan dinyatakan salah. Apabila diterjemahkan program box tersebut adalah
a. Untuk yang masih sekolah dengan status SD dan SD sederajat, usianya hanya boleh antara 5 sampai dengan 17 tahun.
b. Untuk yang masih sekolah dengan status SMP dan SMP sederajat, usianya hanya boleh antara 11 sampai dengan 30 tahun
c. Untuk yang masih sekolah dengan status SLTA, SLTA kejuruan, dan SLTA sederajat, usianya hanya boleh antara 12 sampai dengan 64 tahun
d. Untuk yang masih sekolah dengan status D1, D3, S1, S2, dan S3, usianya hanya boleh antara 15 sampai dengan 64 tahun e. Untuk yang tidak sekolah lagi dengan status SD dan SD
sederajat usianya hanya boleh antara 5 sampai dengan 98 tahun
Contoh penulisan box lainnya
box b5r17 : umur => age; 1 : 5-98 =>1; 2 : 10-98 =>1; 3 : 10-98 =>1; 4 : 13-98 =>1; 5 : 13-98 =>1; 6 : 16-98 =>1; 7 : 16-98 =>1; 8 : 16-98 =>1; 9 : 17-98 =>1; 10 : 19-98 =>1; 11 : 20-98 =>1; 12 : 22-98 =>1;
: =>0; endbox;
if age<>1 then e=errmsg("UMUR TIDAK SESUAI DENGAN IJAZAH YANG DIMILIKI.");reenter;endif;
Contoh berikutnya:
box $ =>kj;{Daftar Jenis Pekerjaan Indonesia} 11-14 => 1;{Peneliti IPA}
21-29,31-39 => 1;{Ahli teknik}
41-43 => 1;{Pesawat udara dan perwira kapal} 51-55 => 1;{Peneliti IP Hayat}
61-69,71-77 => 1;{Dokter,dokter gigi,dokter hewan } 81-84 => 1;{Ahli statistik,matematik}
90,110 => 1;{Ahli ekonomi & akuntan} 121-123,129 => 1;{Ahli hukum}
141-145 => 1;{Tenaga bid agama} 151-153 => 1;{Pengarang,wartawan}
191-192,194-195,199=>1;{ Tenaga prof,teknisi} 201 => 1;{Pejabat lembaga legislatif} 211-219 => 1;{Tenaga manajemen} 300 => 1;{Pengawas TU} =>0; endbox; if kj=1 and b5r17=1|b5r17=2|b5r17=3|b5r17=4|b5r17=5|b5r17=6|b5r17= 7| b5r17=8| b5r13=1) then errmsg(176,b5r17,$); endif;
Perintah endif, endsect dan endlevel
Perintahan endif, endsect, dan endlevel adalah perintah-perintah untuk mengakhiri suatu perintah. Apabila perintah diawali dengan if maka diakhiri dengan endif. Untuk mengakhiri pengisian satu section walaupun belum selesai sampai akhir variabel, apabila harus berakhir maka diberikan perintah endsect. Sedangkan untuk perintah menyelesaikan satu dokumen apabila belum sampai akhir dokumen akan tetapi harus berakhir sesuai alur pengisiannya maka diberikan instruksi endlevel.
PROC B4K6 postproc
if $>1 and b4k5<10 then e=errmsg(021);reenter;endif; if ((B4K3=6 or B4K3=4 or B4K3=2) and $=1) then
Perintah Membuat Nama File Data
Sebelum memulai entry diperlukan satu tindakan memberikan nama file data sebagai wadah tempat menyimpan data yang telah di entry. Prosedure pemberian nama dapat diatur agar supaya nama file data harus konsisten dengan isi file nya.
Perintah membuat nama file data agar bisa menjaga kualitas hasil entry sesuai dengan kode identitas dengan nama file datanya sangat diperlukan manajemen pemberian nama file data. Kita bisa mendifinisikan nama file sengaja diciptakan berdasarkan kode-kode propinsi, kode kabupaten, dan kode nks. Kode-kode tersebut bersifat uniq (tidak ada yang sama) dalam satu kabupatennya sehingga ketentuan pemberian nama file data disesuaikan dengan hasil pendataan untuk setiap blok atau nks. Sebagai ilustrasi pemberian nama file untuk setiap nks (setiap blok ada 16 rumah tangga), dari pendataan susenas kor tahun 2007 bulan februari yang mempunyai perintah sebagai berikut:
fname = filename(KOR2007); pra=tonumber(fname[18:2]); rma=tonumber(fname[20:2]); cla=tonumber(fname[22:5]); HPROP = pra; HKAB = rma; HNKS = cla; y = pos(fname[17:1],"P"); if pos("C:\KOR2007\",fname) <> 1 | (pos("DATA\",fname) <> 12 & y = 1) | !y | pos(".DAT",fname) <> 27 then e=errmsg(0002,"data",fname); endlevel; endif;
Pendifinisian fname=filename(KOR2007) memberikan perintah nama file yang diciptakan berdasarkan identitas dari propinsi (2 digit), kabupaten (2 digit), dan nks (5 digit).
pra=tonumber(fname[18:2]); rma=tonumber(fname[20:2]); cla=tonumber(fname[22:5]);
Pada perintah pemberian nama file sangat diperhatikan posisi setiap huruf dari nama file. Contoh dari sebuah nama file bila dihitung posisi untuk setiap karakternya akan diperoleh angka posisinya. Untuk posisi 18 dan 19 adalah kode propinsi, posisi 20-21 adalah kode kabupaten, dan posisi 22-26 adalah posisi nomor NKS.
C:\KOR2007\DATA\P730110010.DAT 123456789101234567891012345678910
Posisi nama file sampai dengan c:\kor2007\data\ dituliskan secara otomatis atas perintah program (tidak perlu ditulis), perintah tersebut posisinya dari 1 sampai dengan 16. Pada posisi huruf ke 17 dimulai dengan huruf P, pada posisi 18 sampai dengan 26 merupakan angka kode-kode propinsi, kabupaten dan nks yang telah didifinisikan dan pada posisi ke 27 dimulai dengan tanda ”.DAT”. Pemberian nama file ini hanya meminta memasukkan kode propinsi, kode kabupaten, dan kode nks, selebihnya sudah secara otomatis dituliskan dalam perintah (tidak perlu diketik) sebagai berikut:
y = pos(fname[17:1],"P"); if pos("C:\KOR2007\",fname) <> 1 | (pos("DATA\",fname) <> 12 & y = 1) | !y | pos(".DAT",fname) <> 27 then e=errmsg(0002,"data",fname); endlevel; endif;
Perintah pos ( ) then
Penulisan pos adalah perintah posisi input data. Bisa ditetapkan jenis huruf bukan angka, formasi penulisan perintah tersebut disesuaikan dengan jenis variabel yang di bangun di file dictionary dalam format karakter atau numerik. Seperti dalam contoh berikut:
PROC B1R10A
if !pos($[1:1],alphalst) then
errmsg("NAMA HARUS HURUF,BUKAN ANGKA DAN HARUS HURUF BESAR");
.
alphalst = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
Perintah diatas memberikan alias untuk alphalst berupa huruf kapitas (huruf besar) dan tidak diperbolehkan berupa angka. Perintah Menghitung Jumlah Kasus Tertentu
Penghitungan jumlah kasus tertentu sebagai kontrol konsistensi pengisian sangat diperlukan. Biasanya penempatan penghitungan diletakkan pada section bersangkutan atau setelahnya.
Contoh:
PROC SEC2_ROSTER
a=count(sec2_ROSTER where b4k5<5);
if a>b2r21 then e=errmsg(901);reenter b2r21; endif;
b=count(sec2_ROSTER where b4k5>=5 and b4k5<=9); if b>b2r22 then e=errmsg(902);reenter b2r22; endif;
c=count(sec2_ROSTER where b4k5>=10);
if c>b2r23 then e=errmsg(903);reenter b2r23; endif;
Penghitungan jumlah kasus dapat dilakukan dengan mengguna- kan perintah count. Program pertama mendifinisikan a adalah hasil penjumlahan di sec2 untuk variabel b4k5 (umur) yang kurang dari 5 tahun. Hasil penghitungan tersebut dibandingkan dengan pengisian blok 2 pertanyaan 21 yaitu jumalh balita. Apabila ada perbedaan maka dinyatakan salah sehingga kursor diarahkan kembali ke pengisian blok 2 untuk diperbaiki kembali pengisian yang tidak konsisten tersebut.
Penghitungan jumlah kasus lainnya juga dapat dilakukan berdasarkan persyaratan tertentu, seperti pada perintah kedua dimana b4k5>=5 and b4k5<=9 artinya menghitung hanya usia 5-9
tahun saja. Begitu juga perintah penghitungan ketiga untuk menghitung kasus yang berusia 10 tahun keatas.
Perintah Menggunakan Memori Identitas
Memori identitas dokumen pertama dapat disimpan dalam file program sehingga untuk dokumen berikutnya yang masih dalam wilayah yang sama tidak perlu lagi di entry, langsung ke urutan nomor rumah tangga sampel saja sehingga mengurangi tingkat kesalahan petugas entry selain itu mempercepat waktu untuk entry datanya.
Untuk menjalankan petintah demikian menggunakan manipulasi logika dengan membangun wadah sebagai berikut:
xcluster = default; xhnumber = 0; xregmun = default; xprov = default; xtype = default; xKEC = default; xDES = default;
addmode = (demode() = add); PROC LEVEL_1 postproc xprov = B1R1; xregmun = B1R2; xKEC = B1R3; xDES = B1R4; xtype = B1R5; xcluster = B1R7; PROC B1R1 preproc
if addmode & xprov <> default then $ = xprov; noinput; endif; postproc if $ <> HPROP then e=errmsg(00220,"Propinsi",HPROP); reenter; endif;
Perintah While dan Do
Perintah while dan do dituliskan berpasangan, memberikan instruksi membaca atau mengecek jumlah putaran atau pemasukan dari pola input data multiple entry atau yang bersifat
Penulisan pada awal instruksi dengan proc sec1, artinya anda sedang bekerja di wilayah cakupan variabel yang ada di sec1 saja. Perintah dalam sec1 selanjutnya dimulai dari i = 1, dapat dinyatakan program akan membaca mulai dari putaran pertama, kemudian penulisan while i lebih kecil atau sama dengan b2r2 (jumlah anggota rumah tangga) mengisaratkan program akan berjalan apabila terpenuhi kondisi tersebut yaitu nilai i tidak melebihi nilai b2r2. Syarat lainnya diminta apabila b4k1 (i) = i (nomor urut anggota rumah tangga) datanya bisa dimasukkan mulai dari yang pertama sampai dengan yang terakhir. Apabila jumlah i > b2r2 yaitu jumlah anggota rumah tangga sudah melebihi dari yang harus di input, maka program entry berakhir dan secara otomatis berganti ke rumah tangga berikutnya yang harus di input.
Secara umum, perintah ini untuk menjaga pemasukan dokumen agar supaya sesuai dengan jumlah anggota rumah tangganya, sehingga untuk pemasukan dokumen ini tidak ada yang menyimpang.
Setiap perintah while…..do diakhiri dengan enddo. Format penulisan sebagai berikut While…… do…….enddo. Untuk memberikan batasan instruksi pertama dengan instruksi ke dua dan berikutnya, maka setiap akhir perintah diberikan tanda semi kolom “;”.
Perintah Soccurs dan Noccurs (Multiple Entry)
Perintahan melakukan putaran pengisian untuk type data multiple entry dengan menggunakan perintah dan soccurs (section of occurens), noccurs (Number of Occurens). Manipulasi agar data bisa melakukan putaran sesuai dengan jumlah kasus yang harus dientry apabila menggunakan putaran seperti program dibawah ini.
PROC B4K1 preproc
n=noccurs(sec2_ROSTER)+1; if n<=b2R2 then
$(n)=n; noinput; endif; PROC NART preproc n=soccurs(SEC05)+1; nart(n)=n;
Program untuk memanipulasi putaran multiple entry dapat dilakukan dengan memberikan perintah noccurs apabila bentuk entry data multiple dengan menggunakan perintah same location (lokasi yang sama) atau bentuk tabel (roster). Perintah diatas memandu pengisian dari nomor urut yang masuk mulai dari 1 sampai dengan jumlah kasus yang harus di input (b2r2=jumlah anggota rumah tangga). Pengisian secara otomatis (noinput) dimulai dari nomor 1 sampai dengan jumlah anggota rumah tangganya.
Penggunaan soccurs dengan bentuk entry data multiple tetapi tampilan pengisian data seolah-olah berbentuk single, atau dengan kata lain tampilan entry menggunakan pilihan different location (lokasi yang berbeda). Perintah tersebut memandu pengisian secara berurutan sehingga jumlah pengisian yang berulang tersebut sesuai dengan persyaratannya.
TIPS:
Dalam kuesioner MDGs2007.S terdapat record yang berulang (multiple) seperti pada Blok IV keterangan anggota rimahtangga. Untuk mengontrol jumlah anggota rumahtangga yang dientry sudah sesuai dengan Blok II Keterangan pokok rumah tangga, khususnya jumlah anggota rumah tangga. Diperlukan logic tersendiri yaitu sebagai berikut:
(Diletakkan pada item PROC B4AK10) if b4Ak1<b2r3 then skip to next b4Ak1;endif;
if b4Ak1=b2r3 then endsect;endif; Ada cara lain yang tidak perlu menuliskan logic seperti di atas yaitu:
1. Ketika tampilan untuk mengisi logic pada SEC02_ROSTER,