• Tidak ada hasil yang ditemukan

LIBRARY SISTEM OPERAS

Library sistem operasi meliputi fungsi untuk memanipulasi file, untuk memperoleh waktu dan tanggal yang sekarang, dan fasilitas lain yang berhubungan dengan sistem operasi. Ini digambarkan dalam tabel OS. Library ini membayar suatu harga untuk portabilitas Lua. Karena Lua ditulis dalam ANSI C, maka hanya dapat digunakan jika fungsi merupakan definisi standar ANSI . Banyak fasilitas OS, seperti socket dan manipulasi direktori, bukan bagian dari standar ini dan oleh karena itu library sistem tidak menyediakannya. Ada library Lua lain, tidak dicakup dalam distribusi penuh, yang menyediakan akses OS yang diperluas Contohnya adalah library posix , yang menawarkan semua kemampuan standar POSIX.1 untuk Lua, dan luasocket, untuk mendukung jaringan.

Untuk manipulasi file, semua yang disediakan oleh library adalah suatu fungsi

os.rename, yang merubah nama dari suatu file, dan os.remove, yang memindahkan ( menghapus) suatu file.

22.1 Tanggal dan Waktu

Dua fungsi, waktu dan tanggal, melakukan query waktu dan tanggal di (dalam) Lua. Fungsi waktu, ketika dipanggil tanpa argumentasi, akan mengembalikan waktu dan tanggal yang sekarang, dikodekan sebagai jumlah. ( dalam kebanyakan sistim, jumlah tersebut adalah banyaknya detik sejak beberapa jangka waktu.) ketika dipanggil dengan suatu tabel, akan mengembalikan jumlah yang mewakili waktu dan tanggal yang diuraikan oleh tabel tersebut. Tabel tanggal seperti itu mempunyai bidang penting berikut :

Tiga yang pertama wajib, lainnya default untuk tengah hari ( 12:00:00) ketika tidak disajikan. Dalam sistem Unix ( dimana jangka waktunya adalah 00:00:00 UTC, Januari 1, 1970) dijalankan dalam Rio de Janeiro ( yang mana tiga jam di barat Greenwich), kami mempunyai contoh sebagai berikut :

-- obs: 10800 = 3*60*60 (3 hours)

print(os.time{year=1970, month=1, day=1, hour=0}) --> 10800

print(os.time{year=1970, month=1, day=1, hour=0,sec=1}) --> 10801

print(os.time{year=1970, month=1, day=1}) --> 54000 (obs: 54000 = 10800 + 12*60*60)

Fungsi tanggal, di samping namanya, adalah semacam suatu kebalikan dari fungsi waktu, yang mengkonversi suatu jumlah yang mewakili waktu dan tanggal dan kembali ke beberapa penyajian tingkat yang lebih tinggi. Parameter pertamanya adalah suatu string format, menggambarkan penyajian yang kami inginkan. Yang kedua adalah klasifikasi date-time tersebut, defaultnya adalah waktu dan tanggal yang sekarang.

Untuk menghasilkan suatu tabel tanggal, kami menggunakan format string "* t". Sebagai contoh, kode berikut :

temp = os.date("*t", 906000490)

Menghasilkan tabel :

{year = 1998, month = 9, day = 16, yday = 259, wday = 4, hour = 23, min = 48, sec = 10, isdst = false}

Di samping bidang yang digunakan oleh os.time, tabel yang diciptakan oleh os.date juga memberi week day ( wday, 1 adalah Minggu) dan year day ( yday, 1 adalah Januari 1).

