algorithmicx or algpseudocode custom command indentation within a while loop or if statement

I have been trying all day to set-up the commands necessary to represent the Haggis pseudocode format using the algorithmicx package in Latex. I have managed to create the commands I need for the simple algorithm I am describing but I can't get the indentation to appear correctly.

In my main document I am defining the following new commands and my algorithm below it:

\documentclass{report}

\usepackage{algpseudocode}
\algnewcommand\algorithmicset{\textbf{SET}}
\algnewcommand\algorithmicto{\textbf{TO}}
\algnewcommand\SET[2]{\item\algorithmicset\ #1 \algorithmicto\ #2}
\algnewcommand\algorithmicfromkeyboard{\textbf{FROM KEYBOARD}}
\algnewcommand\algorithmicsend{\textbf{SEND}}
\algnewcommand\algorithmictodisplay{\textbf{TO DISPLAY}}
\algnewcommand\SEND[1]{\item\algorithmicsend\ #1 \algorithmictodisplay}
\algrenewcommand\algorithmicwhile{\textbf{WHILE}}
\algrenewcommand\algorithmicend{\textbf{END}}
\algrenewcommand\algorithmicdo{\textbf{DO}}
\algrenewcommand\algorithmicif{\textbf{IF}}
\algrenewcommand\algorithmicthen{\textbf{THEN}}

\begin{document}

\begin{algorithm}[H]
\caption{Hello world}
\begin{algorithmic}[1]
\SET{$number$}{$0$}
\While{$number \neq -1$}
\SEND{$"Please\ enter\ the\ next\ number\ (-1\ to\ end):\ "$}
\RECEIVE{$number$}
\If{$number \neq -1$}
\SET{$number$}{$total\ +\ number$}
\EndIf
\EndWhile
\SEND{$total$}
\end{algorithmic}
\end{algorithm}

\end{document}


When I create the PDF I get the following:

There is something wrong with the either the commands I have created or there is something else that I need to do that I am unaware of. I have searched for sometime without success and I would appreciate any assistance with this problem as I am tearing my hair out! No doubt it is something obvious I have overlooked.

• Welcome to TeX.SX! Please make your code compilable (if possible), or at least complete it with \documentclass{...}, the required \usepackage's, \begin{document}, and \end{document}. That may seem tedious to you, but think of the extra work it represents for TeX.SX users willing to give you a hand. Help them help you: remove that one hurdle between you and a solution to your problem. Jun 3 '14 at 14:25

While algorithmicx sets an algorithm as a list - implying that \item should work as an instruction-setting command - \State is the preferred setting mechanism which uses the appropriate indentation at that level:

\documentclass{article}

\usepackage{algpseudocode}
\algnewcommand\algorithmicset{\textbf{SET}}
\algnewcommand\algorithmicto{\textbf{TO}}
\algnewcommand\SET[2]{\State\algorithmicset\ #1 \algorithmicto\ #2}
\algnewcommand\algorithmicfromkeyboard{\textbf{FROM KEYBOARD}}
\algnewcommand\algorithmicsend{\textbf{SEND}}
\algnewcommand\algorithmictodisplay{\textbf{TO DISPLAY}}
\algnewcommand\SEND[1]{\State\algorithmicsend\ #1 \algorithmictodisplay}
\algrenewcommand\algorithmicwhile{\textbf{WHILE}}
\algrenewcommand\algorithmicend{\textbf{END}}
\algrenewcommand\algorithmicdo{\textbf{DO}}
\algrenewcommand\algorithmicif{\textbf{IF}}
\algrenewcommand\algorithmicthen{\textbf{THEN}}

\begin{document}

\begin{algorithmic}[1]
\SET{$number$}{$0$}
\While{$number \neq -1$}
\SEND{$"Please\ enter\ the\ next\ number\ (-1\ to\ end):\ "$}
\RECEIVE{$number$}
\If{$number \neq -1$}
\SET{$number$}{$total\ +\ number$}
\EndIf
\EndWhile
\SEND{$total$}
\end{algorithmic}

\end{document}


You'll notice all \items are changed to \States.