15. ��������� � ��
� �.4 ���� ����������� ��������� ����� � ���������� �� ����� DECL, ������� ������������ ��� ���� � ��� DECL_WIN.EXE <��� �����> ���������� � ����������� ������, ������� ������� ����� ���� ��.
���� ������ (��):
----------------------------------------
���� ������, ���������� ��.
������ ��������� �EG(/91+)
���� ���������. ... START ... ��������� ...
����� ��������� END(/92+) @BL(91-, 92+)
������� ������ B:IN(<������>)
����������� ���������
1+ {= ��� B:NEW(X1) =}
..................................................
� �������� ���������� ��������� �� ���� �� ����������� ����� ���������, ������� ����������� � �� (� ���������� ���������), �������� ������ ��������� �����. ���� ���-������ � ��������� ����������� �������� B:IN(<������ ������>, �� ��������������� ��������� �������� � �� � �������� � �����. �� ��� �� ������������� - ��� ��������.
��� ���������� ��������� D: ��������� ��������� ���������, ������� �������� � �� �������. ��� ����, ����� ����� ����� ��������������� ���������, � ���� DECL ������� ����������� ��������:
- �������� ���� ���������� ������ ����� �� �� ���������� ����� (��������� ��������);
- �������� ��������� ���� ��;
- ����� ������ ���������� �� ��������;
- �������� ������ (�������� ������).
� �� ������� ����� �������� ������ �������� ���������, ������� ����������� � ����������. � ��� ������ ��������� ������ ��, ������ ��� �� ������. �� ����������� � �������� - �������� ��� �� ���������. ���������� ��� ��������.
15.1. ��������� ��������:
�������� B:C(X1) - ������� ��� ��������� ������ ����� �� �� ���������� ����� - �������� X1. �������� ����� ������ ����� �������� ����� ������� - B:NEW(X1). ��������, � ���������
IF ... THEN B:NEW(X7) <����� ������ ���������> B:C(X7);
� ������� B:C(X7) �� �� ����� ������� ��� ���������, ������� ���� ��������� �����������, ���������� ����� B:NEW(X7).
�������� B:C(X1,H) - ������� ��� ��������� �� ���������� (��� � � ���������� ������), ����� ����������.
15.2. ����� ������:
����� ������ ��������� �� �������� - H(<��� ���������>).
��������, ���� � ��������� ������� 2.2. �������:
UR2():IF ����(X1,X3) ����(X3,X2) THEN ���(X1,X2/X11) H(X11);
�� ��� �� ���������� � �� ���������: ���(�1,�3/1+) H(1-), �.�. �������� ���(�1,�3) ����� ������� �� ��������. ����� ��� ����������
IF ... THEN B:NEW(X7) ... T!:UR2() ... B:C(X7,H);
���� �������� ��������� ������ � ������ ������. ������ ���������, ������������� � �� ����� ���������������� ����, ��������������� ���������� B:NEW(X7), ����� �������. ��� �������� ����� ������ ����� ��������������� ���������� B:DELFR(H) - ��������� ���� ���������� � ������ H.
15.3. �������� ������:
�������� B:SQU(X1) - ������� ��� ������� ������ ����� �� �� ���������� ����� - �������� X1. �������� ��������, ��� � ��� ������ ��������. �������, ��� �������� B:C(X1,H) ������� �� ������ ������������ ���������, �� � �������, �.�. �������� � ���� B:SQU(X1).
15.4. ��������� �������� (��������) ���:
�������� B:DEL(X1,X2,_) - ������� ��� ��������� �� �� � �� ��������� ���� - �������� X1 � X2 (������ � ����� ���������� - ���������������� ������).
�������� B:DEL(X1,X2,H) - ������� ��� ������������ ��������� �� �� � �� ��������� ���� - �������� X1 � X2.
� ������� ������ �������� B:DEL(<��� ���������>) - ������� �� �� ��������� ��������. ���� ������ ����� �������� � ������� ��������� D:, �� ��� ����� �������������� ����� ����� ���������� ���������. �� ���� B:DEL(...) �������� ����� ������ � ����� �����. �������� (��. ������ 4.1), � ���������:
UR3():IF ���(����1,X1) �����(X1/X12) THEN ���������(X1) B:DEL(X12);
�������� �����(�1) ����� ������ ����� ���������� ���������(�1).
15.5. �������� ������������ ������� ������:
�������� B:OUT('STUD.Z',X1,X2,_) ������� � �� ���� �� X1 �� X2 ������������ � �������� �� � ���� 'STUD.Z'. �� �� ������ �� ����� �������.
���������� ������|��������� ������