Константы языка PL/1

Рассмотрим основные типы данных на примере констант.

Десятичные константы с фиксированной точкой (DECIMAL FIXED POINT) могут иметь один из следующих видов:

a) Sa1a2…an.b1b2…bk
b) Sa1a2…an.
c) Sa1a2…an
d) S.b1b2…bk

Здесь S – либо пусто, либо знак константы (плюс или минус), ai (i=1,…,n) –цифры целой части, bj (j=1,…,k) – цифры дробной части, символ . (точка) – разделитель целой и дробной частей константы, называемый десятичной точкой. То есть десятичные константы с фиксированной точкой представляют собой строку из одной или нескольких десятичных цифр с десятичной точкой или без неё. Если десятичной точки нет, то предполагается, что она следует сразу же за последним числом строки.

Примеры

8.7625
-248
-.00007
972.
+10.2
-0.123

Если в константе отсутствует дробная часть, её называют десятичной целой.

По умолчанию максимальная длина константы составляет 15 десятичных цифр. При компилировании можно указанием опций увеличить длину до 31.

Десятичные константы с плавающей точкой (DECIMAL FLOAT POINT) могут иметь следующий вид

k1Ek2,

где k1 - десятичная константа с фиксированной точкой, k2 – десятичная константа с фиксированной точкой в виде Sa1 или Sa1a2.

Максимальная точность представления десятичных чисел с плавающей точкой составляет 16 знаков, что определяет диапазон от 10-78 до 1078.

Примеры

		Десятичные числа		Числовые значения
		с плавающей точкой
			20.Е5			2000000.
			11Е2			1100.
			20.6Е-10		0.00000000206
			-.865421Е14		-86542100000000.

Двоичная константа с фиксированной точкой (BINARY FIXED POINT) может иметь один из следующих видов:

a) Sc1c2…cn.d1d2…dkB,
b) Sc1c2…cn.B,
c) Sc1c2…cnB,
d) S.d1d2…dkB.

Здесь S – либо пусто, либо знак константы (плюс или минус), ci (i=1,…,n) – цифры целой части, dj (j=1,…,k) - цифры дробной части, символ . (точка) – разделитель целой и дробной частей константы. Каждая из цифр ci и dj есть либо 0, либо 1.

Максимальное число двоичных цифр двоичной константы с фиксированной точкой равно 31. При компилировании можно указанием опций увеличить до 63.

Примеры

1101100B
11.011B
-100.10B
10.B
+1B

Двоичная константа с фиксированной точкой может быть записана шестнадцатеричными цифрами. В этом случае число берется в одинарные или двойные кавычки и завершается символами XN. При этом если число имеет 8 или менее цифр, то его точность равна 31, если больше 8 цифр, то 63.

Примеры
‘100’XN /*эквивалентно ‘00000100’XN и даёт 256*/
‘800’XN /*эквивалентно ‘00000800’XN и дает 32,768*/
‘FFFF’ /*эквивалентно ‘0000FFFF’XN’, значение 65,535*/
‘ffff_ffff’ /*равно –1*/

Опция XU указывает, что при записи шестнадцатеричными цифрами константа рассматривается только как неотрицательная (атрибут UNSIGNED). При этом если число имеет 8 или менее цифр, то его точность равна 32, при наличии большего числа цифр – 64.

Примеры

‘100’XN /*эквивалентно ‘00000100’XN и даёт 256*/
‘800’XN /*эквивалентно ‘00000800’XN и дает 32,768*/
‘FFFF’ /*эквивалентно ‘0000FFFF’XN’, значение 65,535*/
‘ffff_ffff’ /*равно 2**32–1*/

Двоичная константа с плавающей точкой (BINARY FLOAT POINT) имеет вид

k1Ek2B,

где k1 – двоичная константа с фиксированной точкой без последней буквы B, k2 – десятичная константа с фиксированной точкой в виде Sa1 или Sa1a2 или Sa1a2a3, где a1,a2 и a3 – десятичные цифры.

Конструкция Ek2 соответствует числу . Следовательно, константа k1Ek2B соответствует числу k1 .

Максимальная точность представления двоичных чисел с плавающей точкой составляет 53 знака, что определяет диапазон от 2-260 до 2252.

