Ограничения и сообщения транслятора

<< Click to Display Table of Contents >>

Navigation:  Для опытных пользователей > Стандартные фрагменты > Метод стандартных фрагментов >

Ограничения и сообщения транслятора

 

При обработке обращений к стандартным фрагментам табличного типа, а также при обработке операторов :В и :Х, идентификаторы переменных параметров записываются в массив переменных, а их значения - в массив значений переменных. При обработке фрагментов не все переменные и их значения записываются в эти массивы, так как они могут не попадать "в поле зрения" транслятора ТСФ за счет выполнения операторов условного и безусловного переходов. Те переменные и их значения, которые обрабатываются (не обходятся) транслятором, называются активными переменными. Количество имен активных переменных параметров в каждый данный момент обработки фрагмента или вложенного фрагмента не должно превышать 4000. Суммарное количество символов в значениях активных переменных в любой момент обработки СФ не должно быть больше 400000. Если эти условия нарушаются, то на печать выдаются сообщения об ошибке и трансляция данного фрагмента прекращается.

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

В таблице 1 приведены тексты всех ошибок, которые обнаруживаются и выдаются на печать системой АВС при трансляции стандартных фрагментов. При печати исходных - данных после трансляции ТСФ в них печатаются только коды из графы 1 таблицы 1 в виде <код ошибки>., текст информации об ошибке распечатывается модулем АВС при печати информации об ошибках.

Реализован вывод дополнительной информации об ошибках, которая значительно облегчает поиск причин возникновения ошибок. Достигается это путем сохранения связи с исходным стандартным фрагментом, а также за счет явного указания на наличие ошибок в обращении к ТСФ.

Кроме вывода в тексте результата трансляции кодов обнаруженных ошибок в виде ?<код ошибки>., на печать выдается номер строки стандартного фрагмента, породившей эту ошибку и часть текста СФ где обнаружена ошибка. Номер строки указывается в виде (С ХХХХ), где ХХХХ - номер строки исходного ТСФ.

Если не найдена метка на которую осуществляется переход, то выдается сообщение в виде:

 

(М NNNN)(С ХХХХ), (3.1)

 

где NNNN -  номер не найденной метки;

ХХХХ - номер строки СФ указывающей на отсутствующую метку, например:

 

  25:П12*

  26:М1'Е1-13'Ф1*

  27:ПК*

  28:М2'Е1-18'Ф1.0,1*

 <Ф*

 

выдаст ошибку  ?40.(М 12)(С 25)*

 

Аналогичную информацию об ошибке транслятор ТСФ выдает и для оператора :Е, указывающих на отсутствие метки.

Если не будет найден оператор :Ц* (конец цикла), то будет выдана информация об ошибке с указанием номера строки, то находится заголовок цикла.

Если в операторе :Т (таблица) количество  строк таблицы окажется меньше п+1, то также выдается номер строки, содержащей этот оператор :Т.

Если ошибка будет обнаружена в обращении к ТСФ, то сообщение об ошибке будет выдано с дополнительной информацией (ОБРАЩЕН.), например:

 

?02.(ОБРАЩЕН.)*

 

Таблица 1

Список ошибок, обнаруженных трансляторами стандартных фрагментов

 

Код ошибки

Текст информации об ошибке

1

2

01

В ОПЕРАТОРЕ ПЕРЕХОДА ССЫЛКА = 0

02

ИДЕНТИФИКАТОР НАЧИНАЕТСЯ НЕ С БУКВЫ

03

В ИДЕНТИФИКАТОРЕ МНОГО СИМВОЛОВ

04

НЕТ ТРЕБУЕМОГО ТЕКСТОВОГО СФ

05

НЕТ В ЗАГОЛОВКЕ СФ ЗВЕЗДОЧКИ

06

ТИП СФ НЕ П И НЕ Т

07

МНОГО ПАРАМЕТРОВ

08

МАЛО ПАРАМЕТРОВ

09

НЕСУЩЕСТВУЮЩИЙ ОПЕРАТОР

10

НЕВЕРНО ОФОРМЛЕН КОНЕЦ СФ

11

ОПЕРАТОР ЦИКЛА ВКЛЮЧАЕТ КОНЕЦ СФ

12

ПОСЛЕ ИДЕНТИФИКАТОРА НЕТ ТОЧКИ

13

В КОНЦЕ ОПЕРАТОРА НЕТ ЗВЕЗДОЧКИ

14

В операторе вызова фрагмента ошибка в его записи или ПО

15

Не найден вызываемый фрагмент в ОФ

