Segue uma explicação básica de E e OU, caso seja do interesse de alguém:
Exemplo:
Se ((dd > 19) e (mm < 01) ou ((dd < 22) e (mm < 22)) então msg=
Libra
Partindo desse exemplo, a explicação do código seria:
Se a variável "dd" for maior que 19 E a variável "mm" for menor que 01 - nesse caso, ambas as condições devem ser verdadeiras. Ou seja, se "dd" for 20, 21, ..., *infinito*, a variável "dd" terá sua condição satisfeita, porém, se a variável "mm" receber um valor superior a "01", isso tornará a condição falsa, fazendo o programa pular para a próxima condição ((dd < 22) e (mm < 22)).
Em suma, a condição E serve para definir que duas condições sejam verdadeiras ao mesmo tempo, como exemplo:
Se ((dd > 19) e (dd < 22))
Esta condição aceitaria apenas os números 20 e 21 como resultados, pois apenas eles se encaixam em ambas as condições.
Já a condição OU é mais "permissiva", com ela, apenas uma das condições necessita ser verdadeira, para que uma ação ocorra.
Exemplo:
Se ((dd > 19) ou (dd < 22))
Desta forma, qualquer número maior que 19 seria aceito, mesmo que fosse maior que 22, pois estaria tornando a primeira condição verdadeira (o número seria maior que 19).
Abraços 