Примеры

		Двоичные числа 		Двоичные цифровые 
		с плавающей точкой		значения
			1101.1E4B		11011000
			-1001.111E-2B	-10.01111
			1101E24B		110100000000000000000000000000

Результат использования констант зависит от их характеристики, называемой точностью. Точность константы с плавающей точкой задаётся числом p, которое равно количеству цифр в её записи, не считая цифр порядка, и представляется в виде (p). Например для констант 1.6Е1, 016Е0 и .1600Е+2 точность соответственно равна (2), (3), (4).

Если константа присваивается переменной с плавающей точкой и объявленная точность переменной меньше точности константы, то отбрасываются цифры младших разрядов.

Точность констант с фиксированной точкой задаётся числами p и q, где p равно количеству цифр в записи константы, q – количество цифр, расположенных справа от точки, и представляется в виде (p,q). Например, точность констант 02, 2, 2.0, .02 соответственно равна (2,0), (1,0), (2,1) и (2,2).

Если константа присваивается переменной с фиксированной точкой, а объявленная точность меньше, чем точность константы, то старшие или младшие разряды отбрасываются в зависимости от описания точности переменной.
Мнимые и комплексные константы (COMPLEX). Мнимая константа имеет вид
yI,

где y – любая из допустимых действительных числовых констант. Это число представляет собой комплексное число с нулевой действительной частью, причём y – есть коэффициент при мнимой части числа.

Примеры

	Мнимая константа		Значение
		2I				2i
		-2.34I				-2.34i
		2.34E2I			234i
		101.01BI			101.01i (двоичное число)
		1101.011E-2BI		11.01011i (двоичное число)	

Точность мнимой константы совпадает с точностью коэффициента y.

Комплексная константа имеет вид
x+yI или x-yI,

где x и y – действительные числовые константы, причём y – константа без знака.

Примеры

		Комплексная константа	Десятичное число
			3-4I				3-4i
			4.56+2.34I			4.56+2.34i
			-1B+11BI			-1+3i

Точность комплексной константы определяется как точность суммы x+y.

Строковые константы (CHARACTER). Различают два вида строковых констант – символьные и битовые.

Значением (телом) символьной строки может быть произвольная последовательность символов, допустимых для данной ЭВМ (эти символы могут и не входить в основной набор символов языка PL/1). В частности, телом строки может быть пустая последовательность символов. Символьно-строчная костанта может иметь вид

‘x’ или (n)’x’ ,
“x” или (n)”x”.

Здесь x – строка символов, n – коэффициент повторения, являющийся целым десятичным числом без знака. Константа (n)’x’ (соответственно (n)”x”) эквивалентна константе ‘xx…x’ (соответственно “xx…x”), где строка символов x повторяется n раз. Другими словами символьно-строчная константа есть последовательность символов, заключённая в одинарные или двойные кавычки. Длиной символьной строки называется количество символов, заключённых в кавычки.

Для строковых констант должны соблюдаться следующие правила:

А) Если в символьную строку включён комментарий, то и комментарий и его ограничители (/* и */) учитываются при определении длины строки.

В) Если в строке символов появляется кавычка (‘ или “), такая же, как и ограничивающие строку кавычки, то она заменяется на две кавычки этого же типа без пробелов между ними (на ‘’ или “”). Два апострофа принимаются за один символ.

C) Если в строке символов появляется кавычка, отличная от ограничивающих сроку кавычек, то она воспринимается как один символ и не требует дублирования.

На каждый символ в строке в памяти отводится один байт. Максимальная длина символьной строки 32 767.

Примеры

‘3X-4Y=8’ (длина 7)
‘DOLLARS->MARKS’ (длина 14)
‘BEETHOVEN’’S ’’’’NINTH SYMPHONY’’’’’ (длина 30)
(3)’ABC’ (длина 9)
‘AB/*COMMENT*/C’ (длина 14)

Строковая константа может состоять из последовательности четного числа шестнадцатеричных цифр, заключенных в одинарные или двойные кавычки, с завершением символом X. Каждая пара шестнадцатеричных цифр представляет один символ. Длина такой константы равна половине количества шестнадцатеричных цифр её составляющих.

Примеры

