Bonjour,

Le programme ci dessous ne fonctionne plus (une table oracle devrait se mettre à jour) sous sas9/oracle 10 alors qu'il fonctionnait sous sas8/oracle8.
Le hic, c'est que le programme tourne et que je n'ai aucun message d'erreur dans la log de sas.
Merci d'avance pour votre aide.

Voici le programme en question :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/* --------------------------------------------------------------------- */
    /*       Programme de mise à jour du calendrier de routage oracle           */
    /*                 des enquetes conjoncture                              */
    /* --------------------------------------------------------------------- */
    /*       Parametres en entree :                                              */
    /*       an      = annee du calendrier                                   */
    /*       nivugst = NAT ou REG                                            */
    /*       reptab  = repertoire ou est stocke le calendrier (fichier excel)*/
    /*       nomtab  = nom du fichier excel contenant le calendrier          */
    /*       user    = utilisateur pour la connexion oracle                  */
    /*       pass    = mot de passe oracle du user                           */
    /*       path    = nom logique de la base oracle                            */
    /*       schema  = schema oracle pour la connexion                       */
    /* --------------------------------------------------------------------- */
    /*       En entree :                                                        */
    /*       Tableau excel &retab\&nomtab contenant le calendrier de routage */
    /*       de l'annee aaaa                                                 */
    /*       Les variables sont :                                            */
    /*         codenq   = code d'enquete sur 4 caracteres                    */
    /*         datenq   = date de l'enquete                                  */
    /*         nivugst  = NAT ou REG                                         */
    /*         ugst     = unite de gestion                                   */
    /*         quest    = numero du questionnaire                            */
    /*         date_rou = date de routage pour 1er envoi                     */
    /*         dateqrou = date d'envoi notee sur le questionnaire             */
    /*         dateprou = date limite de depot à la poste du 1er envoi       */
    /*         date_rap = date de routage pour rappel                         */
    /*         dateqrap = date de rappel notee sur le questionnaire             */
    /*         dateprap = date limite de depot à la poste du rappel          */
    /*         msgpap   = message devant figurer sur le questionnaire papier */
    /*         msgint   = message devant figurer sur le site internet        */
    /*       En sortie :                                                        */
    /*       Le calendrier de routage oracle est mis à jour (table CALROU)   */
    /* --------------------------------------------------------------------- */
 
%macro MAJCALROU (reptab=N:\outils\calendrier de routage,
                  nomtab=,
                  user=CONJPK99,
                  pass=KOPD99,
                  path=CNIOTCO8.INSEE.FR,
                  schema=CONJV200) ;    
 
    /* --------------------------------------------------------------------- */
    /* Formule utile pour comparer les dates en ne tenant compte que         */
    /* du mois et de l'annee                                                 */
    /* --------------------------------------------------------------------- */
    %macro cmp_mmyy (d1, test, d2) ;
        putn (&d1, 'yymmn6.') &test putn (&d2, 'yymmn6.')
    %mend cmp_mmyy ;
 
 
    /* on importe le calendrier excel */
    proc import datafile = "&reptab\&nomtab" 
        out=calrou
        dbms = EXCEL2000 replace ;
        getnames = YES ;
    run;
 
        /* allocation de la librairie Oracle */
        /* les tables Oracle seront alors traitees comme des tables SAS */
    libname libora oracle
        user="&user"  pass="&pass"  path="&path" schema="&schema" ;
 
    proc sql;
 
      /* destruction des lignes déjà existantes dans calrou */
      delete from libora.calrou as calora
        where exists (select *
                      from calrou as calxls
                      where calxls.datenq=calora.datenq
                        and calxls.nivugst=calora.nivugst
                        and calxls.ugst=calora.ugst
                        and calxls.codenq=calora.codenq);
 
      /* insertion des variables principales */
      insert into libora.calrou
        (datenq, codenq, ugst, nivugst, 
         date_rou, dateqrou, dateprou, filt_rou, date_ret, nenr_nouv,
         date_rap, dateqrap, dateprap, filt_rap,
         /*date_rau, dateqrau, dateprau, filt_rau, date_rat, nenr_rau,*/
         date_med, dateqmed, datepmed, filt_med, nenr_med,
         date_cnr, dateqcnr, datepcnr, filt_cnr, nenr_cnr,
         dati_ouv, dati_ret, dati_rap, dati_rau, dati_clo, dati_exp, filt_net,
         datextrp, datextrd,
         msg_pap)
        select datenq, codenq, ugst, nivugst, 
               date_rou, dateqrou, dateprou, filt_rou, date_ret, nenr_nouv,
               date_rap, dateqrap, dateprap, filt_rap,
               /*date_rau, dateqrau, dateprau, filt_rau, date_rat, nenr_rau,*/
               date_med, dateqmed, datepmed, filt_med, nenr_med,
               date_cnr, dateqcnr, datepcnr, filt_cnr, nenr_cnr,
               dati_ouv, dati_ret, dati_rap, dati_rau, dati_clo, dati_exp, filt_net,
               datextrp, datextrd,
               msg_pap
        from calrou
        where codenq ne 'NULL';
 
    quit;
 
    libname libora clear;
%mend MAJCALROU;
 
options mprint nosymbolgen nomlogic;
 
/* mise a jour base de test */
%majcalrou(reptab=I:\conjv204\Outils\Calendrier de routage,
           nomtab=calrou_NAT2009,
           user=CONJV200,
           pass=KOPD,
           path=TC10,
           schema=CONJV200);
/*%majcalrou(reptab=N:\outils\calendrier de routage,
           nomtab=calrouREG2007,
           user=CONJV200,
           pass=KOPD,
           path=CNIOTCO8.INSEE.FR,
           schema=CONJV200);*/
 
/* mise a jour base de prod */
/*%majcalrou(reptab=I:\conjv204\outils\calendrier de routage,
           nomtab=calrouNAT2008,
           user=CONJV200,
           pass=KOPD,
           path=PCNJ.INSEE.FR,
           schema=CONJV200);
/*%majcalrou(reptab=N:\outils\calendrier de routage,
           nomtab=calrouREG2007,
           user=CONJV200,
           pass=KOPD,
           path=PCNJ,
           schema=CONJV200);*/