message pour un ami 
Author Message
 message pour un ami

je rencontre quelques  problmes  pour rsoudre mon travail,
pourriez-vous m'aider

1. voici l'nonc:

Le programme sert la conversion dun nombre dcimal en binaire ou dun

nombre binaire en dcimal.
Le nombre convertir se trouve dans un enregistrement lu dans le
fichier ? AIQ9804.DAT ? qui, part le nombre ne contient que des
blancs.
Dans une CSECT1, on cherche le nombre. Il est prcd par un D sil est
en dcimal, par un B sil est en binaire, dans ce dernier cas, il nest
compos que de 0 et/ou de 1.
On passe une CSECT2   lenregistrement lu, la base et le nombre.
Dans CSECT2, on procde   la mise en page et limpression, sur 2
lignes, de :
- lenregistrement lu
- la base de dpart, le nombre de dpart et le nombre converti suivis de

leur signes si <0.

Si le nombre est dcimal, il aura 8 positions maximum,
Si le nombre est binaire, il aura 30 positions binaires maximum et sera
imprim avec les 30 bits. Le premier bit dterminant le signe (0 si >= 0

et 1 si <0 ).

2. voici les conseils de mon prof:

Pour la recherche de B et D, il il y mieux en n'utilisant qu'un TRT en
en analysant ensuite le contenu du reg 2.
Pour facilier le prog : verifier les donnes dans le PP en initialisant
des var qui seront passes au sous prog en utilisant une DSECT
cf : l'enreg, un code permettant de dterminer la base du nombre de
dpart, une var en PACKED destine la val dc et une var car de 30
bytes pour le code binaire.
rem si le nombre de dpart est en binaire, initialiser la var que l'on
passe en paramtre avec le premier chiffre 0 ou 1 (nbre pos ou ng) puis

y recopier le code binaire avec un alignement droite (il y a moyen
d'utiliser un EX)
Et puis on fait appel au sous prog. qui ralise la conversion et
l'impression.
rem il y a moyen d'utiliser les instruction CVB et CVD pour passer de la

base 10 vers la base 2 et rciproquement. Pour exploiter le nombre en
base 2, utilisation d'un shift avec un couple de reg.

merci,
Fran?ois Piret

[ Csect2.alc 1K ]
* utilisation des registres:                    *
* #10 = booleen pour voir si appel 1 ou 2       *
*                                               *

CSECT2  CSECT
        STM     14,12,12(13)
        BALR    3,0
        USING   *,3
        * mettre les lignes d'edition a blanc *
        MVC     LGN,BLA
        MVC     LGN2,BLA
        ST      13,SAVEAP+4
        LA      12,SAVESP
        ST      12,8(13)
        LR      13,12
        L       13,4(13)
        LM      14,13,12(13)
        * voir si 1er appel ou 2eme *
        C       10,=X'1'
        BNE     APPEL2
        * sortir l'engt de depart *
APPEL1  LA      1,1(1)
        MVC     LGN1+1,0(30,1)
        XPRNT   LGN1,31
        B       FIN
        * sortir la base de depart, le nbre de depart et le nbre converti *
APPEL2  C       11,=X'1'
        BNE     DEC
        * cas de Binaire -> decimal *
BIN     MVC     LGN2+1(8),=C'BINAIRE '

        * cas de decimal -> binaire *
DEC    
RETOUR  LM      14,12,12(13)
        BR      14

        END
* declaration des variables *
ENGT    DS      CL80      
LGN1    DC      CL31
LGN2    DC      CL80
BLA     DC      C' '
SAVESP  DS      18F
MASK    DC      X'402021202020202020'

[ Dossier.alc 4K ]
* UTILISATION DES REGISTRES:          *
* #1=utilis? par le TRT               *
* #4=calcul de la puissance           *
* #5=Debut de l'engt                  *
* #6=Fin de l'engt                    *
* #7=utilis? pour la v?rification     *
* #9=adresse de ligne                 *
* #10= booleen (=1 pour 1er appel     *
*      de la sortie et =2 sinon )     *
* #11= 1 si binaire, sinon 2          *
***************************************        

        TITLE   'CONVERTION B->D / D->B'
CSECT1  CSECT   *MAIN*
        BALR    3,0
        USING   *,3
        XFILI   =C'AIQ9804.DAT'
        XFILO   =C'AIQ9804.LST'
        XREAD   ENGT,80
        MVC     LGNERR,BLA
* recherche de l'enregistrement et de son type *
        TRT     ENGT,SEEKB      * recherche du B *
        BZ      D
        B       BINAIRE
D       TRT     ENGT,SEEKD      * recherche du D *
        BZ      ERROR1          * l'engt ne commence ni par D ni par B *
        B       DECIMAL

* analyse de la base et convertion *
* binaire *