‘0d0A’x (длина 2)
‘’X (длина 0)

Значением (телом) битовой строки может быть произвольная последовательность цифр 0 или 1; в частности эта последовательность может быть пустой. Битовая константа может иметь вид

‘x’B или (n)’x’B.

Длина строки бит определяется числом бит, заключённых в кавычки. Максимальная длина строки бит 32 767.

Примеры

‘110110110’B (длина 9. Можно записать как (3)’110’B)
(10)’0’B (длина 10. Можно записать как ‘0000000000’B)

Битовая строка может состоять из последовательности шестнадцатеричных цифр, заключенных в кавычки, и завершаться в этом случае символами B4 или BX. Каждая шестнадцатеричная цифра соответствует четырем битам.

Примеры

‘CA’B4 эквивалентно ‘1100_1010’B
‘80’BX эквивалентно ‘1000_0000’B
(2)’F’B4 эквивалентно ‘1111_1111’B
‘FF’BX эквивалентно ‘1111_1111’B

Битовая строка может состоять из последовательности восьмеричных цифр, заключенных в кавычки, и завершаться в этом случае символами B3. Каждая восьмеричная цифра соответствует трем битам.

Примеры

‘22’B3 эквивалентно ‘010_010’B
(2)’7’B3 эквивалентно ‘111_111’B
‘’B3 эквивалентно “”B

Графическая константа является последовательностью двухбайтовых (DBCS) символов, заключенных в кавычки, и завершается символом G.

Графическая константа может состоять из последовательности шестнадцатеричных цифр, количество которых кратно четырем. Каждая четверка цифр соответствует одному двухбайтовому символу. Константа завершается символами GX.

Примеры

‘81a1’gx представляет один двухбайтовый символ
“ “gx эквивалентно ‘’g

Смешанная строковая константа состоит из однобайтовых и двухбайтовых символов. Признаком такой константы является символ M. Длина такой константы равна количеству однобайтовых символов плюс удвоенное число двухбайтовых символов.

Уникодовая строковая константа состоит из последовательности двухбайтовых символов в UTF-16 кодировке. Признаком константы является символ W. Уникодавая строковая константа может состоять из последовательности шестнадцатеричных цифр, количество которых равно четырем. Признаком константы являются символы WX. Каждые четыре символа такой константы представляют один UTF-16 символ.

Примеры

‘0031’WX представляет один UTF-16 символ
“ “WX эквивалентно “ “W

В PL/1 константа может иметь имя. В этом случае константа описывается в соответствующем разделе с обязательным атрибутом VALUE среди других атрибутов данных. В атрибуте VALUE в круглых скобках указывается выражение, задающее значение константы.

Примеры

DCL A4 value(148) fixed bin,
C4 value(261) fixed bin,
WHOLE value(800) fixed bin;
DCL Notes (4) static,
Init (a4, (Whole/4), /* 148, 200 */
C4, (Whole*2)); /* 261, 1600 */

Константа метка представляет собой имя, которое указывается как префикс выражения (исключая PROCEDURE, ENTRY, PACKEGE, FORMAT), на которое возможен переход при выполнении программы. В приведенном ниже примере lbl_x является меткой-переменной, lbl_a и lbl_b метками константами. Передача управления на помеченный оператор осуществляется оператором безусловного перехода GO TO.

Примеры

Dcl lbl_x label;
Lbl_a: statement;

lbl_b: statement;

lbl_x=lbl_a;

go to lbl_x;

Константа формата есть имя, используемое как префикс выражения, задающего формат.

Примеры

Prntexe: format
( column (20),A(15), column (40), A(15), column (60),A(15) );
Prntstf: format
( column (20),A(10), column (35), A(10), column (50),A(10) );

Здесь Prntexe и Prntstf являются константами формата.

Отправить комментарий

  • Доступны HTML теги: <b> <i> <u> <br> <hr> <div> <span> <code> <pre>
  • Строки и параграфы переносятся автоматически.
  • You can enable syntax highlighting of source code with the following tags: <code>, <pli>.

Подробнее о форматировании

  _____   _____ 
|___ / |___ |
|_ \ / /
___) | / /
|____/ /_/
Enter the code depicted in ASCII art style.