18. ������� ���� - ����������� ���������
� ����� � ������� ��������� �������� ������ ����� � ��������� (����� �����������) ���������� ��������������� ����� ���������� � ����������, ������������ ��� ���� (�������). ��� ������ ���������� ������ �������� ��� �� ����, �� � ��������� ������� ������.
������ 18.1. ��������� ������ �����������, ����� � ��������� �����.
���� ������ (��) � ����� 'STUDENT.Z':
-----------------------------
���(��,�����)
���(��,�����)
��(��95,��)
����(��_1,��95) ���(������,��_1) ���(����,��_1)
����(��_2,��95) ���(�������,��_2) ���(����,��_2)
��(��96,��)
����(��_3,��96) ���(������������,��_3) ���(����,��_3)
����(��_4,��96) ���(��������,��_4) ���(�������,��_4)
��(��95,��)
����(��_5,��95) ���(�������,��_5) ���(����,��_5)
����(��_6,��95) ���(��������,��_6) ���(�����,��_6)
...................................
� ��������� (��� ��������� �������������� ����� ��) �������� ���������, � ������� �� ������ ����� - �������, � �� ����������� ����������� ������ - ������������� �����������:
MT_MENU(<������� � X80>,<�������� � X91>,<�������� � X92>,<����� � X93>,<��������� ��� ����. � X94>).
��������� ����� ���:
MT_MENU(1,���,59,MT_FAK,"����������")
MT_MENU(2,��,60,MT_GR,"������ ���.")
MT_MENU(3,����,61,MT_ST,"�������� ��.")
BEG(/91+)
START:IF THEN
B:IN('STUDENT.Z') {= ���� ����� 'STUDENT.Z' � �� - ������. ������) =}
B:PAR(59,1) {= ���������� �.1 ���� =}
T:MENU_1(1,�����) {= ������� 1 =}
B:HALT();
{== ������������ ���� ������ X80: MT_MENU(1,���,59,MT_FAK,"����������") ==}
MENU_1(X80,X20):IF
MT_MENU(X80,X91,X92,X93,X94) {= X80 - ������ 1, 2, 3 =}
B:GETPAR(X92,X7) {= X92 - ��������� 59, 60, 61 =}
B:#(X7,0) {= ����� T: �� ��� ���, ���� �� ������ PAR(X92,0) =}
THEN
T1:PR_LINE(1,25,"����� - �� ESC") {= ���������� � ������ ������ =}
B:NEW(X8) B:DELFR(@@)
B:DELFR(X93) {= ����� X93 - MT_FAK, MT_GR, MT_ST =}
B:PAR(50,0) {= ������� ������� =}
B:REW(MEMORY) {= ����������� � �����. ������ =}
B:A(X94,X20,":") {= �������� =}
T!:LIST_1(X91,X93,X20) {= ������������ ������� ���� =}
B:REW() {= ����� ���������� ���� =}
B:MENU(3,3,X7)
T1:AN_1(X80,X92,X93) {������ ���������� �. � ������� �����. ����}
B:C(X8); {= �������� - �������� ���������� �� �� X8 =}
{= ���������� ������� ���� ����� � ����� MT_GR =}
LIST_1(X91,X93,X20):IF X91(X10,X20) {= X91 - ���, ��, ���� =}
N:X93(_,X10) B:GETPAR(50,X55) B:+(X55,1,X56) THEN B:PAR(50,X56)
X93(X56,X10) {= ����� X93 - MT_FAK, MT_GR, MT_ST =}
B:BK() B:A(X56,".",X10); {= ������ �������� ������ - X10 =}
{== ������� �� ������� �������: ������ ESC ==}
AN_1(X80,X92,X93):IF D:@@(ESC) THEN
B:PAR(X92,0); {= ����� �� ���� �����: X92 - ��������� 59, 60, 61 =}
{== ������ ����� X51 ���� ���������. ������ ���������� � ��� == }
AN_1(X80,X92,X93):IF B:=(X80,3) D:@@(X51) X93(X51,X1) {= X93 - ���� =}
THEN
B:PAR(X92,X51) {= ��� �������� � ���� ����� � ���������� �. X51 =}
T1:INFORM_ST(X1); {= ������ ���������� ��������, �� ������ 3.1 =}
{== ������ ����� X51 ����. ����� ���� ���������� ������ == }
AN_1(X80,X92,X93):IF D:@@(X51)
X93(X51,X10) {= ������ �. X51; X93 - ����� MT_FAK, MT_GR, MT_ST =}
B:+(X80,1,X81) {= X81 - ��������� ������� =}
MT_MENU(X81,_,X99,_,_) {= X99 - �������� 60, 61; X92+1 = X<99 =}
THEN
B:PAR(X92,X51) {= ��� �������� � ��� �� ���� � ���������� �. X51 =}
B:PAR(X99,1) {= ���������� �.1 ���������� ���� =}
T:MENU_1(X81,X10); {= ������ ���� ���������� ������ =}
...���� �������� ��������� INFORM_ST(X1) � PR_LINE(...) ������� 13.1 ...
END(/92+) @BL(91-,92-)
��� ���������� ������ ��������� ��� ������������� �� ������� ����� ������ ���� ����������� �����. ��� ������ ���������� - ������ ���� �����. ��� ������ ������ - ������ ���� �� ���������, � ��� ������ �������� - ���������� � ���. ������ ��� ����� ��������� � �������� ����� �� ESC.
18�. ������� ����
������� ���� ��������� �������� ��������������� ������ (����� ������� ����, ����� �� ������� � ��.), ������������� ��������� ������� � �.�. ��� ����������� � ������� ����������� ��������� HMENU ��������� �������:
... B:REW(MEMORY) < ������ ���� > B:REW() B:HMENU(1,1,N) T1:AN_UP() ...,
��� < ������ ���� > - ��� ���������� �����, ����� �������� ������ ������ �������, ��������, B:A("�������_����") B:A("������") ... ��������� T1:AN_UP() ����������� ��������� ����� N, ������� ����������� ������ � �� ��������� @@(N) � ��� � ������� ����.
���������� ������|��������� ������