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

  1. ;*****************************************************************************
  2. ;*                                                                           *
  3. ;*                            NEWUSER.PPE v1.10a                             *
  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-08-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. ;*               Voice Support - [708-426-9411] - [10:00 am - 11:00 pm]      *
  17. ;*****************************************************************************
  18.  
  19.  
  20. ;*****************************************************************************
  21. ;* Define variable types                                                     *
  22. ;*****************************************************************************
  23.  
  24. BOOLEAN NO_BATCH_FILE
  25. INTEGER INPUT_FLAG, LP, NUM_FILES, POS1, POS2
  26.  
  27. STRING  CURRENT_FILE, BAT_PATH, BAT_S, BAT_R, MNP_PROD, TCAN_NAME
  28. STRING  USER_PWD1, USER_PWD2, USER_CITY, USER_BDPHONE, USER_HVPHONE, USER_BRAND
  29. STRING  USER_CLEAR_SCREEN, USER_TRANS, USER_ALIAS, USER_ADDR(5), USER_VER
  30. STRING  KBDSTUFF_STRING1, KBDSTUFF_STRING2, REG_ANSWER
  31. STRING  TEMP_LINE, TEMP_STRING, INPUT_STRING, USER_INPUT
  32.  
  33.  
  34. ;*****************************************************************************
  35. ;* Load the user information, whats available so far                         *
  36. ;*****************************************************************************
  37.  
  38. GETUSER
  39. USER_CLEAR_SCREEN = YESCHAR()
  40. REG_ANSWER = YESCHAR()
  41. USER_TRANS = U_TRANS
  42.  
  43. ;*****************************************************************************
  44. ;* Start of main program                                                     *
  45. ;*****************************************************************************
  46.  
  47. :START_PROGRAM
  48.    FOPEN 1, PPEPATH() + "NEWUSER.CNF", O_RD, S_DN
  49.    FGET 1, NUM_FILES
  50.    WHILE (!FERR(1) & (LP <> NUM_FILES)) DO
  51.       FGET 1, CURRENT_FILE
  52.  
  53.       LP = LP + 1
  54.       IF (EXIST(CURRENT_FILE)) DISPFILE CURRENT_FILE, LANG + SEC + GRAPH
  55.  
  56.       NEWLINE
  57.       WAIT
  58.       IF (LP = NUM_FILES) THEN
  59.          FGET 1, BAT_PATH
  60.          IF (RIGHT(BAT_PATH, 1 <> "\")) BAT_PATH = BAT_PATH + "\"
  61.  
  62.          BAT_S = BAT_PATH + "PCBS"
  63.          BAT_R = BAT_PATH + "PCBR"
  64.          FCLOSE 1
  65.       END IF
  66.    END WHILE
  67.  
  68.  
  69. :REGISTER_INPUT
  70.    PROMPTSTR 54, REG_ANSWER, 1, "ynYN", FIELDLEN + GUIDE + UPCASE + YESNO + LFBEFORE
  71.    IF (REG_ANSWER = YESCHAR()) THEN
  72.        KBDSTUFF_STRING1 = UPPER(LEFT(REG_ANSWER, 1)) + CHR(13)
  73.  
  74.        IF (EXIST(PPEPATH() + "NEWINFO")) DISPFILE PPEPATH() + "NEWINFO", LANG + SEC + GRAPH
  75.        NEWLINE
  76.        GOTO PWD_INPUT
  77.    ELSE
  78.        KBDSTUFF_STRING1 = NOCHAR() + CHR(13)
  79.        GOTO STUFF_KEYBOARD
  80.    END IF
  81.    GOTO PROGRAM_ERROR
  82.  
  83.  
  84. :PWD_INPUT
  85.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  86.    IF (EXIST(PPEPATH() + "NEW_A")) DISPFILE PPEPATH() + "NEW_A", LANG + SEC + GRAPH
  87.    
  88.    USER_PWD1 = ""
  89.    PROMPTSTR 152, USER_PWD1, 13, MASK_PWD(), FIELDLEN + GUIDE + UPCASE + LFBEFORE + LFAFTER + ECHODOTS
  90.    IF (LEN(USER_PWD1 = 0)) INPUT_FLAG = INPUT_FLAG + 1
  91.  
  92.    IF (PSA(4) & (LEN(USER_PWD1) < READLINE(PCBDAT(), 265))) THEN
  93.        IF (!LEN(USER_PWD1) = 0) INPUT_FLAG = 0
  94.        USER_PWD1 = ""
  95.  
  96.        NEWLINE
  97.        PRINTLN "@X0CPassword too short!  Must be @X0F" + TRIM(READLINE(PCBDAT(), 265), CHR(32)) + " @X0Ccharacters or longer, try again.@X07"
  98.  
  99.        FRESHLINE
  100.        GOTO PWD_INPUT
  101.    ELSEIF (PSA(4) & (INSTR(U_NAME(), USER_PWD1) > 0)) THEN
  102.        INPUT_FLAG = 0
  103.        USER_PWD1 = ""
  104.  
  105.        NEWLINE
  106.        PRINTLN "@X0CYour password cannot be a subset of your name.  While this may make it easy for"
  107.        PRINTLN "@X0Cyou to remember, it also makes it easier for someone to guess your password.@X07"
  108.  
  109.        FRESHLINE
  110.        GOTO PWD_INPUT
  111.    ELSEIF (TRIM(USER_PWD1, CHR(32)) <> "")
  112.        INPUT_FLAG = 0
  113.    ELSE
  114.        FRESHLINE
  115.        GOTO PWD_INPUT
  116.    END IF
  117.  
  118.    USER_PWD2 = ""
  119.    PROMPTSTR 111, USER_PWD2, 13, MASK_PWD(), FIELDLEN + GUIDE + UPCASE + LFBEFORE + ECHODOTS
  120.  
  121.    IF (USER_PWD1 <> USER_PWD2) THEN
  122.        INPUT_FLAG = 0
  123.        USER_PWD1 = ""
  124.        USER_PWD2 = ""
  125.  
  126.        NEWLINES 2
  127.        PRINTLN "@X0CSorry, @FIRST@, the two passwords do not match, try again.@X07"
  128.  
  129.        FRESHLINE
  130.        GOTO PWD_INPUT
  131.    ELSEIF (USER_PWD1 = USER_PWD2) THEN
  132.        INPUT_FLAG = 0
  133.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  134.  
  135.        NEWLINE
  136.        GOTO CITY_INPUT
  137.    ELSE
  138.        FRESHLINE
  139.        GOTO PWD_INPUT
  140.    END IF
  141.    GOTO PROGRAM_ERROR
  142.  
  143.  
  144. :CITY_INPUT
  145.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  146.    IF (EXIST(PPEPATH() + "NEW_B")) DISPFILE PPEPATH() + "NEW_B", LANG + SEC + GRAPH
  147.  
  148.    PROMPTSTR 265, USER_CITY, 24, MASK_ASCII(), FIELDLEN + GUIDE + UPCASE + LFBEFORE
  149.    IF (LEN(USER_CITY = 0)) INPUT_FLAG = INPUT_FLAG + 1
  150.  
  151.    IF (TRIM(USER_CITY, CHR(32)) <> "") THEN
  152.        INPUT_FLAG = 0
  153.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  154.  
  155.        NEWLINE
  156.        GOTO BDPHONE_INPUT
  157.    ELSE
  158.        FRESHLINE
  159.        GOTO CITY_INPUT
  160.    END IF
  161.    GOTO PROGRAM_ERROR
  162.  
  163.  
  164. :BDPHONE_INPUT
  165.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  166.    IF (EXIST(PPEPATH() + "NEW_C")) DISPFILE PPEPATH() + "NEW_C", LANG + SEC + GRAPH
  167.  
  168.    PROMPTSTR 113, USER_BDPHONE, 13, MASK_NUM() + "- ", FIELDLEN + GUIDE + UPCASE + LFBEFORE
  169.    IF (LEN(USER_BDPHONE = 0)) INPUT_FLAG = INPUT_FLAG + 1
  170.  
  171.    IF (TRIM(USER_BDPHONE, CHR(32)) <> "") THEN
  172.        INPUT_FLAG = 0
  173.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  174.  
  175.        NEWLINE
  176.        GOTO HVPHONE_INPUT
  177.    ELSE
  178.        FRESHLINE
  179.        GOTO BDPHONE_INPUT
  180.    END IF
  181.    GOTO PROGRAM_ERROR
  182.  
  183.  
  184. :HVPHONE_INPUT
  185.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  186.    IF (EXIST(PPEPATH() + "NEW_D")) DISPFILE PPEPATH() + "NEW_D", LANG + SEC + GRAPH
  187.  
  188.    PROMPTSTR 114, USER_HVPHONE, 13, MASK_NUM() + "- ", FIELDLEN + GUIDE + UPCASE + LFBEFORE
  189.    IF (LEN(USER_HVPHONE = 0)) INPUT_FLAG = INPUT_FLAG + 1
  190.  
  191.    IF (TRIM(USER_HVPHONE, CHR(32)) <> "") THEN
  192.        INPUT_FLAG = 0
  193.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  194.  
  195.        NEWLINE
  196.        GOTO BRAND_INPUT
  197.    ELSE
  198.        FRESHLINE
  199.        GOTO HVPHONE_INPUT
  200.    END IF
  201.    GOTO PROGRAM_ERROR
  202.  
  203.  
  204. :BRAND_INPUT
  205.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  206.    IF (EXIST(PPEPATH() + "NEW_E")) DISPFILE PPEPATH() + "NEW_E", LANG + SEC + GRAPH
  207.    
  208.    PROMPTSTR 2, USER_BRAND, 30, MASK_ASCII(), FIELDLEN + GUIDE + UPCASE + LFBEFORE
  209.    IF (LEN(USER_BRAND = 0)) INPUT_FLAG = INPUT_FLAG + 1
  210.  
  211.    IF (TRIM(USER_BRAND, CHR(32)) <> "") THEN
  212.        INPUT_FLAG = 0
  213.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  214.  
  215.        NEWLINE
  216.        GOTO MESSAGE_INPUT
  217.    ELSE
  218.        FRESHLINE
  219.        GOTO BRAND_INPUT
  220.    END IF
  221.    GOTO PROGRAM_ERROR
  222.  
  223.  
  224. :MESSAGE_INPUT
  225.    IF (EXIST(PPEPATH() + "NEW_F")) DISPFILE PPEPATH() + "NEW_F", LANG + SEC + GRAPH
  226.  
  227.    PROMPTSTR 556, USER_CLEAR_SCREEN, 1, "ynYN", FIELDLEN + GUIDE + UPCASE + LFBEFORE + YESNO
  228.  
  229.    IF (TRIM(USER_CLEAR_SCREEN, CHR(32)) <> "") THEN
  230.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  231.  
  232.        NEWLINE
  233.        GOTO TRANS_INPUT
  234.    ELSE
  235.  
  236.        NEWLINE
  237.        GOTO TRANS_INPUT
  238.    END IF
  239.    GOTO PROGRAM_ERROR
  240.  
  241.  
  242. :TRANS_INPUT
  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)) = USER_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 (LEN(USER_ALIAS)) THEN
  332.        FOPEN 1, READLINE(PCBDAT(), 35), O_RD, S_DN
  333.        WHILE (!FERR(1)) DO
  334.           FGET 1, TCAN_NAME
  335.           IF (TRIM(USER_ALIAS, CHR(32)) = TRIM(TCAN_NAME, CHR(32))) THEN
  336.               FCLOSE 1
  337.  
  338.               NEWLINES 2
  339.               PRINTLN "@X0CThe SysOp has disabled the use of this Alias Name.@X07"
  340.  
  341.               USER_ALIAS = ""
  342.               GOTO PSA_ALIAS_NAME_INPUT
  343.           END IF
  344.        END WHILE
  345.        FCLOSE 1
  346.    END IF
  347.  
  348.    IF (U_RECNUM(USER_ALIAS) <> -1) THEN
  349.        LOG "Attempted to use " + TRIM(USER_ALIAS, CHR(32)) + " as an alias.", 0
  350.  
  351.        NEWLINES 2
  352.        DISPTEXT 256, LFAFTER + BELL
  353.  
  354.        USER_ALIAS = ""
  355.        GOTO PSA_ALIAS_NAME_INPUT
  356.    ELSE
  357.        USER_ALIAS = STRIP(TRIM(USER_ALIAS, CHR(32)), CHR(0))
  358.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  359.  
  360.        NEWLINE
  361.        GOTO PSA_STREET_NUMBER1_INPUT
  362.    END IF
  363.    GOTO PROGRAM_ERROR
  364.  
  365.  
  366. :PSA_STREET_NUMBER1_INPUT
  367.    IF (!PSA(3)) GOTO PSA_VERIFICATION_INPUT
  368.    IF (EXIST(PPEPATH() + "NEW_G")) DISPFILE PPEPATH() + "NEW_G", LANG + SEC + GRAPH
  369.  
  370.    INPUTSTR "Street Address and Number", USER_ADDR(0), 0Eh, 50, MASK_ASCII(), FIELDLEN + GUIDE + UPCASE + LFBEFORE
  371.  
  372.    IF (USER_INPUT <> "") GOTO USER_INPUTS
  373.    NEWLINE
  374.    GOTO PSA_STREET_NUMBER2_INPUT
  375.    GOTO PROGRAM_ERROR
  376.  
  377.  
  378. :PSA_STREET_NUMBER2_INPUT
  379.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  380.    IF (EXIST(PPEPATH() + "NEW_H")) DISPFILE PPEPATH() + "NEW_H", LANG + SEC + GRAPH
  381.  
  382.    INPUTSTR "Suite or Apartment Number", USER_ADDR(1), 0Eh, 50, MASK_ASCII(), FIELDLEN + GUIDE + UPCASE + LFBEFORE
  383.    IF (LEN(USER_ADDR(1) = 0)) INPUT_FLAG = INPUT_FLAG + 1
  384.  
  385.    IF ((TRIM(USER_ADDR(0), CHR(32)) <> "") | (TRIM(USER_ADDR(1), CHR(32)) <> "")) THEN
  386.        INPUT_FLAG = 0
  387.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  388.  
  389.        NEWLINE
  390.        GOTO PSA_CITY_INPUT
  391.    ELSE
  392.        FRESHLINE
  393.        GOTO PSA_STREET_NUMBER2_INPUT
  394.    END IF
  395.    GOTO PROGRAM_ERROR
  396.  
  397.  
  398. :PSA_CITY_INPUT
  399.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  400.    IF (EXIST(PPEPATH() + "NEW_I")) DISPFILE PPEPATH() + "NEW_I", LANG + SEC + GRAPH
  401.  
  402.    INPUTSTR "City, Town or Village", USER_ADDR(2), 0Eh, 25, MASK_ASCII(), FIELDLEN + GUIDE + UPCASE + LFBEFORE
  403.    IF (LEN(USER_ADDR(2) = 0)) INPUT_FLAG = INPUT_FLAG + 1
  404.  
  405.    IF (TRIM(USER_ADDR(2), CHR(32)) <> "") THEN
  406.        INPUT_FLAG = 0
  407.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  408.  
  409.        NEWLINE
  410.        GOTO PSA_PROVINCE_STATE_INPUT
  411.    ELSE
  412.        FRESHLINE
  413.        GOTO PSA_CITY_INPUT
  414.    END IF
  415.    GOTO PROGRAM_ERROR
  416.  
  417.  
  418. :PSA_PROVINCE_STATE_INPUT
  419.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  420.    IF (EXIST(PPEPATH() + "NEW_J")) DISPFILE PPEPATH() + "NEW_J", LANG + SEC + GRAPH
  421.  
  422.    INPUTSTR "Province or State", USER_ADDR(3), 0Eh, 10, MASK_ASCII(), FIELDLEN + GUIDE + UPCASE + LFBEFORE
  423.    IF (LEN(USER_ADDR(3) = 0)) INPUT_FLAG = INPUT_FLAG + 1
  424.  
  425.    IF (TRIM(USER_ADDR(3), CHR(32)) <> "") THEN
  426.        INPUT_FLAG = 0
  427.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  428.  
  429.        NEWLINE
  430.        GOTO PSA_ZIPCODE_INPUT
  431.    ELSE
  432.        FRESHLINE
  433.        GOTO PSA_PROVINCE_STATE_INPUT
  434.    END IF
  435.    GOTO PROGRAM_ERROR
  436.  
  437.  
  438. :PSA_ZIPCODE_INPUT
  439.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  440.    IF (EXIST(PPEPATH() + "NEW_K")) DISPFILE PPEPATH() + "NEW_K", LANG + SEC + GRAPH
  441.  
  442.    INPUTSTR "Postal/Zip Code", USER_ADDR(4), 0Eh, 10, MASK_NUM() + "-", FIELDLEN + GUIDE + UPCASE + LFBEFORE
  443.    IF (LEN(USER_ADDR(4) = 0)) INPUT_FLAG = INPUT_FLAG + 1
  444.  
  445.    IF (TRIM(USER_ADDR(4), CHR(32)) <> "") THEN
  446.        INPUT_FLAG = 0
  447.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  448.  
  449.        NEWLINE
  450.        GOTO PSA_COUNTRY_INPUT
  451.    ELSE
  452.        FRESHLINE
  453.        GOTO PSA_ZIPCODE_INPUT
  454.    END IF
  455.    GOTO PROGRAM_ERROR
  456.  
  457.  
  458. :PSA_COUNTRY_INPUT
  459.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  460.    IF (EXIST(PPEPATH() + "NEW_L")) DISPFILE PPEPATH() + "NEW_L", LANG + SEC + GRAPH
  461.  
  462.    INPUTSTR "Country or Region", USER_ADDR(5), 0Eh, 15, MASK_ASCII(), FIELDLEN + GUIDE + UPCASE + LFBEFORE
  463.    IF (LEN(USER_ADDR(5) = 0)) INPUT_FLAG = INPUT_FLAG + 1
  464.  
  465.    IF (TRIM(USER_ADDR(5), CHR(32)) <> "") THEN
  466.        INPUT_FLAG = 0
  467.        IF (USER_INPUT <> "") GOTO USER_INPUTS
  468.  
  469.        NEWLINE
  470.        GOTO PSA_VERIFICATION_INPUT
  471.    ELSE
  472.        FRESHLINE
  473.        GOTO PSA_COUNTRY_INPUT
  474.    END IF
  475.    GOTO PROGRAM_ERROR
  476.  
  477.  
  478. :PSA_VERIFICATION_INPUT
  479.    IF (!PSA(2)) GOTO USER_INPUTS
  480.  
  481.    IF (INPUT_FLAG = 3) GOTO ACCESS_DENIED
  482.    IF (EXIST(PPEPATH() + "VERIFY")) DISPFILE PPEPATH() + "VERIFY", LANG + SEC + GRAPH
  483.  
  484.    PROMPTSTR 706, USER_VER, 25, MASK_ASCII(), FIELDLEN + GUIDE + UPCASE + LFBEFORE
  485.    IF (LEN(USER_VER = 0)) INPUT_FLAG = INPUT_FLAG + 1
  486.  
  487.    IF (TRIM(USER_VER, CHR(32)) <> "") THEN
  488.        INPUT_FLAG = 0
  489.        GOTO USER_INPUTS
  490.    ELSE
  491.        FRESHLINE
  492.        GOTO PSA_VERIFICATION_INPUT
  493.    END IF
  494.    GOTO PROGRAM_ERROR
  495.  
  496.  
  497. :USER_INPUTS
  498.    USER_INPUT = ""
  499.    CLS
  500.    PRINTLN "@X0F[@X0CA@X0F] @X0EPassword                 @X07: @X0F[@X0A" + LEFT(RTRIM(USER_PWD1, CHR(32)) + "·············", 13) + "@X0F]@X07"
  501.    PRINTLN "@X0F[@X0CB@X0F] @X0ECity and State           @X07: @X0F[@X0A" + LEFT(RTRIM(USER_CITY, CHR(32)) + "························", 24) + "@X0F]@X07"
  502.    PRINTLN "@X0F[@X0CC@X0F] @X0EBusiness or data phone   @X07: @X0F[@X0A" + LEFT(RTRIM(USER_BDPHONE, CHR(32)) + "·············", 13) + "@X0F]@X07"
  503.    PRINTLN "@X0F[@X0CD@X0F] @X0EHome or voice phone      @X07: @X0F[@X0A" + LEFT(RTRIM(USER_HVPHONE, CHR(32)) + "·············", 13) + "@X0F]@X07"
  504.    PRINTLN "@X0F[@X0CE@X0F] @X0EBrand of CPU             @X07: @X0F[@X0A" + LEFT(RTRIM(USER_BRAND, CHR(32)) + "······························", 30) + "@X0F]@X07"
  505.    PRINTLN
  506.    PRINTLN "@X0F[@X0CF@X0F] @X0EMessage Clear Screen     @X07: @X0F[@X0A" + USER_CLEAR_SCREEN + "@X0F] @X07(@X03Clear Screen prior to Displaying a Message@X07)@X07"
  507.    PRINTLN "@X0F[@X0CG@X0F] @X0EDefault Protocol         @X07: @X0F[@X0A" + USER_TRANS + "@X0F] @X07(@X03Your default transfer protocol@X07)@X07"
  508.  
  509.    IF (PSA(3)) THEN
  510.       PRINTLN
  511.       PRINTLN "@X0F[@X0CH@X0F] @X0EStreet Address and Number@X07: @X0F[@X0A" + LEFT(RTRIM(USER_ADDR(0), CHR(32)) + "··············································", 46) + "@X0F]@X07"
  512.       PRINTLN "@X0F[@X0CI@X0F] @X0ESuite or Apartment Number@X07: @X0F[@X0A" + LEFT(RTRIM(USER_ADDR(1), CHR(32)) + "··············································", 46) + "@X0F]@X07"
  513.       PRINTLN "@X0F[@X0CJ@X0F] @X0ECity, Town or Village    @X07: @X0F[@X0A" + LEFT(RTRIM(USER_ADDR(2), CHR(32)) + "·························", 25) + "@X0F]@X07"
  514.       PRINTLN "@X0F[@X0CK@X0F] @X0EProvince or State        @X07: @X0F[@X0A" + LEFT(RTRIM(USER_ADDR(3), CHR(32)) + "··········", 10) + "@X0F]@X07"
  515.       PRINTLN "@X0F[@X0CL@X0F] @X0EPostal Zip Code          @X07: @X0F[@X0A" + LEFT(RTRIM(USER_ADDR(4), CHR(32)) + "··········", 10) + "@X0F]@X07"
  516.       PRINTLN "@X0F[@X0CM@X0F] @X0ECountry or Region        @X07: @X0F[@X0A" + LEFT(RTRIM(USER_ADDR(5), CHR(32)) + "···············", 15) + "@X0F]@X07"
  517.    END IF
  518.  
  519.    PRINTLN
  520.    IF (PSA(1)) PRINTLN "@X0F[@X0CN@X0F] @X0EAlias Name               @X07: @X0F[@X0A" + LEFT(RTRIM(USER_ALIAS, CHR(32)) + "·························", 25) + "@X0F]@X07"
  521.    IF (PSA(2)) PRINTLN "@X0F[@X0CO@X0F] @X0EVerification Information @X07: @X0F[@X0A" + LEFT(RTRIM(USER_VER, CHR(32)) + "·························", 25) + "@X0F]@X07"
  522.    
  523.    IF (PSA(1) | PSA(2)) PRINTLN
  524.    PRINTLN "@X0BIf any of the information above is incorrect or inaccurate, now is your chance@X07"
  525.    PRINTLN "@X0Bto change it.  All information will be verified before full access is granted.@X07"
  526.  
  527.    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
  528.    IF (USER_INPUT = "A") GOTO PWD_INPUT
  529.    IF (USER_INPUT = "B") GOTO CITY_INPUT
  530.    IF (USER_INPUT = "C") GOTO BDPHONE_INPUT
  531.    IF (USER_INPUT = "D") GOTO HVPHONE_INPUT
  532.    IF (USER_INPUT = "E") GOTO BRAND_INPUT
  533.  
  534.    IF (USER_INPUT = "F") GOTO MESSAGE_INPUT
  535.    IF (USER_INPUT = "G") GOTO TRANS_INPUT
  536.    
  537.    IF ((PSA(3)) & (USER_INPUT = "H")) GOTO PSA_STREET_NUMBER1_INPUT
  538.    IF ((PSA(3)) & (USER_INPUT = "I")) GOTO PSA_STREET_NUMBER2_INPUT
  539.    IF ((PSA(3)) & (USER_INPUT = "J")) GOTO PSA_CITY_INPUT
  540.    IF ((PSA(3)) & (USER_INPUT = "K")) GOTO PSA_PROVINCE_STATE_INPUT
  541.    IF ((PSA(3)) & (USER_INPUT = "L")) GOTO PSA_ZIPCODE_INPUT
  542.    IF ((PSA(3)) & (USER_INPUT = "M")) GOTO PSA_COUNTRY_INPUT
  543.  
  544.    IF ((PSA(1)) & (USER_INPUT = "N")) GOTO PSA_ALIAS_NAME_INPUT
  545.    IF ((PSA(2)) & (USER_INPUT = "O")) GOTO PSA_VERIFICATION_INPUT
  546.  
  547.    IF (LEN(USER_INPUT) = 0) GOTO STUFF_KEYBOARD
  548.  
  549.    IF (USER_INPUT = "Q") THEN
  550.        USER_INPUT = NOCHAR()
  551.  
  552.        INPUTSTR "Proceed with Log-Off", USER_INPUT, 0Fh, 1, "ynYN", FIELDLEN + GUIDE + UPCASE + ERASELINE + YESNO
  553.        IF (USER_INPUT = YESCHAR()) HANGUP
  554.    END IF
  555.    GOTO USER_INPUTS
  556.  
  557.  
  558. :STUFF_KEYBOARD
  559.    CLS
  560.    KBDSTUFF_STRING2 = USER_PWD1 + CHR(13) + USER_PWD2 + CHR(13)
  561.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_CITY + CHR(13)
  562.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_BDPHONE + CHR(13)
  563.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_HVPHONE + CHR(13)
  564.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_BRAND + CHR(13)
  565.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_CLEAR_SCREEN + CHR(13)
  566.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_TRANS + CHR(13)
  567.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_ALIAS + CHR(13)
  568.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_ADDR(0) + CHR(13)
  569.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_ADDR(1) + CHR(13)
  570.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_ADDR(2) + CHR(13)
  571.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_ADDR(3) + CHR(13)
  572.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_ADDR(4) + CHR(13)
  573.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_ADDR(5) + CHR(13)
  574.    KBDSTUFF_STRING2 = KBDSTUFF_STRING2 + USER_VER + CHR(13)
  575.  
  576.    KBDSTUFF KBDSTUFF_STRING1 + KBDSTUFF_STRING2
  577.    END
  578.  
  579.  
  580. :ACCESS_DENIED
  581.    NEWLINE
  582.    PRINTLN "@X0CAccess Denied - Refused to Complete Registration!"
  583.    HANGUP
  584.  
  585.  
  586. :PROGRAM_ERROR
  587.    NEWLINES 2
  588.    PRINT "PPE Program Error... Please nodify SysOp... "
  589.    DELAY (50)
  590.  
  591.    FRESHLINE
  592.    HANGUP
  593.