6-МАВЗУ ЎЗГАРУВЧИЛАРНИНГ ВАҚТЛИ, МАТНЛИ ТУРЛАРИ Вақт оралиғи туридаги ўзгарувчилар TIME туридаги ўзгарувчилар вақт оралиғини белгилашда ишлатилади. Сутка вақти (TIME_OF_DAY) дан ташқари 24 соат ичида максимал қиймат билан чегараланмаган.
Вақт оралиғида ифодаланадиган сонлар TIME# калит сўзи билан ёки унинг қисқартирилган шакли T# билан бошланиши шарт. Умуман вақтни тасвирлаш қуйидаги майдонлардан таркиб топади: кунлар (d), соатлар (h), минутлар (m), секундлар (s), миллисекундлар (ms). Вақтни тасвирлаш тартиби айнан шундай бўлиши зарур, кераксиз элементларни эса қолдириш мумкин. Ўқишда қулайлик бўлиши учун майдонларни пастки чизиқча ёрдамида ажратиб ёзиш мумкин. Масалан:
VAR TIME1: TIME :=t#10h_14m_5s;
END_VAR Катта элемент тасвирлаш диапазони чегарасидан ошиб кетиши мумкин. Лекин кунлар, соатлар кўрсатилган бўла туриб минутларнинг қиймати 59 дан катта бўлиши мумкин эмас. Бундай холларда соатнинг қиймати бирга оширилиб, минутнинг 59 дан ортган қиймати минут майдонига ёзилади. Яъни вақтни ифодалаётганда ўзидан битта катта ўлчов бирлиги ёзилган бўлса кичик ўлчов бириклар ўз диапазонидан чиқиб кетмаслиги зарур. Бу қуйидаги мисолда яққол намоён бўлади.
TIME1:=t#1m65s (*бу ёзув хато*)
TIME1:=t#125s (*бу ёзув тўғри*)
Келтирилган мисолда иккинчи ёзув тўғри, сабаби секунддан олдин ундан катта бўлган вақт бирлиги кўрсатилмаган.
Бундан ташқари вақтни тасвирлашнинг кичик элементини ўнли каср кўринишида ҳам ёзиш мумкин.
TIME1:=t#1.2s (*t#1s_200ms га тенг*)
Сутка вақти ва сана туридаги ўзгарувчилар Вақт, кун ёки санани ифодаловчи ўзгарувчилар ISO 6801 га мос равишда тасвирланади.
Тур
Қисқача белгиланиши
Бошланғич қиймати
DATE
D
TIME_OF_DAY
TOD
00:00
DATE_AND_TIME
DT
00:00 1 январь 1970 йил
Сана қуйидаги форматда ёзилади: “йил”-“ой”-“сана”. Вақт эса қуйидаги форматда ёзилади: “соат”: “минут” : “секунд” . “юздан бир секунд”. Сана DATE#клит сўзи ёки қисқача D# билан аниқланади. Кун вақти эса TIME_OF_DAY# клит сўзи ёки қисқача TOD# билан, сана ва вақт эса DATE_AND_TIME# клит сўзи ёки қисқача DT# билан аниқланади.
DATE#2002-01-31 ёки D#2002-01-31
TIME_OF_DAY#16:03:15.47 ёки TOD#16:03:15.47
DATE_AND_TIME#2002-01-31-16:03:15.47 ёки
DT#2002-01-31-16:03:15.47
Юқорида келтирилган учала тур 4 байтни эгаллайди (DWORD).
Сатр туридаги ўзгарувчилар Сатрли ўзгарувчи тури STRINGматнли маълумотдан иборат бўлган ўзгарувчиларни аниқлайди. Сатрнинг ўлчами уни эълон қилишда кўрсатилади. Масалан str1 матнли ўзгарувчини эълон қиламиз. У 20 тагача бўлган белгидан иборат бўлсин. str2 матнли ўзгарувчиси эса 60 тагача белгидан иборат бўлсин.
VAR str1: STRING(20); str2:STRING(60) :=’Фамилия’;
END_VAR Агар сатрли ўзгарувчининг бошланғич қиймати берилмаган бўлса, у бўш сатр қийматига эга деб хисобланади.
Зарурий хотира миқдори сатр ўлчамини беришда аниқланади. STRING тури учун хар бир белги 1 байт жойни эгаллайди. (DSTRING учун эса 2 байт жой талаб қилинади). Сатрли константалар битталик қўштирноқ ичида ёзилади:
str1:=’Жараён тури’;
Сатрга ёзувли тасвирига эга бўлмаган кодларни киритиш зарурати туғилса, $ белгисидан ва ундан сўнг ўн олтилик саноқ системасида тасвирланадиган иккита рақамли коддан фойдаланилади. Кенг тарқалган бошқарувчи терминал кодларни қуйидаги қисқартириш билан ёзиш мумкин.