"ESTUDO DE UM S U P E R V I S O R PARA UM 1-NTERPRETADOR COBOL" B r u n o C o r r e i a da N Ô b r e g a Q u e i r o z T R E EM CIÊNCIAS (M. SC
.
).
A p r o v a d a p o r : d e n t e R I O DE J A N E I R O ESTADO DA GUANABARA-
B R A S I L AGOSTO DE 1 9 7 4AGRADECIMENTOS
-
Ao P r o f e s s o r M a r t i n A . Diamond p e l a p a c i e n t e o r i e n t a ç ã o da- d a a e s s e t r a b a l h o .-
Aos f u n c i o n á r i o s da COPPE e da B i b l i o t e c a d a U F R J ,-
A L u i s ~ Õ b r e g a d e Q u e i r o z p e l o a p o i o e c o l a b o r a ç ã o d.urante minha permanência no Rio d e J a n e i r o .iii
Esse t r a b a l h o
6
um e s t u d o de um s u p e r v i s o r p a r a um i n-
t e r p r e t a d o r COBOL, que tem p o r o b j e t i v o u t i l i z a r pouco e s p a ç o de m e-
mória p r i n c i p a l .Consta a i n d a d e uma d e s c r i ç ã o da linguagem u t i l i z a d a , d a forma i n t e r n a d a s i n s t r u ç õ e s e dos dados com t o d a s a s t a b e l a s que
ABSTRACT
This work consists of the design of the supervisor module for a COBOL interpreter.
The main goal of this interpreter is to use small
ammounts of main memory so that it can be implemented on a Mini- computer
.
A
description of the language, the inkernal form ofINDICE
Introdução
...
1Forma interna das instruções
...
2Fase de análise
...
3Buffer
...
3...
~reguência das instruções4
Forma interna dos dados...
4...
Algoritmo de gestão das instruções 4...
Algoritmo de gestão das variáveis 5...
Subrotina das instruções 5 O Mini-COBOL...
6Identification division
...
6Environment Division
...
7Data division
...
7Procedures division
...
8A forma interna das instruções
...
10~ u ~ d r u p l a s
...
10código de operações
...
12ADD
...
1 3 Ciose e Display...
14Divide. E x i t e Go To
...
15 Move e M u l t i p l y...
1 6 Open. Read e S t o p...
17 S u b t r a c t . Write e Perform...
18 DeclaraçÕes de d e s v i o s...
1 9 I F...
20...
Exemplo deum
I F 2 1 CAPÍTULO IV...
T a b e l a s u t i l i z a d a s p e l o s u p e r v i s o r 23 Tabela de v a r i á v e i s...
23 Endereço na memória...
2 4 Tipo-V...
26 MUD...
26 Ordem na t a b e l a...
26 Tabela de ~ s p e c i f i c a ç õ e s...
29 P i c t u r e s...
2 9 Occurs...
35 Desloc...
36tu ação
do supervisar...
36 Tabela de L i t e r a i s...
37...
T a b e l a de V a r i á v e i semp porá rias
38 T a b e l a de Arquivos...
39Fase d e ~ n t e r p r e t a ç ã o e s u p e r v i s ã o
...
4 1...
Tabela de
estão
de ~ernória 4 4...
Algoritmo dea estão
de ~ e m Ó r i a 45estão
de variáveis...
46...
Algoritmo dea estão
de ~ a r i s v e i s 51 ~ e l o c a ç ã o...
53estão
dos Literais...
56O o b j e t i v o d e s t e t r a b a l h o
é
d e s e n v o l v e r um i n t e r p r g t a d o r COBOL p a r a Mini-Computadores. Logo d e p o i s de s u a c r i a ç ã o e p o s t e r i o r d i v u l g a ç ã o , o COBOL passou a ser sem nenhuma d ú v i d a a m a i s i m p o r t a n t e e mais u t i l i z a d a linguagem d e programação p a r a f i n s co-
m e r c i a i s . Segundo a r e v i s t a f r a n c e s a L'INFORMATIQUE em uma e n q u e t e recentemente l e v a d a a e f e i t o nos E s t a d o s Unidos, na q u a l foram v i s i
-
t a d ò s 3 . 0 0 0 nÜcleos d e computaqão, t o d o s com equipamentos da t e r c e i-
r a g e r a ç ã o , a s l i n g u a g e n s d e a l t o n í v e l a p r e s e n t a r a m a s s e g u i n t e s p e r c e n t a g e n s de u t i l i z a ç ã o : COBOL 77% FORTRAN 19% PL1 4 % Em p a r a l e l o5
r á p i d a d i f u s ã o do COBOL no mundo i n-
t e i r o , o s mini-computadores foram sendo seguidamente a p e r f e i ç o a d o s e s u a u t i l i z a ç ã o nos mais d i v e r s o s t i p o s d e t r a b a l h o f o i c r e s c e n d o d e ano p a r a ano. Um d o s p r i n c i p a i s r e s u l t a d o s d a e v o l u ç ã o d o s ming computadores f o i a a c e n t u a d a queda do c u s t o d e s s e s equipamentos. 1s-
s o t o r n o u p o s s í v e l que um grande número d e i n s t i t u i ç õ e s educacionais, f i r m a s c o m e r c i a i s , e t c que p o r r a z õ e s econômicas não podiam a d q u i-
r i r computadores p a s s a s s e a t e r c o n d i ç õ e s d e comprá-los. V e r i f i c o u -s e que a p e s a r da grande d i f u s ã o da linguagem COBOL, u m número r e l a
-
t i v a m e n t e e l e v a d o d e s s a s máquinas não tem compiladores ou i n t e r p r e-
t a d o r e s d e s s a linguagem.A i d e i a d e s t e t r a b a l h o s u r g i u b a s e a d a nos f a t o s a c i
-
ma. Deveria s e r c o n s t r u i d o um i n t e r p r e t a d o r COBOL p a r a o mini-com-
p u t a d o r MITRA-15, c o n s t r u i d o p e l a C 1 1 (Compagnie I n t e r n a t i o n a l e pour L ' I n f o r m a t i q u e ) . No e n t a n t o a i d é i a i n i c i a l f o i abandonada d e v i d o à f a l t a d e p e r i f é r i c o s n e c e s s ~ r i o s p a r a um t r a b a l h o d e s s a ordem ( p r i n c i p a l m e n t e memÕria a u x i l i a r ) no MITRA-15 i n s t a l a d o n a COPPE. F i c o u e n t ã o r e s o l v i d o que s e r i a d e s e n v o l v i d a a e s t r u t u r a & um i n t e r p r e t a d o r capaz d e s e r f a c i l m e n t e implementado e m q u a l q u e r modelo de mini-computador, desde que e s t e s e j a d o t a d o dos p e r i f é r i-
tos n e c e s s á r i o s .
E s s e t r a b a l h o f o i e n t ã o d i v i d i d o e m duas t e s e s d e Mestrado na COPPE, uma t r a t a n d o do i n t e r p r e t a d o r p r o p r i a m e n t e d i t o e a segunda d e um s u p e r v i s o r capaz d e comandar o i n t e r p r e t a d o r . O segundo t r a b a l h o c i t a d o acima
é
e s t a tese e o o u t r o6
:"Estudo d e um I n t e r p r e t a d o r COBOL p a r a um Mini-Computador".Apresentamos a s e g u i r um resumo do e s t u d o do S n t e r - p r e t a d o r .
a
-
FORMA INTERNA . DAS I N S T R U Ç ~ E SI n i c i a l m e n t e f o i p e s q u i s a d a uma forma i n t e r n a p a r a a s i n s t r u ç õ e s do programa f o n t e . P o r s e r mais c o n v e n i e n t e p a r a o u s o e m l i n g u a g e n s do t i p o do COBOL, a e s c o l h a r e c a i u s o b r e a s
QUA-
campo, com um comprimento de uma p a l a v r a e o s
três
campos s e g u i n t e s fornecem a s informações sobre o s operandos. Essas informações são:a-1 a t a b e l a que deverá s e r consultada a-2 o t i p o da PICTURE
a- 3 s e e x i s t e s u b s c r i t o s no operando ou não a- 4 um apontador para a t a b e l a indicada em a-1
Todas a s quádruplas são alocadas em memória a u x i l i a r ( d i s c o ) de modo que cada parágrafo f i q u e r e s i d e n t e em um s e t o r que tem normalmente uma dimensão de 128 p a l a v r a s . Quando um p a r á g r a f o
é
maior do que um s e t o r , a Ültima quádrupla do s e t o r6
um s i n a l que i n d i c a que o parágrafo continua no s e t o r seguinte.A f a s e de a n á l i s e (estudada em d e t a l h e s em "Estudo de
um I n t e r p r e t a d o r COBOL p a r a Mini-Computadores" ) s e r á encarregadade g e r a r e a l o c a r a s quádruplas no d i s c o , bem como de montar a s tabelas i n d i s p e n s & e i s ao sistema. s e r ã o n e c e s s á r i a s p a r a o supervisor t a - b e l a s de v a r i á v e i s , l i t e r a i s , arquivos e parágrabos.
C
-
BUFFER0. sistema contará com um 'BUFFER' com um tamanho i- gual ao de um s e t o r do d i s c o , ou s e j a , com 128 p a l a v r a s .
Como cada quadrupla ocupa um t o t a l de q u a t r o p a l a
-
v r a s , s e r á p o s s i v e l a l o c a r nesse 'BUFFER' 3 2 d e l a s .d
-
FREQUÊNCIA DAS INSTRUÇÕESFoi feito
um
estudo para estimar as instruções que a-parecem com maior frequência nos programas COBOL. Para fazer a con
tagem, foi escrito um programa FORTRAN que após a leitura de uma pi
lha de cartões COBOL informa a percentagem de ocorrência das ins-
truções.
e
-
FORMA INTERNA DOS DADOSA representação interna dos dados foi feita com a pre
-
ocupação de utilizar um mínimo possível de memória. A s especifica-
ções das variáveis e as tabelas de literais e arquivos serão aloca-
das em memória auxiliar. A maior parte desse trabalho foi desenvol
-
vido no "Estudo de um Interpretador COBOL para um Mini-Computador".
f
-
ALGORITMO DE GESTÃO DE ROTINASPara controlar quais as subrotinas das instruções de-
vem ser colocadas ou retiradas da memória principal, foi construido um algoritmo de gestão de memória.
mod 1
-
Depois que o operador de uma quádrupla6
identificado, o a1-
goritmo inicia sua tarefa. Esse algoritmo exerce o controle da alo
-
caqão na memória principal das subrotinas para execução das instru-
A s v a r i á v e i s quando são alocadas na memória p r i n c i p a l ficam em uma t a b e l a chamada Tabela de v a r i á v e i s em Uso. Para con- t r o l a r a s entradas e s a í d a s de v a r i á v e i s n e s t a t a b e l a , f o i cons
-
t r u i d o um algoritmo c u j a descrição resumida é a seguinte:g-1
-
Procura saber quando a t a b e l a de v a r i á v e i s em uso e s t á cheiag-2
-
V e r i f i c a q u a i s a s Ultimas v a r i á v e i s que entraram na memó-
r i ag-3
-
Escolhe a s v a r i & e i s que serão r e t i r a d a sg-4
-
Reloca a s v a r i ã v e i s que permanecerão na memôria para a-
b r i r espaços para novas v a r i á v e i s .O estudo das subrotinas para executar a s i n s t r u ç õ e s f o i f e i t o em t r a b a l h o p a l a l e l o (Vide Tese de M.Sc. COPPE
-
"Estu- do de um I n t e r p r e t a d o r COBOL para um Mini-Computador").O MINI
-
COBOLO MINI-COBOL a ser utilizado
6
um sub-conjunto do C0-
BOL-65, capaz de ser implementado em computadores que tenham uma
configuração de memória de pelo menos 8.000 bytes.
Um dos objetivos desejados
é
de que o mini-COBOL se-ja compativel com a grande maioria dos compiladores existentes,dei
-
xando claro que as diferenças residem apenas nas restrições que
serão apresentadas mais adiante. Por essa razão, para a escolha do conjunto de instruções para compor o Mini-COBOL, foi tomado por base o COBOL normalizado (ANS) do IBM/360.
Os formatos do mini-COBOL são os seguintes:
IDENTIFICATION'DIVISION
PROGPZAM-ID nome do programa
AUTHOR = ' nome (s) do (s) autor (es)
INSTALLATION nome do Departamento
DATE-WRITTEN data em que o programa foi feito
DATE-COMPILED data em que o programa foi rodado
< I
SECURITY comentários
ENVIRONMENT D I V I S I O N CONFIGURATION SECTION.
SOURCE-COMPUTER
.
n o m e do c o m p u t a d o r OBJECT-COMPUTER, n o m e do c o m p u t a d o r INPUT-OUTPUT SECTIONSELECT n o m e do arquivo-1 ASSIGN n o m e do pe r i f é r i c o - SELECT n o m e do arquivo-n A S S I G N n o m e do pe riférico- DATA D I V I S I O N . , F I L E SECTION* F D n o m e do a r q u i v o [BLOCK n P i n t e i r o RECORDS]
DATA RECORDS n o m e do arq-1
...
n o m e do arg-n n o m e de dados número de n í v e l F I L L E R caracteresEALUE
i i t e r a gI
ECCURS
i n t e i r o TIMES] PICTURE cadeia deWORKING-STORAGE SECTION
n o m e d e dados n ú m e r o de n í v e l
F I L L E R
PCCURS
i n t e i r o TIMES] PICTURE cadeia decaracter ~ U li- E t e r a l
1
PROCEDURE D I V I S I O N
.
nome do parágrafo.sentença kentença]
.
.
.
.
nome do parágrafo contendo EXIT.
EXIT.nome do parágrafo,
[ [ d e ~ l a r a ~ ã o imperativa
]
[declaraSão imperativaI I
. .
.
condicionalr
NOTE cadeia de c a r a c t e r e s1
...
L IF i d e n t i f i c a d o r THEN declarações GREATER THAN'i
LESS THAN EQUAL TO imperativas i d e n t i f i c a d o ri
"""I1
J declarações OTHERWISE imperativasrsE
1
READ nome do arquivo.
ADD
{
l i t e r a l - 1 l i t e r a l - 2
G I V I N G i-
i d e n t i f i c a d o r dentificador-n
SUBTF!ACT
rt
era')
Ptexa1
GIvINGi d e n t i f i c a d o r i d e n t i f i c a d o i d e n t i f i c a d o r , MuLTIpLy
{
l i t e r a l}
. B y f i t e r a l1
G I V I N G i d e n t i f i c a d o r i d e n t i f i c a d o r identificador,, ' D I V I D Eliteral
i d e n t i f i c a d o r)
ti
1
GIvING i d e n t i f i c a d o r i d e n t i f i c a d o r ,l i t e r a l MOVE TO i d e n t i f i c a d o r , i d e n t i f i c a d o r
I
l i t e r a l não numérico DISPLAY i d e n t i f i c a d o r BEFORE1
WRITE nome do arquivo i n t e i r o
AFTER nome do arquivo, OUTPUT
CLOSE nome do arquivo. GO TO nome de parágrafo,
PERFORM nome de parágrafos
[THRU
nome de pará-EXIT
grafol
Em t o d o s o s compiladores e i n t e r p r e t a d o r e s , p o r r a - zões de economia d e e s p a ç o s na m e m ó r i a e f a c i l i d a d e de implementa- ç ã o , o programa f o n t e é i n i c i a l m e n t e t r a d u z i d o p a r a uma forma i n
-
t e r n a i n t e r m e d i á r i a . Como nos i n t e r p r e t a d o r e s nãoé
n e c e s s á r i o a g e r a ç ã o de um código a s i n s t r u ç õ e s s ã o e x e c u t a d a s na pró- p r i a forma i n t e r n a . . P a r a o i n t e r p r e t a d o r e s t u d a d o f o i e s c o l h i d o o t i p o de forma conhecida p o r q u â d r u p l a s . A forma g e r a l d e uma quã- d r u p l aé
a s e g u i n t e :onde <operando-l> e <operando-2>
,
e s p e c i f i c a m o s argumentos e < r e s u l t a d o s > o r e s u l t a d o da o p e r a ç ã o.
Houve porem uma l i g e i r a m o d i f i c a ç ã o . n a e s t r u t u r a d a q u á d r u p l a a p r e s e n t a d a acima. <operando-L>, <operando-2> e C r e s u l
-
t a d o s > e s t ã o d i v i d i d o s em q u a t r o campos que contzm a s s e g u i n t e s informações :a ) t a b e l a que d e v e r á ser c o n s u l t a d a b ) o t i p o d a p i c t u r e
c ) se uma d e t e r m i n a d a v a r i á v e l
6
imdexada ou não d ) um a p o n t a d o r p a r a t a b e l a c o r r e s p o n d e n t e .Neste s i s t e m a , cada q u á d r u p l a ocupa q u a t r o p a l a v r a s d e 16 b i t s . A p a l a v r a d e s t i n a d a a o o p e r a d o r f i c a r á com a l g u n s b i t s p e r d i d o s porque o s v a l o r e s do cÕdigo de o p e r a ç ã o s e r ã o sempre meno
-
6 r e s do que 2
.
Cada uma d a s três p a l a v r a s s e g u i n t e s s e r ã o d i v i d i d a s d a s e g u i n t e maneira:
19 campo
-
composto de 3 b i t s informa q u a l d a s t a b e l a s d e v e r a ser c o n s u l t a d a . S e o v a l o r c o n t i d o n e s t e campo6
i g u a l a :a ) 000
-
e s t á sendo i n d i c a d o que o s campos s e g u i n t e s contêm o pró- p r i o v a l o r d e um l i t e r a l i n t e i r o , logo nãoserá
n e c e s s á r i o con- s u l t a r nenhuma d a s t a b e l a s montadas na a n à l i s e .b) 001
-
d e v e r á ser c o n s u l t a d a a t a b e l a d e v a r i á v e i s . c ) 010-
d e v e r á ser c o n s u l t a d a a t a b e l a de l i t e r a i s .d) 011
-
d e v e r á s e r c o n s u l t a d a a t a b e l a de v a r i á v e i s t e m p o r á r i a s . e ) 100-
d e v e r á s e r c o n s u l t a d a a t a b e l a de a r q u i v o s .2 9 campo
-
e s t e campo tambémé
composto p o r 3 b i t s e informa o t i p o d a p i c t u r e d a s v a r i á v e i s e l i t e r a i s . O s v a l o r e s c o n t i d o s n e s-
se campot ê m
o s s e g u i n t e s s i g n i f i c a d o s : O00 i n d i c a um i t e m grupo 001 i n d i c a um i t e m e l e m e n t a r a l f a b é t i c o 010 i n d i c a um i t e m e l e m e n t a r a l f a n u m é r i c o 011. i n d i c a um i t e m e l e m e n t a r numérico 100 i n d i c a um i t e m e l e m e n t a r alfanurn&ico d e e d i ç ã o 1 0 1 i n d i c a um i t e m e l e m e n t a r numérico de e d i ç ã o - 1 110 i n d i c a um i t e m e l e m e n t a r num6rico d e edição-23 9 campo
-
E s t e campo contém um Único b i t e informa quando se t r a t a de v a r i á v e i s s e a mesmaé
indexada ou não.4Q campo
-
E s t e campoé
composto de 9 b i t s e i n d i c a o des- locamento em r e l a ç ã o a o i n í c i o de uma t a b e l a , onde s e e n c o n t r a o operando, ou onde o mesmoé
d e s c r i t o .A p a l a v r a d e s t i n a d a a o o p e r a d o r tem um campo con- t e n d o o c ó d i g o de o p e r a ç ã o que i d e n t i f i c a a s i n s t r u ç õ e s . Como a s s u b r o t i n a s e s t ã o agrupadas em b l o c o s , o s d o i s p r i m e i r o s b i t s d e s - t e campo informam o número de b l o c o s que a s u b r o t i n a e s t á c o n t i d a , enquanto que a s q u a t r o s e g u i n t e s indicam o número de ordem d a sub
-
r o t i n a no b l o c o . O código de o p e r a ç õ e s6
o s e g u i n t e : MOVE WRITE ADD PERFORM m A D STOP MULTIPLY DIVIDE OPEN CLOSE DISPLAYO0 1011 SUBTRACT O0 1100 EXIT o0 1101 GO TO O0 1110 D I O0 1111 D S Z O 1 0000 DSMZ 0 1 0001 DSME 01 0010 D S M I Z O 1 O011 DSME I Todas a s i n s t r u ç õ e s a p a r t i r do código 11 0011 s ã o u s a d a s na i n s t r u ç ã o I F
,
i s t o será d i s c u t i d o m a i s a d i a n t e . A r e p r e s e n t a ç ã o ern forma d e q u 6 d r u p l a s d e s s a s i n s - t r u ç õ e s s e r á mostrada a b a i x o . P a r a cada i n s t r u ç ã o s e r á f e i t o um-
e xemplo de como s e u s a no programa f o n t e s e g u i d o de s u a forma i n t e r-
n a .~ s t á
sendo assumido e m t o d o s o s c a s o s que a forma i n t e r n a co- meça no e n d e r e ç o 1000.
3 . 1
-
ADD-
FORMA DO PROGRAMA FONTE
i d e n t i f i c a d o r - l
}
f d e n t i f i c a d o r - 2 1 c d e n t i f i c a d o r - 3.
.
.
l i t e r a l - 1 l i t e r a l - 2 l i t e r a l - 3i d e n t i f i c a d o r - n
...
I
G I V I N G i d e n t i f i c a d o r - m l i t e r a l - nFORMA INTERNA
3 . 2
-
CLOSECLOSE
ENDEREÇO
1000
00 0010, ident (n-1)
,
temp (n-2),
temp (n-1) 00 0000, temp(n-1),
,
ident-mFORMA DO PROGRAMA FONTE
nome do arquivo
FORMA INTERNA
CÕDIGO
00 1001
,
endereço do arquivo3 . 3
-
DISPLAYFORMATO DO PROGRAMA FONTE
literal não numérico
DLSPLAY
identificador
F O W 4 INTERNA
ENDEREÇO CÕDIGO
3.4
-
D I V I D EFORMATO DO PROGRAMA FONTE
C
l i t e r a l - 1 D I V I D E i d e n t i f i c a d o r - 1 G I V I N G i d e n t i f i c a d o r - 3 FORMA I N T E R N A ENDEREÇO C ~ D I G O 00 0111,
i d e n t - 1 , i d e n t - 2 , temp 00 0000,
temp,
,
i d e n t - 3 3.5-
-
E X I TFORMATO DO PROGRAMA FONTE nome do p a r á g r a f o . E X I T
FORMA I N T E R N A E N D E W Ç O C ~ D I G O
3.6
-
GO T OFORMA DO PROGRAMA FONTE GO T O nome de r ó t u l o
FORMA I N T E R N A
ENDEREÇO C ~ D I G O
1000 00 1101
,
e n d e r e ç o do p a r á g r a f o no d i s c o 3.7-
MOVEFORMA DO PROGRAMA FONTE
MOVE
{
i d e n t i f i c a d o r - 1 T O i d e n t i f i c a d o r l i t e r a l - 1 FORMA I N T E R N A ENDEREÇO C ~ D I G O 3 . 8-
M U L T I P L YFORMA DO PROGRAMA FONTE
i d e n t i f i c a d o r - 2 i ~ e n t i < i c a ~ o r - ~
]
yy{
]
MULTIPLY G I V I N G l i t e r a l - 1 l i t e m l - 2 i d e n t i f . FORMA I N T E R N A ENDEREÇO &DIGO 00 0110,
i d e n t - 1 , i d e n t - 2 , temp 00 0000, temp,,
i d e n t - 33 . 9
-
OPEN-
FORMA DO PROGRAMA FONTE O P E N , I N P U T , ARQ-1, ARQ-2,
...,
ARQ-NOUTPUT, ARQS-1, ARQS-2,
...,
ARQS-N FORMA INTERNAENDEREÇO C ~ D I G O
1 0 0 0 0 0 1 0 0 0 , - ENDARQ-1
0 0 1 0 0
,
ENDARQ-N3 - 1 0
-
READFORMA DO PROGRAMA FONTE
READ nome do arquivo
FORMA INTERNA
ENDEREÇO CÓDIGO
1 0 0 0 0 0 0 1 0 0 , endereço do arquivo
3 . 1 1
-
S T O PFORMA DO PROGRAMA FONTE S T O P RUN
FORMA INTERNA
ENDEREÇO C ~ D I G O
3.12
-
SUBTRACTFORMA DO PROGRAMA FONTE
identificador-l identificador-2
S u B T R A c T
}
I ? R O M [,'
G I v I N Gliteral-1 literal-2 iden-tif
.
FORMA INTERNAENDEREÇO CÕDIGO
1000 00 1011, ident-1, ident-2, temp
1004 00 0000, temp,
,
ident3.13
-
WRITEFORMA DO PROGRAMA FONTE
WRITE nome do registro
FORMA INTERNA
ENDEREÇO CÓDIGO
1000 00 0001
,
endereço do registro3.14
-
PERFORMFORMATO DO PROGRAMA FONTE
PERFORM nome do parágrafo-1 THRU nome do par~gralo-2 nÜ
mero inteiros T I M E S
.
FORMA INTERNAENDEREÇO C ~ D I G O
Com a s i n f o r m a ç õ e s d a q u á d r u p l a acima, a s u b r o t i n a PERFORM se e n c a r r e g a de montar uma p i l h a c o n t e n d o a s s e g u i n t e s in
-
formações: a ) i n i c i o d o PERFORM b ) f i m do PERFORM c) e s t a d o c o r r e n t e d ) número de v e z e s e) e n d e r e ç o d e r e t o r n o E s t e procedimento p e r m i t e a e x i s t ê n c i a d e um PERFORM d e n t r o do o u t r o . A p i l h a v a i s e n d o a t u a l i z a d a à medida q u e um n i
-
nho d e PERFORMts v a i sendo e x e c u t a d o .A e s t r u t u r a d a p i l h a montada p e l o PERFORM
6
a se-
g u i n t e : 3.15-
DECLARA~ÕES DE DESVIOS Todas a s d e c l a r a ç õ e s d e d e s v i o s D I-
d e s v i o i n c o n d i c i o n a l DSZ-
d e s v i a se i g u a l a z e r o DSMZ-
d e s v i a se maior d o q u e z e r oDSMIZ
-
desvia se maior ou igual a zero DSMEI-
desvia se menor ou igual a zero têm o mesmo tipo de forma interna ou sejaOPERANDO, ENDEREÇO logo :
FORMA INTERNA ENDEREÇO C ~ D I G O 1000 00 1110
,
endereço 1000 00 1111,
endereço 1000 01 0000,
endereço 1000 01 0001,
endereço 1000 01 0010,
endereço 1000 01 0011,
endereço-
D I-
DSZ-
DSMZ-
DSME-
D S M I Z-
DSMEI FORMA DO'PROGRAMA F O W E r identificador-2 I F identificador-1 EQUAL T OTHEN declarações imperativas-1
[{~~:iRwIsE
}
declarações imperativas-2
FORMA INTERNA
A declaração I F será desdobrada em
um
conjuntoIF não tem uma forma interna própria, porém deverá surgir uma das instruções de desvios listadas acima no conjunto das instruções em
que ela será desdobrada: DI, DSZ, DSMZ, DSME, DSMIZ, DSMEI
.
O desdobramento da declaração IF
6
dividido em du-
as fases: a primeira delas faz a comparação entre o identificado-1
e o identificador-2 ou um literal.
6
nessa fase que aparece umadas instruções de desvio já citadas acima. A segunda fase execu-
ta a declaraqão ou o conjunto de dec3iaraçÕes para o qual foi fei- to o desvio da primeira fase.
Uma declaração IF desenvolvida em quádruplas apre
-
senta a seguinte estrutura:
ENDEREÇO
da declaração
C~DIGO
OP, ident-1, ident-2, temp
OP, lO80, I temp
OP, ident-3, ident-4, temp-1 OP, ident-5, ident-6, temp-2
serã apresentado agora
um
exemplo do desdobramentoIF
,
cuja forma no programa fonte6
a seguinte:IF
I
GREATER THAN J-
THEN ADD B, C GIVING E, SUBTRACT CFROM D GIVING F, MULTIPLY E BY F
,
ADD K, F GIVINGI<
-
ELSE ADD 1, I GIVING IENDEREÇO C ~ D I G O 1000 00 1011
,
I,
J,
temp-1 (SUBTRACT) 00 0000 ,temp-2, r E (MOVE ) 00 0000 ,temp-3, I F (MOVE) 00 0000,
temp-5, (MOVE )TABELAS U T I L I Z A D A S PELO SUPERVISOR
Na f a s e de a n á l i s e s e r ã . montado um c o n j u n t o de t a
-
b e l a s onde f i c a r ã o a s v a r i á v e i s , l i t e r a i s , a r q u i v o s e v a r i á v e i s t e n p o r a i s . Todas e s s a s t a b e l a s s ã o guardadas em memória a u x i l i a r e somente um pequeno número d e e n t r a d a s.e
e n c o n t r a d o n a memória p r i n-
c i p a l em um determinado i n s t a n t e . * ~arnbém s e r ã o montadas p e l o ana-
l i s a d o r t a b e l a s que s e r ã o u t i l i z a d a s p e l o s u p e r v i s o r p a r a a p r o n t a r o s operandos a n t e s d a execução de uma determinada i n s t r u ç ã o . O s u-
p e r v i s o r u s a r á e s s a s t a b e l a s p a r a v e r i f i c a r s e o s operandos e s t ã o na memória p r i n c i p a l . Se e l e s não e s t ã o , o s u p e r v i s o r u s a as t a b e l a s p a r a l o c a l i z â - 1 0 s no d i s c o . N e s t e c a p i t u l o s e r á f e i t a uma d e s-
c r i ç ã o d e s s a s t a b e l a s começando p e l a t a b e l a de v a r i á v e i s .E s t a t a b e l a t o r n a p o s s í v e l o endereçamento d e v a r i & e i s no d i s c o e na memória p r i n c i p a l , e tambêm f o r n e c e o e n d e r e ç o de uma t a b e l a guardada no d i s c o que contém..todas a s e s p e c i f i c a ç Õ e s de uma determinada v a r i á v e l . A e s t r u t u r a g e r a l d e s t a t a b e l a
é
a s e g u i n t e :Logo, todas a s informações sobre uma determinada v a r i á v e l são guardadas em uma palavra de 1 6 BITS.
.
'ENDEREÇO NA M E M ~ R I A TIPO-V
A função dos campos que dividem uma palavra des- MUD pp -1 B I T 9 B I T S I- t a t a b e l a
6
a seguinte:l? CAMPO : ENDEREÇO NA MEMÓRIA
-
Este campo i n d i c a s e a va-
ORDEM NA TABELA5 B I T S 1 B I T
r i á v e l e s t á na memória ou não, e , s e e s t á , fornece o seu endereço. Dependendo da informação de um dos campos das quádruplas, que i n - d i c a s e a v a r i á v e l é indexada ou não, o campo "ENDEREÇO NA M E M ~ R I A " pode s e r i n t e r p r e t a d o de duas maneiras:
l? CASO
Quando uma v a r i á v e l não é'indexada, e s t e endereço representa o deslocamento em relação a uma á r e a de memória onde a s v a r i á v e i s são colocadas. Esta á r e a s e r á chamada " t a b e l a de v a r i s v e i s em uso". No c a p i t u l o seguinte s e r á apresentado um algoritmo que f a r á a ges-
t ã o dessas v a r i á v e i s , escolhendo a s que devem s e r r e t i i a d a s e r e l o
-
cando a s que devem permanecer. Como o campo 'ENDEREÇO NA M E M ~ R I A ' contém 9 b i t s pode-se concluir que o comprimento da t a b e l a de v a r i-
á v e i s em uso é i g u a l a 312 bytes. A s entradas d e s t a t a b e l a não t e - rão comprimento f i x o e serão formadas por d o i s campos. Estes cam- pos são os seguintes:l? CAMPO
-
( t a b e l a de v a r i h e i s e m uso)-
Este campo tem um tama-
nho de 1, 2 ou 4 bytes dependendo do t i p o da PICTURE. Se a PICTURE6
de um byte. Se a P I C T U R E6
numérica sem edição, o comprimento6
de 4 bytes. O s t i p o s das 'PICTURES' são fornecidos p e l a s quá-
druplas.2 9 CAMPO
-
( t a b e l a de v a r i á v e i s e m uso)-
Este campo tem um tama- nho v a r i á v e l , indicado p e l a PICTURE do campo a n t e r i o r . Neste cam poé
guardado o p r ó p r i o v a l o r da v a r i ã v e l .2 0 CASO
Quando a v a r i ã v e l é indexada, o campo "ENDERECO DE M E M ~ R I A " apon- t a para uma l i s t a . A primeira e n t r a d a d e s t a l i s t a ocupa 1, 2 ou 4 b y t e s dependendo do t i p o da PICTURE fornecida p e l a s g u ~ d r u p l a s . As considerações p a r a e s t a e n t r a d a s ã o a s mesmas do primeiro cam- po da t a b e l a de v a r i á v e i s em uso.
A s o u t r a s e n t r a d a s são formadas por d o i s campos
,
sendo que o primeiro fornece o deslocamento da v a r i á v e l em r e l a ç s ao i n i c i o do r e g i s t r o que contém a mesma. O segundo campo contém o próprio v a l o r da v a r i á v e l .Quando urna v a r i á v e l indexada aparece em um progra- ma, calcula-se seu deslocamento em r e l a ç ã o ã v a r i á v e l de n i v e l 0 1
à q u a l a mesma pertence (Vide 1 )
.
Com o deslocamento encon-
t r a d o , pesquisa-se a l i s t a sequencialmente. Se o deslocamento farencontrado, a v a r i á v e l em questão se encontra na memÕria p r i n c i
-
p a l . Caso c o n t r á r i o , procura-se a v a r i á v e l no d i s c o e coloca- s e na l i s t a . Como procurar a v a r i á v e l s e r á v i s t o mais a d i a n t e .a dez, enquanto que o número de l i s t a s v a i apenas a três. Logo
,
s e r á p r e c i s o que o supervisor faça uma gestão para e s t a s l i s t a s.
Quando uma l i s t a e s t á totalmente ocupada deverão s e r r e t i r a d a s a 1-
gurnas entradas para alocação de o u t r a s entradas que s e encontram no disco. Quando a s t r ê s l i s t a s e s t ã o ocupadas e aparece mais u- ma v a r i á v e l indexada no programa, uma dessas l i s t a s deve s e r t o-
talmente desocupada para alocação da nova v a r i á v e l . Esta gestão s e r á v i s t a no ~ a p f t u l o V
.
29 CAMPO
-
TIPO V-
Este campo informa s e a v a r i á v e l que e s t á con-
t i d a no respectivo endereço tem o n í v e l 0 1 ou não. Deste campo3
pende o s i g n i f i c a d o do campo ORDEM NA TABELA como veremos abaixo.3 0 CAMPO
-
MUD-
E s t e campo composto de 1 b i t informa s e a respec-
t i v a v a r i á v e l f o i a l t e r a d a ou não. E s t a informação s e r á usada na gestão de memória.4 0 CAMPO
-
ORDEM NA TABELA-
Este campo tem a s seguintes f i n a l i d a-
des :1) Determinar o endereqo do r e g i s t r o no disco.
2 ) Determinar o endereço onde as especificações da v a r i á v e l s e encontram no disco.
A s especificaçÕes indicam a PICTURE e um desloca
-
mento. Esse deslocamento6
usado para encontrar o endereço do va-
l o r da v a r i á v e l em o u t r o s e t o r no disco (endereço do r e g i s t r o no d i s c o
+
deslocamento fornecidos nas especificações = endereço da v a r i á v e l no d i s c o ) . A Figura 1 mostra os apontadores fornecidosp e l a t a b e l a de v a r i á v e i s e f a c i l i t a a compreensão do campo "ORDEM NA TABELA".
O s i g n i f i c a d o de 'ORDEM NA TABELA' depende do cam- po TIPO-V. Se o campo TIPO-V i n d i c a gue a v a r i s v e l tem nxvel 0 1 , ou s e j a , s e a v a r i á v e l
e
um r e g i s t r o , e s t e campo i n d i c a o .numero de ordem de e n t r a d a do r e g i s t r o da DATA D I V I S I O N . E s t e número de ordemé
a posição das especificaçÕes p a r a o r e g i s t r o . Para o n-6. .
-
simo r e g i s t r o d e f i n i d o na DATA D I V I S I O N , e s t e campo tiem o número n
,
indicando que o n-ésimo s e t o r da t a b e l a de e s p e c i f i c a ç õ e s con-
têm
a s e s p e c i f i c a ç õ e s d e s t e r e g i s t r o . Como o número de ordem na 'DATA D i - V I S I O N 'ê
i g u a l ao número do s e t o r que contém a s è s p e c i f i-
cações de um r e g i s t r o , para cada r e g i s t r o e x i s t eum
s e t o r c o r r e s - pondente contendo a s especificaçÕes do mesmo.Se o TIPO-V i n d i c a que o número de n í v e l não é 01, 'ORDEM NA TABELA' i n d i c a a ordem da v a r i á v e l em r e l a ç ã o ao i n í c i o do r e g i s t r o . E s t e v a l o r tem duas f i n a l i d a d e s . Primeiro aponta pa
-
r a e n t r a d a da t a b e l a d e v a r i á v e i s que contém a s informaqões sobre' .
a v a r i á v e l de n i v e l 0 1 a q u a l a v a r i á v e l em questão pertence. A segunda u t i l i d a d e
6
encontrar a posi'ção da v a r i á v e l d e n t r o do se- t o r da t a b e l a de e s p e c i f i c a ç õ e s . Logo o procedimento p a r a encon- t r a r a s especificaçÕes de uma.variáve1 no d i s c o quando a mesma n% tem n í v e l 0 1é
o s e g u i n t e :i ) Usa-se o v a l o r do campo 'ORDEM NA TABELA' p a r a achar a e n t r a d a da v a r i á v e l de n í v e i 0 1 , da q u a l a v a r l á v e l em questão faz p a r t e .
em i ) como apontador para o s e t o r da t a b e l a de especificaçÕes correspondente. Coloca-se e s t e s e t o r na memória p r i n c i p a l .
iii) Encontra-se o deslocamento no s e t o r das especi £icações que
é
i g u a l a 4 vezes o conteúdo do campo 'ORDEM NA TABELA!.Aqui kermina a discursão sobre a t a b e l a de v a r i á
-
veis. Como a t a b e l a de especificaçÕes6
muito ligada5
t a b e l a de v a r i á v e i s , serão apresentados os campos d e s t a t a b e l a antes das con-
siderações sobre as t a b e l a s de l i t e r a i s , v a r i á v e i s temporárias e arquivos.4 . 2
-
TABELA DE ESPECIFICAÇ~ESAs especificações de uma determinada v a r i á v e l são encontradas e m uma t a b e l a totalmente alocada no disco. Como
já
f o i v i s t o , as especificações de cada v a r i á v e l de n i v e l 0 1 e s t ã o a- locadas em um s e t o r do d i s c o , ou s e j a , em cada s e t o r serão coloca- das especificações de apenas um r e g i s t r o . A forma g e r a l d e s t a t a - bela
é
a seguinte:12 PALAVRAS
I
1 PALAVRAI
1 PALAVRA1
P I C T U R E4 . 2 . 1
-
PICTURF:Uma descrição completa das ' P I C T U R E S ' das variáveis s e encontra nas duas pr&meiras palavras da t a b e l a de espècificações.
OCCURS
. .
E s t a representação da 'PICTURE' f o i desenvolvida e m 1
.
Se a s informações sobre o t i p o das 'PICTURES' nas quádruplas contêm 0 0 0 , 0 0 1 ou 010 apenas um byte das duas palavras
s e r á u t i l i z a d o . Se a quádrupla contém 0 1 1
,
d o i s b y t e s s e r ã o u t i - l i z a d o s . E s e a quádrupla contém 1 0 0 , 1 0 1 ou 1 1 0,
todos o s 4 by- t e s s e r ã o u t i l i z a d o s . Para os s e t e casos, a s informações contidas na PICTURE tem os s e g u i n t e s s i g n i f i c a d o s :4 . 2 . 1 . 1
-
000-
O byte contém o tamanho do item grupo4 . 2 . 1 . 2
-
0 0 1-
O byte contém o número de ' A ' s e x i s t e n t e s na P I C T U R E , t r a t a - s e da PICTURE a l f a b é t i c a .4.2.1.3
-
0 1 0-
O byte contém o número de ' X ' s e x i s t e n t e s na PICTURE, t r a t a - s e da PICTURE a l f anumérica.4 . 2 . 1 . 4
-
0 1 1-
Trata-se da PICTURE numérica e são n e c e s s á r i o s 1 6 dos 32 b i t s p a r a sua d e s c r i ç ã o .A p a l a v r a de 1 6 b i t s e s t ã devidida em s e i s campos da s e g u i n t e maneira:
19 campo
-
Formado po 1 b i t i n d i c a como a v a r i á v e l6
armazenada (USAGE). Se o v a l o r armazenado no b i t6
zero, a v a r i á v e l s e r á guardada numa representação decimal e x t e r n a ( D I S P L A Y ) . Se o v a l o r armazenadoé
1, a v a r i á v e l s e r á guardada em h i n á r i o (COMPUTACIONAL). 20 campo-
E s t e campo i n d i c a o s i n a l do número I ) ' =+
e '1' =-
.
3 9 campo
-
E s t e campoé
formado por 5 b i t s e fornece o número ded i g i t o s da p a r t e i n t e i r a do v a l o r da v a r i á v e l .
decimal.
5 9 campo
-
Fornece o número de P ' s,
i s t o5 ,
o número de z e r o s que s e r ã o i n s e r i d o s 5 esquerda ou à d i r e i t a , dependendo do v a l o r do campo s e g u i n t e .6 0 campo
-
Informa em 1 b i t s e o número de zeros s e r ã o i n s e r i d o s à esquerda ou à d i r e i t a .4.2.1.5
-
1 0 0-
Quando o t i p o6
i g u a l a 1 0 0 , t r a t a - s e do item-
e lementar alfanumérico de edição. Para a d e s c r i ç ã o des- t a PLCTURE s e r ã o n e c e s s á r i o s todos os primeiros 32 b i t s da t a b e l a alocada no d i s c o . E s t a PICTURE pode d e s c r e-
v e r c a r a c t e r e s alfab&ticos, alfanum&icos, zeros e bran-
COS
.
O s 3 2 b i t s e s t ã o d i v i d i d o s basicamente em d o i s cam
-
pos, sendo um de 2 b i t s e um de 3 0 b i t s que por sua vezd i v i d i d o em çub-campos de dimensão e numero v a r i a d o s . No primeiro campo de d o i s b i t s temos a informação de co
-
mo s e r ã o d i s t r i b u x d o s o s sub-campos do segundo campo.0 0
-
Se o s d o i s primeiros b i t st ê m
o v a l o r zero, o segundo campo s e r á formado de 5 sub-campos de 6 b i t s cada um. O s d o i s p r i-
meiros b i t s de cada sub-campo determinam o t i p o do c a r a c t e r . Se-
est á carregado com
00 = A
o 1
= X 1 0 = ZERO 11 = BMNCOO s demais b i t s determinam a quantidade dos r e s p e c t i v o s c a r a c t e r e s .
.
0 1
-
Se os d o i s p r i m e i r o s b i t s têm o v a l o r 0 1 , o segundo campo s e r á d i v i d i d o e m 6 sub-campos de 5 b i t s onde o s d o i s primei- r o s b i t s informam o t i p o do c a r a c t e r (como no caso 0 0 ) e o s s e g u i 2 t e s a quantidade d e l e s .1 0
-
Se o s d o i s p r i m e i r o s b i t s têm o v a l o r 1 0,
o segundo campo s e r 5 d i v i d i d o em 3 sub-campos de 1 0 b i t s cada um. O s d o i s primeiros b i t s dos sub-campos informam o t i p o do c a r a c t e r (como no caso 0 0 ) e o s o i t o r e s t a n t e s a s r e s p e c t i v a s quantidades.11
-
Se o v a l o r dos d o i s b i t s6
i g u a l a 11, o segundo cam- po s e r á d i v i d i d o em 3 sub-campos de 6 b i t s e um de 1 2 b i t s . Ta-m-
bém aqui o s d o i s primeiros indicam o t i p o do c a r a c t e r e o s demais o n h e r o d e l e s .4 . 2 . 1 . 6
-
1 0 1-
Quando o t i p o da PICTURE f o r 1 0 1 , teremos umf -
tem elementar numérico de e d i ç ã o 1
.
Para a d e s c r i ç ã o d e s s a PICTURE s e r á necess&ia uma p a l a v r a dupla ( 3 2b i t s ) d i v i d i d a em campos.
19 campo
-
Composto por um b i t informa s e haverá ou não i n s e r ç ã o do ponto decimal no item.2 0 campo
-
~ambém composto por um b i t informa s e haverá i n s e r ç ã o de v i r g u l a s no Item.30 campo
-
Composto detrês
b i t s , informa s e haverá i n s e r ç ã o dos c a r a c t e r e s CB ( c r é d i t o ) , DB ( d é b i t o ),
(+), ou ( - ) .O
(+) e opo e s t á armazenado o v a l o r : O00 s e r á i n s e r i d o CB ( c r e d i t o ) O01 s e r á i n s e r i d o DB ( d é b i t o ) 0 1 0 s e r á i n s e r i d o
+
( 5 d i r e i t a ) O 1 1 s e r á i n s e r i d o+
(2 esquerda) 1 0 0 s e r á i n s e r i d o-
(2
d i r e i t a ) 1 0 1 s e r 5 i n s e r i d o-
( à esquerda) 1 1 0 nada a s e r i n s e r i d o4 9 campo
-
contém um Ünico b i t , informa s e haverá inserção f i x a do simbolo d ó l a r .59 campo
-
Composto de d o i s b i t s , informa a quantidade de espaços em branco que e x i s t e depois do primeiro simbolo ou antes do Ú l t i - mo.6 9 campo
-
Composto de 1 b i t , informa s e o s espaços e m branco do campo a n t e r i o r s e encontram respectivamente5
esquerda ou5
d i-
r e i t a do número.70 campo
-
contém 3 b i t s e determina s e na PICTURE e x i s t e algum d et i p o s Z
,
*
,
$ mÚltiplos e (+) ou(-1
mÚltiplos, obedecendo ase
guinte convenção:O00 Z supressão de zeros
O01
*
( s u b s t i t u i ç ã o de zeros por a s t e r i s c o s ) O10 $ múltiplos ( s u b s t i t u i ç ã o de zeros por dÓ-l a r e s ) O 1 1
+
múltiplos ( s u b s t i t u i ç ã o de zeros por +) 1 0 0-
múltiplos ( s u b s t i t u i ç ã o de zeros por -)89 campo
-
Composto de 4 bits,determina a quantidade de um doss f m
-
bolos que aparecem no campo 7
.
99 campo
-
Composto de 4 b i t s , determina o número de noves na PICTURE. 109 campo-
contém 4 b i t s que fornecem o número de algarismos da par-
t e decimal.ll? campo
-
Composto de 4 biits, informa a quantidade de zeros mais5
d i r e i t a da PICTURE.4.2.1.7
-
1 1 0-
Quando o t i p o da PICTUREé
1 1 0 , t r a t a - s e do i t e m numêrico de edição-Z. Para descrição d e s t a PICTURE.será também necessário u t i l i z a r os 3 2 b i t s da t a b e l a de espe- c i f i c a ç 6 e s . Com e s t a PICTURE pode-se descrever o s c a r a s t e r e s numéricos zeros e brancos.O s 3 2 b i t s e s t ã o divididos em d o i s campos, sendo um de d o i s b i t s e um de t r i n t a que por sua vez
é
d i v i d i d o em sub-campos de dimensão e número variados. No primei- r o campo e s t ã o d i s t r i b u í d o s os sub-campos do segundo cam po, obedecendo a seguinte convenção:0 0
-
Se os dois primeiros h i t s têm o v a l o r 0 0 , o segundo cam-
po s e r á formado por 5 sub-campos de 6 b i t s cada um. O s d o i s primei- r o s b i t s de cada sub-campo determinam o t i p o do c a r a c t e r . S e e s t á carregado com0 0 = 9 1 0 = ZERO 11 = BRANCO
0 1
-
Se os d o i s p r i m e i r o s b i t st ê m
o v a l o r O 1,
o segunr do campo s e r á d i v i d i d o em 6 sub-campos de 5 b i t s onde os d o i s p r i-
meiros b i t s informam o t i p o do c a r a c t e r , como no caso 0 0 , e o s s e-
g u i n t e s a quantidade d e l e s .
1 0
-
Se o s d o i s p r i m e i r o s b i t st ê m
o v a l o r 1 0,
o segundo campo s e r á d i v i d i d o em 3 sub-campos de 1 0 b i t s cada um. O s d o i s p r i m e i r o s indicam o t i p o do c a r a c t e r e o s r e s t a n t e s a quantidade d e l e s .11
-
Se o v a l o r do d o i s primeiros b i t sé
i g u a l a 11, o se-gundo dampo d i v i d i d o em 3 sub-campos de 6 b i t s e um de 12 b i t s . ~ambém a q u i o s d o i s p r i m e i r o s indicam o t i p o do c a r a c t e r e o s se-
g u i n t e s a quantidade d e l e s .
I s t o completa o t i p o da PICTURE. O a s s u n t o seguin
-
t e s e r e f e r e à d e s c r i ç ã o dos o u t r o s campos da t a b e l a de e s p e c i f i - cações OCCURS e DESLOC.
4 . 3
-
OCCURSA p a l a v r a q u e segue a d e s c r i ç ã o d a s PICTUFES n a t a
-
b e l a de especificaçÕes in£ormará o número de vezes que uma d e t e r - minada v a r i á v e l ou e s t r u t u r a será r e p e t i d a . Cada v a r i á v e l poderá s e r r e p e t i d a a t é um número i g u a l a 21°,
ou s e j a , 1 0 2 4 v e z e s , O s Últimos s e i s b i t s da p a l a v r a não s e r ã o u t i l i z a d o s .4 . 4
-
DESLOCE s t e campo u t i l i z a apenas 1 0 ou 1 2 dos s e u s 1 6 b i t s . Quando'as e s p e c i f i c a ç õ e s são para uma v a r i ã v e l com n í v e l 01 s e r ã o usados 1 2 b i t s , sendo que o s o i t o primeiros fornecem o nÜme
-
r o da t r i l h a e o s q u a t r o s e g u i n t e s o número do s e t o r onde o r e g i s-
t r o e s t á armazenado. Se a s espeGificaçÕes são p a r a uma v a r i á v e l de nzvel d i f e r e n t e de 0 1 s e r ã o u t i l i z a d o s 1 0 b i t s . E s t e s 1 0 b i t s fornecem o deslocamento da v a r i á v e l em r e l a ç ã o ao i n i c i o do s e t o r onde a mesma e s t á a l o c a d a . Quando s e t r a t a de v a r i á v e i s s u b s c r i t a s , o deslocamento6
a posição davariável
com i n d i c e s i- guais a 1 (Vide 1 ).
A T U A Ç ~ O DO SUPERVISOR
Para completar a d i s c u r s ã o sobre a s t a b e l a s de va- r i á v e i s , segue um resumo da atuação do s u p e r v i s o r quando uma de
-
terminada v a r i á v e l6
s o l i c i t a d a numa quádrupla.O primeiro passo
é
v e r i f i c a r s e a v a r i á v e l está n a memória. Se a v a r i h e l não e s t á na memória, são l i d a s s u a s espe-c i f i c a ç õ e s no d i s c o u t i l i z a r i d o o s apontadores dos campos 'ORDEM NA TABELA'. Na t a b e l a de especificaçÕes (no d i s c o ) obtem-se a
I P I C T U R E 1 , um endereço de um r e g i s t r o e um deslocamento. A 'PIC-
TURE'
6
u t i l i z a d a no primeiro campo da t a b e l a de v a r i á v e i s em u- s o ou no primeiro campo de uma das l i s t a s p a r a v a r i á v e i s s u b s c r i - t a s . Obtem-se o endereço da v a r i á v e l no d i s c o somando-se o ende- r e ç o do r e g i s t r o com o deslocamento. (Quando s e t r a t a de v a r i ã-
v e i s s u b s c r i t a s , e s t e deslocamento
6
uma função do deslocamento fornecido p e l a s e s p e c i f i c a ç Õ e s ) . Encontrado o endereço, a v a r i - á v e l6
l i d a e armazenada junto5
PICTURE.Seguem a s considerações para a s t a b e l a s de v a r i á - v e i s temporárias, l i t e r a i s e arquivos.
4.6
-
TABELA DE LITERAISE s t a t a b e l a guarda apontadores para todos o s l i t e -
4,6.1
-
END MEM-
E s t e campoé
composto d e ' 8 b i t s e i n d i c a o en- dereço do l i t e r a l quando o mesmo s e encontra na memória.r a i s não numéricos e os l i t e r a i s numéricos que não são i n t e i r o s . O s l i t e r a i s i n t e i r o s t e r ã o seus v a l o r e s nas quádruplas. O s valo- r e s dos l i t e r a i s f i c a r ã o alocados no d i s c o e a t a b e l a que f i c a na memória tem a s e g u i n t e e s t r u t u r a :
4 . 6 . 2
-
ENDE?&EÇO D I S C O-
E s t e campoé
composto de 20 b i t s , sendo 8 b i t s para o endereço da t r i l h a , 4 b i t s p a r a o s e t o r e o s o i t oEND MEM 8 b i t s
r e s t a n t e s fornecem o deslocamento em r e l a ç ã o ao i n i c i o do s e t o r .
4.6.3
-
-
TIPO-
Este campo composto de um b i t i n d i c a s e o l i t e r a l é numérico ou não numérico.ENDEREÇO DISCO 20. b i t s TIPO 1 b i t PICTURE 11 b i t s NUM; -VEXES 8 b i t s i
4 . 6 0 4
-
PICTURE-
Se o campo a n t e r i o r i n d i c a que a PICTUREé
nu- m é r i c a , o 19 b i t d e s t e campo i n d i c a r á o s i n a l do numero, o s o u t r o s dez fornecem o numero de nomes, sendo 5 p a r a a p a r t e i n t e i r a e 5 p a r a a d e c i m a l . Se a PICTURE6
a l f a n u m ê r i c a , o s 11 b i t s informam o número de X ' s.
4.6.5
-
NUMERO DE VEZES-
E s t e campo i n d i c a o número d e v e z e s queum l i t e r a l
é
s o l i c i t a d o em um programa. I s t o6
u t i l i z a d o na: ges- t ã o dos l i t e r a i s .4 . 7
-
TABELA DEVARIAVEIS
TEMPOR~~,RIASE s t a t a b e l a guarda o v a l o r d a s v a r i á v e i s temporã
-
r i a s c r i a d a s d u r a n t e a execução d a s o p e r a ç õ e s a r i t m é t i c a s . A si 2
formações n e s t a t a b e l a s e r ã o armazenadas e m 1 0 p a l a v r a s cada uma, sendo uma p a r a a PICTURE e a s o u t r a s p a r a o v a l o r da v a r i á v e l . Se-
r á
r e s e r v a d a uma á r e a d e 50 p a l a v r a s , p o r t a n t oé
p o s s i v e l que a t é c i n c o v a r i á v e i s t e m p o r á r i a s fiquem na memória no mesmo i n s t a n t e.
A e s t r u t u r a d e s t a t a b e l a6
a s e g u i n t e :PICTURE
u
4.7.1
-
P1CTUR.E-
No campo d e s t i n a d o à 'PICTURE', o p r i m e i r o b i t i n d i c a r á o s i n a l do número. D a s b i t s s e g u i n t e , 8 informam a guan-
4 . 8 . 3
-
ENTRADA/SA~DA-
Este campo, composto de 1 b i t , i n d i c a s e o r e g i s t r oé
de e n t r a d a ou de s a í d a .4 . 8 . 4 -;ENDEREÇO NO DISCO
-
E s t e campo contém 1 2 b i t s , onde o i t o informam a t r i l h a e q u a t r o o s e t o r do d i s c o .4.8.5
-
T I P O DE ORGANIZAÇÃO-
E s t e campo contém 4 b i t s e informa q u a l s e r á o t i p o da organização em que os arquivos e s t ã o d i s p o s-
t o s . A organização pode s e r :0 0
-
sequencial01
-
acesso d i r e t o1 0
-
indexado s e q u e n c i a lCada e n t r a d a d e s t a t a b e l a usa 2 9 dos 32 b i t s r e s e r
-
vados.
N o próximo c a p i t u l o s e r á considerada a gestão de memõria apresentando métodos de g e s t ã o para a s s u b r o t i n a s do i n
-
t e r p r e t a d o r , v a r i á v e i s e o s l i t e r a i s . A s v a r i á v e i s temporárias são r e s i d e n t e s na memÕria p r i n c i p a l e não precisam de gestão. A s v a r i á v e i s dos arquivos são t r a t a d a s como v a r i & e i s comuns, não sen
-
do consideradas como um caso d i f e r e n t e .E s t e c a p i t u l o c o n s t a de um estudo de um supervisor e um conjunto de s u b r o t i n a s que s ã o capazes de e x e c u t a r a s i n s t r u
-
çÕes do MINI-COBOL. Todas e s s a s s u b r o t i n a s s e r ã o alocadas em me- mória a u x i l i a r , e2
medida em que s e r ã o s o l i c i t a d a s s e r ã o a l o c a-
das na memÕria p r i n c i p a l .JS
f o i v i s t o nos c a p í t u l o s a n t e r i o r e s que o a n a l i - sador fornece como s a í d a o programa f o n t e em forma de quádruplas. Essas quádruplas são alocadas no d i s c o de maneira que todo p a r a-
g r a f o f i q u e no i n í c i o de um s e t o r . O d i s c o que e s t á sendo consi- derado6
composto de 256 t r i l h a s , c a d a uma com 1 6 s e t o r e s de 128 p a l a v r a s de 1 6 B I T S . Logo, cada s e t o r tem capacidade para aloca- ção de 3 2 quádruplas. Quando aparece um parágrafo composto de um número de quádruplas s u p e r i o r a 3 2 , a Última quádrupla do s e t o r-
on de o parágrafo e s t á alocado6
um s i n a l avisando que o parágrafo continua no s e t o r s e g u i n t e e assim sucessivamente.Todas a s q u ~ d r u p l a s do programa f o n t e alocadas no d i s c o s e r ã o admitidas na memória p r i n c i p a l a t r a v é s de um BUFFER. E s t e " b u f f e r " t e r á uma dimensão i g u a l a 128 p a l a v r a s , ou s e j a , o tamanho de um s e t o r do d i s c o c i t a d o acima. Com o BUFFER do tama- nho de um s e t o r do disco', a programação do s u p e r v i s o r s e r á f a c i l i
-
t a d a porque p a r a c a r r e g a - l o b a s t a que um s e t o r i n t e i r o s e j a movi- do para a memória p r i n c i p a l .Depois que o BUFFER e s t á carregado, o s u p e r v i s o r
-
i n i c i a a execução d a s i n s t r u ç õ e s c o n t i d a s no mesmo. Para cada i n g t r u ç ã o v e r i f i c a - s e s e o s operandos são v á l i d o s . Se s i m , o super- v i s o r apronta o s operandos e a s r o t i n a s do i n t e r p r e t a d o r que s e-
r ã o usadas. E s t e processo requer uma g e s t ã o de memória. Nas p r ó-
ximas seções s e r á d i s c u t i d a e s t a g e s t ã o .Depois que o operador de uma quâdrupla é i d e n t i f i - cado, o algoritmo de gestão de memória i n i c i a a sua t a r e f a . E s t e algoritmo c o n t r o l a a alocação na memória p r i n c i p a l das s u b r o t i n a s u t i l i z a d a s p a r a a execução das i n s t r u ç õ e s . Uma á r e a de memÔria de
2 0 0 0 b y t e s f o i reservada para a alocação das s u b r o t i n a s c i t a d a s
-
a cima. O número de bytes n e c e s s á r i o s para a alocação de cada uma das s u b r o t i n a s c i t a d a s acima aproximadamente o seguinte:MOVE WRITE ADD PERFORM READ STOP MULTIPLY D I V I D E OPEN CLOSE DISPLAY NÚMERO DE BYTES
SUBTRACT E X I T GO TO D I D S Z DSMZ DSME D S M I Z DSMEI
A soma dos comprimentos de todas a s s u b r o t i n a s e i g u a l a 3800 b y t e s . Como a á r e a de memória reservada para e s s a s s u b r o t i n a s não u l t r a p a s s a 2 0 0 0 b y t e s , e s t á c l a r o que não s e r á pos
-
s i v e l a l o c a r todas e s s a s s u b r o t i n a s em um mesmo i n s t a n t e na memó- r i a p r i n c i p a l . Para r e s o l v e r e s s e problema f o i n e c e s s á r i o um e s - tudo para saber q u a i s a s s u b r o t i n a s que devem permanecer ou serem r e t i r a d a s da memÕria em um determinado i n s t a n t e .A
medida que uma determinada i n s t r u ç ã o6
s o l i c i t a - d a , o s u p e r v i s o r s e encarregará de colocá-la na memoria. Como a á r e a reservada para a alocação das s u b r o t i n a sé
2 0 0 0 b y t e s e a s o-
ma t o t a l dos seus comprimentos6
i g u a l a 3800,é
p o s s í v e l que em um determinado programa s e j a n e c e s s á r i o r e t i r a r algumas s u b r o t i-
nas p a r a alocação de uma nova.Para a execução desse algoritmo s e r á organizada u- ma t a b e l a com a s e g u i n t e e s t r u t u r a :
TABELA DE GESTÃO DE MEMÕRIA MOVE WRLTE . ADD PERFORM READ S T O P MULTIPLY D I V I D E OPEN CLOSE DI S P L A Y SUBTRACT E X I T GO T O D I DSZ DSMZ D S M I Z D S M E I 1 b i t 10 b i t s 12 b i t s 1 2 b i t s 1 2 b i t s
O primeiro campo d e s t a t a b e l a informa s e a s u b r o t i
-
na s e encontra na memória ou não. O segundo campo i n d i c a o número. de bytes n e c e s s k i o s para alocação da s u b r o t i n a . O t e r c e i r o campo informa o numero de vezes que uma s u b r o t i n a f o i chamada na execu-
ção de um programa. O s d o i s campos r e s t a n t e s fornecem r e s p e c t i v a - mente o s endereços na memória e no d i s c o .Quando a á r e a d e s t i n a d a à alocação das s u b r o t i n a s e s t á c h e i a e uma f o i s o l i c i t a d a , s e r á i n i c i a l m e n t e
f e i t a uma pesquisa sequencial no campo "número de vezes". E s t a peç
-
q u i s a i n d i c a q u a l f o i a v a r i á v e l menos u t i l i z a d a . F e i t o isso,com-
para-se o campo 'COMPRIMENTO DA SUBROTINA" da s u h r o t i n a que v a i en-
t r a r com a s u b r o t i n a que v a i s a i r . Se o espaço a b e r t o permite a alocação, s e r á i n i c i a d a uma relocação na memória e em seguida . as u b r o t i n a s e r á alocada. Caso não s e j a . s u f i c i e n t e , i n i c i a - s e uma nova pesquisa no campo "NUMERO DE VEZES".
Em resumo, e s t e algoritmo f a z o s e g u i n t e :
a ) Testa o campo
'ESTA
NA MEMÓRIA" : s e o v a l o r6
1, v a i pa r a F ; s e o v a l o r6
zero, procura-se o endereço no d i s c o no campo d e s t i n a d o para i s s o e v a i para B.
h ) I d e n t i f i c a o campo 'COMPRIMENTO DA SUBROTINA' da s u b r o t i na s o l i c i t a d a e soma-se e s t e v a l o r com o comprimento t o t a l das suh
-
r o t i n a s alocadas. Vai para C.
c ) Testa a soma encontrada em B com 2 0 0 0 .
Se maior, v a i p a r a D ; s e menor, v a i p a r a E
.
d) Pesquisa o campo 'NUMERO DE VEZES' para e n c o n t r a r a sub- r o t i n a menos usada.
d.1- R e t i r a a m e n o s u s a d a da m e m o r i a e coloca o v a l o r 4 0 9 6 no c a m p o 'NUMERO DE BYTES
'
d . 2 - Faz a relocação e v a i para B
.
e ) A l o c a nova s u b r o t i n a na m e m ó r i a e a t u a l i z a a t a b e l a . V a i para F
.
f ) S u b r o t i n a
e s t á
p r o n t a para execução.Para f a z e r ti relocaqão c i t a d a e m d - 2 , i n i c i a - s e u m
contador 'BYTES ELIMINADOS' c o m zeros e e m s e g u i d a executa-se o s s e g u i n t e s passos.
A
-
T e s t a o c a m p o 'NUMERO DE V E Z E S ' da t a b e l a d e gestão. Se o c a m p o c o n t é m o v a l o r 4 0 9 6 , s o m a - s e 'COMPRIMENTO DA SUBROTINA' a 'BYTES ELIMINADOS' e v a i para a p r ó x i m a e n t r a d a . Se o c a m p o não c o n t é m e s t e v a l o r , v a i para B.
B
-
S u b t r a i 'BYTES ELIMINADOS' do c a m p o 'ENDEREÇO MEMORIA' para o b t e r o novo endereço da s u b r o t i n a . A t u a l i z a o c a m p o 'ENDE-
REÇO MEMÕRIA' e reloca a v a r i g v e l .C
-
C o l o c a zeros e m todos os c a m p o s 'NUMERO DE V E Z E S ' .A ~ Õ S a i d e n t i f i c a ç ã o do operador e da execução do a l g o r i t m o de gestão de m e m ó r i a deixando alocada na m e m ó r i a p r i n c i