home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / pcboard / nu10acdn.zip / NEWUSER.PPS < prev    next >
Text File  |  1993-06-07  |  21KB  |  576 lines

  1. ;*****************************************************************************
  2. ;*                                                                           *
  3. ;*                            NEWUSER.PPE v1.00a                             *
  4. ;*                PCBOARD 15.0 NEWUSER REGISTRATION PROGRAM                  *
  5. ;*                                                                           *
  6. ;*                Written by Larry Steele and Jerry Claxton                  *
  7. ;*                 Written in PCBoard Programming Language                   *
  8. ;*                         Compiled on 06-07-1993                            *
  9. ;*                                                                           *
  10. ;*                   "The Shoppe Bulletin Board Systems"                     *
  11. ;*               Node 1 - 708-888-0725 - [16.8 DS] - 80486/50                *
  12. ;*               Node 2 - 708-888-1162 - [16.8 DS] - 80486/40                *
  13. ;*               Node 3 - 708-888-0078 - [16.8 DS] - 80486/40                *
  14. ;*               Node 4 - 708-888-4175 - [16.8 DS] - 80486/40                *
  15. ;*               Node 5 - PRIVATE LINE - [16.8 DS] - 80486/66                *
  16. ;*****************************************************************************
  17.  
  18.  
  19. ;*****************************************************************************
  20. ;* Define variable types                                                     *
  21. ;*****************************************************************************
  22.  
  23. BOOLEAN NO_BATCH_FILE
  24. INTEGER INPUT_FLAG, LP, NUM_FILES, POS1, POS2
  25.  
  26. STRING  CURRENT_FILE, BAT_PATH, BAT_S, BAT_R, MNP_PROD
  27. STRING  USER_PWD1, USER_PWD2, USER_CITY, USER_BDPHONE, USER_HVPHONE, USER_BRAND
  28. STRING  USER_CLEAR_SCREEN, USER_TRANS, USER_ALIAS, USER_ADDR(5), USER_VER
  29. STRING  KBDSTUFF_STRING1, KBDSTUFF_STRING2, REG_ANSWER
  30. STRING  TEMP_LINE, TEMP_STRING, INPUT_STRING, USER_INPUT
  31.  
  32.  
  33. ;*****************************************************************************
  34. ;* Load the user information, whats available so far                         *
  35. ;*****************************************************************************
  36.  
  37. GETUSER
  38. USER_CLEAR_SCREEN = YESCHAR()
  39. REG_ANSWER = YESCHAR()
  40.  
  41.  
  42. ;*****************************************************************************
  43. ;* Start of main program                                                     *
  44. ;*****************************************************************************
  45.  
  46. :START_PROGRAM
  47.    FOPEN 1, PPEPATH() + "NEWUSER.CNF", O_RD, S_DN
  48.    FGET 1, NUM_FILES
  49.    WHILE (!FERR(1) & (LP <> NUM_FILES)) DO
  50.       FGET 1, CURRENT_FILE
  51.  
  52.       LP = LP + 1
  53.       IF (EXIST(CURRENT_FILE)) DISPFILE CURRENT_FILE, LANG + SEC + GRAPH
  54.  
  55.       NEWLINE
  56.       WAIT
  57.       IF (LP = NUM_FILES) THEN
  58.          FGET 1, BAT_PATH
  59.          IF (RIGHT(BAT_PATH, 1 <> "\")) BAT_PATH = BAT_PATH + "\"
  60.  
  61.          BAT_S = BAT_PATH + "PCBS"
  62.          BAT_R = BAT_PATH + "PCBR"
  63.          FCLOSE 1
  64.       END IF
  65.    END WHILE
  66.  
  67.  
  68. :REGISTER_INPUT
  69.    PROMPTSTR 54, REG_ANSWER, 1, "ynYN", FIELDLEN + GUIDE + UPCASE + YESNO + LFBEFORE
  70.    IF (REG_ANSWER = YESCHAR()) THEN
  71.        KBDSTUFF_STRING1 = UPPER(LEFT(REG_ANSWER, 1)) + CHR(13)
  72.  
  73.        IF (EXIST(PPEPATH() + "NEWINFO")) DISPFILE PPEPATH() + "NEWINFO", LANG + SEC + GRAPH
  74.        NEWLINE
  75.        GOTO PWD_INPUT
  76.    ELSE
  77.        KBDSTUFF_STRING1 = NOCHAR() + CHR(13)
  78.        GOTO STUFF_KEYBOARD
  79.    END IF
  80.    GOTO PROGRAM_ERROR
  81.  
  82.  
  83. :PWD_INPUT
  84.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  85.    IF (EXIST(PPEPATH() + "NEW_A")) DISPFILE PPEPATH() + "NEW_A", LANG + SEC + GRAPH
  86.    
  87.    USER_PWD1 = ""
  88.    PROMPTSTR 152, USER_PWD1, 13, MASK_PWD(), FIELDLEN + GUIDE + UPCASE + LFBEFORE + LFAFTER + ECHODOTS
  89.    IF (LEN(USER_PWD1 = 0)) INPUT_FLAG = INPUT_FLAG + 1
  90.  
  91.    IF (PSA(4) & (LEN(USER_PWD1) < READLINE(PCBDAT(), 265))) THEN
  92.        IF (!LEN(USER_PWD1) = 0) INPUT_FLAG = 0
  93.        USER_PWD1 = ""
  94.  
  95.        NEWLINE
  96.        PRINTLN "@X0CPassword too short!  Must be @X0F" + TRIM(READLINE(PCBDAT(), 265), CHR(32)) + " @X0Ccharacters or longer, try again.@X07"
  97.  
  98.        FRESHLINE
  99.        GOTO PWD_INPUT
  100.    ELSEIF (PSA(4) & (INSTR(U_NAME(), USER_PWD1) > 0)) THEN
  101.        INPUT_FLAG = 0
  102.        USER_PWD1 = ""
  103.  
  104.        NEWLINE
  105.        PRINTLN "@X0CYour password cannot be a subset of your name.  While this may make it easy for"
  106.        PRINTLN "@X0Cyou to remember, it also makes it easier for someone to guess your password.@X07"
  107.  
  108.        FRESHLINE
  109.        GOTO PWD_INPUT
  110.    ELSEIF (TRIM(USER_PWD1, CHR(32)) <> "")
  111.        INPUT_FLAG = 0
  112.    ELSE
  113.        FRESHLINE
  114.        GOTO PWD_INPUT
  115.    END IF
  116.  
  117.    USER_PWD2 = ""
  118.    PROMPTSTR 111, USER_PWD2, 13, MASK_PWD(), FIELDLEN + GUIDE + UPCASE + LFBEFORE + ECHODOTS
  119.  
  120.    IF (USER_PWD1 <> USER_PWD2) THEN
  121.        INPUT_FLAG = 0
  122.        USER_PWD1 = ""
  123.        USER_PWD2 = ""
  124.  
  125.        NEWLINES 2
  126.        PRINTLN "@X0CSorry, @FIRST@, the two passwords do not match, try again.@X07"
  127.  
  128.        FRESHLINE
  129.        GOTO PWD_INPUT
  130.    ELSEIF (USER_PWD1 = USER_PWD2) THEN
  131.        INPUT_FLAG = 0
  132.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  133.  
  134.        NEWLINE
  135.        GOTO CITY_INPUT
  136.    ELSE
  137.        FRESHLINE
  138.        GOTO PWD_INPUT
  139.    END IF
  140.    GOTO PROGRAM_ERROR
  141.  
  142.  
  143. :CITY_INPUT
  144.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  145.    IF (EXIST(PPEPATH() + "NEW_B")) DISPFILE PPEPATH() + "NEW_B", LANG + SEC + GRAPH
  146.  
  147.    PROMPTSTR 265, USER_CITY, 24, MASK_ASCII(), FIELDLEN + GUIDE + UPCASE + LFBEFORE
  148.    IF (LEN(USER_CITY = 0)) INPUT_FLAG = INPUT_FLAG + 1
  149.  
  150.    IF (TRIM(USER_CITY, CHR(32)) <> "") THEN
  151.        INPUT_FLAG = 0
  152.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  153.  
  154.        NEWLINE
  155.        GOTO BDPHONE_INPUT
  156.    ELSE
  157.        FRESHLINE
  158.        GOTO CITY_INPUT
  159.    END IF
  160.    GOTO PROGRAM_ERROR
  161.  
  162.  
  163. :BDPHONE_INPUT
  164.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  165.    IF (EXIST(PPEPATH() + "NEW_C")) DISPFILE PPEPATH() + "NEW_C", LANG + SEC + GRAPH
  166.  
  167.    PROMPTSTR 113, USER_BDPHONE, 13, MASK_NUM() + "- ", FIELDLEN + GUIDE + UPCASE + LFBEFORE
  168.    IF (LEN(USER_BDPHONE = 0)) INPUT_FLAG = INPUT_FLAG + 1
  169.  
  170.    IF (TRIM(USER_BDPHONE, CHR(32)) <> "") THEN
  171.        INPUT_FLAG = 0
  172.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  173.  
  174.        NEWLINE
  175.        GOTO HVPHONE_INPUT
  176.    ELSE
  177.        FRESHLINE
  178.        GOTO BDPHONE_INPUT
  179.    END IF
  180.    GOTO PROGRAM_ERROR
  181.  
  182.  
  183. :HVPHONE_INPUT
  184.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  185.    IF (EXIST(PPEPATH() + "NEW_D")) DISPFILE PPEPATH() + "NEW_D", LANG + SEC + GRAPH
  186.  
  187.    PROMPTSTR 114, USER_HVPHONE, 13, MASK_NUM() + "- ", FIELDLEN + GUIDE + UPCASE + LFBEFORE
  188.    IF (LEN(USER_HVPHONE = 0)) INPUT_FLAG = INPUT_FLAG + 1
  189.  
  190.    IF (TRIM(USER_HVPHONE, CHR(32)) <> "") THEN
  191.        INPUT_FLAG = 0
  192.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  193.  
  194.        NEWLINE
  195.        GOTO BRAND_INPUT
  196.    ELSE
  197.        FRESHLINE
  198.        GOTO HVPHONE_INPUT
  199.    END IF
  200.    GOTO PROGRAM_ERROR
  201.  
  202.  
  203. :BRAND_INPUT
  204.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  205.    IF (EXIST(PPEPATH() + "NEW_E")) DISPFILE PPEPATH() + "NEW_E", LANG + SEC + GRAPH
  206.    
  207.    PROMPTSTR 2, USER_BRAND, 30, MASK_ASCII(), FIELDLEN + GUIDE + UPCASE + LFBEFORE
  208.    IF (LEN(USER_BRAND = 0)) INPUT_FLAG = INPUT_FLAG + 1
  209.  
  210.    IF (TRIM(USER_BRAND, CHR(32)) <> "") THEN
  211.        INPUT_FLAG = 0
  212.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  213.  
  214.        NEWLINE
  215.        GOTO MESSAGE_INPUT
  216.    ELSE
  217.        FRESHLINE
  218.        GOTO BRAND_INPUT
  219.    END IF
  220.    GOTO PROGRAM_ERROR
  221.  
  222.  
  223. :MESSAGE_INPUT
  224.    IF (EXIST(PPEPATH() + "NEW_F")) DISPFILE PPEPATH() + "NEW_F", LANG + SEC + GRAPH
  225.  
  226.    PROMPTSTR 556, USER_CLEAR_SCREEN, 1, "ynYN", FIELDLEN + GUIDE + UPCASE + LFBEFORE + YESNO
  227.  
  228.    IF (TRIM(USER_CLEAR_SCREEN, CHR(32)) <> "") THEN
  229.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  230.  
  231.        NEWLINE
  232.        GOTO TRANS_INPUT
  233.    ELSE
  234.  
  235.        NEWLINE
  236.        GOTO TRANS_INPUT
  237.    END IF
  238.    GOTO PROGRAM_ERROR
  239.  
  240.  
  241. :TRANS_INPUT
  242.    USER_TRANS = U_TRANS
  243.    IF (!EXIST(READLINE(PCBDAT(), 45))) THEN
  244.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  245.  
  246.        NEWLINE
  247.        GOTO PSA_ALIAS_NAME_INPUT
  248.    END IF
  249.  
  250.    NEWLINE
  251.    PRINTLN "@X70┌────────────────────────────────────────────────────────@X7F┐@X07"
  252.    PRINTLN "@X70│         @X7BP R O T O C O L S   A V A I L A B L E@POS:58@@X7F│@X07"
  253.    PRINTLN "@X70└@X7F────────────────────────────────────────────────────────┘@X07"
  254.    
  255.    NEWLINE
  256.    PRINTLN "@X70┌@X7F────────────────────────────────────────────────────────┐@X07"
  257.  
  258.    FOPEN 1, READLINE(PCBDAT(), 45), O_RD, S_DN
  259.    WHILE (!FERR(1)) DO
  260.       FGET 1, TEMP_LINE
  261.       IF ((MID(TEMP_LINE, 3, 1) <> "I") & (!EXIST(BAT_S + LEFT(TEMP_LINE, 1) + ".BAT")) & (!EXIST(BAT_R + LEFT(TEMP_LINE, 1) + ".BAT"))) NO_BATCH_FILE = TRUE
  262.  
  263.       POS1 = INSTR(TEMP_LINE, ",")
  264.       IF ((!POS1 = 0) & (NO_BATCH_FILE = 0) | (LEFT(TEMP_LINE, 1) = "N")) THEN
  265.           INPUT_STRING = INPUT_STRING + LEFT(TEMP_LINE, (POS1 - 1))
  266.           IF (!LEFT(TEMP_LINE, (POS1 - 1)) = U_TRANS) THEN
  267.               PRINT "@X70│    @X71(@X7E" + LEFT(TEMP_LINE, (POS1 - 1)) + "@X71) "
  268.           ELSE
  269.                PRINT "@X70│ @XF4=> @X71(@X7E" + LEFT(TEMP_LINE, (POS1 - 1)) + "@X71) "
  270.           END IF
  271.  
  272.           TEMP_STRING = MID(TEMP_LINE, ((POS1 + 1) + 2), LEN(TEMP_LINE) - (POS1 + 2))
  273.  
  274.           POS2 = INSTR(TEMP_STRING, ",")
  275.           TEMP_STRING = MID(TEMP_STRING, (POS2 + 1), (LEN(TEMP_LINE) - (POS1 + 2) - POS2))
  276.           
  277.           PRINTLN "@X71" + LEFT(TEMP_STRING, STRING(INSTR(TEMP_STRING, ",")) - 1) + "@POS:58@@X7F│@X07"
  278.       END IF
  279.       NO_BATCH_FILE = 0
  280.    END WHILE
  281.  
  282.    FCLOSE 1
  283.    PRINTLN "@X70└────────────────────────────────────────────────────────@X7F┘@X07"
  284.  
  285.  
  286.    PROMPTSTR 198, USER_TRANS, 1, INPUT_STRING, FIELDLEN + GUIDE + UPCASE + LFBEFORE
  287.  
  288.    IF (LEFT(USER_TRANS, 1) = NOCHAR()) THEN
  289.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  290.  
  291.        NEWLINE
  292.        GOTO PSA_ALIAS_NAME_INPUT
  293.    END IF
  294.    
  295.    FOPEN 1, READLINE(PCBDAT(), 45), O_RD, S_DN
  296.    WHILE (!FERR(1)) DO
  297.       FGET 1, TEMP_LINE
  298.       
  299.       IF (LEN(TRIM(TEMP_LINE, CHR(32)))) THEN
  300.           IF ((MID(TEMP_LINE, 3, 1) <> "I") & (!EXIST(BAT_S + LEFT(TEMP_LINE, 1) + ".BAT")) & (!EXIST(BAT_R + LEFT(TEMP_LINE, 1) + ".BAT"))) NO_BATCH_FILE = TRUE
  301.  
  302.           IF ((USER_TRANS = LEFT(TEMP_LINE, 1)) & (NO_BATCH_FILE = 0)) THEN
  303.               MNP_PROD = MID(TEMP_LINE, (LEN(TEMP_LINE) - 4), 1)
  304.  
  305.               IF (MNP_PROD = YESCHAR()) THEN
  306.                   IF (!INSTR(MODEM(), ("MNP" | "V42" | "LAPM" | "HST")) & (!ONLOCAL())) THEN
  307.                       NEWLINES 2
  308.                       PRINTLN "@X0CProtocol Unavailable - Modem Type Wrong!"
  309.  
  310.                       FCLOSE 1
  311.                       GOTO TRANS_INPUT
  312.                   END IF
  313.               END IF
  314.               FCLOSE 1
  315.               IF (USER_INPUT <> "") GOTO USER_INPUTS
  316.  
  317.               NEWLINE
  318.               GOTO PSA_ALIAS_NAME_INPUT
  319.           END IF
  320.       END IF
  321.    END WHILE
  322.    GOTO PROGRAM_ERROR
  323.  
  324.  
  325. :PSA_ALIAS_NAME_INPUT
  326.    IF (!PSA(1)) GOTO PSA_STREET_NUMBER1_INPUT
  327.    IF (EXIST(PPEPATH() + "ALIAS")) DISPFILE PPEPATH() + "ALIAS", LANG + SEC + GRAPH
  328.  
  329.    PROMPTSTR 690, USER_ALIAS, 25, MASK_ASCII(), FIELDLEN + GUIDE + UPCASE + LFBEFORE
  330.  
  331.    IF (U_RECNUM(USER_ALIAS) <> -1) THEN
  332.        LOG "Attempted to use " + TRIM(USER_ALIAS, CHR(32)) + " as an alias.", 0
  333.  
  334.        NEWLINES 2
  335.        DISPTEXT 256, LFAFTER + BELL
  336.  
  337.        USER_ALIAS = ""
  338.        GOTO PSA_ALIAS_NAME_INPUT
  339.    ELSE
  340.        USER_ALIAS = STRIP(TRIM(USER_ALIAS, CHR(32)), CHR(0))
  341.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  342.  
  343.        NEWLINE
  344.        GOTO PSA_STREET_NUMBER1_INPUT
  345.    END IF
  346.    GOTO PROGRAM_ERROR
  347.  
  348.  
  349. :PSA_STREET_NUMBER1_INPUT
  350.    IF (!PSA(3)) GOTO PSA_VERIFICATION_INPUT
  351.    IF (EXIST(PPEPATH() + "NEW_G")) DISPFILE PPEPATH() + "NEW_G", LANG + SEC + GRAPH
  352.  
  353.    INPUTSTR "Street Address and Number", USER_ADDR(0), 0Eh, 50, MASK_ASCII(), FIELDLEN + GUIDE + UPCASE + LFBEFORE
  354.  
  355.    IF (USER_INPUT <> "") GOTO USER_INPUTS
  356.    NEWLINE
  357.    GOTO PSA_STREET_NUMBER2_INPUT
  358.    GOTO PROGRAM_ERROR
  359.  
  360.  
  361. :PSA_STREET_NUMBER2_INPUT
  362.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  363.    IF (EXIST(PPEPATH() + "NEW_H")) DISPFILE PPEPATH() + "NEW_H", LANG + SEC + GRAPH
  364.  
  365.    INPUTSTR "Suite or Apartment Number", USER_ADDR(1), 0Eh, 50, MASK_ASCII(), FIELDLEN + GUIDE + UPCASE + LFBEFORE
  366.    IF (LEN(USER_ADDR(1) = 0)) INPUT_FLAG = INPUT_FLAG + 1
  367.  
  368.    IF ((TRIM(USER_ADDR(0), CHR(32)) <> "") | (TRIM(USER_ADDR(1), CHR(32)) <> "")) THEN
  369.        INPUT_FLAG = 0
  370.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  371.  
  372.        NEWLINE
  373.        GOTO PSA_CITY_INPUT
  374.    ELSE
  375.        FRESHLINE
  376.        GOTO PSA_STREET_NUMBER2_INPUT
  377.    END IF
  378.    GOTO PROGRAM_ERROR
  379.  
  380.  
  381. :PSA_CITY_INPUT
  382.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  383.    IF (EXIST(PPEPATH() + "NEW_I")) DISPFILE PPEPATH() + "NEW_I", LANG + SEC + GRAPH
  384.  
  385.    INPUTSTR "City, Town or Village", USER_ADDR(2), 0Eh, 25, MASK_ASCII(), FIELDLEN + GUIDE + UPCASE + LFBEFORE
  386.    IF (LEN(USER_ADDR(2) = 0)) INPUT_FLAG = INPUT_FLAG + 1
  387.  
  388.    IF (TRIM(USER_ADDR(2), CHR(32)) <> "") THEN
  389.        INPUT_FLAG = 0
  390.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  391.  
  392.        NEWLINE
  393.        GOTO PSA_PROVINCE_STATE_INPUT
  394.    ELSE
  395.        FRESHLINE
  396.        GOTO PSA_CITY_INPUT
  397.    END IF
  398.    GOTO PROGRAM_ERROR
  399.  
  400.  
  401. :PSA_PROVINCE_STATE_INPUT
  402.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  403.    IF (EXIST(PPEPATH() + "NEW_J")) DISPFILE PPEPATH() + "NEW_J", LANG + SEC + GRAPH
  404.  
  405.    INPUTSTR "Province or State", USER_ADDR(3), 0Eh, 10, MASK_ASCII(), FIELDLEN + GUIDE + UPCASE + LFBEFORE
  406.    IF (LEN(USER_ADDR(3) = 0)) INPUT_FLAG = INPUT_FLAG + 1
  407.  
  408.    IF (TRIM(USER_ADDR(3), CHR(32)) <> "") THEN
  409.        INPUT_FLAG = 0
  410.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  411.  
  412.        NEWLINE
  413.        GOTO PSA_ZIPCODE_INPUT
  414.    ELSE
  415.        FRESHLINE
  416.        GOTO PSA_PROVINCE_STATE_INPUT
  417.    END IF
  418.    GOTO PROGRAM_ERROR
  419.  
  420.  
  421. :PSA_ZIPCODE_INPUT
  422.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  423.    IF (EXIST(PPEPATH() + "NEW_K")) DISPFILE PPEPATH() + "NEW_K", LANG + SEC + GRAPH
  424.  
  425.    INPUTSTR "Postal/Zip Code", USER_ADDR(4), 0Eh, 10, MASK_NUM() + "-", FIELDLEN + GUIDE + UPCASE + LFBEFORE
  426.    IF (LEN(USER_ADDR(4) = 0)) INPUT_FLAG = INPUT_FLAG + 1
  427.  
  428.    IF (TRIM(USER_ADDR(4), CHR(32)) <> "") THEN
  429.        INPUT_FLAG = 0
  430.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  431.  
  432.        NEWLINE
  433.        GOTO PSA_COUNTRY_INPUT
  434.    ELSE
  435.        FRESHLINE
  436.        GOTO PSA_ZIPCODE_INPUT
  437.    END IF
  438.    GOTO PROGRAM_ERROR
  439.  
  440.  
  441. :PSA_COUNTRY_INPUT
  442.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  443.    IF (EXIST(PPEPATH() + "NEW_L")) DISPFILE PPEPATH() + "NEW_L", LANG + SEC + GRAPH
  444.  
  445.    INPUTSTR "Country or Region", USER_ADDR(5), 0Eh, 15, MASK_ASCII(), FIELDLEN + GUIDE + UPCASE + LFBEFORE
  446.    IF (LEN(USER_ADDR(5) = 0)) INPUT_FLAG = INPUT_FLAG + 1
  447.  
  448.    IF (TRIM(USER_ADDR(5), CHR(32)) <> "") THEN
  449.        INPUT_FLAG = 0
  450.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  451.  
  452.        NEWLINE
  453.        GOTO PSA_VERIFICATION_INPUT
  454.    ELSE
  455.        FRESHLINE
  456.        GOTO PSA_COUNTRY_INPUT
  457.    END IF
  458.    GOTO PROGRAM_ERROR
  459.  
  460.  
  461. :PSA_VERIFICATION_INPUT
  462.    IF (!PSA(2)) GOTO USER_INPUTS
  463.  
  464.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  465.    IF (EXIST(PPEPATH() + "VERIFY")) DISPFILE PPEPATH() + "VERIFY", LANG + SEC + GRAPH
  466.  
  467.    PROMPTSTR 706, USER_VER, 25, MASK_ASCII(), FIELDLEN + GUIDE + UPCASE + LFBEFORE
  468.    IF (LEN(USER_VER = 0)) INPUT_FLAG = INPUT_FLAG + 1
  469.  
  470.    IF (TRIM(USER_VER, CHR(32)) <> "") THEN
  471.        INPUT_FLAG = 0
  472.        GOTO USER_INPUTS
  473.    ELSE
  474.        FRESHLINE
  475.        GOTO PSA_VERIFICATION_INPUT
  476.    END IF
  477.    GOTO PROGRAM_ERROR
  478.  
  479.  
  480. :USER_INPUTS
  481.    USER_INPUT = ""
  482.    CLS
  483.    PRINTLN "@X0F[@X0CA@X0F] @X0EPassword                 @X07: @X0F[@X0A" + LEFT(RTRIM(USER_PWD1, CHR(32)) + "·············", 13) + "@X0F]@X07"
  484.    PRINTLN "@X0F[@X0CB@X0F] @X0ECity and State           @X07: @X0F[@X0A" + LEFT(RTRIM(USER_CITY, CHR(32)) + "························", 24) + "@X0F]@X07"
  485.    PRINTLN "@X0F[@X0CC@X0F] @X0EBusiness or data phone   @X07: @X0F[@X0A" + LEFT(RTRIM(USER_BDPHONE, CHR(32)) + "·············", 13) + "@X0F]@X07"
  486.    PRINTLN "@X0F[@X0CD@X0F] @X0EHome or voice phone      @X07: @X0F[@X0A" + LEFT(RTRIM(USER_HVPHONE, CHR(32)) + "·············", 13) + "@X0F]@X07"
  487.    PRINTLN "@X0F[@X0CE@X0F] @X0EBrand of CPU             @X07: @X0F[@X0A" + LEFT(RTRIM(USER_BRAND, CHR(32)) + "······························", 30) + "@X0F]@X07"
  488.    PRINTLN
  489.    PRINTLN "@X0F[@X0CF@X0F] @X0EMessage Clear Screen     @X07: @X0F[@X0A" + USER_CLEAR_SCREEN + "@X0F]@X07"
  490.    PRINTLN "@X0F[@X0CG@X0F] @X0EDefault Protocol         @X07: @X0F[@X0A" + USER_TRANS + "@X0F]@X07"
  491.  
  492.    IF (PSA(3)) THEN
  493.       PRINTLN
  494.       PRINTLN "@X0F[@X0CH@X0F] @X0EStreet Address and Number@X07: @X0F[@X0A" + LEFT(RTRIM(USER_ADDR(0), CHR(32)) + "··············································", 46) + "@X0F]@X07"
  495.       PRINTLN "@X0F[@X0CI@X0F] @X0ESuite or Apartment Number@X07: @X0F[@X0A" + LEFT(RTRIM(USER_ADDR(1), CHR(32)) + "··············································", 46) + "@X0F]@X07"
  496.       PRINTLN "@X0F[@X0CJ@X0F] @X0ECity, Town or Village    @X07: @X0F[@X0A" + LEFT(RTRIM(USER_ADDR(2), CHR(32)) + "·························", 25) + "@X0F]@X07"
  497.       PRINTLN "@X0F[@X0CK@X0F] @X0EProvince or State        @X07: @X0F[@X0A" + LEFT(RTRIM(USER_ADDR(3), CHR(32)) + "··········", 10) + "@X0F]@X07"
  498.       PRINTLN "@X0F[@X0CL@X0F] @X0EPostal Zip Code          @X07: @X0F[@X0A" + LEFT(RTRIM(USER_ADDR(4), CHR(32)) + "··········", 10) + "@X0F]@X07"
  499.       PRINTLN "@X0F[@X0CM@X0F] @X0ECountry or Region        @X07: @X0F[@X0A" + LEFT(RTRIM(USER_ADDR(5), CHR(32)) + "···············", 15) + "@X0F]@X07"
  500.    END IF
  501.  
  502.    PRINTLN
  503.    IF (PSA(1)) PRINTLN "@X0F[@X0CN@X0F] @X0EAlias Name               @X07: @X0F[@X0A" + LEFT(RTRIM(USER_ALIAS, CHR(32)) + "·························", 25) + "@X0F]@X07"
  504.    IF (PSA(2)) PRINTLN "@X0F[@X0CO@X0F] @X0EVerification Information @X07: @X0F[@X0A" + LEFT(RTRIM(USER_VER, CHR(32)) + "·························", 25) + "@X0F]@X07"
  505.    
  506.    IF (PSA(1) | PSA(2)) PRINTLN
  507.    PRINTLN "@X0BIf any of the information above is incorrect or inaccurate, now is your chance@X07"
  508.    PRINTLN "@X0Bto change it.  All information will be verified before full access is granted.@X07"
  509.  
  510.    INPUTSTR "(@X0C@MINLEFT@ @X0Fmin. left) Enter the letter to be edited? (@X0CEnter@X0F)=done", USER_INPUT, 0Fh, 1, "abcdefghijklmnoqABCDEFGHIJKLMNOQ", FIELDLEN + GUIDE + UPCASE + LFBEFORE + ERASELINE + BELL
  511.    IF (USER_INPUT = "A") GOTO PWD_INPUT
  512.    IF (USER_INPUT = "B") GOTO CITY_INPUT
  513.    IF (USER_INPUT = "C") GOTO BDPHONE_INPUT
  514.    IF (USER_INPUT = "D") GOTO HVPHONE_INPUT
  515.    IF (USER_INPUT = "E") GOTO BRAND_INPUT
  516.  
  517.    IF (USER_INPUT = "F") GOTO MESSAGE_INPUT
  518.    IF (USER_INPUT = "G") GOTO TRANS_INPUT
  519.    
  520.    IF ((PSA(3)) & (USER_INPUT = "H")) GOTO PSA_STREET_NUMBER1_INPUT
  521.    IF ((PSA(3)) & (USER_INPUT = "I")) GOTO PSA_STREET_NUMBER2_INPUT
  522.    IF ((PSA(3)) & (USER_INPUT = "J")) GOTO PSA_CITY_INPUT
  523.    IF ((PSA(3)) & (USER_INPUT = "K")) GOTO PSA_PROVINCE_STATE_INPUT
  524.    IF ((PSA(3)) & (USER_INPUT = "L")) GOTO PSA_ZIPCODE_INPUT
  525.    IF ((PSA(3)) & (USER_INPUT = "M")) GOTO PSA_COUNTRY_INPUT
  526.  
  527.    IF ((PSA(1)) & (USER_INPUT = "N")) GOTO PSA_ALIAS_NAME_INPUT
  528.    IF ((PSA(2)) & (USER_INPUT = "O")) GOTO PSA_VERIFICATION_INPUT
  529.  
  530.    IF (LEN(USER_INPUT) = 0) GOTO STUFF_KEYBOARD
  531.  
  532.    IF (USER_INPUT = "Q") THEN
  533.        USER_INPUT = NOCHAR()
  534.  
  535.        INPUTSTR "Proceed with Log-Off", USER_INPUT, 0Fh, 1, "ynYN", FIELDLEN + GUIDE + UPCASE + ERASELINE + YESNO
  536.        IF (USER_INPUT = YESCHAR()) HANGUP
  537.    END IF
  538.    GOTO USER_INPUTS
  539.  
  540.  
  541. :STUFF_KEYBOARD
  542.    CLS
  543.    KBDSTUFF_STRING2 = USER_PWD1 + CHR(13) + USER_PWD2 + CHR(13)
  544.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_CITY + CHR(13)
  545.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_BDPHONE + CHR(13)
  546.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_HVPHONE + CHR(13)
  547.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_BRAND + CHR(13)
  548.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_CLEAR_SCREEN + CHR(13)
  549.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_TRANS + CHR(13)
  550.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_ALIAS + CHR(13)
  551.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_ADDR(0) + CHR(13)
  552.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_ADDR(1) + CHR(13)
  553.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_ADDR(2) + CHR(13)
  554.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_ADDR(3) + CHR(13)
  555.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_ADDR(4) + CHR(13)
  556.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_ADDR(5) + CHR(13)
  557.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_VER + CHR(13)
  558.  
  559.    KBDSTUFF KBDSTUFF_STRING1 + KBDSTUFF_STRING2
  560.    END
  561.  
  562.  
  563. :ACCESS_DENIED
  564.    NEWLINE
  565.    PRINTLN "@X0CAccess Denied - Refused to Complete Registration!"
  566.    HANGUP
  567.  
  568.  
  569. :PROGRAM_ERROR
  570.    NEWLINES 2
  571.    PRINT "PPE Program Error... Please nodify SysOp... "
  572.    DELAY (50)
  573.  
  574.    FRESHLINE
  575.    HANGUP
  576.