CHAINE DE TRAITEMENTS DES FREQUENCES DE TAILLES ...
CHAINE DE TRAITEMENTS
DES FREQUENCES DE TAILLES
DE LA PECHE ARTISANALE
V. FONTENEAU
S O M M A I R E
Description de la chaîne de traitements
3
Organigrammes
11
Annexe 1: Formats fichiers
13
Annexe 2: Listings programmes et shells
18
Annexe 3: Exemples de sorties
4 0

3
INTRODUCTION:
-
Cette chaîne réalise le formatage et les extrapolations des
fréquences
de tailles des poissons débarqués par la pêche
artisanale aux niveaux des captures totales en vue d'analyses
des prises par taille.
Cette chaîne utilise en entrée les fichiers 'pppaa.longpir'
(créés par le programme 'restruc'
dans la chaîne générale des
traitements statistiques PA) et 'pppaa.cqzdef'
(créés par le
programme
'padef' de la
même
chaîne).
Les
fichiers
'pppaa.longpir'
contiennent les données pour
chaque pirogue
échantillonnée
avec un
enregistrement
des
longueurs
des
poissons
mesurés
par
pirogue et
espèce.
Les
fichiers
'pppaa.cqzdef'
sont extrapolés au niveau de captures totales
du
Sénégal
(sauf Saloum et Casamance) et
contienne.nt
les
données des captures extrapolées et substituées pour chaq,ue
strate (quinzaine, engin et région).
La chaîne de traitement des fréquences de tailles est
installée sur la machine 'Mareme'. Les programmes sont écrits
en Fortran et en SAS et les fichiers sont des fichiers ASCII
formatés.
Les formats de lecture et d'écriture des fichiers ainsi que
des listings des sources des programmes et des exemples de
sorties se trouvent en Annexes 1-3.
A, Programme ‘pafrse1.f:
Objectif du programme: Ce programme réalise une sé.Lection
d'espèces à
extraire des fichiers
'pppaa.longpir'
et donne
comme
résultat un
fichier
contenant un
enregistrement par
poisson mesuré pour les espèces sélectionnées.
Fichiers d'entrée : Unité 12 - pppaa.longpir (ou ppp est le
port et aa l'année).
Unité
5 - pafrsel.par:
Cartes paramètres
Fichiers de sortie: Unité 13 - sel.xxx:
Données sélectionnées et
reformatées.
Le contenu des cartes paramètres est le suivant:
1) Carte 1: nombre d'espèces à traiter ( format: i5)
2)
Cartes 2,
tant que nécessaires:
code
espèce en
nouveau code 4 chiffres (format: i5).
Le
programme
lit
les
données
d'entrée du
fichier
pppaa.longpir et
sélectionne les enregistrements
selon
les
espèces
indiquées dans le fichier pafrsel.par.
Les données
sont
reformatées et le
fichier
créé en
sortie
aura
un
enregistrement par poisson mesuré.

4
Comme on veut en général traiter plus d'un portlannée en
même temps, deux procédures 'shell' ont été créés pour pouvoir
faire plusieurs passages automatiquement et concaténer les
fichiers de sortie afin d'obtenir en sortie un seul fichier
avec toutes les longueurs sélectionnées:
- Le shell 'patsel' réalise:
. la décompression du fichier d'entrée
. l'exécution de pafrsel
.
la "concaténation"
du fichier résultat dans un
fichier total.
. la compression du fichier d'entrée
- Le shell 'paloselt' fait un appel au 'patsel'; chaque
ligne représente un port/année à traiter. C'est ce shell qu'on
modifie pour
la sélection des fichiers à inclure dans la
sélection.
Ce shell doit être exécuté en lançant paloselt
nomfichsel,
ou nomfichsel sera le nom du fichier total en
sortie.
Syntaxe:
patsel ppp aa
En résumé: On modifie d'abord le fichier 'pafrsel.par' pour
donner le nombre d'espèces à sélectionner et les codes des
espèces à retenir. Ensuite on modifie le shell 'paloselt' pour
Y
inclure
les
ports/années à
traiter et on
lance les
exécutions en tapant paloselt nomfichsel.
A partir d'ici on exécutera les points B-H pour chaque
espèce à traiter.
Attention:
Quand on doit traiter des espèces communes avec
PPC Mbour et Joal (espèces 401, 402, 409, 3502 et 4034), il
faut d'abord ajouter les fichiers PPC au fichier créé avec
paloselt. Pour obtenir un fichier cumulé, faire:
cat nomfichppc >>nomfichselectionné
B. Programme ‘esDse1.f:
Objectif du programme:
Le programme
'espse1.f'
est un
programme intermédiaire qui réalise une sélection d'une espèce
à traiter à partir du fichier 'nomfichsel'
(créé en pafrsel)
et.
du
fichier
des
captures
extrapolées
par
quinzaine
'total.cqzdef'
(fichier tous ports/années cqzdef, obtenu par
concaténation de
tous
les
fichiers
pppaa.cqzdef).
Comme
résultat
on obtient deux fichiers intermédiaires:
un fichier
'captures'
contenant un enregistrement par
strate
avec les
captures pondérales de l'espèce à traiter et un fichier
contenant les enregistrements des tailles (1 enregistrement
par poisson mesuré pour l'espèce à traiter).

5
Fichiers d'entrée : Unité 12 - total.cqzdef
Unité 13 - nomfichsel
(sortie de 'pafrsel')
Unité 5 - espsel.par:
cartes paramètres
Unité 18 - engin.dat
(groupes d'engins)
Fichiers de sortie: Unité 22 - total.cqzeee:
Données captures
sélectionnées et reformatées
(eee espèce anc.code)
Unité 23 - sel.nnnn:
Données longueurs
sélectionnées et
reformatées.
(nnnn espèce nouv.code)
Le contenu des cartes paramètres est le suivant:
1) Carte 1: total.cqzdef
2) Carte 2: nomfichsel
3) Carte 3: total.cqzeee
4) Carte 4: sel.nnnn
5) Carte 5: espèce à traiter, ancien code et nouveau
code (format:2i5).
L'ancien
code
espèce
correspond à
la numérotation des
\\
especes selon le schéma PA (trois chiffres) et le nouveau code
espèce correspond à la codification en quatre chiffres commune
aux programmes de CRODT.
Pour les longueurs, le programme effectue une sélection de
l'espace et reformate le fichier pour créer en sortie un
fichier avec des groupes d'engins (8 groupes).
Le programme effectue une sélection et reformatage pour les
captures ( on garde en sortie les strates ayant des captures
de l'espèce) avec le même regroupement d'engins.
Le groupement des engins se
fait selon le groupement
standard actuel de la PA; voir en annexe le listing du fichier
'engin.dat' avec chaque engin et son groupe correspondant (ce
regroupement
peut
être
modifié
selon
l'évolution de la
flottille ou d'autres critères).
Le programme est lancé en tapant: espsel
après avoir modifié le fichier 'espsel.par'
selon l'espèce
à traiter.
C. Procédure ‘esmort’:
Cette
procédure
('shell')
réalise un
tri du
fichier
sel.nnnn par port,
quinzaine, année,
mois et engin afin de
pouvoir
ensuite cumuler les données par strate port,
année,
mois et
groupe
~-
d'engins. En
sortie,
fichier
temporaire
sor.nnnn.
Le shell est lancé en tapant: espsoti
après avoir modifié le fichier 'espsort' selon .L'espèce à
traiter (nnnn nouveau code espèce).

6
D. Programme ‘espref :
Objectif du programme: Ce programme crée
à partir des
longueurs
sélectionnées
et triées,
des enregistrements
avec
une structure de fréquences de tailles par port , année, mois
et groupe d'engins.
Ces données sont ensuite extrapolées et
les
deux
types de
fichiers
sont
crées en
sortie.
L'extrapolation
n'est
réalisée
que si
l'echantillon
des
tailles dans la strate est jugé significatif. Dans le cas
contraire
les
tailles de
ces
captures
seront
estimées
uitérieurement par substitution de strate.
F.ichiers d'entrée : Unité 12 - total.cqzeee
Unité 13 - sor.nnnn
sortie de 'espsort'
Unité 15 - espir.dpa
(relations tailles-poids)
Unité 5 - espref.par:
cartes paramètres
Fichiers de sortie: Unité 20 - espctr.nnnn:
Fichier de contrôle; -Liste
des facteurs d'extrapolatio n
calculés par le programme
(voir prog. espctr.sas)
Unité 21 - freq.nnnn:
Données fréquences brutes
Unité 22 - freqext.nnnn:
Données fréquences
extrapolées
(nnnn espèce nouv.code)
Unité 23 - syntext.nnnn:
Données fréquences
synthétisées
(nnnn espèce nouv.code)
Le contenu des cartes paramètres est le suivant:
1) Carte 1: total.cqzeee
2) Carte 2: sor.nnnn
3) Carte 3: espir89,dpa
4) Carte 4: espctr .nnnn
5) Carte 5: freq.nnnn
6) Carte 6: freqext.nnnn
7) Carte 7: syntext.nnnn
8) Carte 8: espèce à traiter, ancien code et nouveau
code (format:2i5).
9) Carte 9: nombre de poissons minimum et facteur
d'extrapolation maximum par strate.
Ces deux valeurs sont
utilisées pour l'élimination de strates mal échantillonnées
(format:i7,f7.1), ( Cf. ci-après).
10)
Carte 10:
nombre de poissons minimum dans une
strate. Cette valeur est également utilisée pour l'élimination
de strates mal
échantillonnées
(format:i7,f7.1),( Cf. ci-
après).

