İletiler standart hataya ve/veya konsola basılabilir. Hedefi seçerken yazılımcı fmtmsg işlevinin sınıflama argümanında aşağıdaki iki değeri kullanabilir, isterse bit bit VEYAlayarak bunları birleştirebilir:
- MM_PRINT
İleti standart hatada gösterilir.
- MM_CONSOLE
İleti sistem konsolunda gösterilir.
Sistemdeki hata kaynakları fmtmsg işlevinin sınıflama argümanında aşağıdaki değerler bit bit VEYAlanarak
belirtilebilir:
- MM_HARD
Hata kaynağı bazı donanımlardır.
- MM_SOFT
Hata kaynağı bazı yazılımlardır.
- MM_FIRM
Hata kaynağı bazı donanımlara gömülü yazılımlardır.
fmtmsg işlevinin sınıflama argümanında belirtilebilecek üçüncü eleman sorunun saptandığı sistem parçalarını açıklamakta kullanılır. Bu aşağıdaki değerlerden sadece birini kullanarak yapılır:
- MM_APPL
Sorun uygulama tarafından saptanmıştır.
- MM_UTIL
Sorun başka bir uygulama tarafından saptanmıştır.
- MM_OPSYS
Sorun işletim sistemi tarafından saptanmıştır.
fmtmsg işlevinin sınıflama argümanında belirtilebilecek son eleman bu iletinin sonucunu gösterir. Aşağıdaki değerlerden sadece biri kullanılabilir:
- MM_RECOVER
Kurtarılabilir bir hata.
- MM_NRECOV
Kurtarılamayacak bir hata.
int fmtmsg | (long int sınıflama,
const char *isim,
int önem,
const char *metin,
const char *eylem,
const char *etiket) |
işlev
Parametreleriyle açıklanan bir iletiyi sınıflama parametresinde belirtilen aygıt(lar) üzerinde görüntüler. isim parametresi ileti kaynağını betimler. Dizge iki sütunu oluşturan iki parçadan oluşur. Birinci parça 10 karakterden, ikinci parça ise 14 karakterden uzun olamaz. metin parametresi hata durumunu, eylem parametresi hatadan kurtulmak için olası adımları açıklar, etiket parametresi ise daha fazla bilgi edinilebilecek belgeyi gösterir. etiket parametresi isim değerini ve eşsiz bir kimlik numarası içermelidir.
Parametreleri her biri istenirse yok sayılabilecek özel bir değer olabilir. Bu değerler için kullanılabilecek sembolik isimler:
- MM_NULLLBL
isim parametresi yoksayılır.
- MM_NULLSEV
önem parametresi yoksayılır.
- MM_NULLMC
sınıflama parametresi yoksayılır. Bu hiçbir şey basılmamasına sebep olur.
- MM_NULLTXT
metin parametresi yoksayılır.
- MM_NULLACT
eylem parametresi yoksayılır.
- MM_NULLTAG
etiket parametresi yoksayılır.
Bu alanların yoksayılması için başka bir yöntem de çıktının standart hataya gönderilmesinde kullanılabilir. Bu yöntemde davranışı aşağıda açıkalanan ortam değişkenleri belirler.
önem parametresi aşağıdaki değerlerden biri olabilir:
- MM_NOSEV
Hiçbir şey basılmaz, MM_NULLSEV ile aynıdır.
- MM_HALT
Değer ÇÖKME (HALT) anlamında basılır.
- MM_ERROR
Değer HATA (ERROR) olarak basılır.
- MM_WARNING
Değer UYARI (WARNING) olarak basılır.
- MM_INFO
Değer BİLGİ (INFO) olarak basılır.
Bu beş makronun değeri
0 ile
4 arasındadır.
SEV_LEVEL ortam değişkenini kullanarak ya da
addseverity işleviyle basılacak dizgeye karşılık olarak başka önem dereceleri de belirlenebilir. Bu konu
Önem Derecelerinin Eklenmesi bölümünde açıklanmıştır.
Hiçbir parametre yoksayılmadığında çıktı şuna benzer:
isim: önem-dizgesi: metin
TO FIX: eylem etiket
İkinokta üstüste, satırsonu ve TO FIX (DÜZELTMEK İÇİN)
dizgesi üretilmesini sağlayan parametreler yoksayılarak görüntülenmeyebilir.
Bu işlev X/Open Taşınabilirlik Kılavuzunda belirtilmiştir. Ayrıca System V'den türetilmiş tüm sistemlerde bulunur.
Bir hata oluşmazsa işlev MM_OK değeri ile döner. Başarısızlık standart hataya basma ile ilgiliyse, MM_NOMSG ile döner. Çıktılama konsolda başarısız olursa, MM_NOCON ile döner. Hiçbirine çıktılama yapılamıyorsa, MM_NOTOK ile döner. Tüm çıktılamanın başarısız olduğu son durumda ayrıca bir parametrenin değeri yanlışsa bu da döner.
fmtmsg işlevinin davranışını açıklayan iki ortam değişkeni vardır. İlki olan MSGVERB çıktının gerçekte standart hataya (konsola değil) gönderilmesinde kullanılır. Beş alanın herbiri açıkça etkinleştirilir. Bunu yapmak için, işlev çağrılmadan önce ortam değişkeni aşağıdaki gibi düzenlenir:
MSGVERB=anahtar-sözcük[:anahtar-sözcük[:…]]
Geçerli anahtar-sözcükler label (isim), severity (önem), text (metin), action (eylem) ve tag (etiket) sözcükleridir. Ortam değişkeni yoksa veya boşsa, desteklenmeyen bir anahtar sözcük kullanılmışsa ya da değer iletinin bir parçası olarak geçersizse o alan(lar) çıktılanmaz.
fmtmsg işlevinin davranışını açıklayan ikinci ortam değişkeni SEV_LEVEL değişkenidir. Bu değişken ve fmtmsg işlevinin davranış değiştirmesi X/Open Taşınabilirlik Kılavuzunda belirtilmemiştir. Yine de System V sistemlerinde bulunmaktadır. Yeni önem derecelerini belirtmekte kullanılır. Öntanımlı olarak yukarıda açıklanan beş önem derecesi vardır. Diğer sayısal değerlerler fmtmsg işlevinin bir şey basmasını sağlamaz.
Kullanıcı SEV_LEVEL değişkenini fmtmsg işlevini çağırmadan önce şöyle tanımlayabilir:
SEV_LEVEL=[açıklama[:açıklama[:…]]]
Buradaki açıklama alanları aşağıdaki değerleri alabilir:
önem-sözcüğü, seviye, basılacak-dizge
önem-sözcüğü parçası fmtmsg tarafından kıllanılmaz ama yine de vardır. seviye bir numarayı ifade eden bir dizgedir. Sayısal değer 4’ten büyük olmalıdır. Bu değer, fmtmsg işlevinin bu sınıfı seçmesini sağlayan önem parametresinde kullanılır. Öntanımlı önem derecelerinin yerini alacak bir değer mümkün değildir. basılacak-dizge parçası ise fmtmsg tarafından bu sınıf işleme alındığında gösterilecek iletidir (yukarıya bakarsanız, fmtsmg işlevinin sayısal değeri değil, onun dizge karşılığını bastığını görürsünüz).