IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SAS Base Discussion :

Proc FCMP SAS 9.2: fonction qui extrait la plus grande chaine de caractères consécutifs commune à 2 variables


Sujet :

SAS Base

  1. #1
    Membre expérimenté
    Homme Profil pro
    Attaché statisticien
    Inscrit en
    Mai 2011
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Attaché statisticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2011
    Messages : 687
    Points : 1 581
    Points
    1 581
    Par défaut Proc FCMP SAS 9.2: fonction qui extrait la plus grande chaine de caractères consécutifs commune à 2 variables
    Bonjour,

    j'essaye de faire une fonction via la proc FCMP qui extrait la plus grande chaine de caractères consécutifs commune à deux variables (ici string1 et string2)

    Tout semble marcher sauf la fonction index qui semble inopérante dans la proc fcmp , soit il y a une erreur quelque part et je ne la vois pas, soit je ne sais pas...

    Voici le code

    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
     
    data a;
    string1='LES MARCHES DE L OISE';
    string2='MARCHES DE L OISE BP 60520';output;run;
     
    proc print data=a;run;
     
    proc fcmp outlib=sasuser.MyFuncs.ChrFuncs;
     
    function extr(string1$,string2$) $100;
    match=-1;
    ch='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
    pos=-1;
    long=0;
    l=length(string1);
    do i = 1 to L;
    do j=1 to L-i+1;
    chaine=substr(string1,i,j);
    match=index(string2,chaine);
     
    longueur=length(chaine);
    put string1 string2 match i j chaine longueur;
    if (match>0 and longueur>long) then pos=i;
    if (match>0 and longueur>long) then ch=chaine;
    if (match>0 and longueur>long) then long=j;
     
     
    end;end;
    return(ch!!'*'!!pos!!'*'!!long);
    endsub;
    run;
     
     
     
    options cmplib=sasuser.MyFuncs;
    data a; set a;
    result=extr(string1,string2);run;
     
    proc print data=a;run;
    voici la log

    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
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
     
    1044  data a;
    1045  string1='LES MARCHES DE L OISE';
    1046  string2='MARCHES DE L OISE BP 60520';output;run;
     
    NOTE: La table WORK.A a 1 observation(s) et 2 variable(s).
    NOTE: L'étape DATA a utilisé (Durée totale du traitement) :
          temps réel          0.01 secondes
          temps UC            0.03 secondes
     
     
    1047
    1048  proc print data=a;run;
     
    NOTE: Ecriture du corps du fichier HTML : sashtml44.htm
    NOTE:  1 observation(s) lue(s) dans la table WORK.A.
    NOTE: Procédure PRINT a utilisé (Durée totale du traitement) :
          temps réel          0.24 secondes
          temps UC            0.07 secondes
     
     
    1049
    1050  proc fcmp outlib=sasuser.MyFuncs.ChrFuncs;
    1051
    1052  function extr(string1$,string2$) $100;
    WARNING: Function extr is already defined in packet CHRFUNCS. Function extr as defined in the current program will be used
             as default when packet is not specified.
    1053  match=-1;
    1054  ch='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
    1055  pos=-1;
    1056  long=0;
    1057  l=length(string1);
    1058  do i = 1 to L;
    1059  do j=1 to L-i+1;
    1060  chaine=substr(string1,i,j);
    1061  match=index(string2,chaine);
    1062
    1063  longueur=length(chaine);
    1064  put string1 string2 match i j chaine longueur;
    1065  if (match>0 and longueur>long) then pos=i;
    1066  if (match>0 and longueur>long) then ch=chaine;
    1067  if (match>0 and longueur>long) then long=j;
    1068
    1069
    1070  end;end;
    1071  return(ch!!'*'!!pos!!'*'!!long);
    NOTE: Numeric value converted to character for argument 2 of '||' operation at ligne 1071 colonne 15.
    NOTE: Numeric value converted to character for argument 2 of '||' operation at ligne 1071 colonne 25.
    1072  endsub;
    1073  run;
     
    NOTE: Function extr saved to sasuser.MyFuncs.ChrFuncs.
    NOTE: Procédure FCMP a utilisé (Durée totale du traitement) :
          temps réel          0.22 secondes
          temps UC            0.15 secondes
     
     
    1074
    1075
    1076
    1077  options cmplib=sasuser.MyFuncs;
    1078  data a; set a;
    1079  result=extr(string1,string2);run;
    NOTE: Numeric value converted to character for argument 2 of '||' operation at ligne 0 colonne 15.
    NOTE: Numeric value converted to character for argument 2 of '||' operation at ligne 0 colonne 25.
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 1 1 L 1
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 1 2 LE 2
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 1 3 LES 3
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 1 4 LES 3
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 1 5 LES M 5
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 1 6 LES MA 6
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 1 7 LES MAR 7
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 1 8 LES MARC 8
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 1 9 LES MARCH 9
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 1 10 LES MARCHE 10
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 1 11 LES MARCHES 11
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 1 12 LES MARCHES 11
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 1 13 LES MARCHES D 13
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 1 14 LES MARCHES DE 14
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 1 15 LES MARCHES DE 14
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 1 16 LES MARCHES DE L 16
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 1 17 LES MARCHES DE L 16
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 1 18 LES MARCHES DE L O 18
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 1 19 LES MARCHES DE L OI 19
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 1 20 LES MARCHES DE L OIS 20
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 1 21 LES MARCHES DE L OISE 21
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 2 1 E 1
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 2 2 ES 2
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 2 3 ES 2
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 2 4 ES M 4
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 2 5 ES MA 5
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 2 6 ES MAR 6
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 2 7 ES MARC 7
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 2 8 ES MARCH 8
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 2 9 ES MARCHE 9
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 2 10 ES MARCHES 10
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 2 11 ES MARCHES 10
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 2 12 ES MARCHES D 12
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 2 13 ES MARCHES DE 13
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 2 14 ES MARCHES DE 13
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 2 15 ES MARCHES DE L 15
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 2 16 ES MARCHES DE L 15
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 2 17 ES MARCHES DE L O 17
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 2 18 ES MARCHES DE L OI 18
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 2 19 ES MARCHES DE L OIS 19
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 2 20 ES MARCHES DE L OISE 20
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 3 1 S 1
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 3 2 S 1
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 3 3 S M 3
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 3 4 S MA 4
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 3 5 S MAR 5
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 3 6 S MARC 6
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 3 7 S MARCH 7
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 3 8 S MARCHE 8
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 3 9 S MARCHES 9
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 3 10 S MARCHES 9
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 3 11 S MARCHES D 11
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 3 12 S MARCHES DE 12
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 3 13 S MARCHES DE 12
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 3 14 S MARCHES DE L 14
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 3 15 S MARCHES DE L 14
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 3 16 S MARCHES DE L O 16
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 3 17 S MARCHES DE L OI 17
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 3 18 S MARCHES DE L OIS 18
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 3 19 S MARCHES DE L OISE 19
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 4 1   1
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 4 2 M 2
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 4 3 MA 3
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 4 4 MAR 4
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 4 5 MARC 5
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 4 6 MARCH 6
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 4 7 MARCHE 7
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 4 8 MARCHES 8
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 4 9 MARCHES 8
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 4 10 MARCHES D 10
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 4 11 MARCHES DE 11
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 4 12 MARCHES DE 11
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 4 13 MARCHES DE L 13
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 4 14 MARCHES DE L 13
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 4 15 MARCHES DE L O 15
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 4 16 MARCHES DE L OI 16
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 4 17 MARCHES DE L OIS 17
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 4 18 MARCHES DE L OISE 18
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 5 1 M 1
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 5 2 MA 2
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 5 3 MAR 3
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 5 4 MARC 4
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 5 5 MARCH 5
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 5 6 MARCHE 6
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 5 7 MARCHES 7
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 5 8 MARCHES 7
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 5 9 MARCHES D 9
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 5 10 MARCHES DE 10
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 5 11 MARCHES DE 10
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 5 12 MARCHES DE L 12
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 5 13 MARCHES DE L 12
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 5 14 MARCHES DE L O 14
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 5 15 MARCHES DE L OI 15
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 5 16 MARCHES DE L OIS 16
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 5 17 MARCHES DE L OISE 17
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 6 1 A 1
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 6 2 AR 2
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 6 3 ARC 3
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 6 4 ARCH 4
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 6 5 ARCHE 5
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 6 6 ARCHES 6
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 6 7 ARCHES 6
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 6 8 ARCHES D 8
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 6 9 ARCHES DE 9
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 6 10 ARCHES DE 9
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 6 11 ARCHES DE L 11
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 6 12 ARCHES DE L 11
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 6 13 ARCHES DE L O 13
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 6 14 ARCHES DE L OI 14
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 6 15 ARCHES DE L OIS 15
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 6 16 ARCHES DE L OISE 16
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 7 1 R 1
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 7 2 RC 2
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 7 3 RCH 3
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 7 4 RCHE 4
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 7 5 RCHES 5
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 7 6 RCHES 5
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 7 7 RCHES D 7
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 7 8 RCHES DE 8
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 7 9 RCHES DE 8
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 7 10 RCHES DE L 10
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 7 11 RCHES DE L 10
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 7 12 RCHES DE L O 12
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 7 13 RCHES DE L OI 13
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 7 14 RCHES DE L OIS 14
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 7 15 RCHES DE L OISE 15
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 8 1 C 1
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 8 2 CH 2
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 8 3 CHE 3
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 8 4 CHES 4
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 8 5 CHES 4
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 8 6 CHES D 6
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 8 7 CHES DE 7
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 8 8 CHES DE 7
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 8 9 CHES DE L 9
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 8 10 CHES DE L 9
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 8 11 CHES DE L O 11
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 8 12 CHES DE L OI 12
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 8 13 CHES DE L OIS 13
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 8 14 CHES DE L OISE 14
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 9 1 H 1
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 9 2 HE 2
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 9 3 HES 3
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 9 4 HES 3
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 9 5 HES D 5
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 9 6 HES DE 6
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 9 7 HES DE 6
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 9 8 HES DE L 8
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 9 9 HES DE L 8
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 9 10 HES DE L O 10
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 9 11 HES DE L OI 11
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 9 12 HES DE L OIS 12
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 9 13 HES DE L OISE 13
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 10 1 E 1
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 10 2 ES 2
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 10 3 ES 2
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 10 4 ES D 4
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 10 5 ES DE 5
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 10 6 ES DE 5
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 10 7 ES DE L 7
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 10 8 ES DE L 7
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 10 9 ES DE L O 9
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 10 10 ES DE L OI 10
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 10 11 ES DE L OIS 11
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 10 12 ES DE L OISE 12
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 11 1 S 1
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 11 2 S 1
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 11 3 S D 3
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 11 4 S DE 4
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 11 5 S DE 4
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 11 6 S DE L 6
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 11 7 S DE L 6
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 11 8 S DE L O 8
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 11 9 S DE L OI 9
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 11 10 S DE L OIS 10
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 11 11 S DE L OISE 11
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 12 1   1
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 12 2 D 2
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 12 3 DE 3
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 12 4 DE 3
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 12 5 DE L 5
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 12 6 DE L 5
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 12 7 DE L O 7
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 12 8 DE L OI 8
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 12 9 DE L OIS 9
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 12 10 DE L OISE 10
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 13 1 D 1
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 13 2 DE 2
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 13 3 DE 2
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 13 4 DE L 4
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 13 5 DE L 4
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 13 6 DE L O 6
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 13 7 DE L OI 7
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 13 8 DE L OIS 8
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 13 9 DE L OISE 9
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 14 1 E 1
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 14 2 E 1
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 14 3 E L 3
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 14 4 E L 3
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 14 5 E L O 5
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 14 6 E L OI 6
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 14 7 E L OIS 7
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 14 8 E L OISE 8
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 15 1   1
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 15 2 L 2
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 15 3 L 2
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 15 4 L O 4
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 15 5 L OI 5
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 15 6 L OIS 6
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 15 7 L OISE 7
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 16 1 L 1
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 16 2 L 1
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 16 3 L O 3
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 16 4 L OI 4
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 16 5 L OIS 5
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 16 6 L OISE 6
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 17 1   1
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 17 2 O 2
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 17 3 OI 3
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 17 4 OIS 4
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 17 5 OISE 5
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 18 1 O 1
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 18 2 OI 2
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 18 3 OIS 3
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 18 4 OISE 4
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 19 1 I 1
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 19 2 IS 2
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 19 3 ISE 3
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 20 1 S 1
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 20 2 SE 2
    LES MARCHES DE L OISE MARCHES DE L OISE BP 60520 0 21 1 E 1
    NOTE:  1 observation(s) lue(s) dans la table WORK.A.
    NOTE: La table WORK.A a 1 observation(s) et 3 variable(s).
    NOTE: L'étape DATA a utilisé (Durée totale du traitement) :
          temps réel          0.70 secondes
          temps UC            0.57 secondes
     
     
    1080
    1081  proc print data=a;run;
     
    NOTE: Ecriture du corps du fichier HTML : sashtml45.htm
    NOTE:  1 observation(s) lue(s) dans la table WORK.A.
    NOTE: Procédure PRINT a utilisé (Durée totale du traitement) :
          temps réel          0.24 secondes
          temps UC            0.06 secondes
    et voici l'output

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Obs                   string1                          string2
    1        LES MARCHES DE L OISE             MARCHES DE L OISE BP 60520
    Obs                                      result
    1        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*          -1*         0

  2. #2
    Membre expérimenté
    Homme Profil pro
    Attaché statisticien
    Inscrit en
    Mai 2011
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Attaché statisticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2011
    Messages : 687
    Points : 1 581
    Points
    1 581
    Par défaut
    résolu en remplaçant

    match=INDEX(string2,chaine);


    par

    match=INDEX(string2,compbl(chaine));

    Ca marche, je vois ce qui bloquait (présence de blancs à droite ou à gauche), par contre je n'ai aucune idée d'où ces blancs en surnombre pouvaient ils bien venir ?

  3. #3
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    Citation Envoyé par jerome_pdv2 Voir le message
    par contre je n'ai aucune idée d'où ces blancs en surnombre pouvaient ils bien venir ?
    Je pense que l'absence de déclaration de longueur pour la variable CHAINE a entraîné une longueur automatique (peut-être 200 ? Aucune idée sans chercher loin dans la doc) et du coup, tes valeurs sont complétées par des blancs à droite pour atteindre cette longueur.
    Comme pour les fonctions PRX, il est prudent pour utiliser INDEX ou FIND de faire systématiquement un STRIP de la variable testée pour virer les blancs à gauche et à droite.
    Bon courage.
    Olivier

  4. #4
    Membre expérimenté
    Homme Profil pro
    Attaché statisticien
    Inscrit en
    Mai 2011
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Attaché statisticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2011
    Messages : 687
    Points : 1 581
    Points
    1 581
    Par défaut
    Merci Olivier

    J'aimerais définir la taille de var1 et var2

    j'ai essayé avec

    FUNCTION extr(string1 $100 ,string2 $100 ) $100;

    mais ça ne semble pas marcher...

  5. #5
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    N'oubliez pas de cliquer sur lorsque votre problème est réglé !

  6. #6
    Membre expérimenté
    Homme Profil pro
    Attaché statisticien
    Inscrit en
    Mai 2011
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Attaché statisticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2011
    Messages : 687
    Points : 1 581
    Points
    1 581
    Par défaut
    merci Datametrics, en fait la fonction s'est complexifiée entre temps et j'avais besoin de créer des variables supplémentaires, du coup je les ai créé avec une longueur suffisamment longue le soucis est donc réglé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PROC] PROC FCMP Problème accès à une fonction
    Par Filippo dans le forum SAS Base
    Réponses: 3
    Dernier message: 02/12/2009, 15h15
  2. Réponses: 8
    Dernier message: 08/05/2009, 15h54
  3. fonction qui extrait le chiffre unité d'un nombre
    Par hamska2 dans le forum Débuter
    Réponses: 4
    Dernier message: 23/06/2007, 10h47
  4. fonctions qui ne marchent plus
    Par Kuuei dans le forum JWS
    Réponses: 2
    Dernier message: 26/05/2006, 14h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo