The M109 command will only accept 1 digit inputs but you can layer the M109
commands to enter things like part numbers or numbers larger then 9. I have attached a simple M109 example program that will let you run programs 11 through 39 by entering the first digit at the first M109 and the second digit at the second M109. These two M109 commands will branch the program into programs 11 through 39 depending on the operators inputs, in each one of these programs there is a #3006 PROGRAMMABLE STOP WITH MESSAGE that will ask the operator to ( PRESS CYCLE START TO RUN PROGRAM XX ) so the operator can verify his inputs before continuing.
This is just an example program, you will need to modify it based on your needs but it should give you an idea of how to use M109 to enter more then one digit. A simpler way to do the same thing would be to have the operator enter the program or part number directly into a variable then use the #3006 PROGRAMMABLE STOP WITH MESSAGE so the operator can verify his input.
Please let me know if you have any questions.