Particularités d'IDMS
Voici quelques-unes des particularités
du langage ULTIM qui s'appliquent au traitement des bases de données
IDMS. Plusieurs de celles-ci sont illustrées dans
l'exemple qu'on retrouve plus loin.
- Possibilité de convertir automatiquement des
portions ou l'ensemble du dictionnaire IDD en dictionnaire ULTIM.
- Relations entre enregistrements ou
entre enregistrements et index décrites dans les énoncés
PARENTS codés ou générés.
- Gestion automatique des protocoles de liaison avec les bases.
- Mots-clés supplémentaires dans
l'énoncé TRAITER pour reprendre la lecture d'un
type d'enregistrement à partir d'une occurrence particulière, de
l'avant ou à reculons (PREMIER, DERNIER, SUIVANT ou
PRECEDENT).
- Possibilité de traitement selon
l'ordre de l'un des ensembles décrits pour un type d'enregistrement (paramètre SELON), incluant les index SPF et
les index intégrés.
- Lecture des enregistrements fils faite
automatiquement selon l'ensemble qui les lie à l'enregistrement
parent déjà lu. Ainsi,
dans l'exemple, seuls seront lus les enregistrements secondaires RECNAME appartenant à l'enregistrement principal RECCUST.
- Possibilité de retrouver des enregistrements parents (PARENT DE) selon les différents ensembles
décrits au dictionnaire.
- Possibilité d'accéder directement à un enregistrement principal ou à un enregistrement fils par sa clé
CALC ou sa "DB-KEY".
- Accès à la "DB-KEY" de l'enregistrement traité,
de même qu'au code de retour de l'opération.
Exemple
de dictionnaire codé ou généré automatiquement
à partir du dictionnaire IDD
./
OPTIONS DB-NAME=PROD
; Base de données de production
./*
Information sur les divisions
./ IDMS DIVISION, SCHDIV, AREAGEN, RECDIV, 102, DIVKEY
VALEUR (79, N, 8.2, 10,
@ED:$)
./*
Information de base sur le client
./ IDMS CLIENT, SCHBASE, AREAINFO, RECCUST, 102,
CUSTKEY
./
PARENTS RECDIV(SETDIV), RECDIV(SETSECT,SECTEUR)
NO-COMPTE
(16, N, 7)
SECTEUR
(73, A, 6)
SOLDE (79, N, 8.2, 10,
@ED:$) DERNIER-PAIEMENT (87, N,
8, 10, @ED:@DATE)
./*
Nom et adresse du client
./ IDMS NOMADR , SCHBASE, AREAINFO, REC NAME, 105, CUSTNAME
./
PARENTS RECCUST (SETCUST)
./ COBOL
./ COPIER DESC (CUSTNAME)
./* Zones COBOL provenant de CUSTNAME et traduites en ULTIM * NOM (1,A,15) * ADR-1 (16,A,30) * ADR-2 (46,A,30) * CODE (76,N,7)
Exemple de programmation
DEBUT
DEMO.
* Lecture des données
TRAITER
CHAQUE CLIENT OU DERNIER-PAIEMENT < 20150301 ET SOLDE > 0.
TRAITER OBTENIR DIVISION PARENT DE CLIENT SELON
SETSECT.
CRITERES VALEUR < 125000.
; Traiter si valeur inférieure à 125000
TRAITER OBTENIR NOMADR. ; Nom et adresse correspondant à CLIENT seulement
* Rapport à produire
OPTIONS
ENTETE=AUTO, ESPACEMENT = 5.
TABLEAU
SECTEUR, NOM, NO-COMPTE, SOLDE(12,TOTAL), DERNIER-PAIEMENT.
TITRE COMPTES EN SOUFFRANCE DE
DEUX MOIS
OU PLUS AU 1 MAI 2015
CONTROLE
SOUS-TOTAUX=1.
FIN
Rapport
en colonnes produit par les énoncés TABLEAU, TITRE et CONTROLE
5
MAI 2015 PAGE
1
COMPTES EN
SOUFFRANCE DE DEUX MOIS OU PLUS
AU 1 MAI 2015
SECTEUR
------NOM------ NO
COMPTE
SOLDE
DERNIER
PAIEMENT
ESTRIE
BELLE
LUMIERE
843896
$360.47 2015/02/11
BRILLANTINE
3246538
$199.00 2014/12/15
ECLAIRAGE
INC.
386660
$895.45 2015/01/12
LUMIERE
INC.
2369108
$34.94 2015/02/21
...........................................
$1,489.86
MTL
DECOR
SANTE
3143486
$10.00 2015/02/01
DECORUM
INC.
1071638
$2,189.10 2015/01/06
RUSSELL &
SONS
2225751
$194.90 2014/12/21
SERVICES
RAPIDO
1387
$4,189.95 2015/01/28
...........................................
$6,583.95
............................................
$8,073.81
|