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
Co w tym kodzie jest źle?
-
- Posty: 561
- Rejestracja: śr kwie 04, 2007 4:32 pm
- Lokalizacja: Poznań
- Has thanked: 9 times
- Been thanked: 165 times
- Kontakt:
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:
Pozdrawiam,
Jacek Witczak
Kod: Zaznacz cały
write 'Hello world'.
Jacek Witczak
No to że "wszystko" to mnie nie pociesza odnosnie przentacji na forum, oto wersja typu "Code"
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
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.
Pozdrawiam
Lebenin
-
- Posty: 561
- Rejestracja: śr kwie 04, 2007 4:32 pm
- Lokalizacja: Poznań
- Has thanked: 9 times
- Been thanked: 165 times
- Kontakt:
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
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