O atributo do método de projeto "Execute on Server" pode ser definido na seguinte caixa de diálogo de modificação global dos atributos ou na caixa de diálogo das propriedades do método:

Quando se seleciona esta opção, o método de projeto sempre se executa no servidor, sem importar como se chama o método.
Nota: Este atributo só leva em conta para uma aplicação 4D executada em cliente/servidor.
Quando este atributo está selecionado, o contexto de execução do método de projeto é comparado com o dos triggers (ver a seção 4D Server e a linguagem 4D): o método no servidor compartilham o mesmo contexto de banco de dados para o bloqueio de registros e para as transações que o contexto correspondente do lado do cliente, mas não o mesmo contexto de linguagem (variáveis processo, conjuntos, seleções atuais). No entanto, a diferença de um trigger, o método executado no servidor não compartilha o registro atual com o contexto do cliente.
Todos os parâmetros do método ($1, $2, etc.) são enviados no servidor e o valor do parâmetro $0, é utilizado, e devolvido ao cliente.
A diferença do comando Execute on server, esta opção não provoca a criação do processo no servidor. 4D Server utiliza o processo "gêmeo" do processo cliente que solicitou a execução.
Além disso, esta opção simplifica o principio de delegação da execução de um método no servidor como a transferência de parâmetros se realiza automaticamente nos dois sentidos, como para uma chamada de método "normal".
O comando Execute on server, funciona de forma anacrônica e portanto requer maior programação e uso de semáforos para a leitura dos resultados.
Os métodos que têm o atributo "Execute on Server" estão sujeitos as mesmas regras que os procedimentos armazenados em matéria de uso dos comandos da linguagem 4D. A execução de certos comandos não está permitida no servidor, a execução de outros não é recomendável. Para maior informação, consulte o parágrafo " O que um procedimento armazenado não pode fazer (executado no servidor)?" na seção Procedimentos armazenados.
Se passa um ponteiro a uma variável (variável simples, array ou elemento de array), o valor apontado também é enviado ao servidor. Se o valor apontado é modificado no servidor pelo método, o valor modificado se devolve ao cliente para atualizar a variável correspondente do lado do cliente.
Os ponteiros em uma tabela ou campo são enviados como referência (número de tabela, número de campo). O valor do registro atual não é trocado automaticamente.
Nota: Esta opção funciona igual no modo interpretado e em modo compilado.
Este é o código para o método de projeto Myappli que têm o atributo "Execute on Server":
C_POINTER($1)
C_POINTER($2)
C_POINTER($3)
C_TEXT($4)
C_LONGINT($0)
QUERY($1->;$2->=$4)
While(Not(End selection($1->)))
APPEND TO ARRAY($3->;myFormula($1))
NEXT RECORD($1->)
End while
UNLOAD RECORD($1->)
$0:=Records in selection($1->)
Do lado do cliente, a chamada ao método é feita assim:
ARRAY TEXT(myArray;0)
$vlnum :=MyAppli(->[Table_1] ;->[Table_1]Field_1 ;->myArray;"to find")