Apprenez par lexemple!
Cest ce que jai toujours fait, et ce que je consid�re toujours �tre la meilleure fa�on dapprendre un nouveau langage de programmation. Prenez un programme d�j� existant et lisez-le. Vous y verrez tout ce quil y a � savoir sur la syntaxe, comment indiquer les commentaires, ainsi que plusieurs instructions.
Une fois ces connaissances acquises vous pouvez commencer � programmer vous-m�me, avec � vos c�t�s le "DCL Dictionary" ou alors la toujours pratique commande HELP.
Voici donc pour vous un petit exemple de programme. Il fait intentionellement usage de plusieurs "constructs", boucles, sous-routines et autres pour vous donner un aper�u de ce que vous pouvez faire avec DCL. Bien entendu, j'ai choisi d'utiliser des moyens plus compliqu�s que n�cessaires � certains endroits, histoire d'introduire quelques instructions DCL. Je crois qu'il est quand m�me facile d'identifier o� j'ai un peu trop forc�! L'usage des minuscules et majuscules dans le code est un choix personnel.
$!------------------------------------------------------------------------------ |
Voyons cela plus en d�tail...
$STATUS | Ce symbole est mis � jour � l'ex�cution de chaque
commande. Vous pouvez l'utiliser pour v�rifier le r�sultat (succ�s ou erreur) et pour signifier ce r�sultat � une proc�dure appelante. Voyez la fonction
lexicale F$MESSAGE(). Sauvegardez sa valeur si vous comptez l'utiliser dans le futur car elle sera chang�e � la prochaine instruction que vous ferez ex�cuter. Dans la m�me optique, le syst�me tient aussi � jour le symbole $SEVERITY. |
ON CONTROL_Y | Que faire si l'utilisateur d�cide de stopper l'ex�cution de la proc�dure. On pourrait aussi emp�cher un arr�t par l'utilisateur en employant SET NOCONTROL = Y. |
P1..P8 | Les param�tres P1 � P8 peuvent �tres donn�es � une proc�dures. |
ON ERROR | Que faire en cas d'erreur (on peut d�terminer la s�v�rit� des erreurs � contr�ler avec ON WARNING, ON SEVERE). |
SYS$OUTPUT | C'est la sortie par d�faut (�cran, ou fichier .LOG pour une ex�cution en lot (batch). C'est l� qu'on peut �crire les messages � l'intention de l'utilisateur. |
Symbole de commande | Un symbole de commande est un genre de raccourci pour une commande fr�quemment utilis�e. |
DEFINE | Assignation de nom logique |
�tiquette: | Commun�ment appel� label. Pour faire des branchements, mais j'ai l'habitude d'en mettre un peu partout pour d�limiter les actions et clarifier le code. |
F$SEARCH() | Fonction lexicale qui retourne les noms des fichiers demand�s, un par un. La fin de la liste est indiqu�e par une cha�ne vide. |
F$PARSE | Fonction lexicale permettant d'extraire les composantes (disque, r�pertoire, etc) d'une sp�cification de fichier. |
F$LOCATE | Fonction lexicale permettant de trouver la position d'une cha�ne de caract�res dans une autre. Si la valeur retourn�e �gale la longueur de la cha�ne de caract�res examin�e c'est qu'on n'a pas trouv�. Le premier caract�re est � la position z�ro. |
Concat�nation et soustraction | On peut concat�ner des cha�nes de caract�res en employant le + (addition). De m�me, on peut retirer des caract�res d'une cha�ne en employant le - (soustraction). |
F$TYPE | Fonction lexicale permettant de d�terminer si un symbole est d�fini et de quel type (caract�re ou num�rique) il est. Les symboles ne sont pas d�clar�s explicitement, mais dynamiquement la premi�re fois qu'on leur assigne une valeur. |
GOTO | Il n'y a pas de commande d'it�rations. L'utilisation judicieuse de GOTO ne nuit pas � la clart� du code mais est r�ellement n�cessaire. |
OPEN | On peut lire ou cr�er des fichiers avec DCL. M�me des fichiers index�s. |
F$ELEMENT | Fonction lexicale permettant d'extraire des �l�ments d'une liste d'items s�par�s par un caract�re quelconque. |
F$FAO | Fonction lexicale utilis�e pour formatter des donn�es. Ici, une valeur num�rique d'une longueur de 8 caract�res avec z�ros non-significatifs. |
CALL | Appel d'une sous-routine. Obtenez plus d'informations ici. |
SUBROUTINE | Utilisation tout � fait superflue ici pour lieu de d�monstration. Une sous-routine se comporte exactement comme une autre proc�dure appel�e avec @ et est r�gie par les m�mes r�gles (symboles locaux/globaux, etc). En passant, rien n'emp�che de mettre une instruction sur la m�me ligne qu'une �tiquette comme je l'ai fait ici. |
F$EXTRACT | Fonction lexicale utilis�e pour extraire des caract�res d'une cha�ne. Employ�e ici pour s�parer les 2 informations provenant du fichier TMP_File et lues dans le symbole TMP_Rec. |
F$INTEGER | Fonction lexicale qui converti des caract�res (de 0 � 9) en valeur num�rique. |
SORT | On trie notre fichier de travail. |
EndSubroutine | Marque la fin de la sous-routine. Pas une instruction ex�cutable en tant que telle mais d�limite le code. Tiendra lieu implicitement de la commande EXIT en son absence. |
DELETE | On fait notre petit m�nage. J'utilise toujoure
/NOCONFIRM/NOLOG dans les proc�dures pour m'assurer que peut importe l'environnement de
l'utilisateur aucun message ne sera affich� ( Ex. Si DEL*ETE:==DELETE/CONFIRM/LOG dans le LOGIN.COM de l'utilisateur). |
Apostrophe | On peut substituer dans une commande la valeur d'un symbole. Apprenez tout � ce sujet ici. |
F$FILE_ATTRIBUTES | Fonction lexicale utilis�e pour obtenir de l'information sur un fichier. Ici, le nombre de blocks qu'il occupe. |
EXIT | Annonce la fin de la proc�dure. Optionnellement, on peut terminer avec succ�s ou en erreur en donnant la valeur de retour appropri�e. |