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-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2022-2024.