Oi Daniella. 
Tudo bem? 

Seguem algumas considerações que observei a respeito do seu código: 

1) O erro <NOROTINE> indica que a rotina YYHORG002 não existe. Isso pode ter ocorrido se a YYHORG002 não foi compilada. Você verificou se a classe foi compilada com sucesso? 

2) Se você está trabalhando com classes, por quê não está chamando ao método usando a orientação a objetos, e sim chamando a rotina gerada através da compilação ?  

Exemplo:

substituir de: set sc $$ValidarPalindromo^YYHORG001(str
para : set sc = ##class(YYHORG001).ValidarPolindromo(str)

Observações: 

1ª - está faltando na assinatura do método o tipo do retorno:
       Ex1: Method ValidarPalindromo(string) As %Status
     
 Ex2: 
Method CalcularMedia(stringByRef retMedia) As %Status (ou o tipo desejado)

2ª - No método CalcularMedia(stringByRef retMedia) o segundo parâmetro retMedia está definido com passagem por referencia, e na chamada da rotina você deveria usar o ponto (.) antes da variável: .retMedia 

3ª - No mesmo método você está retornando o mesmo valor de retMedia que foi enviado na chamada ao método. Está correto?  Desta forma as variáveis media e retMedia terão sempre o mesmo valor.

4ª - Se os métodos não são de instancia (que acessam dados do objeto da classe) e são chamados como métodos de operação, eles devem ser definidos como ClassMethod para serem acessados diretamente sem instanciar a classe. 
 

Espero ter ajudado!
Boa sorte 🤞🏼 

Oi Paulo, tudo bem? 

Existem algumas formas de licenciamento e também depende das ferramentas adicionadas a licença do produto. 
Para obter mais detalhes você precisa do atendimento de algum gerente de contas da área comercial. 

Você tem interesse em entrar em contato com alguém para obter mais informações? 
Pode me encaminhar uma mensagem direta com o seu contato por aqui pela comunidade mesmo se preferir, ou no meu e-mail : Danusa.Calixto@intersystems.com 

Olá Walter, 

Eu consegui executar o seu código em uma classe simples que extende de  %SOAP.WebService sem erros. 
Criei a global ^IGREJA com dados de teste contendo nome e idade para executar o teste.

Já verificou se o conteúdo de algum nó da sua global pode estar causando o problema?

Se quiser, compartilha a definição completa da sua classe e alguma amostra dos registros da sua global.   

wink

Oi Alexandre! 
O que me veio em mente rapidamente foi criar um código que transforme a sua string/frase em uma lista de palavras para depois percorrer a lista contando o numero de letras de cada palavra da lista.

Algo assim: 

Set frase = "Como contar a palavra com maior numero de caracteres"

#; cria uma lista da string com delimitador " " espaço 
Set fraseList = $Listfromstring(frase," ")

#; percorre a lista e imprime a posição da palavra na frase (i), o tamanho da palavra ($length) e a palavra ($listget(fraseList,i))
For i=1:1:$Listlength(fraseList) w !,i_"- tamanho:"_$length($listget(fraseList,i))_"->"_$lg(fraseList,i) 

O código acima pode ser executado no Terminal. 
Mas se você somente desejar saber o maior tamanho, basta salvar o tamanho em uma variável comparando os tamanhos. Exemplo: 

Set maiorTamanho=""
For i=1:1:$Listlength(fraseList) {
       set tamanho=$length($listget(fraseList,i))
       if tamanho>maiorTamanho {
           set maiorTamanho=tamanho
           set maiorPalavra=$listget(fraseList,i)
       }
}

Write !,maiorPalavra_" - tamanho: "_maiorTamanho 

Espero que ajude! :-)  

Olá Arian. 
O erro apresentado em tempo de depuração não parece ter a ver com o $GET. Você tentou verificar os valores dos pieces da global antes ? Uma sugestão, caso ainda não tenha feito, é verificar a variável %objlasterror antes e depois da execução da linha para confirmar o erro . E vale a pena verificar se teve algum registro do processo no arquivo messages.log  que fica na pasta /mgr.