Perintah ini menambah, mengubah atau menghapus SATU rekord yang ada di hard-disk. Selain itu ada fungsi lain untuk mengecek keberadaan rekord tertentu (DBC_COMMAND JOIN) atau menghitung sekumpulan rekord (SCANSCAN).
Cara memakai: DBCALCS(namaDbcalcs) 1. DBC_COMMAND ADD/ADD_DIR/UPDATE/UPDATE_BUF3/UPDATE_DIR/DELETE/DELETE_RANGE/JOIN/JOIN_DIR/ADD_NO_CLEAR/ADD_NO_CLEAR_DIR/ADD_NO_CLEAR_PRM_DIR/UPDATE_LT/UPDATE_RANGE/JOIN_LT/JOIN_LAST_SFL/SCANSCAN DBC_TARGET namaIndex namaField/lokal namaField/lokal ... DBC_FILE namaFile DBC_MAP namaMap DBC_COND namaCalc /* khusus ADD_DIR dan UPDATE_DIR*/ DBC_DIR 0 atau nama subDirektori atau {namaField} DBC_SELECT NamaCalc /* Fasilitas ini hanya untuk DBC_COMMAND JOIN saja, fungsinya ** untuk memilih lagi diantara yang ditemukan. Misalnya kita ** ingin mencari faktur untuk pelanggan tertentu yang umurnya ** sudah lebih dari 45 hari. Bila ada faktur yang umurnya lebih ** dari 45 hari untuk pelanggan itu, maka pelanggan itu tidak ** bisa dilayani dulu. Rekord yang dijoin dimasukkan ke buf3, khusus ** untuk DBC_SELECT di JOIN, rekord di buf3 dimasukkan ke buf1 ** pada saat diperiksa calcsnya DBC_SELECT. Sesudah diperiksa, ** buf1 yang asli dikembalikan kembali. */ /* khusus SCAN */ DBC_SCAN namaScan /* scan harus diatas dbcalcs ini */ DBC_SUM_FIELD namaField/namaCalcs /* hasil masuk r_double8 */ DBC_SUM_FIELD2 namaField/namaCalcs /* hasil masuk r_double7 */ DBC_SUM_FIELD3 namaField/namaCalcs /* hasil masuk r_double6 */ DBC_SUM_FIELD4 namaField/namaCalcs /* hasil masuk r_double5 */ DBC_SUM_MAP namaMap /* Menjumlah lewat MAP */ Map dari scan ini akan menjumlah ke field tujuan, baik itu REPLACE maupun DO_CALC. Bila ada field yang bukan total, misalnya harga rata yang dihitung sesudah DBC_SUM_MAP, gunakan DBC_MAP yang akan dijalankan sesudah DBC_SUM_MAP ini.. DBC_SCAND_IMAGE namaImage /* ditampilkan di layar ** bila run -d */ DBC_LAST_TARGET namaIndex namaField/lokal namaField/lokal .. /* batas akhir dari scan */ DBC_JOIN_TARGET namaIndex namaField/lokal /* khusus untuk SCANSCAN */ DBC_SCAN_COND namaCalcs /* Kondisi untuk mengecek ** apakah rekord ditambahkan ** ke SUM_FIELD atau tidak */ Catatan: 1. DBC_COMMAND tipe ADD tidak membutuhkan DBC_TARGET 2. DBC_FILE hanya untuk tipe ADD 3. Index harus tidak duplikat kecuali untuk tipe JOIN 4. Bila DBC_COMMAND tipe UPDATE atau UPDATE_DIR, rekord dibaca dulu dan diperhitungkan untuk menentukan perhitungan DBC_COND a. DBC_COND dicek, keluar bila gagal b. DBC_MAP akan dijalankan c. rekord di hard-disk akan berusaha diubah d. bila update gagal karena rekord sudah diubah orang lain, rekord terbaru akan dibaca dan proses a s/d d diatas akan diulang lagi. 5. Untuk DBC_COMMAND tipe UPDATE_BUF3 (biasanya untuk retur), DBC_COND dicek dengan rekord asli dan hanya dicek sekali saja. Bila lolos dari DBC_COND, maka a. DBC_MAP akan dijalankan b. rekord di hard-disk akan berusaha diubah c. bila update gagal karena rekord sudah diubah orang lain, rekord terbaru akan dibaca dan proses a s/d c diatas akan diulang lagi. 6. DBC_COMMAND tipe JOIN hanya akan menghasilkan nilai benar (1) atau salah (0). Benar bila satu rekord ditemukan dan tidak bila tidak ada yang ditemukan. 7. DBC_COMMAND tipe ADD_NO_CLEAR tidak akan mengosongkan rekord yang akan ditambahkan. Fungsinya untuk menambah rekord yang sedang ada di layar. Misalnya menambah rekord bkm pada saat trans1 di app_type juga bkm. 8. UPDATE_LT dan JOIN_LT mencari rekord dengan target kemudian mundur satu rekord ke belakang sesuai dengan index di target. 9. Untuk DBC_COMMAND SCANSCAN, jumlah field yang dipakai untuk mencari rekord di DBC_TARGET namaIndex namaField namaField adalah jumlah field yang ada - 1, jadi mis. bila DBC_TARGET brtkodtglidx brgkode brttgl maka field yang dipakai untuk mencari rekord dengan index brtkodtglidx adalah brgkode saja, tidak termasuk brttgl. Fasilitas USE_SET tidak dipakai untuk SCANSCAN. 10. UPDATE_RANGE akan mengubah satu range rekord yang dimulai dari DBC_TARGET s/d DBC_LAST_TARGET. Index yang dipakai harus sama, cuma targetnya yang beda. 11. JOIN_LAST_SFL berguna untuk mendapatkan rekord terakhir dari satu index dengan target yang tidak penuh. Misalnya dengan index ppdfakurtidx dan target F-1, kita akan mendapatkan nomor urut terakhir dari faktur F-1. Index ppdfakurtidx boleh duplikat. 12. Fasilitas ADD_DIR untuk menambah rekord ke direktori lain. 13. Fasilitas UPDATE_DIR untuk mengubah rekord di direktori lain. 2. DBCALCS(dsadd???) Fungsi: Untuk layar dengan tipe QUERY_TYPE, penambahan rekord yang normal akan digantikan oleh DBCALCS ini. Fungsi terpenting adalah meniadakan pengisian nomor sejenis faktur yang harus bertambah dengan sendirinya. MAP(msadd???) namaField namaField REPLACE DBCALCS(dsadd???) DBC_COMMAND ADD_SUBSTITUTE DBC_FILE namaFile DBC_MAP namaMap DBC_PREFIX prefix DBC_LAST_LEN panjangDigit atau {namaField} DBC_LAST_TARGET namaIndex namaField MAP(msupd???) namaField namaField REPLACE DBCALCS(dsupd???) DBC_COMMAND UPD_SUBSTITUTE DBC_TARGET namaIndex namaField DBC_MAP msupd??? DBC_PREFIX ??? DBC_LAST_LEN panjangDigit DBC_LAST_TARGET namaIndex namaField Catatan: 1. Bila ada DBC_PREFIX, prefix akan digunakan misalnya DBC_PREFIX F- dan DBC_LAST_LEN = 7, maka rekord pertama akan menjadi F-00001 2. Bila DBC_PREFIX tidak ada tapi field dari DBC_LAST_TARGET sudah mempunyai isi tertentu, maka isi field akan digunakan sebagai awalan. 3. Bila DBC_PREFIX ada dan field terisi sesuatu pada saat DBCALCS ini dijalankan, maka DBC_PREFIX yang akan digunakan. 4. DBC_LAST_TARGET harus menggunakan index yang tidak duplikat dan hanya berisi satu field 5. Map dengan nama field sebagai asal dan tujuan harus ada untuk menampilkan nilai dari field itu di layar. 6. PST_SUB_ADDCMD harus ada pada POSTING untuk ADD_SUBSTITUTE 7. PST_SUB_UPDCMD harus ada pada POSTING untuk UPD_SUBSTITUTE 8. DBC_MAP dijalankan sesudah DBC_TARGET untuk ADD_SUBSTITUTE dan UPDATE_SUBSTITUTE tetapi sebelum DBC_TARGET untuk ADD dan UPDATE. 4. DBCALCS(dmap???) Fungsi: Menjalankan MAP dengan melalui DBCALCS. Fungsi ini dibutuhkan karena SPCALCS hanya dapat melaksanakan DBCALCS dan tidak MAP. Maka untuk memberikan fasilitas MAP pada SPCALCS, DBCALCS dengan tipe MAPMAP diadakan. DBC_COMMAND MAPMAP DBC_MAP m?????