7
Les données des longueurs sont recodées en fréquences de
tailles. Le
programme
calcule
le poids
correspondant en
utilisant les relations tailles-poids du fichier espir.,dpa et
extrapole ensuite ces fréquences de tailles au niveau de la
capture de l'espèce dans la strate port/année/mois et groupe
d'engins.
Les échantillons
avec un
facteur d'extrapolation
trop élevé et peu de poissons mesurés sont éliminés - les
valeurs de ces deux paramètres sont lues en carte paramètre.
Idem pour les strates avec moins de poissons que le minimum lu
en carte paramètre 10. Le premier passage du programme doit se
faire
avec des valeurs qui n'éliminent aucune strate. On
analyse
ensuite les données du fichier
'espctr.nnnn'
pour
choisir
les
seuils à
appliquer
pour
l'espèce
(voir
'espctr.sas').
Trois fichiers sont créés:
a)
Unité 20,
captures et
poids
des
échantillons
calculés
par
strate. Ce
fichier
sert à
contrôler
les
extrapolations effectuées (voir 'espctr.sas').
b) Unité 21,
fréquences brutes, un enregistrement par
strate, longueur variable.
c) Unité 22, fréquences extrapolées, un enregistrement
par strate, longueur variable.
d) Unité 23, fréquences extrapolées, un enregistrement
par an et groupe d'engins,
longueur
variable.
Ce fichier
servira ensuite pour les substitutions de strates (strates non
echantillonnées).
N.B. Cas particulier: Pour le cas du port de Ouakam, où on
ne dispose pas de mensurations, on utilise les échantillons de
Soumbedioune et des échantillons ont donc été crées à partir
des données Soumbedioune pour les strates où il y a une
capture pour l'espèce à Ouakam.
Le programme est lancé en tapant: espref
après avoir modifié le fichier 'espref.par'
selon l'espèce
à traiter.
E. Programme ‘espctr.sas’:
Objectif du
programme:
Ce programme a
pour
objectif
d'analyser
la composition des fréquences de tailles ainsi que
les
facteurs
d'extrapolation des
strates
afin de pouvoir
ensuite éliminer des strates jugées aberrantes.
Fichier d'entrée : espctr.nnnn
fichier de contrôle créé en espref
Le programme calcule le facteur d'extrapolation par strate
à partir du poids
de l'échantillon et la capture totale.
Ensuite
des
histogrammes
broc
chart),
des
analyses
statistiques (proc univariate et freq) et des tableaux (proc
tabulate) sont confectionnés en sortie.
Le programme est lancé en tapant sas espctr après avoir
modifié le
nom du
fichier
d'entrée et,
éventuellement,
certains des paramètres.

8
F. Procédure ‘pafrsort’:
Cette
procédure
("shell')
réalise un
tri du
fichier
_
freqext.nnnn par port, année, mois et groupe d'engins. Ce tri
( sur les mêmes champs que le tri 'espsort') est nécessaire à
cause des enregistrements créés pour le port de Ouakam dans le
programme 'espref.f'. En sortie, fichier temporaire fre.tmp.
Le shell est lancé en tapant: espsoti
après avoir modifié le fichier 'espsort' selon 1'es;pèce à
traiter (nnnn nouveau code espèce).
G. Programme ‘pafrsub’:
Objectif du
programme: Ce
programme
effectue
des
substitutions
de
strates
pour
chaque
strate
(port/année/mois/groupe d'engins) où on trouve des captures de
l'espece,
mais où cette espèce n'a pas été échantillonnée et
O ù ,
par
conséquence, on ne
dispose pas
de fréquences de
tailles. En
sortie on
obtient un
fichier
extrapolé et
substitué.
Fichiers d'entrée : Unité 12 - Fichier fre.tmp
(fréquences de tailles
extrapolées).
Unité 14 - total.cqzeee
Unité 15 '- syntext.nnnn
Données fréquences
synthétisées
(nnnn espèce nouv.code)
Unité
5 '- pafrsub.par:
cartes paramètres
Fichiers de sortie: Unité 13 '- freqsub.nnnn
fréquences de tailles
extrapolées et
substituées
Unité 6 - listing substitutions
pour vérifications
Le contenu des cartes paramètres est le suivant:
1) Carte 1: fre.tmp
2) Carte 2: total.cqzeee
3) Carte 3: syntext.nnnn
4) Carte 4: freqsub.nnnn
5) Carte 5: pafrsub.nnnn
6) Cartes 6 à 17: schéma de substitutions

9
Le schéma de substitution est d'abord lu sur l'unité 5.
Ensuite le fichier 'synthétique' est cumulé en tableau. Idem
pour le
fichier
captures
extrapolées. Le
traitement
des
données des fréquences de tailles est réalisé par port. Qn
cumule donc dans un tableau les données d'un port. Pour chaque
strate
ayant des captures non échantillonnées,
on crée une
strate à partir du schéma de substitution: On cherche d'abord
des données dans les mois voisins (même groupe d'engins et
même port).
S'il n'y en a pas, on substitue avec la même
saison - chaude ou froide - selon le mois. Si ceci n'est pas
possible, on substitue avec une strate annuelle.
Dans le
dernier cas, on utilisera les strates cumulées par an et
groupe d'engins. Les strates ainsi complétées sont sorties en
fichier 13.
Une sortie sur listing est aussi effectuée et sera ensuite
utilisée avec le fichier total.cqzeee pour sortir un tableau
avec les captures des strates substituées et échantillonnées
pour
évaluer la qualité de l'échantillonnage(voir programme
sas pasubst.sas).
H. Programme ‘tabsubst.sas’:
Objectif du programme: Ce programme fait le bilan des
substitutions de strates effectuées en pafrsub.
Fichiers d'entrée : total.eee
fichier de captures totales de l'espèce
pafrsub.nnnn
Le programme confectionne des tableaux par port et année
des captures des strates non substituées et des strates selon
le type de substitution.
Ces tableaux doivent servir comme
controle des substitutions effectuées.
Le programme est lancé en tapant sas tabsubst après avoir
modifié le nom du fichier d'entrée et le titre des tableaux.
Mode d'emploi des points B-H.
Pour faciliter l'exécution des points B-H, deux procédures
shell,
'patespl' et 'patesp2', ont été créées.
'patespl' exécute 'espsel' et 'espsort'.
'patesp2' exécute 'pafrsort' et 'pafrsub'.

10
En résumé, pour faire un passage des points B-H, on modifie
d'abord 'espref.par', et ensuite on tape
patespl
eee
nnnn
espref
sas espctr
Après analyse des données et des facteurs d'extrapolation
(avec les
sorties de
'espctr.sas'),
on modifie le fichier
'espref.par' et on tape
espref
patesp2
eee
nnnn
sas tabsubst
Oill
eee et nnnn sont les codes (ancien et nouveau) de
l'espèce à traiter.
1. Programme ‘pafreltosas’:
Objectif du programme: Ce programme fait une tabulation des
fréquences de tailles extrapolées ou substituées
Fichier d'entrée : freqsub.nnnn (ou freqext.nnnn)
Le
programme
confectionne
des
tableaux de
base
des
fréquences de tailles par mois et an (tous ports) en nombre de
poissons et avec le poids total et poids moyen.
Le programme est lancé en tapant sas pafrelto après avoir
modifié le nom du fichier d'entrée et le titre des tableaux.
J. Programme ‘pahisto.sas’:
Objectif du programme: Ce programme crée des histogrammes
des fréquences de tailles extrapolées ou substituées
Fichier d'entrée : f reqs ub.nnnn (ou freqext.nnnn)
Le programme confectionne des histogrammes de base des
fréquences
de tailles par an
(tous ports) en nombre de
poissons.
Le programme est lancé en tapant sas pahisto après avoir
modifié le
nom du
fichier
d'entrée et le
titre
des
histogrammes.

PA Fréquences de tailles
1 1
pppazlongpir
pafrsel.par
:es a sélectionner
pour toutes
PPPaa
I
voir stiell patsel i
Sélection longueurs poissons selon
paloselt
1
espèces en pafrsel.p‘u
I
Sortie fichier avec 1 enreg./poisson
I
données ppc
sel.xxx
(si espèce pélagique)
n
i
I
I
47-J
,
4
I
.
.
I
I
I
I
ia
I
I
II
- - - - - - - -
tolakqzdef
12
0,
espèce à traiter
eee - ancien code
11111111 - nouveau code
espse1.f
I-l
l8
I
zaptures de
‘espèce eee
longueurs de l’espèce mmn
espsort
9tri par port, an, mois et groupe d’engins
sor.1111 UI
13
A
Q

espref.par
espct .nnnn
t
i
pe d’engins)
espctrsas
pafrsort
k
7?
I
1 2
pafrsub.par
/
5
r
I
I pafrsub.f
totakcqzeee

1 3
ANNEXE 1: FORMATS FICHIERS

