1 loop:if (pfill->flag == 1) goto loop;
2 issue start-I/O command to control unit;
3 wait while pfill->buffer is being filled;
4 pfill->rec_ctr = 1;
5 pfill->flag = 1;
6 pfill = pfill->next;
7 goto loop;
1 현재 버퍼의 flag가 0이 될 때(버퍼가 다 빌때)까지 루프를
돌면서 기다린다. flag가 1이 아니면 다음문장 수행.
2 제어장치에 input/output의 시작 명령을 내린다.
3 버퍼가 다 찰때까지 기다린다.
4 현재 버퍼의 rec_ctr를 1로 세팅 한다.
5 현재 버퍼의 flag를 1로 세팅 한다.
6 현재 버퍼를 가리키고 있는 pfill포인터를 다음 버퍼를
가리키게 해 준다.
7 다음 버퍼를 가리키고 있는 pfill포인터를 갖고 다시 맨
처음 문장으로 돌아 간다.
1 wait:if (pempty->flag) == 0) goto wait;
2 read record[pempty->rec_ctr] into the record work area;
3 pempty->rec_ctr = pempty->rec_ctr + 1
4 if (pempty->rec_ctr > n)
5 {
6 pempty->flag = 0;
7 pempty = pempty->next;
8 }
9 goto wait;1 현재 버퍼의 flag가 1이 될때(버퍼가 다 찰때)까지 기다린다.
현재 버퍼의 flag가 0이 아니면 다음문장을 수행한다.
2 현재 …(생략)
|