Utilisation de la balise &&KILL_RPC

La balise &&KILL_RPC est une variable amper ReportCaster que vous pouvez utilisez dans une procédure de pré-traitement lorsque vous voulez arrêter le traitement de ReportCaster et ne pas exécuter la procédure planifiée en fonction d'une condition. La condition peut être l'existence d'une extraction de données, ou une limite concernant les jours où les planifications sont autorisées à être exécutées. Le code pour évaluer la condition pet être une combination du gestionnaire de dialogue et FOCUS pris en charge par le Serveur de Rapports WebFOCUS. La variable amper &&KILL_RPC doit être définie avec le gestionnaire de dialogue.

L'exemple de code ci-dessous est configuré pour une exécution en tant que procédure de prétraitement. Il a pour fonction d'arrêter la requête si la date actuelle figure dans une liste de jours fériés.

-*
-* TEST CURRENT DATE AGAINST A CALENDAR OF BUSINESS EXCEPTION DAYS
-* The assumption here is that the dates in the data file are in 
-* ascending order
FILEDEF HDAYRCLB DISK C:\IBI\APPS\BASEAPP\HDAYRCLB.DAT
-RUN
-*
-SET &TDAYX = &YYMD;
-SET &&KILL_RPC = 'N';
-*
-*set PREV_DATE to some value that will cause the first IF to continue 
-* the loop
-SET &PREV_DATE = 00000101;
-REPEAT DATELOOP WHILE &&KILL_RPC NE 'Y';
-READ HDAYRCLB &FILEDATE.I8
-SET &&KILL_RPC = IF &TDAYX EQ &FILEDATE THEN 'Y' ELSE 'N';
-IF &PREV_DATE GE &FILEDATE THEN GOTO ENDME;
-SET &PREV_DATE = &FILEDATE;
-DATELOOP
-ENDME

L'image suivante montre l'information présentée dans le rapport de journal, y compris les messages Exécuter la pré-exécution RPC 1 et Arrêt d'utilisateur via le drapeau KILL_RPC.

Rapport de journal de traitement des tâches

Lorsque &&KILL_RPC est réglé à Y pour arrêter l'exécution d'une tâche planifiée, le processus normal est de régler l'intervalle NEXTRUNTIME (prochaine exécution) à la valeur de l'heure de prochaine exécution du rapport stocké dans le référentiel WebFOCUS, et de déclencher la notification En cas d'erreur quand le planning est stoppé. Vous pouvez contrôler ce comportement en vous servant des variables globales suivantes dans la procédure pré-existante :

L'exemple de code suivant utilise l'exemple précédent et ajoute la prochaine heure d'exécution et la notification des variables globales au paramètre &&KILL_RPC afin que la prochaine heure d'exécution du planning ne soit pas réinitialisée et la notification En cas d'erreur ne soit pas envoyée si le planning est arrêté car la date actuelle fait partie de la liste de jours fériés.

-*
-* TEST CURRENT DATE AGAINST A CALENDAR OF BUSINESS EXCEPTION DAYS
-* The assumption here is that the dates in the data file are in 
-* ascending order
FILEDEF HDAYRCLB DISK C:\IBI\APPS\BASEAPP\HDAYRCLB.DAT
-RUN
-*
-SET &TDAYX = &YYMD;
-SET &&KILL_RPC = 'N';
-SET &&KILL_RPC_NRT = 'N';
-SET &&KILL_RPC_ERR = 'N';
-*
-*set PREV_DATE to some value that will cause the first IF to continue 
-* the loop
-SET &PREV_DATE = 00000101;
-REPEAT DATELOOP WHILE &&KILL_RPC NE 'Y';
-READ HDAYRCLB &FILEDATE.I8
-SET &&KILL_RPC = IF &TDAYX EQ &FILEDATE THEN 'Y' ELSE 'N';
-IF &PREV_DATE GE &FILEDATE THEN GOTO ENDME;
-SET &PREV_DATE = &FILEDATE;
-DATELOOP
-ENDME

WebFOCUS