14
FORMATS DE LECTURES/ECRITURES
pppaa.longpir
Quinz
Année
Mois
Jour
# de la
Engin
pirogue
L
i
e
u
Poids de
Nouveau
Nombre de
long1
long2 . ..*
l'espèce
code esp.
longueurs
41
1
91
1
4
4
11
46
0
2.0 6205
2
42
36
41"' 0 1 0
91
1
4
5
11
45
0
2.3 6205
2
36
46
0 . . .
0
pppaa.cqzdef
format(6i4,250fll.l)
1 Port Année Quinz Engin Nb. pir Nb. pir.
sorties
echantill.
captespl
captesp2
. . . .
captesp250
41
91
1
1 635
1
0.0
0.0
. . .
0 0
.
41
91
1
22591
25
0.0
0.0
. . .
0.0
41
91
1
6 7
0
0.0
8479.9
. . .
0 0
.
41
91
1
8 222
3
0.0
221579.0
*..
0 0
.
41
91
1
11 158
13
0.0
0.0
. . .
0 0
.

1 5
sel.xxx
format(7i5)
1 Port Quinz Année Mois Engin Espèce longueur
L--
31 1 74 1
2 3015 80
31 1 74 1
2 3015 68
31 1 74 1
2 3015 65
31 1 74 1
2 3015 58
31 1 74 1
2 3015 69
total.cqzeee
format(5i4,2fll.l)
52 81 1 5 3
699733.8
197216.4
52 81 1 6 3
28548.4
26551.8
52 81 1 5 3
814264.4
234258.8
52 81 1 6 3
312568.4
301634.0
52 81 2 5 3
358302.0
189147.0
sel.nnnn
format(6i5)
sor.nnnn
P o r t
/ Année ( Mois / gyenc~;,, 1 eCdIdc, 1 longueur
1: 81
1
2 3007 67
11 81
1
3 3007 49
11 81
1
3 3007 50
11 81
1
3 3007 52
11 81
1
3 3007 53

1 6
freq.nnnn
freqext.nnnn
fre.tmp
freqsub.nnnn
Port
Année
Mois
Groupe
code
poids
imin
d'engins
espèce
fr(imin)
fr(imin+l)
. . .
fr(imax)
ii ai
1 5 402 140611.8 22 29 16392.1 65568.3
204900.8
90156.4 106548.4 40980.2 0.0 8196.0
ii ai
7 5 402 80182.6 18 28 14254.7 14254.7
7127.3
21382.0 71273.3 42764.0 57018.6 42764.0
57018.6
7127.3 14254.7
ii ai
11 5 402 113880.9 19 26 11748.9 35246.7
23497.8
70493.5 152735.8 164484.7 58744.5 11748.9
11 82
3 5 402 36163.5 23 29 13406.3 46922.1
33515.8
10054.7 13406.3 10054.7 3351.6
11 82
8 5 402 60842.1 19 27 7132.1 0.0
0 . 0
0.0 64188.9 114113.6 21396.3 35660.5
7132.1
syntext.nnnn
1Ann& Groupe Poids fr(1) . . . fr(300)
d'engins
total
81
3
3 5 3 8 . 0
0.0
0.0
.*.
0.0
81
5
14568768.0
0.0
0.0
. . .
0.0
81
6
3998836.5
0.0
0.0
. . .
0.0
82
3
88542.8
0.0
0.0
. . .
0.0

espctr.402
format(4i7,2flZ.l,i6)
Année
Mois
Groupe
Port
capt
poids
d'engins
totale
echant.
81
1
5
11
140611.8
17.2
65
81
1
5
44
435.0
0.0
0
81
1
5
51
30264.2
1.4
15
81
1
5
52
431475.2
15.8
103
81
1
6
52
328185.8
47.9
339
engin.dat
format(i2,6x,i2)
/ eng.in / dyz;gyns /
engin.dat
01 PVL
1
1
02 PML
2
2
03 PML
2
2
04 PGL
4
3
OS FD
3
4
06 ST
5
5
O-1 FME
6
6
08SP
7
7
09 LRH
2
8
10 LCS
2
9
11LT
2
2
12 PAL
2
8
13 EP
8
12
14 BAR
8
12
15 FMDE
3
10
16 FMDM
3
10
17 FMDF
3
10
18 FMDT
3
10
19 FDP
3
4
20 FDS
3
4
21 FDE
3
4
22 FDL
3
4
23 FDY
3
11
24 PS
8
12

1 8
ANNEXE 2: LISTINGS PROGRAMMES ET SHELLS
Programmes et fichiers paramètres
pafrse1.f
pafrsel.par
espse1.f
espsel.par
espsort
espref.f
espref.par
espctr.sas
pafrsort
pafrsub.f
pafrsub.par
tabsubst.sas
pafrelto.sas
pahisto.sas
Shells
paloselt
patsel
patespl
patesp2

19
pafrse1.f
l
I
C
programme pafrse1.f
C
Selection especes a partir des fichiers pppaa.longpir
c en entree unite 12 - fichier pppaa.longpir
c en unite 5 - liste des especes a selectionner
C
En sortie unite 13 - fichier sel.xxx
avec un enreg par poisson
C
des especes selectionnees
dimension ilong(50)
integer icode
integer iese1(50)/50*0/
logical exists
character"256 nomfic,lnomes
if (iargcO.NE.1) then
cal1 getarg(O,nomfic)
print*, 'pafrsel: usage:
pafrsel
NomFichierATraiter '
goto 99999
endif
cal1 getarg(l,nomfic)
C
cal1 getarg(2,lnomes)
C
print *,nomfic,lnomes
C
Est-ce que le fichier a traiter existe vraiment ??
open(l3,FILE='sel.xxx')
c ????
C
INQUIRE(FILE=nomfic, EXIST=exists)
C
if (.not.exists) then
C
print*,'impossible d"ouvrir le fichier'
C
close(l3)
C
icode =1
C
cal1 exit(icode)
C
goto 99999
c
endif
nreg=O
C
debut du traitement
open(5,file='pafrsel.par')
ccccc
lecture especes a selectionner
ccccccccccc
read(5,92) nbesp, (iesel(j),j=l,nbesp)
92 format(i5)
C
print
92, nbesp, (iesel(j),j=l,nbesp)
CCLZCC
lecture fichier d entree et selection
ccccccccccc
open(l2,FILE=nomfic)
1 read(12,90,end=lO)iport,iqz,iannee,imois,ijour,ipir,iengin,
1 ilieu,iprof, poids,icodep,inb,ilong
90
format(915,F7.1,215,5014)
do 4 j=l,nbesp
if(icodep.eq.iesel(j)) goto 5
4 continue
goto 1
5 continue
ccccc
sortie
fichier longueurs esp.selectionnees
cccccccc
do 2 j=l,SO
if(ilong(j).eq.O) goto 2

2 0
nreg=nregtl
write(l3,91 ) iport,iqz, iannee,imois,iengin,icodep,ilong(j)
91 format(715)
2 continue
goto 1
10 continue
print *, nreg
if(nreg.gt.O)goto 22222
icode =1
cal1 exit(icode)
22222 close(l2)
close (13)
close(05)
99999 stop
end
C
pafrsel.par
13
4101
3015
3007
4503
4507
4504
4512
4524
4517
4017
7609
401
402
C
espse1.f
C PROG espsel selection espece fichier cqzsub et sel.totgtpa
C EN ENTREE 12 fichier total.cqzsub
C EN ENTREE 13 fichier donnees longueurs sortie de paloselt
C
18 engins et groupes d engins
C
5 espece a traiter (ancien code-eee, nouv code-nnnn)
C EN SORTIE UNITE 22 - fichier captures reduites total.cqzeee
C EN SORTIE UNITE 23 - sel.nnnn
C
c pour chaque enreg captures on retient l'entete,cpttot et ca esp
c pour le fichier long c'est uniquement une selection
esp
REAL capt(250)
integer igreng(24)
CHARACTER*60 FILEl,FILE2,file3
CHARACTER*60 FILE4
,file5
nbreng=24
nbresp=250

21
OPEN(5,FILE='espsel.par')
READ(5,90)FILEl,file2,file3,file4
,file5
90 FORMAT(A60)
open(l2,file=filel)
open(l3,file=file2)
open(l8,file=file3)
open(22,file=file4)
open(23,file=file5)
read(5,*) iespa,iespn
C
read(5,95) iespa,iespn
c 95 format(2i5)
nreg=O
C"*******LECTURE FICHIER NOMS ENGINS************
DO 368 K2 = 1, NBRENG
READ(18,235,END=369)1,
IGRENG(1)
368 CONTINUE
369 CONTINUE
235 FORMAT (12,1X,4x,1X,12,14)
C********LECTURE FICHIER captures
**********xx
1 read(l2,9l,end=lO) ip,ia,iqz,ien,isor,iech,capt
91 format(6i4,250fll.l)
if(capt(iespa).eq.O.) goto 1
c on ne tient pas compte des captures ppc (engins 6 et 7)
C
if((ip.eq.5l.or.ip.eq.52).and.(ien.eq.6.or.ien.eq.7)
C
1 )goto 1
c on garde seulement les strates avec captures
nreg=nregtl
ct=O
do 2 i=1,250
2 ct=ct+capt(i)
im=(iqz+l)/Z
write(22,92) ip,ia,im,igreng(ien),iespa,ct,capt(iespa)
92 format(5i4,2fll.l)
goto 1
10 continue
close (12)
close (22)
print *,nreg
c lecture long
nreg=O
read(13,98)
98 format
C********LECTURE FICHIER longueurs
************
read(13,97)
11 read(13,97,end=lOO) iport,iqz,iannee,imois,iengin,icodep,ilong
if(iannee.lt.81) goto 11
if(icodep.ne.iespn) goto 11
Write (23,97) iport,iannee,imois,igreng(iengin),icodep,ilong
nreg=nreg+l
97 format(715)
goto 11
100 continue
print *, nreg
close (13)
close(l8)
close (23)
close (05)
99999 stop

22
end
espsel.par
C
/home/mareme/crodt/tmp/total.cqzdef
/home/mareme/crodt/tmp/sel.size
../engin.dat
tc,tal.cqz3
sel.402
3 402
espsort
C
sort -t$ tO.0 -0.24 -0sor.402
-235 sel.402 -T /home/mareme/crodt/tmp -y
espref.f
C
C PROG espref reformattage et extrap fichier sor.nnnn
C EN ENTREE 12 fichier total.cqzeee
C EN ENTREE 13 fichier sor.nnnn
C EN ENTREE 15 fichier espir.dpa
C EN ENTREE 5 fichier espref.par avec les noms des fichiers,
C
- espece et facteur maxi ET nb poiss mini
C
- nb poissons min dans un 'echant'
C
donc : deux conditions
C
pour elimination de strates mauvaises
C EN SORTIE UNITE 20 - fichier controle pour SAS
C EN SORTIE UNITE 21 - fichier freqs brutes
C EN SORTIE UNITE 22 - fichier freqs extrap
C EN SORTIE UNITE 23 - fichier freqs extrap synthetise
C
REAL synt(30,8,301)/72240*0./
REAL tca(30,12,8,60)/172800*0/
REAL tfr(30,12,8,60)/172800*0/
integer iir(30,12,8,60)/172800*0/
REAL fr(300)/300*O./,a(25O),b(250)
,pm(250)
CHARACTER*32 FILEl,FILE2,file3
CHARACTER*32 FILE4,file5,fileG,fil
e7
nbreng=24
nbresp=250
ip42=42
OPEN(S,FILE='espref.par')
90 FORMAT(A32)
open(l2,file=filel
open(l3,file=file2
open(l5,file=file3
open(20,file=file4 1
open(2l,file=file5

23
open(22,file=file6)
open(23,file=file7)
C
read(5,95) iespa,iespn
c 95 format(2i5)
read(5,* ) iespa,iespn
read(5,* ) nbpmin,facmax
read(S,* 1 nbpech
print 945, nbpmin,facmax
945 format(lx,'les strates avec moins de ',iS,' poissons ET',/lx,
1
'facteur e-extrapolation >' f7.0,' seront eliminees')
print 947, nbpech
947 format(lx,'les strates avec moins de ',iS,' poissons ',
1 ' seront eliminees')
96 format(i7,f7.1)
C********LECTURE COEFF DES RELATIONS TAILLE-POIDS*******************
do 45543 i=l,nbresp
READ(15,200,end=45544) A(I),B(I),PM(I)
C
print 200, A(I),B(I),PM(I)
200 FORMAT (3X,ElO.3,F6.3,ElO.3)
45543 continue
45544 continue
print *# 'esp, a et b ', iespa,iespn,a(iespa),b(iespa)
C POIDS MOYEN EN KG
DO 3640 I=l,NBRESP
3640 PM(I)=PM(I)*1000.
c
C
p=o.
C
do 8797 jj=1,300
C
p=(a(iespa)*(jj+0,5)**b(iespa))/lOOO.
C
print *, jj,P
c 8797 continue
nreg=O
C********LECTURE FICHIER captures
*********************************
1 read(l2,9l,end=lO) ip,ia,im,igr,iesp,ct,capt
if(ip.gt.60) goto 1
if(iesp.ne.iespa) print *, 'quelle espece????',iespa,iesp
if(iesp.ne.iespa) stop
91 format(5i4,2£11.1)
i=ia-70
j=im
k=igr
l=ip
tca(i,j,k,l)=tca(i,j,k,l)+capt
goto 1
10 continue
C********LECTURE FICHIER long
*************************************
nreg=O
isw=O
iend=O
11 read(13,97,end=lOO) ip,
ia,im,igr,icodep,il
if(icodep.ne.iespn) print *,'quelle espece????',iespn,icodep
if(icodep.ne.iespn) stop
if(isw.ne.O) goto 2
isw=l
ipl=ip
ial=ia
iml=im

24
igrl=igr
2 continue
nreg=nreg+l
97 format(615)
C
cumul en strate
port an mois et gr engin
if(ip.ne.ipl.or.ia.ne.ial.or.im.ne.iml.or.igr.ne.igrl) goto 5
c same cumul
4 fr(il)=fr(il)+l
goto 11
c change sortir enreg &extrap selon poids des poissons mesures
5 continue
imin=O
imax=O
do 21 j=1,300
if(fr(j).gt.O) imax=j
if(fr(j).gt.O.and.imin.eq.O)
imin=j
21 continue
C********ecriture fichiers ********************************************
c on calcule d abord le poids et le fac d extrap.
nbpo=O
p=o.
do 22 j=imin,imax
if(fr(j).eq.O) goto 22
nbpo=nbpotfr(j)
p=ptfr(j)*(a(iespa)*(jtO.5)**b(iespa))/lOOO.
22 continue
i=ial-70
j=iml
k=igrl
l=ipl
iir(i,j,k,l)=iir(i,j,k,l)tnbpo
tfr(i,j,k,l)=tfr(i,j,k,l)tp
c echantillon sans capture - ne devrait pas se trouver......
if(tca(i,j,k,l).eq.O.and.tfr(i,j,k,l).gt.O)
1 print *, 'ech sans capt ', ial,j,k,l,tca(i,j,k,l),tfr(i,j,k,l)
if(tca(i,j,k,l).eq.O.and.tfr(i,j,k,l).gt.O)
goto 222
c :echantillon avec poids 0 - ne devrait pas se trouver......
if(tfr(i,j,k,l) .eq.O.)
I print *, 'ech poids 0 ' ,ial,j,k,l,tfr(i,j,k,l)
if(tfr(i,j,k,l) .eq.O.)
goto 222
c ,calcul facteur d extrap.
fac=tca(i,j,k,l)/tfr(i,j,k,l)
C********ecriture fichier freqs br. ***********************************
write(21,911)
1
ipl,ial,iml,igrl,icodep,p,imin,imax,(fr(jj),jj=imin,imax)
911 format(5i5,f11.1,2i5,3OOfll.l)
C On elimine les strates avec facteur d extrap> facmax ET
c
nombre de poissons dans 1 echantillon <nbpmin
C
ainsi que les strates avec moins de nbpech poissons
if(fac.gt.facmax.and.nbpo.lt.nbpmin) print *,
1 'strate eliminee ', ial,j,k,l,fac,nbpo,tca(i,j,k,l),tfr (i, j,k, 1)
if(fac.gt.facmax.and.nbpo.lt.nbpmin) goto 222
if(nbpo.lt.nbpech) print *,
1 'strate eliminee ',ial,j,k,l,fac,nbpo,tca(i,j,k,l),tfr
(i, j,k,l)
if(nbpo.lt.nbpech) goto 222

25
C********ecriture fichier freqs extrap. *******k****************k*****k*
write(22,911) ipl,ial,iml,igrl,icodep,fac*p,imin,imax,
1
(fac*fr(jj),jj=imin,imax)
C
on cumule dans les strates synthetisees
synt(i,k,l)=synt(i,k,l)+fac*p
do 8888 jj=imin,imax
8888 synt(i,k,jj+l)-synt(i,k,jj+l)+fac*fr(jj)
psynt=O.
do 2552 jj=1,300
if(synt(i,k,jjtl) .eq.O) goto 2552
psynt=psynttsynt(i,k,jjtl)*(a(iespa)*(jj+O.5)**b(iespa))/lOOO.
2552 continue
C
print *, i,k,fac,p,synt(i,k,l),psynt,(synt(i,k,l)-psynt)
C
print 933,(synt(i,k,jj),jj=2,36)
c 933 format(lx,8f7.1)
C pour le port de Soumb on duplique les donnees si
c une strate devrait exister pour Ouakam
c voir si captures dans cette strate pour Ouakam
if(l.ne.43.or.tca(i,j,k,42).eq.O.)
goto 1515
if(tfr(i,j,k,l).eq.O.) print *,'bizz',tca(i,j,k,42),l,j,k,l
if(tfr(i,j,k,l).eq.O.) goto 1.515
fac=tca(i,j,k,42)/tfr(i,j,k,l)
write(22,911) ip42,ial,iml,igrl,icodep,fac*p,imin,imax,
1
(fac*fr(jj),jj=imin,imax)
1515 continue
222 continue
if(iend.gt.O) goto 1000
c reinit
ipl=ip
ial=ia
iml=im
igrl=igr
do 45 j=1,300
45 fr(j)=O.
goto 4
100 continue
iend=l
goto 5
1000 continue
c test strates capt sans ecantillons????
c captures sans echantillon.
preparer schema de substit.....
do 44 i=1,30
do 44 j=l,l2
do 44 k=1,8
do 44 1=1,60
ial=it70
if(tca(i,j,k,l).gt.O.and.tfr(i,j,k,l).eq.O)
1 print *,'capt sans ech ' ,ial,j,k,l,tca(i,j,k,l),tfr(i,j,k,l)
c ***sortie fichier controle fac
t**********************************
if(tca(i,j,k,l).gt.O.)
1 write(20,960) ial,j,k,l,tca(i,j,k,l),tfr(i,j,k,l),iir(i,j,k,l)
'960 format(4i7,2f12,l,i6)
44 continue
c k***** sortie fichier synt *****************************X*X***********
do 8885 i=1,30
ia=it70
do 8885 k=1,8

26
if(synt(i,k,l).gt.O.) write(23,96l)ia,k,(synt(i,k,jj),jj=l,301)
961 format(2i5,f12.1,300flO.l)
8885 continue
print *, nreg
close (05)
close (12)
close (13)
close (15)
close (20)
close (21)
close (22)
close (23)
99999 stop
end
espref.par
total.cqz3
sor.402
../espir89.dpa
espctr.402
freq.402
freqext.402
syntext.402
3
402
30 12000.0
30
:-
Ii-
espctr.sas
/* prog espctr.sas
analyses tailles des strates et facteurs d extrap
en entree fichier espctr.nnnn cree par espref.f
et qui contient #poiss, poids echantillonne et capture totale
par strate. differentes analyses (univariates et charts et freqs)
sont effectues (variables selon 1 espece etudiee)
"1
*option pagesize=200;
libname pa ";
Idata d;
infile 'espctr.402';
inputan mois greng port capttot poidech nbp;
.Eac=O.;
.if poidech =0 then delete;
.if poidech >O then fac=capttot/poidech;
facl=int(fac/lOO);
"if fac1 >500 then facl=SOO;
if fac >12000 then fac=12000;
:tif fac >1500 then delete;
:tifi nbp 2100 then delete;
*if nbp Cl3 then delete;
:'ifi fac >2000 then fac=2000;

27
*if fac >20000 then fac=20000;
*if nbp >lOOO then nbp=lOOO;
*if nbp >80 then nbp=80;
run;
proc univariate data=d freq;
var nbp;
run;
proc univariate data=d freq;
var facl;
run;
proc chart data=d;
vbar fac;
run;
/*
proc plot data=d;
plot nbp*fac;
run;
proc chart data=d;
vbar nbp;
run;
proc plot data=d;
plot poidech*capttot;
run;
proc sort data=d out=do;
by an port greng;
run;
proc tabulate data=do;
var capt poidech nbp;
class an port;
table (an ail), (port all)*capt*sum;
run;
proc print data=d (obs=20);
run;
proc univariate data=do plot;
var fac;
run;
proc univariate data=do plot;
var fac;
by an:
run ;
proc tabulate data=do;
var capt poidech nbp;
class an;
table (an ail), (capt poidech nbp)*sum;
run;
proc gchart data=do;
vbar faclmidpoints=O to 300 by 10;
proc timeplot uniform data=do;
plot fac;
id mois greng;
by port an;
x/
L-un;
I
pafrsort
-

28
sort
-t$ tO.0 -0.24 -ofre.tmp
-23346 freqext.402 -T /tmp -y
l
pafrsub.f
C PROG pafrsub substitution de strates pa
freq tailles
c au niveau de strates mois et groupes d engins
C EN ENTREE 12 fichier freqext.nnnn par port an mois et greng
C EN
14 fichier total.cqzeee par port an mois et greng
C EN
15 fichier syntext.nnnn echantillons cumulees
C
par annee et greng
C
5 fichier substitutions
C EN SORTIE UNITE 13 - fichier avec strates substituees
C
pour stats, tableaux et histos
C
6 fichier listing substitutions pour verif.
C
(strate 99 pas de subst possible)
C
c pour chaque strate ou on a captures sans echant on cherche une subst.
c a partir du tableau isub:on utilise strates voisines ou
c totaux saison (ch/fr) ou total annee
integer
isub(5,12)/060*0/
real synt(30,8,301)/72240*0./
REAL fr(300)/300*0./
REAL cap(60,30,15,8)/2160OO*O./
REAL tfr(30,16,8,300)/1152000*0/
REAL tpf(30,16,8)/3840*0/
integer isais(12)/5*13,5*14,2*13/
CHARACTER*32 FILEl,FILEZZ,file3,file4,file5
i99=99
nbrgre=8
nbresp=250
OPEN(5,FILE='pafrsub.par1)
READ(5,9O)FILEl,file2
,file3,file4,file5
90 FOFUWT(A32)
open(l2,file=filel)
open(l3,file=fi.le2)
open(l4,file=file3)
open(l5,file=file4)
open(G,FILE=file5)
C
XX****** lecture fichier synt
************************************
read(5,95) (im,(isub(i,im),i=l,4),ii=l,l2)
C
print
95, isub
95 format(5i5)
print 900
900 format(20x,' strate mauvaise
strate utilisee',/
l.
lx, 'port
annee
mo greng
capt
1 ,
2 lx,'
mo greng
pech ')
C
**k***** lecture fichier synt
************************************
21111 read(15,96,end=21110) ia,igr,ptot,(synt(ia-7O,igr,jj),jj=l,300)
96 format(2i5,f12.1,300f10.1)
tpf(ia-70,16,igr)=ptot
do 21113 jj=1,300
21IL13 tfr(ia-70,16,igr,jj)=synt(ia-7O,igr,jj)
21112 continue
goto 21111

29
21110 continue
close(l5)
C
*A****** lecture fichier captures de 1 espece et cumul en cap******
c cap(port,an,mois,gre) avec totaux
en mois 13-15
11111 read(l4,9l,end=llllO) ip,ia,im,igr,iesp,cb,capt
if(ip.gt.60) goto 11111
91 format(5i4,2fll.O)
c cumul tabl.cap
.is=isais(im)
cap(ip,ia-70,im,igr)=cap(ip,ia-7O,im,igr)+capt
cap(ip,ia-70,is,igr)=cap(ip,ia-7O,is,igr)tcapt
cap(ip,ia-70,15,igr)=cap(ip,ia-70,15,igr)tcapt
goto 11111
11110 continue
close (14)
isw=O
iend=O
c********lecture
fichier freqs extr. *********************************
c le traitement sera fait par port
c on cumule toutes les donnees d un port en tfr(an,mois,gre,fr)
c et tfp(an,mois,gre)
c A la fin de chaque port on substitue et on sort
c tous les strates en fichier freqsub.nnnn
1 read(l2,9ll,end=lO)
1
ip,ia,im,igr,icodep,p,imin,imax,(fr(j),j=imin,imax)
911 format(5i5,f11.1,2i5,3OOfll.l)
if(imin.eq.O.and.imax.eq.0)
print *,
1
'attn pas de p.',
ip,ia,im,igr,icodep,p,imin,imax
if(imin.eq.O.and.imax.eq.0)
goto 1
if(isw.eq.1) goto 2
isw=l
ipl=ip
2 continue
if(ip.ne.ipl) goto 5
c cumul tabl.tfr
4 continue
C
if(ia.gt.gl.or.ia.lt.81) print *,'mauv',ip,ia,im,igr
C
if(ip.gt.60.or.ip.eq.O) print *,'mauv',ip,ia,im,igr
c
if(im.gt.12.or.im.eq.O) print *,'mauv',ip,ia,im,igr
C
if(igr.gt.8.or..igr.eq.O) print *,'mauv',ip,ia,im,igr
is=isais(im)
do 3 jj=imin,imax
tfr(ia-70,im,igr,jj)=fr(jj)
tfr(ia-70,is,igr,jj)=tfr(ia-7O,is,igr,jj)tfr(jj)
tfr(ia-70,15,igr,jj)=tfr(ia-70,15,igr,jj)tfr(jj)
3 continue
tpf(ia-70,im,igr)=p
tpf(ia-70,is,igr)=tpf(ia-7O,is,igr)tp
tpf(ia-70,15,igr)=tpf(ia-70,15,igr)tp
goto 1
5 continue
c ********
Substitutions si necessaire ******************************
988 format(lx,i5,12(2i4,2x))
do 11 i=1,30
do 11 k=l,nbrgre
do 31 j=1,12
if(cap(ipl,i,j,k).eq.O.) goto 31
if(tpf(i,j,k).gt.O.) goto 31

30
C
print *,'attn'
c sorties sans echant chercher subst
isul=isub(l,j)
isu2=isub(2,j)
if(tpf(i,isul,k).eq.O..
and.tpf(i,isu2,k).eq.O.) then
c pas d ech en qz voisines. utiliser moyennes f c ou tot
si poss
c si pas possible on essaye les strates synt(isu=16)
if(tpf(i,isub(3,j),k).eq.O..
and.tpf(i,isub(4,j),k).eq.O.)
then
if(tpf(i,l6,k).eq.O.) goto 32
isu=16
else
isu=isub(3,j)
if(tpf(i,isu,k).eq.O.) isu=isub(4,j)
endif
else
c prendre strate voisin avec plus d echant
isu=isul
if(tpf(i,isu2,k).gt.tpf(i,isul,k))
isu=isu2
endif
C
if(itab(l,i,isu) .eq.O) print *, 'ATTN:AVEZ VOUS PASSE CONTROL2??',
C
1
ip,ia,j,i,isu,itab(l,i,j)
C
strate trouvee. On calcyule le facteur d-extrap a appliquer pour
c calculer le nombre de poissons de la strate
fac=cap(ipl,i,j,k)/tpf(i,isu,k)
tpf(i,j,k)=cap(ipl,i,j,k)
do 50 jj=1,300
tfr(i,j,k,jj)=tfr(i,isu,k,jj)*fac
50 continue
print 9Ol,ipl,i-t7O,j,k,cap(ipl,i,j,k)
1
isu,k,
tpf(i,isu,k)
901 format('4i5, flO.l,15x,2i5,
f10.0)
C
write(6,901) ipl,i+70,j,k,cap(ipl,i,j,k)
C
1
isu,k,
tpf(i,isu,k)
goto 311
c pas de subst possible
32 print 901,ipl,i-t-7O,j,k,cap(ipl,i,j,k) ,i99
c 32 print 902,ipl,i+7O,j,k,cap(ipl,i,j,k)
902 format(lx,'pas de subst poss. strate ip,ia,mo,igr ',4i5,fll.l)
31 continue
11 continue
c *****sortie fichier avec subst ***************************************
do 60 i=1,30
iaaa=i+70
do 60 j=l,lZ
do 60 k=l,nbrgre
if(tpf(i,j,k).eq.O.) goto 60
imiin=O
imaix=O
do 666 jj=1,300
if(tfr(i,j,k,jj).gt.O.)imaix=jj
if(tfr(i,j,k,jj).gt.O..
and.imiin.eq.O) imiin=jj
566 continue
write(l3,911) ipl,iaaa,j,k,icodep,tpf(i,j,k),imiin,imaix,
2
(tfr(i,j,k,jj),jj=imiin,imaix)
60 continue
if(iend.eq.1) goto 20000
,Py ******** reinit et continuer avec le port suivant
******************
ipl=ip

31
do 70 i=1,30
do 70 j=1,15
do 70 k=l,nbrgre
do 71 jj=1,300
71 tfr(i,j,k,jj)=O.
70 tpf(i,j,k)=O.
goto 4
10 continue
iend=l
goto 5
20000 continue
CLOSE (6)
CLOSE (12)
CLOSE (13)
STOP
END
C
pafrsub.par
fre.tmp
freqsub.402
total.cqz3
syntext.402
pafrsub.402
1
2
12 13 15
2 3
1
13 15
3 4
2
13 15
4
5
3
13 15
5 6
4
13 15
6 7
5
14 15
7
8
6
14 15
8 9
7
14 15
9
10
8
14 15
10 11
9
14 15
11 12
10 13 15
12 1
11 13 15
tabsubst.sas
/*
prog tabsubst.sas
fait le bilan des substitutions de strates
effectuees en pafrsub. En entree fichier captures (total.cqzaaa)
et le fichier de subst effectuees (pafrsub.nnnn) pour lespece
En sortie tableau recap.
pas optimise encore: pour chaque espece il faut changer capxxx
et capyyy....
*/
op.cion linesize=225;
opinion pagesize=200;
/*
lecture fichier captures */
data d;
infile 'total.cqz3';
input
port an mois greng iesp captt cap3;

32
keep port an mois greng cap3;
run;
/* lecture fichier substitutions */
data dp;
infile 'pafrsub.402';
inputport an mois greng cap402 isu;
typesu=0;
if isu le 12 then typesu=l;
if isu eq 13 or isu eq 14 then typesu=2;
if isu eq 15 then typesu =3;
if isu eq 16 then typesu=4;
i.f isu eq 99 then typesu=5;
keep port an mois greng cap402 typesu;
run;
/*
tris
*/
proc sort data=d
out=dl;
by port an mois greng;
run;
proc sort data=dp out=d2;
by port an mois greng;
rc.n;
/* summary du fichier capt et merge des deux fichiers
*/
proc summary data=dl nway;
class port an mois greng;
var cap3;
output out=dlo sum=;
run;
data dd;
merge dlo d2;
by port an mois greng;
if typesu=. then typesu=CI;
capdiff=abs(cap3-cap402);
if cap3015 ne . and capdiff gt 5 then put port an mois greng typesu
cap3 cap402;
run;
proc sort data=dd out=do;
by an port typesu;
run;
proc print data=do (obs=EjO);
run;
/* tableau recapitulatif */
proc tabulate data=do;
var cap3 cap402;
class an port typesu;
table port,an,(typesu all)*cap3*sum;
run;
r-
1
L
pafrelto.sas
/* progr pafrelto.sas: confection de tableaux de frequences
extrap.
par an a partir d un fichier freqsub.nnnn
changer le fichier d entree et le titre pour chaque passage

33
ainsi que la formule lengh weight
*option pagesize=60;
*infile 1/usr/mareme/viveca/pa/tailles/freqsub.45171;
*l
option linesize=205;
libname pa ";
/* lecture fichier d entree et creation de fichier temporaire
temp
*/
data
nul1 ;
array-freqT300) frl-fr300;
array poi(300) pol-po300;
a402=0.01034;
b402=3.142;
infile '/home/mareme/crodt/viveca/pa/tailles/freqsub.402'
lrecl=4000;
input port an mois greng esp poids imin imax@;
*
if an ne 86 then delete;
*
if port ne 44 then delete;
do i=l to 300;
freq(i)=O;
end;
nbtot=O;
do i=imin to imax;
input freq(i)@;
nbtot=nbtot+freq(i);
end;
do i=imin to imax;
bi=i**b402;
ti=a402*(i**b402)*0.001;
poi(i)=freq(i)*a402*(i**b402)*0.001;
if N
- - It 3 then put i ti freq(i)
poi(i) a402 b402 bi;
end;
fi-le 'temp';
isais=l;
if mois gt 5
and mois lt 11 then isais=2;
do
i=l to 300;
if freq(i) gt 0 then
put port an mois
greng i freq(i) poi(i);
end;
run;
option pagesize=200;
data d;
i.nfile 'temp';
inputport an mois greng taille nbpois poidkg;
poid=poidkg*O.Ol;
run;
proc format;
value montfmt l-'JANVIER'
2='FEVRIER'
3= 'MARS'
4='AVRIL'
5='MAI'
~=~JUIN
7='JUILLET'
8='AOUT'
9='SEPTEMBRE'
lO='OCTOBRE

34
ll-'NOVEMBRE'
12='DECEMBRE';
run;
/7ktri du fichier par an */
proc sort data=d out=do;
by an;
run;
/"tableau taille fonction an */
proc tabulate data=do;
tItle 'Sardinelles pl. frequences extrapolees par an';
format mois montfmt.;
class taille an;
var nbpois poid poidkg;
table (taille all),an*nbpois*sum*f=12./rts=lO;
table
all,an*poidkg*sum*f=l2./rts=lO;
table
all,an*poid*pctsum<nbpois>*f=l2.3/rts=l0;
run;
/”
ancien
proc tabulate data=do;
title 'frequences extrapolees tous ports';
format mois montfmt.;
class taille mois;
var freq poid;
table (taille all),mois*freq*sum/rts=lO;
table
all,mois*poid*sum/rts=lO;
table
all,mois*poid*pctsum<freq>/rts=lO;
blr
an;
run;
*tableau taille fonction mois
pi-oc tabulate data=do;
class taille mois;
table taille,mois;
by port an;
run;
*/
C
pahisto.sas
III
/* prog pahisto histogrammes frequences de tailles pa par an
en entree fichier freqsub.nnnn (ou freqext)
ATTN: changer chaque fois le nom du fichier et le titre
ainsi que la longueur max en graph
*/
libname pa ";
/*
lecture fichier freqsub.nnnn et creation fich temp temp.aaa
*/
data -null_;
array freq(300) frl-fr300;
infile 'freqsub.402' lrecl=4000;
input
port an mois greng esp poids imin imax@;
do i=l to 300;
freq(i)=O;
end;

35
do i=imin to imax;
input freq(i)@;
end;
* if an ne 90 then delete;
* if greng ne 2 then delete;
file 'temppa.402';
isais=l;
if mois gt 3
and mois lt 10 then isais=2;
do i=l to 300;
if freq(i) gt 0 then put port an isais greng i freq(i);
end;
run;
/*
lecture fichier temp.aaa */
data d;
infile 'temppa.402';
input
port an isais greng i fr;
run;
proc sort data=d out=do;
by an;
run;
/*
sortie histogrammes par an
*/
*goptions hby=2 cells device=hp7550 rotate gaccess='sasgastd>/dev/ttyb/':
*goptions hby=2 device=xcolor
cback=WHITE colors=(BLACK) nodisplay;
*proc gslide gout=cc;
*title h=2 'Sardinelles plates par an';
*run;
goptions hby=2 cells;
title h=3;
patternl c=cyan v=L3;
proc gchart data=do gout=cc;
* filename gsasfile 'his3007';
filename gsasfile pipe 'lpr -Plw';
goptions hby=2 cells device=applelw
display
gprolog='2521ODOA'X
gaccess=gsasfile;
proc gchart data=do;
title h=2 'Sardinelles plates par an';
vbar i/sumvar=fr discrete midpoints=O to 34 by 2;
W
an;
run;
endsas;
/*
cette partie fait la sortie de 6 histos par page.
pour ce faire, les gchart precedants doivent sortir catalogue cc
et avec un nodisplay
annuie por ahora.... */
*filename gsasfile 'his3007';
*filename gsasfile pipe 'lpr -Plw';
*goptions hby=2 cells device=applelw
*
display
*
gprolog='25210DOA'X
*
gaccess=gsa.sfile;
goptions hby=2 cells device=hp7550 display rotate gaccess=‘sasgastd>/dev/ttyb’;
PROC GREPLAY NOFS GOUT=GREPLAY;
IGOUT cc;
list igout;
TC
TEMPLATE;

36
TUEF
T2x3 2 /
LLx=O
ULX=O
uRx=50
LR.x=50
LLY=60
ULY=90
URY=90
LRY=60
5 ! LL,X=50
ULX=50
uRx=100
LRx=lOO
LItY=
ULY=90
URY=90
LRY=60
3 /
LL,X=O
ULX=O
uRx=50
LRx=50
LLY=30
uLY=60
URY=60
LRY=30
6 / LLx=50 ULX=SO uRx=ioo
LRx=lOO
LL,Y=30
uLY=60
URY=60
LRY=30
4 /
LL,X=O
ULX=O
uRx=50
LRX=50
LL,Y=O
ULY=30
URY=30
LRY=O
7 / LLX=50 ULX=50 uRx=100
LRX=lOO
LLY=O
ULY=30
URY=30
LRY=O
1 /
LLX=O
ULX=O
uRx=95
LRx=95
L-LY=lO
ULY=99
URY=99
LRY=lO;
TEMPLATE T2x3;
TPLAY 1:l 2:2 3:3 4:4 5:5 6:6 7:7;
TPLAY 1:l 2:8 3:9 4:lO 5:ll 6:12;
TPLAY 1:l 2~13 3:14 4:15 5:16 6:17 7:18;
TPLAY 1:l 2:19 3:20 4:21 5:22 6:23;
run;
C
paloselt
III
#! /bin/csh
set NbParam = $#argv
if ( $NbParam != 1 ) then
echo "usage : 'basename $0' if ich .er sortie>"
exit
endif
if (-e $1) then
echo w le fichier de sortie existe deja"
exit
endif
echo II11 > $1
patsel ruf 86 $1
patsel ruf 87 $1
patsel mbo 90 $1
patsel oua 90 $1
patsel sar 90 $1
patsel sou 90 $1
patsel yof 90 $1
C
patsel

37
#! /bin/csh
set NbParam = $#argv
if ( $NbParam != 3 ) then
echo "usage : $0 NomDePort Annee Fichier"
exit
endif
set Port = $1
@ Annee = $2
set Fichi = $3
echo " "
echo "Traitement pour les donnees du port : $Port Annee : $Annee"
echo " "
echo " "
# CONSTRUCTION DES FICHIERS POUR EXECUTER LES COMMANDES
decomp
/home/mareme/crodt/pechart/pa/basepa/longpir/$Port$Annee.longpir
# TRAITEMENT
echo 'Lancement de pafrsel'
prfrsel $Port$Annee.longpir
#pafrsel
"$Port$Annee.longpir" "$ES~" >>! sortie.pafrsel
if (Sstatus == 0 ) then
echo 'status = 0'
cat sel.xxx>>$Fichi
endif
if- (Sstatus != 0 ) then
echo "erreur dans pafrsel
pour le port $Port annee $Annee"
exit
endif
echo "Compression des donnees"
alias rm rm
rm $Port$Annee.longpir
echo "That Al1 Folk's"'
#! /bin/csh
set NbParam = $#argv
if ( SNbParam != 2 ) then
echo "usage : $0 EspeceAncien EspeceNouveau"
exit
endif

38
Sf?t EspA = $1
@ EspN = $2
echo " "
echo "Traitement pour 1 espece
: $ES@~ SEspN
II
# CONSTRUCTION DES FICHIERS POUR EXECUTER LES COMMANDES
echo "/home/mareme/crodt/tmp/total.cqzdef"
>! espsel.par
echo "/home/mareme/crodt/tmp/sel.size"
>> espsel.par
echo " . ./engin.dat"
>> espsel.par
echo "total.cqz$EspA"
>> espsel.par
echo "sel.$EspN"
>> espsel.par
echo "
SEspA $EspN"
>> espsel.par
echo "sort -t$ +O.O -0.24 -osor.$EspN -235 sel.$EspN -T
/home/mareme/crodt/tmp -y" >! espsort
# TRAITEMENT
#if (! (-e "sel.tot:gtpa")) then
echo "sel.totgtpa n'existe pas"
t
exit
#endif
espsel
if: (Sstatus != 0 ) then
echo "erreur dans espsel"
exit
endif
echo 'Lancement de espsort'
espsort
if? ($status != 0 ) then
echo "erreur dans espsort"
exit
endif
r
patesp2
#! /bin/csh
set NbParam = $#argv
if ( SNbParam !- f! ) then
echo "usage : $0 EspeceAncien EspeceNouveau"
exit
endif
set EspA = $1
@ EspN = $2
echo " "
echo "Traitement pour 1 espece
: $E~pi4 SEspN
11
# CONSTRUCTION DES FICHIERS POUR EXECUTER LES COMMANDES

39
echo I'sort -t$ +O..O -0.24 -ofre.tmp -23346 freqext.$EspN -T /tmp -
Y” >! pafrsort
echo "fre.tmp"
>! pafrsub.par
echo "freqsub.$Esp~~~
>> pafrsub.par
echo "total.cqz$EspA"
>> pafrsub.par
echo "syntext.$EspN"
>> pafrsub.par
echo "pafrsub.$Esp~"
>> pafrsub.par
echo "
1
3
12
13
15" >> pafrsub.par
echo "
2
3
1
13
15" >> pafrsub.par
echo "
3
4
2
13
15" >> pafrsub.par
echo "
4
5
3
13
15" >> pafrsub.par
echo "
5
6
4
13
15" >> pafrsub.par
echo "
6
7
5
14
15" >> pafrsub.par
echo "
7
8
6
14
15" >> pafrsub.par
ec:ho "
8
9
7
14
15" >> pafrsub.par
ec:ho "
9
10
8
14
15" >> pafrsub.par
ec:ho "
10
11
9
14
15" >> pafrsub.par
echo "
11
12
10
13 15" >> pafrsub.par
echo "
12
1
11
13
15" >> pafrsub.par
# TRAITEMENT
echo 'Lancement de pafrsort'
pafrsort
if (Sstatus != 0 ) then
echo "erreur dans pafrsort"
exit
endif
echo 'Lancement de pafrsub'
pafrsub
if (Sstatus != 0 ) then
echo "erreur dans pafrsub"
exit
endif

4 0
ANNEXE 3: EXEMPLES DE SORTIES

4 1
ESPCTR.LST
The SAS System
1::08 Thursday, March 25, 195
Univariate Procedure
Variable=NHP
Moments
Quantiles(Def=S)
Extremes
1330
Sum Wgts
1 3 3 0
100% Max
2 2 6 1
9 9 %
1519
Lowest
Obs
Highest
Obs
Mearl
?31.8128
SWI
?08311
75% Q3
335
9 5 %
881
1 (
1231)
1790(
82
St.d 3ev
3 1 8 . 4 8 9
Variante
101435.2
50% Med
94
90%
645
; (
1221)
1823(
6s
SKewneS i
La.274866
Kurtosis
6 . 3 5 1 1 0 6
25% Ql
1 9
10%
6
: 1
1218)
1899(
5c
USS
7.0628E8
css
1.3481E8
0% Min
1
5 %
5
i 1
958)
2048(
62
c v
137.3906
Std Mean
8 . 7 3 3 1 0 3
1%
1
l(
900)
22671
8C
i':Me.an=i)
76.54415
Prob>lTI
c .OOOl
Range
2 2 6 6
Num *= '1
1330
Num > C
1 3 3 0
Q3-Ql
316
M (Si,gri)
665
Prob>lMI
c.0001
Mode
5
Sqn Rant
442551.5
Prob>ISI
c.0001
Univariate Procedure
Variable-NHP
Frequency Table
TercenLs
Percents
Percents
Percents
va 1 .JC! coun:
Ct??l
curr
va1 ue Count
Ce11
Cum
Value Count
Ce11
Cum
va 1 ue Count
ce11 :um
29 2.2
2.2
51
2
0 . 2 3 9 . 7
101
1
0.1 51.4
159
5
0 . 4 6 0 . 4
2
il
0.8
3 . 0
52
3
0 . 2 3 9 . 9
102
5
0 . 4 5 1 . 7
160
1
0 . 1 6 0 . 5
3
1 3
1.0 4.0
53
5
9.4 4 0 . 3
1 0 3
2
0 . 2
51.9
161
i
0 . 1 6 0 . 5
4
13 1.0 5.0
54
1
0 . 1 4 0 . 4
104
2
0 . 2
52.0
162
1
0 . 1 6 0 . 6
L;
61 4.7 9.6
55
3
0 . 2 4 0 . 6
105
5
0 . 4 5 2 . 4
163
2
0 . 2 6 0 . 8
6
7
0 . 5 1 0 . 2
56
6
0 . 5 4 1 . 1
107
2
0 . 2 5 2 . 6
164
1
0 . 1 6 0 . 8
-7
2 0
1 . 5 1 1 . 7
51
1
0 . 5 4 1 . 6
108
4
0 . 3 5 2 . 9
166
2
0 . 2 6 1 . C
8
7 0.5 12.2
58
2
0 . 2 4 1 . 7
109
2
0 . 2 5 3 . 0
167
3
0 . 2 6 1 . 2
9
12
0 . 9 1 3 . 1
59
1
0.1 41.8
110
5
0 . 4 5 3 . 4
168
2
0 . 2 61.4
:c
4 7
3 . 5 1 6 . 6
60
5
0 . 4 4 2 . 2
111
5
0 . 4 5 3 . 8
169
2
0 . 2 6?.5
;1
1:
0 . 8 17.4
61
4
0 . 3 4 2 . 5
113
4
0 . 3 5 4 . 1
170
2
0 . 2 6 1 . 7
12
21
1 . 6 1 9 . 0
62
3
0 . 2 4 2 . 7
114
1
0.1 54.1
172
3
0 . 2 6 1 . 9
-.
13
I 0.5 19.5
63
1
0.1 42.8
115
3
0.2
54.4
175
2
0 . 2 6 2 . 0
:4
l?
C.9 20.5
64
2
0 . 2 4 2 . 9
118
1
0.1
54.4
176
1
0.1 62.1
: t:
2 7
2.0
22.5
65
7
0 . 5 4 3 . 5
119
1 0.1
54.5
il1
1
0 . 1 6 2 . 2
:6
11 0.8
23.3
66
3
0 . 2
43.7
120
3
0 . 2
54.7
178
1
0 . 1 6 2 . 3
: i
8
0 . 6 2 3 . 9
61
s
3 . 4 44.;
121
1
0.1 54.8
180
2
0 . 2 6 2 . 4
18
5
.
24.3
68
3
3 . 2 4 4 . 3
1 2 2
1
0.1
54.9
181
2
0 . 2 6 2 . 6
19
li 0.8 25.1
6 9
5
0 . 4 4 4 . 7
1 2 3
1
0.1 55.0
183
1
0.1 62.6
20
18
1.4 2 6 . 5
7 0
8
0 . 6 4 5 . 3
124
2
0 . 2 5 5 . 1
184
1
0 . 1 6 2 . 7
?l
s
0 . 4 2 6 . 8
71
3
0 . 2 4 5 . 5
1 2 5
1
0.1 55.2
!ES
2
0 . 2 6 2 . 9
22
9
0 . 7 2 7 . 5
72
2
0 . 2 4 5 . 6
1 2 6
2
0 . 2 5 5 . 3
187
1
0.1
62.9
23
3
0.2
27.7
1 3
2
0 . 2 4 5 . 8
1 2 8
1
0.1 55.4
188
3
0 . 2 6 3 . 2
24
2
0 . 2 2 7 . 9
74
4
0 . 3 4 6 . 1
129
3
0 . 2
5 5 . 6
189
1
0.1 63.2
25
13
1 . 0 2 8 . 9
15
3
0 . 2 4 6 . 3
130
3
0 . 2 5 5 . 9
191
2
0 . 2 6 3 . 4
2 6
6
0 . 5 .29.3
7 6
3
0 . 2 4 6 . 5
131
4
0 . 3 5 6 . 2
i92
4
0 . 3 6 3 . 7
2i
1
0 . 1 2 9 . 4
II
4
0 . 3 4 6 . 8
132
5
0 . 4 5 6 . 5
:93
1
0 . 1 6 3 . 8
28
5
0 . 4 2 9 . 8
78
1
0.1 46.9
133
2
0 . 2 5 6 . 7
L94
3
0 . 2 6 4 . 0
29
5
0 . 4 .30.2
7 9
2
0 . 2 4 7 . 1
134
2
0 . 2 5 6 . 8
195
3
0 . 2 6 4 . 2
30
9
0 . 7 .30.8
80
3
0 . 2 4 7 . 3
1 3 5
2
0 . 2 5 7 . 0
196
3
0 . 2 6 4 . 4
31
8
0 . 6 .3!.4
81
1
0.1 47.4
1 3 6
1
0.1 57.1
197
2
0 . 2 6 4 . 6
.i?
9
0 . 7 .32.1
82
3
0 . 2 4 1 . 6
1 3 7
2
0 . 2 5 7 . 2
198
1
0 . 1 6 4 . 7
33
8
0 . 6 :32.7
83
2
0 . 2 4 7 . 7
138
2
0 . 2 5 7 . 4
200
2
0 . 2 6 4 . 8
34
1
0.1 .32.8
84
1
0.1
47.8
139
2
0.2
5 1 . 5
201
2
0 . 2 6 5 . 3
3 5
13
1.0 33.8
85
4
0 . 3 4 8 . 1
140
2
0 . 2
57.7
Z?O2
2
0.2
65.1
36
4
0 . 3 .34.1
8 6
2
0 . 2 4 8 . 3
141
1
0.1
5 7 . 1
,704
2
0 . 2 6 5 . 3
3 ?
3
0 . 2 .34.3
87
2
0 . 2 4 8 . 4
142
1
0.:
57.8
2 0 6
1
0 . 1 6 5 . 3
38
3
0 . 2 .34.5
88
3
0 . 2 4 8 . 6
143
2
0 . 2 5 8 . 0
207
2
0 . 2 6 5 . 5
7 9
5
0 . 4 .34.9
8 9
2
0 . 2 4 8 . 8
144
1
0.1 58.0
.?08
1
0 . 1 6 5 . 6
40
15
i.1
3 6 . 0
90
6
0 . 5
49.2
145
2
0 . 2 5 8 . 2
.? 0 9
1
0.1 65.6
41
4
0 . 3 :30.3
91
5
0 . 4 4 9 . 6
1 4 6
2
0 . 2 5 8 . 3
:! 10
4
0 . 3 6 5 . 9
42
7
0 . 2 :36.5
92
1
0.1 49.7
147
3
0 . 2 5 8 . 6
2 1 1
1
0.1 66.0
43
4
0 . 3 3 6 . 8
93
1
0.1 49.8
148
2
0 . 2 5 8 . 7
.? 15
1
0.1
66.1
44
5
0.4 37.1
94
4
0 . 3 5 0 . 1
150
2
0 . 2
5 8 . 9
:?17
1
0 . 1 6 6 . 2
45
8
0 . 6 :37.7
95
2
0 . 2 5 0 . 2
151
2
0 . 2 5 9 . 0
;? 18
1
0 . 1 6 6 . 2
46
2
0 . 2 37.9
96
3
0 . 2 5 0 . 5
152
3
0 . 2 5 9 . 2
2 19
1
0.1
66.3
47
4
0 . 3 3 8 . 2
97
3
0 . 2 SO.7
154
2
0 . 2 5 9 . 4
220
1
0.1 66.4
48
3
0 . 2 3 8 . 3
98
2
0 . 2 5 0 . 8
1 5 5
4
0 . 3 5 9 . 7
722
1
0 . 1 6 6 . 5
49
5
0 . 4 3 8 . 7
99
3
0 . 2 5 1 . 1
157
1
0 . 1 5 9 . 8
:?23
1
0.1
66.5
ic
1:
0 . 8 3 9 . 5
100
3
0 . 2 5 1 . 3
158
3
0 . 2 6 0 . 0
224
1
0.1 66.6

4 2
/
301: *
250 + *****
/
*****
***r*
/ *****
; ***ii
200 i *****
/ ***I<f
, ****1
/
*****
i

*****
15:) * *a***
i
*ta**
/
***** *****
/ t**** *****
/
***t* *****
10() + ***** *****
I
****t i**** *****
***** ri*** *****
i
****t ***t* ***** *****
***.* ***** ***t* *****
j,)
+
*****
*****
*****
*****
*****
*****
*****
*****
*****
r****
*****
*****
*****
*****
*****
*****
*****
/

A***"
*****
*****
*****
*****
*****
*****
*****
***** *****
*****
*****
f*"*"
***a1
*****
*lie**
*****
*****
*****
*****
*****
*****
*****
*****
/

r*.,*
***“*
l **.*
****ch

i****

t****
****i

*****
*****
*****
*****

*****
____________________------------------------------------------------------------------
ii
eoa
16CO
2400
3200
4000
4800
5600
6400
7200
8000
8800
FAC Midpoint

4 3
PAFRSUU. 402
strate mauvaise
strate utilisee
port-
annee mo
g-w
capt
mo
w-g
pech
1 :,
81
2
3
2.1
16
3
3538.
1 :1
81
5
3
34.3
16
3
3538.
1 :1
81
6
3
112.3
5
3
34.
11
81
1
3
76.1
6
3
112.
1 :t
81
9
3
5.7
16
3
3538.
1 :t
81
10
3
6.8
9
3
6.
1 :t
81
12
3
8.1
16
3
3538.
1 :t
81
2
5
86727.3
1
5
140612.
1 :t
81
3
5
29533.3
2
5
86121.
11
81
4
5
7100.0
3
5
29533.
11
81
5
5
686.0
4
5
7700.
1. :t
81
6
5
6987.3
1
5
80183.
1 :t
81
8
5
2309.8
7
5
80183.
3.1
81
9
5
458.5
8
5
2310.
1 :t
81
10
5
1.8
11
5
113881.
1 :t
81
12
5
5720.6
1
5
140612.
1 :t
82
1
3
10.1
16
3
88543.
1 :t
82
3
3
2.2
16
3
88543.
1 1
82
5
3
13.7
16
3
88543.
1 :t
82
6
3
4321.1
5
3
14.

.

_.
-

-

-
TARSUBST.
(Début)
LST
44

4

5

4
m
m
m in
“,
2 m c: “.
PAFRELTO. LST


PAHISTO
Sardinelles plates par an
A N - 8 1
70000c00
6 0 0 0 0 0 0 0
5 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0
2 Cl 0 0 cl 0 0 0
1 0 0 0 3 0 0 0
0
0
2
4
6
8 10
1%
14 16 18 20 22 24
26 28 30
3 2
3 4