Vikash Shukla
Vikash Shukla

Reputation: 55

Difference between %scan and %lookup in RPGLE?

If I scan 'NDIA' in 'INDIAN' by using %scan(), a value greater than 0 returned. If I do same using %lookup() in an array then 0 is returned. Why?

Program 1

D VAR1            s             10a   inz('INDIAN')    
D S1              S             10S 0                  
C     'NDIA'        SCAN      VAR1          S1         
C     S1            DSPLY                              
 /free                                                 
  *inlr = *on;                                         
 /end-free

Program 2

D ARR1            s             10a   DIM(5)       
D S1              S             10S 0              
C                   EVAL      ARR1(1) = 'AMERICA'  
C                   EVAL      ARR1(2) = 'INDIA'    
C                   EVAL      ARR1(3) = 'CHINA'    
 /free                                             
   S1 = %LOOKUP('NDIA':ARR1);                      
   DSPLY S1;                                       
  *inlr = *on;                                     
 /end-free

What is difference in both programs?

Upvotes: 0

Views: 11928

Answers (1)

Scott Mildenberger
Scott Mildenberger

Reputation: 1597

%lookup() looks for an exact match, not a partial match. If you change your %lookup to look for 'INDIA' it will return a match.

By the way, there is no reason to use the Fixed Format C specs in both of your examples. They can be entirely /free.

Upvotes: 4

Related Questions