download

Metode
Perancangan
Program
Pert 12 – Algoritma untuk
masalah bisnis
Sequential File update
• Sequential file update adalah proses batch
yang sangat umum.
• Flowchart dari sequential file update dapat
digambarkan berikut:
File
master
lama
File
master
baru
File
Transaksi
Program
Sequential
update
Laporan
Audit
dan Error
Konsep Sistem
• File Master
– Sebuah file master adalah sebuah file yang berisi data
permanent dan semi permanent. Record di dalam file ini
adalah sequential, tergantung dari key.
• File Transaksi
– Sebuah file transaksi adalah file yang berisi semua data
dan kegiatan yang ada di file master.
• Laporan Audit
– Adalah sebuah daftar detail mengenai semua transaksi
yang ada di file master.
• Laporan Error
– Adalah file yang berisi daftar eror yang terjadi selama
update file
Balance Line Algorithm
• Algoritma ini menangani multiple
transaksi record untuk satu file
master, dan juga jika ada
kemungkinan record yang error.
• Algoritma ini ditampilkan secara
modular dan memakai konsep
current record.
• Current record adalah record yang
sedang diproses
Balance line algorithm
• Current record akan digunakan jika key record
pada kedua file dibandingkan
• Yang menjadi current record adalah record
dengan key record yang lebih kecil.
• Hal lainnya adalah status current record yang
digunakan sebagai flag untuk menyatakan
apakah current record dapat diproses atau tidak.
• Jika status current record adalah aktif, maka
current record dapat digunakan untuk update
atau menulis ke file master baru. Jika inactive,
maka current record tidak dapat digunakan.
Balance line algorithm
• Proses kedua file akan selesai jika
sampai ke end_of_job. Dimana hal
ini berarti kedua file sudah sampai ke
eof.
contoh
• Hierarchy chart
Sequential_file_
update_program
Initialise_
variable_
fields
Read_old_
master_
record
Print_
audit_
report
Read_
transaction_
record
Apply_
addition_
transaction
Print_
error_
report
Read_old
_master_
record
Apply_
deletion_
transaction
Print_
audit_
report
Select_
current
_record
Apply_
transaction_
to_current_
record
Apply_
update_
transaction
Print_
error_
report
Print_
error_
report
Print_
audit_
report
Write_
current_
record
Print_
report_
totals
Read_
transaction_
record
Print_
error_
report
Solution algorithm
• Mainline
Sequential_update_program
Initialise_variable_fields
Read_transaction_record
Read_old_master_record
set current_record_status to ‘inactive’
DOWHILE NOT end_of_job
select_current_record
DOWHILE transaction_record_key = current_record_key
Apply_transaction_to_current_record
ENDDO
IF current_record_status =‘active’ THEN
write_current_record
set current_record_status to ‘inactive’
ENDIF
ENDDO
Print_report_totals
END
Subordinate modules
1.
2.
Initialise_variable_fields
set total_transaction_records to zero
set total_old_master_records to zero
set total_new_master_records to zero
set total_error_records to zero
set end_of_job to false
END
Read_transaction_record
read transaction record
IF NOT EOF THEN
increment total_transaction_records
ELSE
set transaction_record_key to high value
IF transaction_record_key = high value THEN
set end_of_job = true
ENDIF
ENDIF
END
3.
4.
Read_old_master_record
read old master record
IF NOT EOF THEN
increment total_old_master_records
ELSE
set old_master_record to high value
IF transaction_record_key = high value THEN
set end_of_job = true
ENDIF
ENDIF
END
Select_current_record
IF transaction_record_key < old_master_record_key THEN
set up current record with transaction record fields
ELSE
set up current record with old master record fields
set current_record_status to ‘active’
read_old_master_record
ENDIF
END
5. Apply_transaction_to_current_record
CASE OF transaction_type
addition : apply_addition_transaction
deletion : apply_deletion_transaction
update : apply_update_transaction
other : error_message = ‘invalid transaction type’
Print_error_report
ENDCASE
read_transaction_record
END
6. Write_current_record
write current record to new master file
incremental total_new_master_records
END
7. Print_report-totals
print total_transaction_records
print total_old_master_records
print total_new_master_records
print total_error_records
END
8. Apply_addition_transaction
IF current_record_status = ‘inactive’ THEN
set current_record_status to ‘active’
print_audit_report
ELSE
error_message = ‘Invalid addition, record already exists’
print_error_report
ENDIF
END
9. Apply_deletion_transaction
IF current_record_status = ‘active’ THEN
set current_record_status to ‘inactive’
print_audit_report
ELSE
error_message = ‘Invalid deletion, record not on master file’
print_error_report
ENDIF
END
10. Apply_update_transaction
IF current_record_status = ‘active’ THEN
apply required changes to current record
Print_audit_report
ELSE
error_message = ‘Invalid update. Record not on master file’
print_error_report
ENDIF
END
11. Print_audit_report
print transaction details on audit report
CASE OF transaction_type
addition : print ‘record added’
deletion : print ‘record deleted’
update : print ‘record updated’
ENDCASE
12. Print_error_report
print transaction details on error report
print error_message
increment total_error_records
END