16

В ОПЕРАТОРЕ Е ПОСЛЕ ПЕРВОЙ МЕТКИ НЕТ'

17

ПРИ ПРОПУСКЕ СТРОК ВЫХОД ЗА ПРЕДЕЛЫ СФ

18

В ОПЕРАТОРЕ Е ПОСЛЕ КОНСТАНТ НЕТ'

19

ПЕРЕМЕННАЯ В ОПЕРАТОРЕ Е НЕ ЧИСЛО

20

НЕСУЩЕСТВУЮЩИЙ СИМВОЛ ОТНОШЕНИЯ

21

ПЕРЕМЕННАЯ НАЧИНАЕТСЯ НЕ С БУКВЫ

22

ПОСЛЕ ПЕРЕМЕННОЙ НЕТ =

23

ПЕРЕПОЛНЕНИЕ МАССИВА НАИМЕНОВАНИЙ ПЕРЕМЕННЫХ

24

ПЕРЕВЫЧИСЛЕНИЕ ПЕРЕМЕННОЙ ЦИКЛА

25

ЦИКЛ В ЦИКЛЕ

26

В ОПЕРАТОРЕ ЦИКЛ ПОСЛЕ ССЫЛКИ НЕТ '

27

В ОПЕРАТОРЕ ЦИКЛ ПОСЛЕ ИДЕНТИФИКАТОРА НЕТ РАЗДЕЛИТЕЛЯ

28

СФ НЕТ В БИБЛИОТЕКЕ

29

НЕТ КОНЦА В ОБРАЩЕНИИ К СФ

30

Ошибка в арифметическом выражении, деление на 0

31

ЧУЖОЙ СИМВОЛ

32

Вызов фрагмента внутри блока оператора диалога

33

Превышен допустимый лимит вложенности друг в друга фрагментов

34

НЕТ КОНЦА СФ

35

ОШИБКА: (текст из оператора ОШИБКА)

36

ОШИБКА В АРИФМЕТИЧЕСКОМ ВЫРАЖЕНИИ, ДЛИННОЕ ЧИСЛО

37

Таблица вышла за пределы СФ

38

ОШИБКА В МЕТКЕ

39

В ОПЕРАТОРЕ П НЕВЕРНА МЕТКА

40

НЕТ МЕТКИ

41

Ошибка в арифметическом выражении

42

НЕВЕРЕН ОПЕРАТОР АРИФМЕТИКИ

43

В операторе :Х переменная не число

44

ЛЕВОЕ ЗНАЧЕНИЕ ПЕРЕМЕННОЙ НЕ ЧИСЛО

45

ПРАВОЕ ЗНАЧЕНИЕ ПЕРЕМЕННОЙ НЕ ЧИСЛО

46

НЕВЕРЕН ИДЕНТИФИКАТОР

47

ПОСЛЕ ЧИСЛА НЕТ АПОСТРОФА

48

В ОПЕРАТОРЕ ЕСЛИ ЕСТЬ ЗВЕЗДОЧКА

49

НЕВЕРНА МЕТКА I В ОПЕРАТОРЕ ЕСЛИ

50

НЕВЕРНА МЕТКА 2 В ОПЕРАТОРЕ ЕСЛИ

51

В ОПЕРАТОРЕ ТАБЛИЦА НЕТ РАЗДЕЛИТЕЛЯ

52

РЕЗУЛЬТАТ ПРЕВЫСИЛ 20 РАЗРЯДОВ

53

ОШИБКА - НЕ НАЧАЛО БЛОКА

54

ОШИБКА В ОПЕРАТОРЕ БЛОК

55

В БЛОКЕ ТАБЛИЦА

56

ПЕРЕПОЛНЕНИЕ МАССИВА ЗНАЧЕНИЙ ПЕРЕМЕННЫХ

57

Ошибка в операторе инициализации :D

58

Ошибка в операторе вывода :W

59

Ошибка в операторе вывода рамки :G

60

Ошибка в операторе "закраска" :Z

61

Ошибка в операторе ввода :V

62

Не была сделана инициализация экрана оператором :D

63

Ошибка в имени переменной оператора :W

64

Ошибка в имени переменной оператора :V

65

Ошибка в операторе :R

66

Ошибка в имени переменной оператора :R

67

Ошибка. Повторная инициализация диалога

68

Был открыт чужой диалог для операторов :F...

69

Нет такого оператора :F...

70

Мало параметров в операторе :F...

71

Ошибка в операторе :F...

72

Ошибка в имени переменной оператора :F...