delay
Retarder le traitement d'une tâche.
Syntaxe
Conditions : EXPIRÉ, INVREQ, NORMAL
Cette commande n'est sûre que si l'intervalle est de 0.
NOHANDLE, RESP, et RESP2 sont des options communes qui peuvent être ajoutées à toutes les commandes EXEC CICS pour traiter les conditions d'erreur. Elles ne sont pas explicitement incluses dans le diagramme syntaxique de la commande et dans les descriptions des options. Pour plus d'informations sur ces options communes et la syntaxe de la commande EXEC CICS, voir EXEC CICS Format de la commande et considérations de programmation.
Description
DELAY suspend le traitement de la tâche émettrice pendant un intervalle de temps spécifié ou jusqu'à une heure précise de la journée. Elle remplace toute commande POST lancée précédemment pour la tâche.
Il est possible de spécifier des intervalles en millisecondes (ms) ; cependant, CICS® vérifie l'expiration du délai toutes les 250 ms. Par conséquent, l'intervalle réel peut varier en fonction de l'endroit du cycle de balayage où la demande est faite.
La valeur par défaut est INTERVAL(0); mais pour C®, la valeur par défaut est POUR LES HEURES(0) MINUTES(0) SECONDES(0).
Options
- région propriétaire de fichier
- Spécifie la durée du délai.
- HOURS(valeur-donnée)
- Spécifie une valeur binaire complète comprise entre 0 et 99.
- INTERVALLE(hhmmss)
- Spécifie, en format décimal emballé, l'intervalle de temps qui doit s'écouler à partir du moment où la commande DELAY est émise. Les mm et ss sont compris entre 0 et 59. Le temps spécifié est ajouté à l'heure actuelle par CICS lorsque la commande est exécutée pour calculer le temps d'expiration.
En langage C, il est recommandé d'utiliser les options FOR/UNTIL HOURS, MINUTES et SECONDS, car le langage C ne fournit pas de type de données décimales condensées. Vous pouvez utiliser INTERVAL, mais si la valeur spécifiée est pas une constante entière, l'application doit s'assurer que la valeur transmise à CICS est au format décimal condensé.
- MILLISECS(valeur des données)
- Spécifie une valeur binaire pleine dans la plage 0-999, lorsque HOURS, MINUTES ou SECONDS sont également spécifiés, ou 0-359999999 lorsque MILLISECS est la seule option spécifiée.Note: CICS traite les délais inférieurs à 50 millisecondes comme si le temps avait expiré immédiatement.
- MINUTES(valeur des données)
- Spécifie une valeur binaire pleine dans l'intervalle 0-59, lorsque HOURS, SECONDS ou MILLISECS sont également spécifiés, ou 0-5999 lorsque MINUTES est la seule option spécifiée.
- REQID(nom)
- Spécifie un nom (1-8 caractères), qui doit être unique, pour identifier la demande DELAY.
Pour permettre à une autre transaction d'annuler la demande de RETARD, utilisez cette option pour spécifier un nom défini par l'application.
Pour permettre à d'autres tâches d'annuler des demandes de délai non expirées, vous devez rendre l'identifiant de la demande dynamiquement disponible. Par exemple, le stockage dans une file d'attente TS, dont le nom est connu des autres applications qui pourraient vouloir annuler la demande DELAY, est une façon de transmettre un identifiant de demande à d'autres transactions.
Si la tâche s'est terminée normalement, pour savoir si la demande DELAY a expiré normalement ou a été annulée par une commande EXEC CICS CANCEL REQID, vous devez tester EIBRESP2 pour 23 lorsque le contrôle revient à l'application.
- SECONDS(valeur des données)
- Spécifie une valeur binaire pleine dans l'intervalle 0-59, lorsque HOURS, MINUTES ou MILLISECS sont également spécifiés, ou 0-359 999 lorsque SECONDS est la seule option spécifiée.
- HEURE (hhmmss)
- Spécifie, dans un format décimal condensé, l'heure à laquelle la tâche doit reprendre le traitement.
En langage C, il est recommandé d'utiliser les options FOR/UNTIL HOURS, MINUTES et SECONDS, car le langage C ne fournit pas de type de données décimales condensées. Vous pouvez utiliser TIME, mais si la valeur spécifiée est pas une constante entière, l'application doit s'assurer que la valeur transmise à CICS est au format décimal condensé. Voir la section sur les délais d'expiration dans Contrôle de l'intervalle.
- Jusqu'à
- Spécifie l'heure à laquelle la tâche doit reprendre son traitement à la fin du délai.
Conditions
- 0 NORMAL
- RESP2 valeurs :
- 23
- Indique que la demande de RETARD a été annulée par une autre tâche qui a émis une commande CANCEL REQID spécifiant l'identifiant unique utilisé par cette tâche.
- 31 EXPIREE
- Se produit si le temps spécifié a déjà expiré lorsque la commande est émise. Si vous spécifiez des intervalles très courts, inférieurs à 250 ms, il est probable que le temps se sera écoulé avant que la commande ne soit émise. Vous devrez utiliser la gestion des exceptions si des intervalles de délai courts sont demandés.
Action par défaut : ignorer la condition.
- 16 INVREQ
- RESP2 valeurs :
- 4
- Les heures sont hors limites.
- 5
- Les minutes sont hors de portée.
- 6
- Les secondes sont hors de portée.
- 22
- Les millisecondes sont hors de portée.
Se produit également (RESP2 non défini) si la commande DELAY n'est pas valide pour le traitement par CICS.
Action par défaut : terminer la tâche de manière anormale.
Exemples
EXEC CICS DELAY
INTERVAL(500)
REQID('GXLBZQMR')
EXEC CICS DELAY FOR MINUTES(5)EXEC CICS DELAY
TIME(124500)
REQID('UNIQCODE')- Une combinaison d'au moins deux des éléments suivants : HEURES (0-99), MINUTES (0-59) et SECONDES (0-59). HOURS(1) SECONDS(3) signifie une heure et trois secondes (les minutes sont mises à zéro par défaut).
- L'une des valeurs suivantes : HEURES (0-99), MINUTES (0-5999) ou SECONDES (0-359 999). HOURS(1) signifie une heure. MINUTES(62) signifie une heure et deux minutes. SECONDS(3723) signifie une heure, deux minutes et trois secondes.
Sous FOR, vous pouvez saisir le temps de la même manière que pour UNTIL et, en outre, vous pouvez spécifier un délai pour inclure les millisecondes ou spécifier le délai entièrement en millisecondes. Pour spécifier des fractions de seconde sur un délai, codez le paramètre MILLISECS dans la plage 0-999 en plus des autres unités de temps. Pour spécifier le délai purement en millisecondes, codez le paramètre MILLISECS dans la plage 0-359999999. L'exemple suivant montre comment suspendre le traitement d'une tâche pendant 15 000 millisecondes :
EXEC CICS DELAY
FOR MILLISECS(15000)
REQID('UNIQCODE')
