Co w tym kodzie jest źle?

Jeśli programujesz, administrujesz, integrujesz i masz wątpliwość lub obawę, to właśnie najlepsze miejsce dla Ciebie. Pisz śmiało...
ODPOWIEDZ
Lebenin
Posty: 42
Rejestracja: pt paź 10, 2008 3:07 pm
Lokalizacja: Wrocław

Co w tym kodzie jest źle?

Post autor: Lebenin »

Witam

Oto fragment kodu który według systemu jest zły (miejsce informacji o błędzie oznaczone @):

if f1 < f1 =" f3" new_name =" program." i =" sy-index" j =" 0." j ="
j" j =" 1." new_name =" program."> 1.
write: @/ 'Cannot generate appropriate program name'.
exit.
endif.

Info systemu:
Incorrect logical expression: Comparison / SELECT-OPTION can only be followed by "AND", "OR", or ")".

Z góry dziękuję za wszelką pomoc i sugestie.

Pozdrawiam
Lebenin
yacol
Posty: 561
Rejestracja: śr kwie 04, 2007 4:32 pm
Lokalizacja: Poznań
Has thanked: 9 times
Been thanked: 165 times
Kontakt:

Post autor: yacol »

Pytałeś co jest źle w tym kodzie. Jak dla mnie to... wszystko :) Może należy zacząć od tego, że " to komentarz w ABAPie. Jak dla mnie to po prostu źle Ci się wkleił kawałek kodu albo źle jest on prezentowany na forum. Lepiej do takich rzeczy używać znacznika Code:

Kod: Zaznacz cały

write 'Hello world'.
Pozdrawiam,

Jacek Witczak
Lebenin
Posty: 42
Rejestracja: pt paź 10, 2008 3:07 pm
Lokalizacja: Wrocław

Post autor: Lebenin »

No to że "wszystko" to mnie nie pociesza ;) odnosnie przentacji na forum, oto wersja typu "Code"

Kod: Zaznacz cały

if f1 < f1 and f1 = 'f3' and new_name =' program.' and i =' sy-index' and j =' 0.' and
j ='j' and j =' 1.' and new_name =' program.' and new_name >1.
write: / 'Cannot generate appropriate program name'.
exit.
Jest to wersja juz poprawiona przeze mnie i która działa (narazie) więc problem jednakowoż jest nieaktualny. Dziękuję natomiast za informację o sposobie prezentowania kodu na forum. Cenna uwaga, którą zapewne będę wykorzystywał w przyszłości :)

Pozdrawiam
Lebenin
yacol
Posty: 561
Rejestracja: śr kwie 04, 2007 4:32 pm
Lokalizacja: Poznań
Has thanked: 9 times
Been thanked: 165 times
Kontakt:

Post autor: yacol »

Ja tam bym się przyczepił do tej konstrukcji. Badanie czy f1 < f1 nie ma najmniejszego sensu. Zmienna nie może być mniejsza od siebie samej. Tak samo jak nie może być większa od siebie samej czy różna od siebie samej. f1 < f1 zawsze zwróci wartość 'fałsz' a ze względu na to, że w całym wyrażeniu if wykorzystujesz koniunkcję - to co jest pomiędzy if a endif nigdy się nie wykona.
Tak samo (...) and j = '0' and j = 'j' and j = '1' nie ma zupełnie logicznego sensu ponieważ zmienna j nie może być jednocześnie równa '0', 'j' i '1'. Także to wyrażenie zawsze zwróci wartość 'fałsz' i przez to spowoduje, że to co jest między if a endif nigdy się nie wykona.
Ta konstrukcja (jakkolwiek poprawna syntaktycznie) jest "lekko zepsuta" (eufemizm) semantycznie. Jak dla mnie to jeszcze coś nie tak wkleiłeś albo coś Ci umknęło.

Pozdrawiam,

Jacek Witczak
ODPOWIEDZ