Önceki bölümde bahsedilen sorunlardan şu sonuçları çıkarabiliriz:
Numaralar bir kere ayrıldıktan sonra onları değiştirmek gerekirse bu çok zor olur.
Numaralar dizgenin içeriği hakkında hiçbir fikir vermediğinden karışıklıklar olabilir.
Sürekli olarak sembolik isimleri kullanarak ve dizge içeriğini bir sembolik isimle eşleyen bir yöntem sağlanarak bu iki sorundan kurtulmak mümkündür. Bu yöntemim yazılımcıya maliyeti yazılımı geliştirirken bir yandan da ileti kataloğunu yazmasıdır.
Yazılım derlenmeden önce sembolik isimlerin numaralarla eşleştirilmesi gerektiğinden bunun böyle olması gerekir. Önceki bölümde gencat uygulaması tanıtılırken isimlerle eşleşmeleri içeren bir başlık dosyasının nasıl üretileceğinden bahsedilmişti. Örneğin, önceki örnekteki katalog dosyasının isminin ex.msg olduğu kabul ederek,
gencat -H ex.h -o ex.cat ex.msg
komutuyla şu içeriğe sahip bir başlık dosyası üretilir:
#define SetTwoSet 0x2 /* ex.msg:8 */
#define SetOneSet 0x1 /* ex.msg:4 */
#define SetOnetwo 0x2 /* ex.msg:6 */
Görüldüğü gibi, kaynak dosyasında verilen sembollerden eşsiz belirteçler üretmek için yeni semboller elde edilmiş ve bunlar numaralara atanmıştır. Kaynak dosyayı okuyarak ve kuralları bilerek başlık dosyasının içeriğini tahmin etmek mümkündür ama bu gerekli değildir. gencat uygulaması herşeyi dikkatlice yapabilir. Bütün geliştiriciler, projenin kaynak dosyalarının bağımlılık listesine üretilen başlık dosyasını koymalı ve girdi dosyaları değiştiğinde başlığı üretecek kuralları eklemelidir.
Sembollerden makro isimlerinin elde edilmesi ile ilgili olarak da bir kaç laf etmek lazım. Her makro ismi iki parçadan oluşur: İleti kümesinin ismi artı iletinin ismi ya da özel bir dizge olarak Set. Yani, SetOnetwo makrosu ile ileti katalog dosyasındaki SetOne ileti kümesinin two isimli iletisine erişilir.
Diğer isimler ileti kümelerinin isimlerini belirtir. Özel Set dizgesi ileti belirtecinin yerine kullanılır.
Eğer koddaki SetOne kümesinin ikinci dizgesi C kodunda kullanılmak istenirse şöyle yapılırdı:
catgets (catdesc, SetOneSet, SetOnetwo,
" Kimliği \"two\" olan ileti, buna 2 değeri atanacaktır")
İşlevin bu yöntemle yazılması C kaynak kodunda herhangi bir değişiklik gerekmeksizin ileti numarasını hatta Set numarasını değiştirmek mümkün olacaktır. (Dizgenin metni normalde aynı görünür; bu sadece bu örnek içindir.)