/* adaptado por gsavix@gmail.com */ /* agosto 2016 */ parse arg infile . say '============================================' say '| Programa animalptbr.rexx |' say '| Por motivos diversos recomendamos |' say '| Nao usar caracteres acentuados |' say '| apenas caracteres ascii e numeros |' say '| responda S para sim |' say '| responda N para nao |' say '| responda caracteristica ou nome do animal |' say '| responda nome de arquivo para salvar |' say '=============================================' if infile\='' then do while lines(infile)>0 interpret linein(infile) ; end else base = 'elefante' do until left(answer,1) = 'N' where = 'BASE' finished = 0 do while finished = 0 if symbol(where'.S')='VAR' then do say value(where) pull answer if left(space(answer),1) = 'N' then where = where'.N' else where = where'.S' end; else do finished = 1; say 'Pensando em 'value(where)'?' pull answer if left(answer,1) = 'S' then say 'Legal!!!' else do say 'HHHMMM, Pensando em ...?' parse pull newanimal say 'Qual pergunta permite diferenciar entre 'newanimal' e ', value(where)':' parse pull quest say 'Qual resposta (S ou N) para 'newanimal'?' pull answer answer = space(answer) if left(answer,1) = 'S' then do interpret where'.N =' where interpret where'.S = newanimal' interpret where '= quest' end; else do interpret where'.S =' where interpret where'.N = newanimal' interpret where '= quest' end end end end say 'Continuar deduzindo (S ou N)?' pull answer answer = space(answer) end say 'Informe arquivo para salvar (deixar em branco para NAO salvar!)?' parse pull filename if filename\='' then do call lineout filename,, 1 signal on notready call dump 'BASE' end exit 0 dump: procedure expose filename base base. parse arg arg if symbol(arg)='VAR' then do call lineout filename, arg'="'insulate(value(arg))'"' call dump arg'.S' call dump arg'.N' end return ; insulate: parse arg string pos = -1 do until pos=0 pos = pos('"', string, pos+2) if (pos>0) then string = left(string,pos-1) || '""' || substr(string,pos+1) end return string notready: say 'erro salvando arquivo. processo encerrado.' exit 1