Untuk format string yang lain, os.date mengatur tanggal sebagai string, yang merupakan suatu salinan format string di mana label spesifik digantikan oleh informasi tentang waktu dan tanggal. Semua label diwakili oleh a`%´ yang diikuti oleh suatu huruf, seperti contoh berikut:

print(os.date("today is %A, in %B")) --> today is Tuesday, in May print(os.date("%x", 906000490))

--> 09/16/1998

Semua penyajian mengikuti tempat yang sekarang. Oleh karena itu, dalam tempat untuk Brazil- Portuguese, % B akan menghasilkan " setembro" dan % x dalam " 16/09/98".

Tabel berikut menunjukkan masing-masing label, artinya, dan nilai untuk September 16, 1998 (Rabu), pada 23:48:10. Untuk nilai-nilai numerik, tabel menunjukkan juga cakupan nilai-nilai yang mungkin:

Jika kami memanggil date tanpa argumentasi, menggunakan format % c , yang melengkapi informasi waktu dan tanggal dalam suatu format layak. Catatan yang menyajikan % x, % X, dan % c berubah menurut tempat dan sistem itu. Jika kami ingin menetapkan suatu penyajian , seperti mm/dd/yyyy, menggunakan suatu format string eksplisit, seperti "% m/%d/%Y".

Fungsi Os.Clock mengembalikan banyaknya detik waktu CPU untuk program tersebut.

Penggunaan Khasnya adalah untuk menentukan tingginya letak suatu potongan kode:

local x = os.clock() local s = 0

for i=1,100000 do s = s + i end

print(string.format("elapsed time: %.2f\n", os.clock() - x))

22.2 Panggilan Sistem Lain

Fungsi Os.Exit mengakhiri eksekusi dari suatu program. Fungsi Os.Getenv

mendapatkan nilai dari suatu variabel lingkungan, menerima nama dari variabel dan mengembalian suatu string dengan nilainya :

print(os.getenv("HOME")) --> /home/lua

Jika variabel tidak didevinisikan, panggilan akan mengembalikan nol. Fungsi

Os.Execute menjalankan suatu perintah sistem, ini setara dengan fungsi sistem dalam C. ia menerima suatu string dengan perintah dan mengembalikan suatu kode kesalahan. Sebagai contoh, baik dalam Unix maupun dalam DOS-WINDOWS, kami dapat menulis fungsi berikut untuk menciptakan direktori baru:

function createDir (dirname)

os.execute("mkdir " .. dirname) end

Fungsi Os.Execute adalah kuat, tetapi ini juga sangat bergantung sistem.

Fungsi Os.Setlocale menetapkan lokasi yang sekarang yang digunakan oleh suatu

progam Lua. Lokasi menggambarkan perilaku yang sensitif untuk perbedaan ilmu bahasa atau budaya. fungsi Setlocale mempunyai dua parameter string yaitu nama lokasi dan suatu kategori, yang menetapkan corak lokasi apa yang akan mempengaruhi. Ada enam kategori lokasi yaitu " collate" mengendalikan secara order alfabet string-string, " ctype" mengendalikan jenis karakter individu (yang merupakan huruf) dan konversi antara huruf kecil dan huruf besar, "monetary" tidak berpengaruh pada program Lua, " numeric" mengendalikan bagaimana angka-angka diatur, " time" mengendalikan bagaimana waktu dan tanggal diatur ( fungsi os.date), dan "all" mengendalikan semua fungsi di atas. Kategori default adalah " all", sehingga jika kami memanggil setlocale

hanya dengan nama lokasi maka akan menetapkan semua kategori. fungsi Setlocale

mengembalikan nama lokasi atau nol jika gagal ( pada umumnya disebabkan sistem tidak mendukung lokasi yang diberi).

Kategori " numeric" adalah trik sederhana. Walaupun Bangsa Portugis dan Bahasa Latin lain menggunakan suatu tanda koma sebagai ganti suatu titik untuk menuliskan sistim desimal angka-angka, lokasi tidak merubah cara Lua menguraikan angka-angka ( sebagai pertimbangan ungkapan seperti print(3,4) telah mempunyai suatu maksud dalam Lua). Oleh karena itu, kami boleh mengakhiri dengan suatu sistem yang tidak bisa mengenali angka-angka dengan tanda koma, tetapi juga tidak bisa memahami angka-angka dengan titik

-- set locale for Portuguese-Brazil print(os.setlocale('pt_BR')) --> pt_BR print(3,4) --> 3 4

print(3.4) --> stdin:1: malformed number near `3.4'