home *** CD-ROM | disk | FTP | other *** search
/ Carsten's PPE Collection / Carstens_PPE_Collection_2007.zip / S / SCUMBANK.ZIP / BANK.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1994-05-14  |  7KB  |  319 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 2.OO (plain) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Date     DATE001
  20.     Integer  INTEGER001
  21.     Integer  INTEGER002
  22.     Integer  INTEGER003
  23.     Integer  INTEGER004
  24.     Integer  INTEGER005
  25.     Integer  INTEGER006
  26.     Integer  INTEGER007
  27.     Integer  INTEGER008
  28.     Integer  INTEGER009
  29.     Integer  INTEGER010
  30.     Integer  INTEGER011
  31.     Integer  INTEGER012
  32.     String   STRING002
  33.     String   TSTRING003(5)
  34.     String   STRING004
  35.  
  36. ;------------------------------------------------------------------------------
  37.  
  38.     Gosub LABEL010
  39.     Gosub LABEL006
  40.     Gosub LABEL003
  41.     STRING002 = "YoMaMa"
  42.     STRING004 = "BANK PPE v1.0 - Coded by Caffine"
  43.     Gosub LABEL008
  44.     While (Upper(STRING002) <> "Q") Do
  45.         Gosub LABEL004
  46.         Gosub LABEL007
  47.         INTEGER011 = 18
  48.         Gosub LABEL009
  49.         AnsiPos 21, 18
  50.         Print "@X0F[@X07W@X0F]@X07ithraw @X0F[@X07D@X0F]@X07eposit or @X0F[@X07Q@X0F]@X07uit- @X0F[ ]"
  51.         AnsiPos 53, 18
  52.         InputStr "_", STRING002, 0, 1, "WwDdQq", 2
  53.         If (Upper(STRING002) == "D") Then
  54.             Gosub LABEL001
  55.             Continue
  56.         Endif
  57.         If (Upper(STRING002) == "W") Then
  58.             Gosub LABEL002
  59.         Endif
  60.     EndWhile
  61.     Gosub LABEL005
  62.     End
  63.     :LABEL001
  64.     If (INTEGER004 >= INTEGER001) Then
  65.         STRING004 = "Error - The bank is already full."
  66.         Gosub LABEL008
  67.     Else
  68.         INTEGER006 = INTEGER003
  69.         STRING004 = "DEPOSIT TIME - Enter 0 to cancel."
  70.         Gosub LABEL008
  71.         INTEGER011 = 18
  72.         Gosub LABEL009
  73.         AnsiPos 26, 18
  74.         InputStr "@X0FAmount to Deposit", INTEGER006, 0, 3, Mask_Num(), 2 + 4
  75.         If (INTEGER006 == 0) Then
  76.             STRING004 = "Deposit Cancelled."
  77.             Gosub LABEL008
  78.         ElseIf (INTEGER006 > INTEGER003) Then
  79.             STRING004 = "Error - You only have " + String(INTEGER003) + " minutes available for deposit."
  80.             Gosub LABEL008
  81.         Else
  82.             INTEGER004 = INTEGER004 + INTEGER006
  83.             STRING004 = "Deposited " + String(INTEGER006) + " Minutes."
  84.             Gosub LABEL008
  85.             Log "Deposited - " + String(INTEGER006) + " Min", 0
  86.             AdjTime -INTEGER006
  87.         Endif
  88.     Endif
  89.     Return
  90.     :LABEL002
  91.     If (INTEGER005 == 0) Then
  92.         If (INTEGER012 >= INTEGER002) Then
  93.             STRING004 = "Error - You have already withdrawn the max. per day."
  94.             Gosub LABEL008
  95.         Else
  96.             STRING004 = "Error - No withdrawal time available."
  97.             Gosub LABEL008
  98.         Endif
  99.     Else
  100.         INTEGER007 = INTEGER005
  101.         INTEGER011 = 21
  102.         Gosub LABEL009
  103.         STRING004 = "WITHDRAW TIME - Enter 0 to cancel."
  104.         Gosub LABEL008
  105.         INTEGER011 = 18
  106.         Gosub LABEL009
  107.         AnsiPos 23, 18
  108.         InputStr "@X0FAmount to Withdraw", INTEGER007, 0, 3, Mask_Num(), 2 + 4
  109.         If (INTEGER007 == 0) Then
  110.             STRING004 = "Withdrawal Cancelled."
  111.             Gosub LABEL008
  112.         ElseIf ((INTEGER007 > INTEGER002) || (INTEGER007 > INTEGER005)) Then
  113.             STRING004 = "Error - You only have " + String(INTEGER005) + " minutes available."
  114.             Gosub LABEL008
  115.         Else
  116.             INTEGER004 = INTEGER004 - INTEGER007
  117.             INTEGER012 = INTEGER012 + INTEGER007
  118.             STRING004 = "Withdrew " + String(INTEGER007) + " Minutes."
  119.             Gosub LABEL008
  120.             Log "Withdrawed from bank - " + String(INTEGER007) + " Min", 0
  121.             AdjTime INTEGER007
  122.         Endif
  123.     Endif
  124.     Return
  125.     :LABEL003
  126.     GetUser
  127.     INTEGER008 = MinLeft()
  128.     If (Left(U_Notes(INTEGER010), 4) <> "BANK") Then
  129.         TSTRING003(1) = "BANK"
  130.         TSTRING003(2) = "TIME"
  131.         TSTRING003(3) = 0
  132.         TSTRING003(4) = 0
  133.         TSTRING003(5) = 0
  134.     Else
  135.         Tokenize U_Notes(INTEGER010)
  136.         INTEGER009 = 1
  137.         GetToken TSTRING003(INTEGER009)
  138.         While (TSTRING003(INTEGER009) <> "") Do
  139.             INTEGER009 = INTEGER009 + 1
  140.             GetToken TSTRING003(INTEGER009)
  141.         EndWhile
  142.     Endif
  143.     INTEGER004 = ToInt(TSTRING003(3))
  144.     DATE001 = ToDate(TSTRING003(4))
  145.     If (DATE001 == Date()) Then
  146.         INTEGER012 = ToInt(TSTRING003(5))
  147.     Else
  148.         DATE001 = Date()
  149.         INTEGER012 = 0
  150.     Endif
  151.     Return
  152.     :LABEL004
  153.     If (INTEGER004 < INTEGER002 - INTEGER012) Then
  154.         INTEGER005 = INTEGER004
  155.     Else
  156.         INTEGER005 = INTEGER002 - INTEGER012
  157.     Endif
  158.     If (INTEGER001 - INTEGER004 > INTEGER008) Then
  159.         INTEGER003 = INTEGER008
  160.     Else
  161.         INTEGER003 = INTEGER001 - INTEGER004
  162.     Endif
  163.     Return
  164.     :LABEL005
  165.     U_Notes(INTEGER010) = TSTRING003(1) + " " + TSTRING003(2) + " " + String(INTEGER004) + " " + String(Date()) + " " + String(INTEGER012)
  166.     PutUser
  167.     Return
  168.     :LABEL006
  169.     StartDisp 1
  170.     PrintLn "@CLS@@X07@X04      @X08▄@X04▄@X08▄▄@X04▄ @X0C▄@X04▄ @X0C▄ ▄  @X04▄▄██@X4C░░@X0C▄▄  @X04▄▀ ▀@X0C▄    @X04▄▓░▄▄   @X0C▀@X04▄@X0C▄  @X04░  @X0C▀@X4C░▓@X0C▄ ▄ ▄ ▄@X08▄@X04▄▄@X08▄▄@X04▄@X08▄"
  171.     PrintLn "      █           @X04▄▀ ▄  ▀@X4C░░▓▓@X0C▌  @X04▓ ▀@X4C░@X0C▄ @X04▀▄ ▒@X4C░@X04█@X4C▓@X04▄   @X4C░░@X0C▄    @X04▐@X4C▒▓@X0C▌           @X08█"
  172.     PrintLn "                    @X04▀▒   ▄@X4C░░▓@X0C▄  @X04▒  ▐@X4C░▓@X0C▄  @X04▓▀█@X4C░▒▓@X04▄@X4C░░░@X0C▌▀ @X04▄▄@X4C▒▓@X0C▀"
  173.     PrintLn "  @X08▀   ▀▀@X04▀ ▀▀▀▀▀▀▀▀@X0C▀  @X04▄▄▀▀▀▀█@X4C░░▓@X0C▄  @X04▀ ▐@X4C░▒▒@X0C▄@X04▀  ▀█@X4C▒░░▒▓@X0C▌@X04░@X4C   ░@X0C▄    ▀@X04▀▀▀▀▀ ▀▀▀@X08▀▀   ▀"
  174.     PrintLn "                      @X04▄     ▀█@X4C▒▓@X0C▌    @X04█@X4C░░▒▓@X0C▄   @X04▀█@X4C░▒▓@X0C▌@X04▒█ @X4C ▒░▓@X0C▄"
  175.     PrintLn "      @X08█▄@X04▄@X08▄@X04▄ ▄@X0C▄ ▄ ▄  @X04▀▄▄▄▄▄▄▄██@X4C▒@X0C▀@X04▄   ▄███@X4C░░▓▓@X0C▄   @X04▀@X4C▒▓@X0C▌@X04▓█ @X4C  ░░▒▓@X0C▄ ▄ ▄@X08▄@X0C▄@X04▄@X08▄▄█"
  176.     PrintLn "  @X04▀                                                                          ▀"
  177.     PrintLn "  █                     @X07Time Left Online :                                   @X04█"
  178.     PrintLn "  ▓                      @X07Current Balance :                                   @X04▓"
  179.     PrintLn "  ▒                      @X07Withdrawn Today :                                   @X04▒"
  180.     PrintLn "  ▒                                                                          ▒"
  181.     PrintLn "  ░                 @X07Max. Balance Allowed :                                   @X04░"
  182.     PrintLn "  ░              @X07Max. Withdrawal Per Day :                                   @X04░"
  183.     PrintLn "  ░                                                                          ░"
  184.     PrintLn "  ░                @X07Available for Deposit :                                   @X04░"
  185.     PrintLn "  ▒             @X07Available for Withdrawal :                                   @X04▒"
  186.     PrintLn "  ▒                                                                          ▒"
  187.     PrintLn "  ▓                                                                          ▓"
  188.     PrintLn "  ▓                                                                          ▓"
  189.     PrintLn "  ┌──────────────────────────────────────────────────────────────────────────┐"
  190.     PrintLn "  │                                                                          │"
  191.     PrintLn "@X0F  @X04└──────────────────────────────────────────────────────────────────────────┘"
  192.     Print "@X0F  @X0CC@X04aF@X08F@X04iN@X0Ce @X04[@X0C¡Y@X04o@X08MaM@X0Ca!@X04]                                      @X0CNi@X04gh@X08t Sla@X04sh@X0Cer @X04[AC@X0CiD]"
  193.     StartDisp 2
  194.     Return
  195.     :LABEL007
  196.     AnsiPos 45, 8
  197.     Print Space(9)
  198.     AnsiPos 45, 8
  199.     Print "@X0F", INTEGER008, "  @X08Min."
  200.     AnsiPos 45, 9
  201.     Print Space(9)
  202.     AnsiPos 45, 9
  203.     Print "@X0F", INTEGER004, "  @X08Min."
  204.     AnsiPos 45, 10
  205.     Print Space(9)
  206.     AnsiPos 45, 10
  207.     Print "@X0F", INTEGER012, "  @X08Min."
  208.     AnsiPos 45, 12
  209.     Print "@X0F", INTEGER001, "  @X08Min."
  210.     AnsiPos 45, 13
  211.     Print "@X0F", INTEGER002, "  @X08Min."
  212.     AnsiPos 45, 15
  213.     Print Space(9)
  214.     AnsiPos 45, 15
  215.     Print "@X0F", INTEGER003, "  @X08Min."
  216.     AnsiPos 45, 16
  217.     Print Space(9)
  218.     AnsiPos 45, 16
  219.     Print "@X0F", INTEGER005, "  @X08Min."
  220.     Return
  221.     :LABEL008
  222.     INTEGER011 = 21
  223.     Gosub LABEL009
  224.     AnsiPos (80 - Len(STRING004)) / 2, 21
  225.     Print "@X0F", STRING004
  226.     Return
  227.     :LABEL009
  228.     AnsiPos 4, INTEGER011
  229.     Print Space(73)
  230.     Return
  231.     :LABEL010
  232.     FOpen 1, PPEPath() + "BANK.CFG", 0, 0
  233.     FGet 1, INTEGER010
  234.     INTEGER010 = INTEGER010 - 1
  235.     FGet 1, INTEGER001
  236.     FGet 1, INTEGER002
  237.     FClose 1
  238.     Return
  239.  
  240. ;------------------------------------------------------------------------------
  241. ;
  242. ; Usage report (before postprocessing)
  243. ;
  244. ; ■ Statements used :
  245. ;
  246. ;    1       End
  247. ;    29      Goto 
  248. ;    42      Let 
  249. ;    16      Print 
  250. ;    22      PrintLn 
  251. ;    15      If 
  252. ;    1       FOpen 
  253. ;    1       FClose 
  254. ;    3       FGet 
  255. ;    2       StartDisp 
  256. ;    1       GetUser
  257. ;    1       PutUser
  258. ;    2       AdjTime 
  259. ;    2       Log 
  260. ;    3       InputStr 
  261. ;    25      Gosub 
  262. ;    10      Return
  263. ;    1       Tokenize 
  264. ;    2       GetToken 
  265. ;    18      AnsiPos 
  266. ;
  267. ;
  268. ; ■ Functions used :
  269. ;
  270. ;    1       -
  271. ;    1       /
  272. ;    26      +
  273. ;    7       -
  274. ;    6       ==
  275. ;    3       <>
  276. ;    1       <
  277. ;    4       >
  278. ;    2       >=
  279. ;    15      !
  280. ;    1       ||
  281. ;    1       Len(
  282. ;    3       Upper()
  283. ;    1       Left()
  284. ;    6       Space()
  285. ;    3       Date()
  286. ;    9       String()
  287. ;    2       Mask_Num()
  288. ;    1       PPEPath()
  289. ;    1       MinLeft()
  290. ;    1       ToDate()
  291. ;    2       ToInt()
  292. ;
  293. ;------------------------------------------------------------------------------
  294. ;
  295. ; Analysis flags : WA
  296. ;
  297. ; W - Write user ■ 5
  298. ;     Program writes a user record. Although this may be normal for a
  299. ;     User Editor, it may also be a way to modify an account level.
  300. ;     ■ Search for : PUTUSER
  301. ;
  302. ; A - Adjust online time remaining ■ 5
  303. ;     Program modify the amount of online time remaining, this may
  304. ;     be a way to bypass time limits
  305. ;     ■ Search for : ADJTIME
  306. ;
  307. ;------------------------------------------------------------------------------
  308. ;
  309. ; Postprocessing report
  310. ;
  311. ;    0       For/Next
  312. ;    2       While/EndWhile
  313. ;    13      If/Then or If/Then/Else
  314. ;    0       Select Case
  315. ;
  316. ;------------------------------------------------------------------------------
  317. ;                 AEGiS Corp - Break the routines, code against the machines!
  318. ;------------------------------------------------------------------------------
  319.