BINAIRE LA      5,1(1)           * #5= adresse du premier caractere binaire *
        * 1er appel de la csect2 *  
        L       10,=X'1'         * mettre 1 ds #10 car 1er appel *
        L       11,=X'1'
        ST      14,SAVE14
        LA      13,SAVEAP
        L       15,=V(SP)              
        BALR    14,15

        C       5,=C'1'
        BH      COMPL            * nombre negatif *        
        * trouver la fin de l'engt *
        TRT     0(30,5),TFINB
        LR      6,1
        SR      1,5
        CVD     1,LONG
        * verifier que l'engt n'est compose que de 0 et de 1 *
        ZAP     INDICE,=P'1'
        ZAP     I,=P'0'
        LR      7,5
BCL     CP      INDICE,LONG
        BNL     SUITE
        TRT     0(1,7),TBIN
        BZ      ERROR2           * L'engt n'est pas compose que de 0 et 1 *
        LA      7,1(0,7)
        AP      INDICE,=P'1'
        B       BCL
SUITE   C       5,=C'1'
        BH      COMPL            * nombre negatif *        
BCL2    CR      5,6
        BE      FINBIN
        CVB     I,4
IF      C       6,=C'1'
        BNE     ENDIF
BCLPUI  AP      NOMBRE,=P'2'        
        BCT     4,BCLPUI         * calcul de l'exposant *
ENDIF   AP      I,=P'1'
        BCTR    6,0              * adresse precedante *
        B       BCL2
COMPL   * utiliser un TR ? *        
FINBIN  * appeler la csect2 *

* decimal *

DECIMAL LA      5,1(1)           * #5= adresse du premier caractere ZONED *
        * 1er appel de la csect2 *
        L       10,=X'1'         * mettre 1 ds #10 car 1er appel *
        ST      14,SAVE14
        LA      13,SAVEAP
        L       15,=V(SP)              
        BALR    14,15

        * trouver la fin de l'engt *
        TRT     0(30,5),TFIND
        LR      6,1
        SR      1,5
        CVD     1,LONG
        * verifier que l'engt est bien du zoned *
        ZAP     INDICE,=P'1'
        ZAP     I,=P'0'
        LR      7,5
BCL3    CP      INDICE,LONG
        BNL     SUITE2
        TRT     0(1,7),TDEC
        BZ      ERROR3           * L'engt n'est pas du ZONED *
        LA      7,1(0,7)
        AP      INDICE,=P'1'
        B       BCL3
        LA      9,LGN
SUITE2  PACK    NOMBRE,          * comment packer le nombre sur une longueur LONG??? *      
        CP      NOMBRE,=P'0'
        BL      DECNEG
DECPOS  DP      NOMBRE,=P'2'
        ZAP     RESTE,NOMBRE+7(1)
        ZAP     NOMBRE,NOMBRE(7)
        CP      RESTE,=P'1'  
        BL      ZERO
        L       9(1),=P'1'
        B       CARSVT
ZERO    L       9(1),=P'0'
CARSVT  LA      9,1(9)
        B       DECPOS
DECNEG  * ???? *
FINDEC  TR     LGN,TABINV       * inverser les 0 et les 1 *

        END
* declaration des variables *

ENGT    DC      CL80
SEEKB   DC      194X'0',X'B',61X'0'
SEEKD   DC      196X'0',X'D',59X'0'
TBIN    DC      240X'0',2X'1',14X'0'
TFIND   DC      64X'0',X' ',191X'0'
TFINB   DC      64X'0',X' ',191X'0'
TDEC    DC      192X'0',10X'C',6X'0',10X'D',16X'0',10X'F',6X'0'    
TABINV  DC      * ????????????????????? *
LONG    DC      PL2
INDICE  DC      PL2
I       DC      PL2
LGN     DC      CL30
SAVEAP  DS      18F
LGNERR  DC      CL80
BLA     DC      CL' '



Tue, 19 Jun 2001 03:00:00 GMT  
 message pour un ami
Je vais regarder ca aujourd'hui. Pierre.


Wed, 20 Jun 2001 03:00:00 GMT  
 
 [ 2 post ] 

 Relevant Pages 

1. Fichier Rexx pour initialiser un Modem Hayes 144

2. Fichier Rexx pour utiliser un Modem Hayes 144

3. Trouver un compilateur cobol pour pc

4. projet cobol pour un etudiant

5. Como puedo desplegar un front panel en un cliente mediante un programa cliente/servidor

6. guide pour clipper s97 pour ng.exe

7. Problème pour écrire un mot de passe dans un fichier binaire.

8. signification d un message d erreur

9. ouverture d'un fichier en mode partagé sur un reseau

10. ouvrir notepad et un fichier de type texte depuis un VI

11. Un petit coucou d'un iut

12. un-USE an un-inLine VRML world

 

 
Powered by phpBB® Forum Software