Altdizileri Nümerik Değerlere Dönüştürme
Altdiziden Tamsayıya (STI), Altdiziden Double Tamsayıya (STD) ve
Altdiziden Reel Sayıya (STR) Dönüştürme komutları, IN’de yer alan
karakter dizisi içerisinde INDX kadar kaydırılmış bir alandaki altdiziyi
tamsayıya, double tamsayıya veya reel sayıya dönüştürür, sonucu
OUT ile başlayan alana yazar.
ENO = 0 yapan hata koşulları
❑ 0006 (endirekt adresleme)
❑ 0091 (operand tanım aralığı dışında)
❑ 009B (indeks = 0)
❑ SM1.1 (taşma)
Altdiziden tamsayıya veya double tamsayıya dönüştürme komutu,
şu formdaki dizileri dönüştürür: [boşluklar] [+ veya -] [0 – 9
rakamları]
Altdiziden reel sayıya dönüştürme komutu şu formdaki dizileri
dönüştürür: [boşluklar] [+ veya -] [0 – 9 rakamları] [. veya ,] [0 – 9
rakamları]
INDX değeri, eğer dönüşüm ilk karakterden başlatılacaksa 1 olarak
girilir. Karakter dizisinin içerisinde nümerik olmayan değerler varsa,
bunların INDX parametresi ile atlanması mümkündür. Örneğin, giriş
dizisi “Sıcaklık: 77.8” olsun. Bu durumda INDX değeri 10 olarak
girilir ve böylece baştaki “Sıcaklık: “ sözcüğü atlanmış olur.
Altdiziden reel sayıya dönüştürme komutu 10’un kuvvetlerini
kullanarak gösterimin yapıldığı bilimsel formatı (1.234E6 gibi)
desteklemez. Böyle bir durumda taşma biti set edilmez; dizi üssel
kısma kadar dönüşümü yapar ve burada kalır. Örneğin, ‘1.234E6’
dizisi 1.234’e hatasız olarak dönüştürülür.
Dönüştürme dizinin sonuna erişildiğinde veya ilk geçersiz karaktere rastlandığında bitirilir. Geçersiz
karakter rakam (0-9) olmayan herhangi bir değerdir.
Çıkışa sığmayacak kadar büyük bir tamsayı değeri üretildiğinde taşma biti (SM1.1) set edilir. Örneğin,
Altdiziden Tamsayıya dönüştürme komutu eğer giriş dizisi 32767’den büyük veya –32768’ten küçük bir
değer üretecekse hata bitini set eder.
Taşma biti (SM1.1) ayrıca herhangi bir dönüşümün mümkün olmadığı durumda da set edilir. Örneğin
‘A123’ dizisi bu biti set eder ve çıkış değiştirilmez. Ancak, ‘12A3’ dizisi hata oluşturmaz; sonuç 12 olarak
çıkışa yazılır.
Tablo 6–19 Altdizileri Nümerik Değerlere Dönüştüren Komutlar için Geçerli Operandlar
Giriş/Çıkış Veri Tipi Operandlar
IN BAYT(dizi) IB, QB, VB, MB, SMB, SB, LB, *VD, *LD, *AC, Sabit
INDX BAYT VB, IB, QB, MB, SMB, SB, LB, AC, *VD, *LD, *AC, Sabit
OUT BAYT(dizi) VB, IB, QB, MB, SMB, SB, LB, *VD, *LD, *AC, Sabit
INT VW, IW, QW, MW, SMW, SW, T, C, LW, AC, AQW, *VD, *LD, *AC
DINT, REEL VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *LD, *AC
103