Специальные строки управления печатью обеспечивают возможность разбивки выводимых данных на стандартные страницы, вывод заголовков, примечаний, шапок таблиц, печать разметки граф на первой и последующих страницах, оформление табличных строк и граф самой различной структуры, пропуск строк и переход на новую страницу, вычисление арифметических выражений и вывод их значений.
<строки управления печатью>::= (3.1)
<вывод печати шапки>I
<отмена печати шапки>I
<перенос строк>I
<печать с новой страницы>I
<печать примечаний>I
<печать табличных строк>
Кроме этих основных строк при формировании документов часто используются следующие строки языка АВС, имеющие более общее назначение:
<дополнительные строки>::= (3.2)
<строка типа Э>I
<строка типа Ю>I
<вычисление арифметических выражений>I
<текстовой СФ>I
<обращение к СФ>I
<строка типа К>
Синтаксис и семантика строк управления печатью состоит в следующем:
<вывод печати машин>::= (3.3)
Ш<текст, 128>*
Строка Ш <текст, 128>* печатает <текст> между двумя строками прочерков в том месте, где эта строка появляется первый раз и затем при начале печати каждой новой страницы. Данная строка обычно используется для печати шапки таблиц или цифровой разметки граф таблиц.
Для отмены печати шапки (разметки) используется строка Щ*, появление которой приводит к прекращению печати шапки, заданной строкой Ш <текст, 128>*. Для замены одной шапки на другую достаточно выдать новую строку Ш.
Перенос строк обеспечивает пропуск одной или нескольких строк на странице
<перенос строки>::=#[#] ...* (3.4)
Количество пропускаемых строк равно числу символов # в строке <перенос строк>.
Для печати последующего текста с новой страницы, нужно выдать строку:
<печать с новой страницы.::= Л* (3.5)
<печать примечаний>::= П<формат><текст>* (3.6)
Формат определяет графы страницы АЦПУ, которые отводятся для вывода текста. Формат задается в виде цифры, если цифра отсутствует - считается, что она задана равной нулю. В таблице 3.1 приведены все форматы примечания с указанием начальной и конечной графы АЦПУ. Если выводимый текст не помещается в заданный формат, то он печатается в следующей строке и т.д. Перенос на другую строку можно выполнять принудительно, проставляя в местах переноса символ #. Естественный перенос выполняется по символу пробел ( __ ) перед тем словом, которое уже не помещается целиком в отведенный формат. Если такой возможности нет, т.е. пробелы отсутствуют, то выполняется принудительный перенос в конце формата без соблюдения обычных правил переноса.
Печать табличных строк - наиболее важная строка формирования выходных документов. Она используется для описания выходной табличной строки с указанием текстовых и числовых граф с одновременным вычислением арифметических выражений:
<печать табличных строк>::= (3.7)
Я{{<формат 1>:<текст>}I
{<формат 2 >:<список арифметических выражений>I<число>I<Ф- идентификатор>}} ...*
где: <формат 1>::=<целое 1>.<целое 2> (3.8)
<формат 2>::=<целое>
< Формат 1 > определяет вывод графы текстового содержания: <целое 1> определяет номер графы АЦПУ с которой начинается вывод информации данной строки, <целое 2> определяет количество граф АЦПУ, отводимых под печать текста. В случае если текст не помещается в отведенный формат, происходит перенос на новую строку по правилам, описанным при рассмотрении строки <примечание>. Однако перенос на новую строку выполняется только для шести первых текстовых граф, описанных в строке типа Я. В остальных текстовых графах текст, не поместившийся в первой строке, опускается. Заметим, что при описании форматов в строке типа Я нет необходимости записывать их в той последовательности, как они представлены в выводимой таблице. Этим можно пользоваться для того, чтобы первыми в описании строки были именно те графы таблицы, в которых появляется необходимость переноса на новые строки. Текст прижимается к левому краю формата графы.
<Формат 2> указывает на вывод числа, которое может явно задаваться Ф- идентификатором или вычисляться в арифметическом выражении, записанном в графе. В графе может быть несколько арифметических выражений, разделенных символом "пробел". Разумеется, все промежуточные арифметические выражения должны иметь правую часть в виде:"=Ф<целое>" без чего они не имеют смысла. Что же касается последнего (или единственного) арифметического выражения, то оно может не иметь правой части, если не предполагается использовать это значение где-либо в другом месте, кроме данной строки. Значения последнего (или единственного) арифметического выражения выводятся в данной графе строки Я. Здесь также полезно использовать произвольную последовательность описания форматов в строке Я. Дело в том, что числовой <формат 2> определяет начало графы АЦПУ для вывода числа, а в качестве ширины формата принято 9 граф АЦПУ. Числа прижимаются к правому краю формата. Если графы таблицы в строке Я описывать слева направо, то под числовые графы нужно отводить не менее 9-ти разрядов. В противном случае числа могут "перекрывать" друг- друга. Во многих случаях, в описании числовых граф строки Я, их следует описывать начиная с последних граф выводимой таблицы. В этом случае числа не будут перекрывать друг- друга.
Поясним сказанное на примере. Пусть в двух соседних графах таблицы нужно вывести два числа в следующем виде:
25__ __458 (3.9)
Если в строке Я сделать описание:
Я75:25'84:458* (3.10)
то при выводе на АЦПУ получим следующий результат:
__ __ __ __ __ __ 458 (3.11)
так как под числовой формат отводится 9 разрядов и, следовательно, число 458 при таком описании строки Я "перекроет" число 25. Если же для этого случая строку Я записать в другом виде:
Я84:458'75:25* (3.12)
то получим результат в виде (3.9).
Строки <текстовой СФ> и <обращение к СФ> записываются и используются по обычным правилам.
Для выполнения различных вычислений можно использовать строки типа Х - вычисления арифметических выражений:
<вычисление арифметических выражений>::= (7.13)
Х<список арифметических выражений>*
где <список арифметических выражений>::= (7.14)
<арифметическое выражение>[__<арифметическое выражение>] ...
а
<арифметическое выражение> (7.15)
<формула>=<Ф - идентификатор>
В качестве значения Ф- идентификатора применяются конструкции типа:
< Ф- идентификатор>::=Ф<целое> (7.16)
где <целое> не больше 999.
В формулах могут использоваться числа, Ф- идентификаторы, круглые скобки и следующие операции: + - сложение;
- - вычитание;
. или Х - умножение;
: - деление;
С - возведение в степень: =Х У (у<5);
М - взятие модуля (Мх=IхI);
Ц - взятие целой части числа (Цх=[х]).
При входе в очередные исходные данные все значения ФI устанавливаются равными нулю, что позволяет использовать их значения раньше, чем они будут определены в арифметических выражениях. Если же исходные данные являются продолжением предыдущих исходных данных (имеется признак П в параметре <признаки> строки Э), то можно пользоваться всеми значениями ФI, вычисленными в предшествующих исходных данных.
Арифметические выражения записываются по общепринятым правилам со следующими дополнительными ограничениями:
допускаются только круглые скобки при глубине вложения до 60, что практически можно считать неограниченной;
знак умножения ставиться всегда в том числе и перед открывающей круглой скобкой;
запись арифметических выражений должна быть линейной.
Do'stlaringiz bilan baham: |