IDP         "DELETE FILE - RELEASE 01/06/1979"
         IDP         "JOHN F. COLONNA"
         EOT         #SIP DEFINITION CMS5#
<
<
<        E N - T E T E   D U   P R O C E S S E U R  :
<
<
         LOCAL
ZERO:    EQU         $
         DZS         'B
         ASCI        "DF    "        < NOM DU PROCESSEUR COMPATIBLE
                                     < AVEC !GE.
         BYTE        '04;'D0         < <EON>-'P'+'80.
         WORD        '200            < NBRE D'OCTETS NECESSAIRE AU
                                     < RUN DE DELETE-FILE (DESTINE
                                     < A !CALL).
         WORD        PDELF           < @DE RUN DE DELETE-FILE (DESTINE
                                     < AUX APPELS PAR !GE ET AUX
                                     < APPELS DIRECTS PAR CCI).
         WORD        LOC+'80         < VALEUR INITIALE DE LA BASE L.
<
<
<        I N I T I A L I S A T I O N   D U   P R O C E S S E U R  :
<
<
         PROG
PDELF:   EQU         $               < @DE RUN DE DELETE-FILE (P='12).
         LRP         L
         LA          -1,L
         LR          A,L             < INITIALISATION DE L.
         BR          -'80,L          < ET C'EST PARTI ...
         PAGE
<
<
<        L O C A L  :
<
<
         LOCAL
LOC:     EQU         $
         WORD        DELETE          < @DE L'ENTRY DU PROCESSEUR.
<
<        C A R T E S   D E   C O N T R O L E   P R O G R A M M E E S  :
<
         IF          ORDI-"T",XWOR%,,XWOR%
M1:      ASCI        "!SGN"          < CARTE D'APPEL DE SGN PAR CCI.
         BYTE        '04;0           < EOT DE FIN DE CARTE.
M2:      ASCI        "!ASSIGN 3="    < CARTE DE DESASSIGNATION DU NVP=3.
         BYTE        "R";'04
M3:      ASCI        "!ASSIGN 3=O,"  < CARTE D'OPEN DU NVP=3 SUR
                                     < UN FICHIER EN MODE OLD.
XWOR%:   VAL         0
         IF          ORDI-"S",XWOR%,,XWOR%
M3:      ASCI        "!ASSIGN 9=D-"
XWOR%:   VAL         0
FILE:    DZS         20              < NOM DU FICHIER A DELETER ,
                                     < TERMINE COMME TOUS LES NOMS
                                     < PAR UN EOT.
M4:      BYTE        '6D;"F"
         ASCI        "ILE="          < MESSAGE D'INVITATION A ENVOYER
                                     < LE NOM DU FICHIER A DELETER.
M5:      BYTE        '6D;"?"
         ASCI        "? "            < MESSAGE D'ERREUR DE DELETE-FILE
                                     < COMPATIBLE AVEC LE MESSAGE
                                     < D'ERREUR DU CCI.
         IF          ORDI-"T",XWOR%,,XWOR%
M6:      ASCI        "!ASSIGN 3="
         BYTE        "S";'04
M7:      ASCI        "!ASSIGN 4="
         BYTE        "S";'04
M8:      ASCI        "!ASSIGN 5="
         BYTE        "S";'04
M9:      ASCI        "!ASSIGN 6="
         BYTE        "S";'04
M10:     ASCI        "!ASSIGN 7="
         BYTE        "S";'04
M11:     ASCI        "!ASSIGN 8="
         BYTE        "S";'04
XWOR%:   VAL         0
M12:     ASCI        "!ASSIGN 9="
         BYTE        "S";'04
<
< ADRESSES :
<
ACCI:    WORD        CCI             < ROUTINE APPEL CCI INTERPRETATIF.
<
<        D E M A N D E S   A   C M S 4  :
<
DEMERR:  WORD        '0202           < ENVOI DU MESSAGE D'ERREUR.
         WORD        M5-ZERO*2
         WORD        3
CCI1:    WORD        '0001           < RETOUR AU CCI.
CCI2:    WORD        '0002           < ACCES AU CCI NON INTERACTIF.
         WORD        0               < @OCTET DE LA CARTE DE CONTROLE
                                     < PROGRAMMEE DESTINEE AU CCI
                                     < NON INTERACTIF.
         WORD        80              < 80 CARACTERES MAX.
         IF          ORDI-"T",XWOR%,,XWOR%
DEMSGN:  WORD        '0302           < DEMANDE DE DELETE-NOM AU SGN.
         WORD        FILE-ZERO*2     < @OCTET DU NOM A DELETER.
         WORD        40              < LONGUEUR MAX.
         WORD        -1
XWOR%:   VAL         0
DEMOUT:  WORD        '0202           < ENVOI DU MESSAGE D'INVITATION.
         WORD        M4-ZERO*2
         WORD        6
DEMIN:   WORD        '0101           < ENTREE DU NOM DU FICHIER
                                     < A DELETER.
         WORD        FILE-ZERO*2
         WORD        40
<
<        P I L E   D U   P R O C E S S E U R  :
<
PILE:    DZS         4
         PAGE
<
<
<        P R O C E S S E U R   D E   D E L E T E - F I L E  :
<
<
<        FONCTION :
<                      CE PROCESSEUR DESASSIGNE LES
<                    NVP DE '03 A '09, PUIS DEMANDE
<                    LE NOM DU FICHIER , FAIT UN OPEN OLD
<                    DESSUS , PUIS UN CLOSE RELEASE ,
<                    ET APRES S'ETRE ASSIGNE AU SGN , ENVOIE
<                    UNE DEMANDE DE DELETE DU NOM DU FICHIER
<                    DANS L'ESPACE UTILISATEUR . POUR
<                    TERMINER CE FESTIVAL , IL DESASSIGNE.
<
<
         PROG
DELETE:  EQU         $               < ENTRY.
         LAD         PILE-1
         LR          A,K             < INITIALISATION DU REGISTRE K.
         IF          ORDI-"T",XWOR%,,XWOR%
<
< INHIBITION DU ALT-MODE :
<
         LAI         -1
         WORD        '1EB5           < INHIBITION DU ALT-MODE SOLITAIRE.
         LAI         '1B             < A=CTRL-SHIFT-K.
         WORD        '1EA5           < CHANGEMENT DU CARACTERE ALT-MODE.
<
< LIBERATION DES NVP '03 A '09 :
<
         LAD         M6              < !ASSIGN 3=S.
         BSR         ACCI
         LAD         M7              < !ASSIGN 4=S.
         BSR         ACCI
         LAD         M8              < !ASSIGN 5=S.
         BSR         ACCI
         LAD         M9              < !ASSIGN 6=S.
         BSR         ACCI
         LAD         M10             < !ASSIGN 7=S.
         BSR         ACCI
         LAD         M11             < !ASSIGN 8=S.
         BSR         ACCI
XWOR%:   VAL         0
         LAD         M12             < !ASSIGN 9=S.
         BSR         ACCI
<
< DEMANDE DU NOM DU FICHIER A DELETER :
<
         LAD         DEMOUT
         SVC         0               < ENVOI DU MESSAGE 'FILE='.
         LAD         DEMIN
         SVC         0               < LECTURE DU NOM DU FICHIER.
<
< OUVERTURE EN OLD DU FICHIER :
<
         LAI         M3-ZERO*2
         STA         CCI2+1
         LAD         CCI2
         SVC         0               < ENVOI DE !ASSIGN 3=O,<NOM>.
         JNE         ERREUR          < L'OUVERTURE EST IMPOSSIBLE ,
                                     < ABANDON DU PROCESSEUR.
         IF          ORDI-"T",XWOR%,,XWOR%
<
< RELEASE DU FICHIER SI L'OPEN EST OK :
<
         LBI         M2-ZERO*2
         STB         CCI2+1
         SVC         0               < ENVOI DE !ASSIGN 3=R.
         JNE         $               < BIZARRE ???
<
< ACCES A L'ESPACE DES NOMS :
<
         LBI         M1-ZERO*2
         STB         CCI2+1
         SVC         0               < ENVOI DE !SGN.
<
< DELETE DU NOM DU FICHIER DANS L'ESPACE
< DES NOMS DE L'UTILISATEUR :
<
         LAD         DEMSGN
         SVC         0               < ENVOI DE LA DEMANDE DE DELETE.
         JNE         $               < BIZARRE ???
<
< RELEASE DES NVP OCCUPES PAR !SGN :
<
         LAI         M2-ZERO*2
         STA         CCI2+1
         LAD         CCI2
         SVC         0               < ENVOI DE !ASSIGN 3=R.
XWOR%:   VAL         0
<
< RETOUR AU CCI INTERACTIF :
<
E1:      EQU         $
         LAD         CCI1
         SVC         0               < RETOUR A CMS4.
         JMP         DELETE          < AU CAS OU UN !GO A ETE RECU.
<
< SORTIE EN ERREUR DE DELETE-FILE :
<
ERREUR:  EQU         $
         LAD         DEMERR
         SVC         0               < ENVOI DU MESSAGE D'ERREUR.
         JMP         E1              < VERS LA SORTIE DU PROCESSEUR.
<
<
<        A P P E L   C C I   I N T E R P R E T A T I F  :
<
<
<        ARGUMENT :
<                    A=@MOT DE LA CARTE A INTERPRETER.
<
<
CCI:     EQU         $
         SLLS        1               < A=@OCTET DE LA CARTE.
         STA         CCI2+1          < MISE DANS L'APPEL CCI.
         LAD         CCI2
         SVC         0               < APPEL CCI INTERPRETATIF.
         RSR
         PAGE
<
<
<        V A L I D A T I O N   I M P L A N T A T I O N  :
<
<
X120:    VAL         $-ZERO          < LONGUEUR DE !CALL.
X120:    VAL         '3EF-X120       < LONGUEUR DISPONIBLE JUSQU'A 1K.
ZEROV:   EQU         ZERO+X120       < ERREUR VOLONTAIRE D'ASSEM-
                                     < BLAGE SI MAUVAISE IMPLANTATION.
         END         PDELF



Copyright © Jean-François Colonna, 2022-2022.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2022-2022.