Computerized system for the design, execution, and tracking of exercise programs5890997Abstract A computerized system and method for the design, execution and tracking of exercise programs including portable microprocessor controlled data controllers to instruct and record the actual computed workout for the user. A data communication link transfers data between the data controllers and a computer hosting application software and database files for the particular user, exercise and exercise regimen to create and display a customizable and comprehensive exercise system designed for the particular user. Claims I claim: Description NOTICE REGARDING COPYRIGHTED MATERIAL
______________________________________
HEADER BLOCK
______________________________________
BYTE 1 HEADER COMMAND
BYTE 2 MEMBER # LSB
BYTE 3 MEMBER #
BYTE 4 MEMBER #
BYTE 5 MEMBER # MSB
BYTE 6 # OF CHARACTERS IN NAME (0-16)
BYTE 7 222 11111
BYTE 8 4 3333 22
BYTE 9 55555 4444
BYTE 10 77 66666 5
BYTE 11 88888 777
BYTE 12 AAA 99999
BYTE 13 C BBBBB AA
BYTE 14 DDDD CCCC
BYTE 15 FF EEEEE D
BYTE 16 GGGGG FFF
BYTE 17 WEIGHT LSB
BYTE 18 WEIGHT MSB
BYTE 19 PULSE
.
<Individual Exercise Description Blocks>
.
.
FOOTER BYTE
CHECKSUM BYTE
______________________________________
FIG. 11 Shows a flow diagram of both Version A & B DTA firmware power-on sequence. When power is applied to the DTA's microcontroller, the microcontroller's program execution unit will reset and begin execution at Power On 174. The program then initializes the microcontroller 175 setting up various internal registers and the interrupt vector table. Next the program will initialize the OEM LCD Display Module's T7934 LCD Controller 176. Following initialization, the program will perform some internal self tests. The registers located in the microcontroller are tested for both read and write capability 177. If the any part of the test fails 178, the alarm is sounded and a message is displayed on the LCD with a specific code number indicating the failed register 179. The program jumps to an infinite loop 180 causing a general program abort. The DTA must be powered off then on to reset. The 1 Kbyte RAM is tested next 181 using seven different bit patterns written to and then read from all the RAM locations. If an error is detected at any stage of the test 182, the alarm is sounded and a message is displayed on the LCD with a specific code number indicating the failed location 183. The program jumps to an infinite loop 184 causing a general program abort. The DTA must be powered off then on to reset. The keypad connected to the microcontroller via the I/O ports is tested to determine if any keys are stuck active 185. If a key is detected as being stuck on 186, the alarm is sounded and a special message is displayed on the LCD with the offending key number 187. The test repeats until the key is unstuck. Once the testing has completed successfully, the start message is displayed: "Physical Genius" 189 followed by: "Ready to Program" message. The program enters a loop 190 awaiting the reception of a exercise routine data upload. While in the waiting loop 190, the program checks for any receiver errors 191. If detected, the alarm is sounded and a special message is displayed 192 describing the offending error. The routine will reset awaiting reception of more data. When a valid upload of a workout routine is received, a new message is displayed 193 instructing the user to advance the program with the NEXT key. The program now enters a waiting loop 195 looking for a NEXT key activation. Upon detection of the key, the program will process the keypad key request 194. From this point on, the program is event driven. Keypad requests will determine what function the program executes next and further keypad requests control the sub-functionality therein. When a key is activated, an interrupt signal is generated to the microcontroller which activates a special interrupt processing routine. The keyboard I/O port pins are scanned and the activated key's signal is detected. The keyboard interrupt routine will return a number representing the key that was detected as being active. FIG. 12 Shows a flow diagram of both Version A & B DTA firmware NEXT, PREV, ENTER, NAME, PULSE, and WEIGHT keypad key activation sequences. When the NEXT Key has been detected 196, the program will locate the next exercise description block 197. If while searching for the next EDB, the program encounters the Footer byte indicating the end of the upload block 198, a special message is displayed 199 instructing the user to hit the PREV key. The program waits until the PREV key is hit 201. When detected the program will execute the display sequence routine 200 for the EDB that was being displayed prior to the NEXT key activation. The exercise display sequence routine 200 will parse out the elements of the exercise description block (EDB) and display them on the LCD display. Where indicated, if the associated exercise parameter is 0, the parameter's display will be omitted. The following tables depict the display sequence for each main type of exercise:
______________________________________
STRETCH Excerises:
ANAEROBIC Exercises:
AEROBIC Exercises:
______________________________________
Name of Exercise
Name of Exercise
Name of Exercise
delay 3 seconds
delay 3 seconds
delay 3 seconds
Repetitions Setting
Mechanical/ Mechanically/
(if not 0) Ergonomically Ergonomically
delay 3 seconds
Settings Settings
Sets Setting
delay 3 seconds
delay 3 seconds
(if not 0) Pounds/Plates Setting
Duration Setting
delay 3 seconds
(if not 0) (if not 0)
delay 3 seconds
delay 3 seconds
Repetitions Setting
Distance Setting
(if not 0) (if not 0)
delay 3 seconds
delay 3 seconds
Sets Setting Speed Setting
(if not 0) (if not 0)
delay 3 seconds
delay 3 seconds
Duration Setting
Intensity Setting
(if not 0) (if not 0)
delay 3 seconds
delay 3 seconds
Calorie Setting
(if not 0)
delay 3 seconds
Incline Setting
(if not 0)
delay 3 seconds
Level Setting
(if not 0)
delay 3 seconds
______________________________________
The sequence is repeated three times 202 after which the microprocessor will enter its low power sleep mode 203 until a keypad key is pressed and thus the activation interrupt is detected. The sequence will then restart at the top. Any time during the display sequence, the program will be able to process keypad key activation interrupts and act accordingly. When the PREV Key has been detected 204, the program will locate the previous EDB 205. If while searching for the previous exercise description block, the program advances beyond the beginning of the exercise description space 206, a special message is displayed 207 instructing the user to hit the NEXT key. The program waits until the NEXT key is hit 209. When detected the program will continue to the display sequence routine of the EDB being displayed prior to activating the PREV key 208. The sequence is repeated three times 210 after which the microprocessor will enter its low power sleep mode 211 until a keypad key is pressed and thus the activation interrupt is detected. The sequence will then restart at the top. If the ENTER key is detected 212, the program must first decide the context of the key's activation 213. If the key is used as data input confirmation, the data is then validated according to the context of the data entry 215. If there is a detected entry error 216, a special message is displayed indicating the error and corrective action 217. The program then repeats the original data entry prompt routine 218 followed by another ENTER key detection 212. If the data was determined as valid and correct it is formatted and stored in the appropriate location in the current EDB or Header Block location 219. The program then continues from where it was originally interrupted or made the function call 220. If the context of the ENTER key was not as data input confirmation then it is used to mark the current EDB as being completed 214. The program then continues at Marker A. If the NAME key is detected 221, the client's name characters are extracted and reconstructed as ASCII characters 222 from the Header Block bytes 7 through 16. The bytes are then sent to the LCD Display Controller for a ten second display 223. Following the interval, the program returns to the point of interruption 224. If the WEIGHT key is detected 225, the weight entry function is activated with the original weight value stored in the uploaded Header Block extracted 226 from bytes 17 and 18. The bytes are converted to ASCII and sent to the LCD Display Controller for display 227. The program then prompts for a new entry 228 allowing a three digit plus one decimal place value. The program continues at Marker B for ENTER key processing 229. When successfully concluded, the program will return to the point of interruption 230. If the PULSE key is detected 231, the pulse entry function is activated. The function will interactively instruct, via the LCD display, the user on how and when to measure his pulse 232. The program will then start a ten second timer 233. At the conclusion of the time interval, the alarm sounds and the program prompts for the new measured pulse count entry 234. The program continues at the Marker B for ENTER key processing 235. When successfully concluded, the program will return to the point of interruption 236. FIG. 13 Shows a flow diagram of the Version-A DTA firmware GROUP keypad key activation sequence. The GROUP key is used to advance the exercise program out of the predetermined sequence to the next available exercise in the specified group (Aerobic Anaerobic, or Stretch). If the GROUP key is detected 237, the word "Aerobic" is displayed 238. A three second timer is started 239 and if the GROUP key is detected again 240 within the interval, the program will locate the first available Aerobic type EDB 241. The display sequence is activated at Marker C, 247. If no uncompleted Aerobic EDB is found 243, a special error display message is used 245 and the program returns to the point of interruption 248. If the three second timer is allowed to elapse 242, the word "Anaerobic" is displayed 244. A three second timer is started 246 and if the GROUP key is detected again 249 within the interval, the program will locate the first available Anaerobic type EDB 250. The display sequence is activated at Marker C 256. If no uncompleted Anaerobic EDB is found 252, a special error display message is used 254 and the program returns to the point of interruption 257. If the three second timer is allowed to elapse 251, the word "Stretch" is displayed 253. A three second timer is started 255 and if the GROUP key is detected again 258 within the interval, the program will locate the first available Stretch type EDB 259. The display sequence is activated at Marker C 263. If no uncompleted Stretch EDB is found 261, a special error display message is used 262 and the program returns to the point of interruption 254. If the three second timer is allowed to elapse 260, the sequence starts over again with displaying "Aerobic" 238. FIG. 14 Shows a flow diagram of the Version-A DTA firmware DURATION, SETTINGS, PLATES/LBS (DISTANCE), REPS. (SPEED), and SETS (LEVEL) keypad key activation sequences In the Version-A DTA unit firmware, selected keys perform dual functions depending upon the context in which they are activated If the DURATION key is detected 265, the program will extract the duration setting from the current EDB block 266 and allow a new input 267. The program continues at B Marker for ENTER key processing 268. When successfully concluded, the program will return to the point of interruption 269 If the SETTINGS key is detected 270, the program will first check if the current mode is Learn and that the EDB is not a Stretch type exercise. If otherwise, the function is not entered. If true, the program will extract the mechanical/ergonomically settings 271 from the EDB and display the first setting 272. The program will now allow input of a new setting 273. The program continues at Marker B for ENTER key processing 274. When successfully concluded, the program will check to see if there is another setting to adjust 275. If so, the process is repeated for the remaining settings 272. If finished, the program will return to the point of interruption 276 If the PLATES/LBS (DISTANCE) key is detected 277, the program will first determine the context by examining the EDB for Aerobic type exercise 278. If Aerobic, the program will extract and display the Distance value 279. The program next allows the input of a new distance setting 281. The program continues at Marker B for ENTER key processing 283. When successfully concluded, the program will return to the point of interruption 285 If the EDB was Stretch 287, a special error message is displayed 288 and the program will return to the point of interruption 289. If the program determines the EDB is Anaerobic, the program will extract and display the Pounds/Plates value 280. The program next allows the input of a new Pounds/Plates setting 282. The program continues at Marker B for ENTER key processing 284. When successfully concluded, the program will return to the point of interruption 286 If the REPS. (SPEED) key is detected 290, the program will first determine the context by examining the EDB for Aerobic type exercise 291. If Aerobic, the program will extract and display the Speed value 292. The program next allows the input of a new speed setting 294. The program continues at Marker B for ENTER key processing 296. When successfully concluded, the program will return to the point of interruption 298 If the program determines the EDB is not Aerobic, the program will extract and display the Repetitions value 293. The program next allows the input of a new Repetitions setting 295. The program continues at Marker B for ENTER key processing 297. When successfully concluded, the program will return to the point of interruption 299 If the SETS. (LEVEL) key is detected 300, the program will first determine the context by examining the EDB for Aerobic type exercise 301. If Aerobic, the program will extract and display the Level value 302. The program next allows the input of a new level setting 304. The program continues at Marker B for ENTER key processing 306. When successfully concluded, the program will return to the point of interruption 308 If the program determines the EDB is not Aerobic, the program will extract and display the Sets value 303. The program next allows the input of a new Sets setting 305. The program continues at Marker B for ENTER key processing 307. When successfully concluded, the program will return to the point of interruption 309 FIG. 15 Shows a flow diagram of the Version-A DTA firmware TIMER, START/STOP (DURATION), and RESET (CALORIES) keypad key activation sequences. If the TIMER key is detected 310, the program enters the count down timer function. The program first displays the "Set Minutes" prompt 311. Entry of a minutes setting is enabled 312. The program continues at Marker B for ENTER key processing 313. When successfully concluded, the program will now display the "Set Seconds" prompt 314. Entry of a seconds setting is enabled 315. The program continues at Marker B for ENTER key processing 316. When successfully concluded, the program now waits for a keypad key activation 317. If the START/STOP (INCLINE) key is detected the timer and display time function is started 320. For other detected keys, the program checks if it was a numeric key 318, if so the program ignores the key activation 317, If it is a function key, the program will return to the point of interruption 319. After the timer and display time function has started 320, the program will also look for a key activation 321. Any other key but the START/STOP (INCLINE) key will be ignored. If the START/STOP (INCLINE) key is detected, the timer and time display are stopped 322. If the TIMER key is detected again 323, the program will continue at Marker E. If the RESET (CALORIES) key is detected, the timer is reset to the initial values 326 and program execution continues at 317. If the START/STOP (INCLINE) key is detected, the program execution continues at Marker D. In the absence of the START/STOP (INCLINE) key detection, the timer will continue to count down to 00:00 while displaying the current remaining time. When the timer has reach 5 remaining seconds 327, the alarm will beep on each subsequent second 328. When the timer expires 329, the alarm will beep several times and the timer stop. At this point, the program is waiting for another key activation 331. If the TIMER key is detected, the program continues execution at Marker E. If the RESET (CALORIES) key is detected, the program will reset the timer to the initial values 326 and continue execution at 317. If a numeric key was detected 332, the key activation is ignored. If it was a function key, the program will return to the point of interruption 333. The START/STOP (INCLINE) and RESET (CALORIES) keys have dual functions. Following are descriptions of their alternative functions If the START/STOP (INCLINE) key is detected 334, the program determines what context it is currently in 336. If the timer is active, the timer functionality is used 335. If not in timer mode, the program checks to see if the current EDB is Aerobic 337. If not then a special error message is displayed 339 and the program will return to the point of interruption 341. For an Aerobic EDB, the program will extract and display the Incline value 338. The program next allows the input of a new incline setting 340. The program continues at Marker B for ENTER key processing 342. When successfully concluded, the program will return to the point of interruption 343 If the RESET (CALORIES) key is detected 344, the program determines what context it is currently in 346. If the timer is active, the timer functionality is used 345. If not in timer mode, the program checks to see if the current EDB is Aerobic 347. If not then a special error message is displayed 349 and the program will return to the point of interruption 351. For an Aerobic EDB, the program will extract and display the Calories value 348. The program next allows the input of a new calories setting 350. The program continues at Marker B for ENTER key processing 352. When successfully concluded, the program will return to the point of interruption 353 FIG. 16 Shows a flow diagram of both Version A & B DTA firmware Serial Port Interrupt Routine sequences. The microcontroller's serial communications interface will generate an interrupt when a byte has been received 354. The interrupt routine will check to see if any receive errors were accrued 355. If so a special error message is displayed 356 and the program returns to the point of interruption 374. If there are no errors, the byte is examined to see if it is a download command 357. If so the processing continues to process a download starting at 375. If not then the program checks to see if a previous upload has been received 358. If so, the interrupt routine is exited and the program returns to the point of interruption 374. If no previous upload has been received, the program checks to see if the byte was a valid master header byte 359. If not then display special error message and the program returns to the point of interruption 374. If a valid master header byte is detected, the remaining header block bytes are received and put into a buffer in RAM 361. After the header bytes have been received, the program will examine the next byte received and check if it is an Aerobic EDB header byte 362, if so the program will determine how many more bytes in the block, receive them, and store in RAM buffer 363. If the EDB header byte was not Aerobic, the program checks to see if it was Anaerobic 364. if so the program will determine how many more bytes in the block, receive them, and store in RAM buffer 365. If the EDB header byte was not Anaerobic, the program checks to see if it was Stretch 366. if so the program will determine how many more bytes in the block, receive them, and store in RAM buffer 367. If the EDB header byte was not Stretch, the program checks to see if it was the Footer byte 368. if not the program will display a special error message 383 and returns to the point of interruption 374. If the Footer byte is detected, the entire received buffer is modulo-256 checksummed 369. The result is compared to the embedded checksum value that followed the Footer byte in the block 370. If there was a mismatch, the program displays a special error message 371, sets a failure flag 373 and returns to the point of interruption 374. If the checksum test passes, the received valid flag is set 372 and the program returns to the point of interruption 374. For the download command received case, the entire exercise routine block (from master header byte to Footer byte) is modulo-256 checksummed 375 and the result appended as the last byte in the block 376. The entire block is then transmitted out the serial interface one byte at a time 377. When the transmitter is detected as empty 378, the next byte is transmitted. When the last byte has been detected 379, the byte is transmitted 381 and the program returns to the point of interruption 382. FIG. 17 Shows a flow diagram of the Version-B DTA AEROBIC, ANAEROBIC, and STRETCH keypad key activation sequences The Version-B DTA unit expands the Version-A DTA's GROUP key into the three separate exercise groups selection buttons; Aerobic, Anaerobic, and Stretch If the AEROBIC key is detected 384, the program will start at the first EDB and searches for the first uncompleted Aerobic exercise 385. If no uncompleted aerobic exercise is found 386, a special error message is displayed 387 and the program returns to the point of interruption 389. If an uncompleted Aerobic exercise is found, the exercise display sequence routine 388 will parse out the elements of the EDB and display them on the LCD. If the exercise parameter is 0, its display may be omitted. The display sequence is as follows:
______________________________________
AEROBIC Excerises:
______________________________________
Name of Exercise
delay 3 seconds
Mechanically/Ergonomically Settings
delay 3 seconds
Duration Setting (if not 0)
delay 3 seconds
Distance Setting (if not 0)
delay 3 seconds
Speed Setting (if not 0)
delay 3 seconds
Intensity Setting (if not 0)
delay 3 seconds
Calorie Setting (if not 0)
delay 3 seconds
Incline Setting (if not 0)
delay 3 seconds
Level Setting (if not 0)
delay 3 seconds
______________________________________
The sequence is repeated three times 390 after which the microprocessor will enter its low power sleep mode 391 until a keypad key is activated and the resultant activation interrupt is detected. The sequence will then restart at the top. If the ANAEROBIC key is detected 392, the program will start at the first EDB and searches for the first uncompleted Anaerobic exercise 393. If no uncompleted anaerobic exercise is found 394, a special error message is displayed 395 and the program returns to the point of interruption 396. If an uncompleted Anaerobic exercise is found, the exercise display sequence routine 397 will parse out the elements of the exercise description block and display them on the LCD. If the exercise parameter is 0, its display may be omitted. The display sequence is as follows:
______________________________________
ANAEROBIC Exercises:
______________________________________
Name of Exercise
delay 3 seconds
Mechanical/Ergonomically
Settings
delay 3 seconds
Pounds/Plates Setting (if not 0)
delay 3 seconds
Repetitions Setting (if not 0)
delay 3 seconds
Sets Setting (if not 0)
delay 3 seconds
Duration Setting (if not 0)
delay 3 seconds
______________________________________
The sequence is repeated three times 398 after which the microprocessor will enter its low power sleep mode 399 until a keypad key is activated and the resultant activation interrupt is detected. The sequence will then restart at the top. If the STRETCH key is detected 400, the program will start at the first EDB and searches for the first uncompleted Stretch exercise 401. If no uncompleted stretch exercise is found 402, a special error message is displayed 403 and the program returns to the point of interruption 404. If an uncompleted Stretch exercise is found, the exercise display sequence routine 405 will parse out the elements of the exercise description block and display them on the LCD. If the exercise parameter is 0, its display may be omitted. The display sequence is as follows:
______________________________________
STRETCH Exercises:
______________________________________
Name of Exercise
delay 3 seconds
Repetitions Setting (if not 0)
delay 3 seconds
Sets Setting (if not 0)
delay 3 seconds
______________________________________
The sequence is repeated three times 406 after which the microprocessor will enter its low power sleep mode 407 until a keypad key is activated and the resultant activation interrupt is detected. The sequence will then restart at the top. FIG. 18 Shows a flow diagram of the Version-B DTA firmware stopwatch START/STOP and LAP/RESET key activation sequences If the START/STOP key is detected 408, the program will first determine if the timer is already running 409. If so, the timer is stopped 410 and the program will wait for another key activation 411. If the next detected key activation is a function key, the program returns to the point of interruption 415. If the next detected key activation is a numeric key 412, the key is ignored. If the next key detected is the LAP/RESET key, the timer is reset to its initial value 416 depending if it was in count down or count up mode. If the next key detected is the START/STOP, the timer is re-enabled 413 and the timer continues. If the timer was not running initially when the START/STOP key is detected, the "Set Minutes" prompt 414 is displayed. The program waits for another key activation 417. If the START/STOP key is activated, the timer goes into its count up mode 418. If a digit is pressed, the program will accept a minutes setting 419. Any other key will be ignored. Following Inputting minutes, the program continue at Marker B for ENTER key processing 420. Upon completion of entering a valid minutes setting, the program will prompt for seconds input 421 & 422. The program continues at Marker B for ENTER key processing 423. Upon completion of entering a valid seconds setting, the program waits for another key activation 424. If the LAP/RESET key is detected, the program resets the timer function and redisplays the "Set Minutes" prompt 414. If the START/STOP key is detected, the count-down timer mode is started 425 and the program displays the elapsed time while waiting for time-out or another key activation 429. If the LAP/RESET key is activated, the program will disable the display function while maintaining the timer 428. The program will wait for the LAP/RESET key activated again 427. When detected, the display function is re-enabled 426. If the START/STOP key is activated, the timer is stopped 430 and processing continues at Marker F 431. Any other key will be ignored. The program will monitor the count in count-down mode looking for the last 5-seconds remaining 432. When detected, the alarm will beep on each second 433. When the timer expires 434, the alarm will sound several beeps and the timer is stopped 435. Processing then continues at Marker F 436. FIG. 19 Shows a flow diagram of the Version-B DTA firmware PLATES/LBS, REPS., SETS, DISTANCE, DURATION, SPEED, INCLINE, LEVEL, and CALORIES keypad key activation sequences On the Version-B DTA, each function has an individual key although the actual signal to the microprocessor may be shared. The context in which it is activated will distinguish the desired function. If the PLATES/LBS key is detected 437, the program checks to see if the EDB is Anaerobic 438, if not then a special error message is displayed and the program resumes at the point of interruption 439. If so, the program will extract the current plates/lbs value and display it 440. The program will now accept a new value 441 and then continue at Marker B for ENTER key processing 442. Upon completing a valid input, the program resumes at the point of interruption 442. If the REPS. key is detected 458, the program checks to see if the EDB is Aerobic 459, if so then a special error message is displayed and the program resumes at the point of interruption 460. If not, the program will extract the current repetitions value and display it 461. The program will now accept a new value 462 and then continue at Marker B for ENTER key processing 443. Upon completing a valid input, the program resumes at the point of interruption 464. If the SETS key is detected 479, the program checks to see if the EDB is Aerobic 480, if so then a special error message is displayed and the program resumes at the point of interruption 481. If not, the program will extract the current sets value and display it 482. The program will now accept a new value 483 and then continue at Marker B for ENTER key processing 484. Upon completing a valid input, the program resumes at the point of interruption 485. If the SPEED. key is detected 444, the program checks to see if the EDB is Aerobic 445, if not then a special error message is displayed and the program resumes at the point of interruption 446. If so, the program will extract the current speed value and display it 447. The program will now accept a new value 448 and then continue at Marker B for ENTER key processing 449. Upon completing a valid input, the program resumes at the point of interruption 450. If the DISTANCE key is detected 465, the program checks to see if the EDB is Aerobic 466, if not then a special error message is displayed and the program resumes at the point of interruption 467. If so, the program will extract the current speed value and display it 468. The program will now accept a new value 469 and then continue processing at Marker B 470. Upon completing a valid input, the program resumes at the point of interruption 471. If the INCLINE key is detected 486, the program checks to see if the EDB is Aerobic 487, if not then a special error message is displayed and the program resumes at the point of interruption 488. If so, the program will extract the current incline value and display it 489. The program will now accept a new value 490 and then continue at Marker B for ENTER key processing 491. Upon completing a valid input, the program resumes at the point of interruption 492. If the LEVEL key is detected 451, the program checks to see if the EDB is Aerobic 452, if not then a special error message is displayed and the program resumes at the point of interruption 453. If so, the program will extract the current level value and display it 454. The program will now accept a new value 455 and then continue at Marker B for ENTER key processing 456. Upon completing a valid input, the program resumes at the point of interruption 457. If the CALORIES key is detected 472, the program checks to see if the EDB is Aerobic 473, if not then a special error message is displayed and the program resumes at the point of interruption 474. If so, the program will extract the current calories value and display it 475. The program will now accept a new value 476 and then continue at Marker B for ENTER key processing 477. Upon completing a valid input, the program resumes at the point of interruption 478. If the DURATION key is detected 493, the program will extract the current duration value and display it 494. The program will now accept a new value 495 and then continue at Marker B for ENTER key processing 496. Upon completing a valid input, the program resumes at the point of interruption 497. F. Application Software Description The application software, henceforth referred to as Physicalc, is described below with reference to the drawings specified. Sample screens from the program are included for clarity. FIG. 20 Shows a connectivity diagram for the application software program depicting I/O screens and database file relationships. Following is a function by function description of the Physicalc software including a representative I/O screens and descriptions of the related database files associated with the function. The main menu for the Physicalc software program is composed of nine graphical icons 500, 501, 502, 503, 504, 505, 506, 507, & 508. By selecting the icon using a cursor pointing device (i.e. mouse) or keyboard (Tab and Enter keys), the underlying function is accessed. An associated menu bar is also available from which the user can select the function. When the user selects the Administration icon 506, the Administrative Functions capabilities of the software are accessed. A graphical interface screen 509 is presented to the user. See FIG. 25 for screen representation. By selecting a function presented on the screen or through selection from an associated menu bar, the user can perform one of the following tasks: 1. Examine pertinent file statistics. 2. Set the system access security for all users. 3. Chart the facility's exercise equipment usage. 4. Pack (remove deleted records) the database files. 5. Set system wide preferences. 6. Inventory DTA units. 7. Create mailing lists and labels for the clients stored in the system. Connected to this function are two database files. The first file is called prefs.dbf 510 and is a small database file used to hold system wide preference parameters. A description of a data stored in the preference table includes the following: 1. A list of membership type categories. 2. A list of Trainer classification types. 3. The hours of operation for the facility. 4. The host PC communications port the DTA Programming Stand is connected to. The other database file is called dta.dbf 511. This will hold the status of Digital Training Assistant units programmed by Physicalc during the current session. It is used in the Inventory DTA function in both the Administrative functions and Reports & Graphs functions of the program. A description of the records included in the database includes: 1. The client's membership number. 2. The date the DTA was uploaded. 3. The date the DTA was downloaded. When the user selects the Configure Facility icon 505, the Facility Configuration function of the software is activated. A graphical interface screen 512 is used to input and display data records from the facility configuration database. Refer to FIG. 26 for screen representation. This function is used to create a database of exercises and exercise equipment that are available at the facility in which the system is installed. An additional capability is the ability to create a series of template files containing a subset of exercises from the facility's master database. These templates can then be used to quickly construct exercise routines with pre-defined equipment lists. Connected to this function are four database files. The facility configuration database file called facility.dbf 515 will contain records representing all the exercise equipment available at the facility where the Physicalc program is to be used. The user will use the Facility Exercise Configuration screen and associated menu bar to build the file's records. A complete description of an exercise includes the following: 1. Muscle Group being worked 2. Classification (free weights, nautilus machine, etc.) 3. Exercise Group (Aerobic, Anaerobic, or Stretch) 4. Exercise Name (50 characters maximum) 5. Name as Displayed by DTA (16 characters maximum) 6. Lookup Table # (if name comes from the hardcoded lookup table) Exercises that are specified as AEROBIC will have the additional following information: 1. Up to seven (7) Mechanical settings for equipment setup (specified as a letter or number) 2. Duration (specified as either seconds, minutes, or hours) 3. Level Setting (either a letter or number) 4. Speed Setting (specified as either mph, kph, fpm, or mpm) 5. Calories Setting 6. Distance Setting (specified as either kilometers, meters, miles, or feet) 7. Incline (specified as degrees, used on treadmills) 8. Intensity Setting (target pulse rate) Exercises that are specified as ANAEROBIC will have the additional following information: 1. Up to seven (7) Mechanical settings for equipment setup (specified as a letter or number) 2. Pounds/Plates Setting (pounds for free weights and plates for weight machines) 3. Repetitions setting 4. Sets setting (number of groups of repetitions) 5. Duration (specified as either seconds, minutes, or hours) Exercises that are specified as STRETCH will have the additional following information: 1. Repetitions setting 2. Sets setting (number of groups of repetitions) 3. Duration (specified as either seconds, minutes, or hours) A supplemental read-only table called lookups.dbf 516, contains a list of exercise names and associated code numbers. This table mimics the table of hard-coded exercise names found in the Digital Training Assistant (DTA) hand-held computer's firmware program. It will be used to substitute a number in place of a 16 character exercise name when programming the DTA units. This saves considerable memory space in the DTA. As mentioned earlier, as a record is built, it may be added to Exercise Template files 514 with the unique naming convention: xxxxxtpl.dbf (where xxxxx=first 5 characters specified by user) The user may choose to add the current completed exercise record to a specified template table file using the Add to Template screen push button or Template.fwdarw.Add to Template menu option The end result of adding to the template is a custom list of exercises that the user can then copy to a client's workout routine as a skeleton to build upon. A Template file shares the same structure as the facility.dbf database file. The Muscle Group Files 513 are composed of two read-only database files. The genmus.dbf database file is a read-only list of muscle groups arranged by major body part then alphabetically by major muscle group in that part of the body. The specmus.dbf database file is a read-only list of muscle groups arranged by major body part then alphabetically by specific muscle group in that part of the body When the Client Setup icon 507 is selected, the client Information Setup function is activated. This function allows the user to input and display demographic and medical data into a client database file. Activation of the function presents the Client Information Screen 517. Refer to FIG. 27 for screen representation. This screen is one of two used to input and display the demographic, membership and medical data elements of the selected client database. There are controls for moving around in the database as well as search, remove, and adding capabilities. Additional controls provide access to the Medical Info Screen as well as accessing the Workout Builder utility. Connected to this screen is a single database file called client.dbf 518. This database will contain records representing demographic and medical information from a set of clients utilizing the Physicalc system. The user will use the Client Info Screen 517, Medical Info Screen 519 and associated menus to build records. A complete description of a client database record includes the following: Personal Data: 1. Full Name 2. Date of Birth 3. Age (computed to current date) 4. Sex Home Address: 1. Street Address 2. Apartment/Unit Number 3. City 4. State 5. ZIP code (w/4-digit extension) Business Information: 1. Business Name 2. Job Title 3. Street Address 4. Department/MS 5. City 6. State 7. ZIP code (w/4-digit extension) Membership Data: 1. Membership # 2. Membership Type 3. Expiration Date 4. Personal Trainer's Name Phone Numbers: 1. Home Phone Number 2. Business Phone Number Relevant Notes Access to the Medical Information Screen 519 is through the Client Information Screen Medical push-button or menu selection. Refer to FIG. 28 for screen representation. This screen is used to input and display medical oriented data elements of the client database file. The following client.dbf database file record data items are accessed through the Medical Information screen: Cardiac Risk Factors: 1. Age (computed to the current date) 2. Name of pulmonary condition (if any) 3. Existence of a heart condition 4. Existence of a heart conditions in the family 5. Existence of a Hypertension 6. Level of daily stress (low, medium, or high) 7. Smoking habits (how much and for how long) 8. Maximum Stress Test score 9. Physical activity level 10. Cholesterol HDL & LDL values Other Medical Information: 1. Existence of Asthma 2. Existence of any Hernia 3. Use of contact lenses or Glasses 4. Existence of Diabetes 5. History of being frequently tired 6. Existence of Allergies 7. Current Pregnancy 8. Family history of problem pregnancies 9. Alcohol Intake (drinks per week) 10. Number of common colds per year 11. Caffeine intake (cups or can per day) 12. List of major surgeries 13. List of current medications 14. Date of last physical (by physician) 15. Physician's name 16. Physician's phone number (or other in case of emergency number) Orthopedic Conditions: 1. client's height 2. client's weight 3. Existence of Cervical problems 4. Existence of Thoracic problems 5. Existence of Lumbar problems 6. Existence of Sciatica problems 7. Existence of Shoulder problems 8. Existence of Elbow problems 9. Existence of Wrist problems 10. Existence of Finger problems 11. Existence of Sacroiliac problems 12. Existence of Hip problems 13. Existence of Knee problems 14. Existence of Ankle problems 15. Existence of Toe problems 16. Description of injuries Each client entered into the system may have an associated fitness workout program designed for him/her. Connected to this screen are four database files. The Workout Builder function of the software is accessed from the Client Information Screen Workout push-button or menu selection. The Client Workout Profile Builder screen 520, is presented to assist the user in constructing a workout program for the currently selected client record in the client.dbf database file. Refer to FIG. 29 for screen representation. The workout.dbf database file 521 is used as a template for creating individual Client Workout Routine 522 and Client Workout History 523 database files. In creating the individual client's workout routines, the structure from workout.dbf is copied to create the new Client Workout Routine file. A complete description of a workout routine includes the following: 1. Exercise Group (Aerobic, Anaerobic, or Stretch) 2. Machine/Exercise Mechanical Settings 3. Parametric Exercise Settings (not necessary all listed used per exercise) a. Pounds/Plates b. Repetitions c. Sets d. Duration e. Distance f. Speed g. Intensity h. Incline i. Calories j. Level 4. Exercise Philosophy a. When to increase parameter b. What parameter to increase c. By how much to increase parameter d. How to continue the increase parameter philosophy e. When to decrease parameter f. What parameter to decrease g. By how much to decrease parameter h. How to continue the decrease parameter philosophy 5. Routine Time Stamping a. Start of Routine Date b. Date of latest Completion c. Enable Days d. Set Number Designation The client Workout Routine file is uniquely named using the following formula: xxxxyyyy.dbf xxxx: first 4-letters of th client's last name taken from the currently selected record in the Client Database file last name (last.sub.-- name) field. If the client's last name is shorter than four letters, the lower case letter `x` is appended until four letters are created. yyyy: last 4-digits of client's membership number taken from the currently selected record in the Client Database membership number (member.sub.-- no) field. If the client's membership number is shorter than four digits, the number 9 is appended until four digits are created. The Client Workout Routine database files 522, henceforth referred to as CWR, contains a single copy of the client's computed workout routine for the day it was requested. It will be used to create a new workout routine based upon past performance and special "philosophy" parameters entered using the Exercise Philosophy Configuration screen 524. The routine is then scheduled over a 7 day period using the Schedule Routine Screen 525. The client may have up to 7 different workout routines designated as sets. The CWR file is grouped by set first and then sorted by exercise in the order they were input into the system. The Client Workout History database files 523, henceforth referred to as CWH, are uniquely named using the follow formula: xxxxyyyy.his xxxx: first 4-letters of the client's last name taken from the currently selected record in the Client Database file last name (last name) field. If the client's last name is shorter than four letters, the lower case letter `x` is appended until four letters are created. yyyy: last 4-digits of client's membership number taken from the currently selected record in the Client Database membership number (member.sub.-- no) field. If the client's membership number is shorter than four digits, the number 9 is appended until four digits are created. The CWH contain a history of completed exercises. This file is composed of records representing exercises and associated performance parameters. Each record contains a date stamp allowing the Report & Graphs function to generate reports and graphs of client performance over a selected period of time. Following a workout session, the client's executed workout information data package is transferred from the DTA, modified (irrelevant fields removed, i.e. mechanical settings), date stamped, and appended to the client's CWH file. A complete description of a data stored in the records of a CWH file includes the following: 1. Full Exercise Name 2. DTA Exercise Name 3. Exercise Group (Aerobic, Anaerobic, or Stretch) 4. Parametric Exercise Settings (not necessary all listed used per exercise) a. Pounds/Plates b. Repetitions c. Sets d. Duration e. Distance f. Speed g. Intensity h. Incline i. Calories j. Level 5. Client's Weight 6. Client's Pulse 7. Client's Blood Pressure 8. Date of routine completion 9. Completed as Prescribed Flag The trainer supplements an exercise's description by adding a "Philosophy" to the exercise. The Philosophy describes the action to be performed on selected exercise parameters when the client performs (or not) the exercise in the specified fashion. Pushing the Set Philosophy screen push button activates the Exercise Philosophy Configuration screen 524 where the trainer can now assign his philosophy parameters to the exercise. Refer to FIG. 30 for screen representation. The exercise can have two of its parameters increase and two of its parameters decrease automatically. Alternatively, the exercise can choose to automatically remove itself when a specific condition is met. One action for each function is designated as the primary action and the one action is the secondary action. Both functions require a "trigger event" to occur before the increment, decrement or removal can occur. This trigger event involves checking a selected parameter against a selected value using a logical type operator. When the trigger event evaluates as "True", the primary action occurs. A limit value is included to prevent the primary action from setting a parameter too high or too low. After the trigger event occurs, it is automatically reset with the new primary action parameter value as the base. An optional 2nd Action may also occur when the trigger event occurs. A separate check box for both the Increase and Decrease functions is provided. A second set of parameter popup lists is used to set a secondary action. The secondary action will occur every time the trigger event occurs until its own selectable limit value is reached of the primary action's limit is reached, which ever comes first. NOTE: Program code will prevent the user from setting the primary and secondary action to the same parameter The user specifies the parameter to be automatically modified. Next he chooses the numeric value to either add or subtract from the parameter. The user can chose a discrete value or a percentage of the current value with the % radio button. Next he selects a modification limit for the parameter. When the limit is attained, further modification is disabled. Next the trigger event is decided by selecting a different parameter or the additional options of elapsed days or completed as prescribed. Then the trigger parameter operator is selected from one of the following: = Equal to < Less than <= Less than or equal to > Greater than >= Greater than or equal to |= Not equal to The comparison value is set next. The trigger event will be evaluated as either True or False. A True evaluation constitutes a trigger event. The user may for either case (increase or decrease) specify a second action to be performed. Checking the Trigger 2nd Action checkbox will enable a second different parameter to be augmented. The user must again select the parameter, the increment or decrement value or percentage and the limit for the parameter. Every time Physicalc is requested to create a client's daily workout routine, the trigger event for each exercise record in the client's CWR 522 is check against the most recent corresponding exercise record stored in the client's CWH 523 file. If the trigger conditions are determined as being met, the action parameters in the CWR 522 record is modified according to the action specification. For the initial workout, the date stored in a special field is used to determine any elapsed days. The primary and secondary actions may also be incremented or decremented as a percentage of the current value. Selection of the % radio button will activate this feature. A removal of an exercise as the primary action is a single shot event and once triggered, it remains disabled until explicitly set by a new philosophy setting. Pushing the Set Schedule screen push button activates the Schedule Routine screen 525 where the trainer can now schedule exercise routines. Refer to FIG. 31 for screen representation. Exercises can be grouped into 1 of 7 sets. This allows for the formulation of exercise set rotations found in many professional and competitive training regiments. A field in the records of the CWR database file called ex.sub.-- set designates the set it belongs to. A further enhancement of this function is the ability to schedule these sets over an arbitrary 7-day period. The period is designated as DAY #1 through DAY #7 with DAY #1 being set to a specific day of the week (stored in its own field). You can now schedule any set to any day using the Schedule Routine Screen. The trainer simply types a number under the Day X field to designate that on that day, the exercises with the matching set number are used to formulate the daily workout routine. The software calculates the day number using the current date and the value stored in the special field. Program code for this screen will assign a bit in a byte for each day of the week (bit 1=Day 1, etc.). When the Done screen push button is pressed, the program will look at the exercise set field of ALL records in the selected CWR database file. It will set the bit in the record's field called week.sub.-- sched corresponding to each day the exercise set was found in. For example, an exercise record designated as belonging to Set #1 with the following Schedule Routine Screen settings will produce the resulting byte: ##STR1## The philosophy day counting rules count total elapsed days including those not designated for the particular set. The When parameter must account for this when setting Elapsed Days. If the user selects the Automatic Mode icon 508, the Automatic Mode function is executed. Refer to FIG. 32 for screen representation. The Automatic Mode screen 526, is used to operate all the functions of the utility. When the client's membership card is read by the bar-code or magnetic strip reader it will present the membership number (10-digit max) to the Automatic Mode program code. The number will then be passed to the Program DTA Procedure and used to access the client's CWR 528 and CWH 527 to formulate the workout routine for the day. The workout routine is formatted into the upload exercise routine data package and transmitted to the DTA. Status of the operation is reflected in the Status field. The user can also elect to receive data from a DTA (download). The function sends the appropriate command to the DTA to initiate downloading of its data. The data is parsed and reformatted to be incorporated back into the client's CWH file. Additional functionality allows the user to instantly perform some limited graphing functions for the client. If the user selects the Blood Pressure icon 501, the Blood Pressure Input mode function is executed. Refer to FIG. 33 for screen representation. The Blood Pressure Input screen 530, is used to operate all the functions of the utility. When the client's membership card is read by the bar-code or strip reader it will present the membership number (10-digit max) to the Blood Pressure Input program code. The number will then be used to access the client's CWH 531 to allow fast input of the blood pressure systolic and diastolic readings to their appropriate fields in the database's records without having to manually open the file and insert the data. When the Trainers Setup icon 503 is selected, the Trainer Information Setup function is activated. This function allows the user to input and display demographic and employment data into the trainer database file 533. Activation of the function presents the Trainer Information Screen 532. Refer to FIG. 34 for screen representation. This screen is used to input and display the demographic and employment data elements of the trainer database file 533. There are controls for moving around in the database as well as search, remove, and adding capabilities. Connected to this screen is a single database file called trainer.dbf 533. This database will contain records representing demographic and employment information for a set of trainers utilizing the Physicalc system. The user will use the Trainer Info Screen 532, and associated menu to build records. A complete description of a Trainer database record includes the following: Personal Data: 1. Full Name 2. Date of Birth 3. Age (computed to current date) 4. Sex Home Address: 1. Street Address 2. Apartment/Unit Number 3. City 4. State 5. Zip Code (w/4-digit extension) Employment Data: 1. Employee # 2. Employee Type 3. Start Date 4. Security Clearance Level 5. Security Password 6. Work Schedule Phone Numbers 1. Home Phone Number Relevant Notes Selecting the Reports & Graphs icon 504 will activate the Report and Graph generating function. This function will gather data elements from selected records in the DTA usage file 535, the client database riles 536, and the Client Workout History database files 537. A single main screen is used to operate the function. Refer to FIG. 35 for screen representation. Through the screen's graphical icons, the following reports and graphs can be generated: 1. Graphing a client's weight over a specified time period. 2. Graphing a client's pulse over a specified time period. 3. Graphing a client's blood pressure over a specified time period. 4. Graphing a selected exercise's parameter for a specific client over a specified time period. 5. Create mailing lists and produce mailing labels for specified clients. 6. Report a client's workout frequency. 7. Report a selected client's demographic and medical history. 8. Report on equipment usage over time by all clients. 9. Report Digital Training Assistant usage. Selecting the Help icon 500 will bring up the on-line help utility allowing the user to access text describing the functions and operations of the system. A context type help is available using the F1 key when the cursor is in a particular field of a screen. A topical help is also available using the Help icon 500 or the Help menu option. The user with appropriate access clearance can also modify the text of the help screens to instruct the users on club practices and procedures. Selecting the Exit icon 502 will exit the program back to the Windows.TM. program manager. G. Digital Training Assistant Workout Routine Program Creation Description Central to the Physical application software are the software algorithms that create and decode exercise routine data packages. Collective they are referred to as the Program DTA procedure. Wherever necessary, the actual database file record field name is used for clarity. The Program DTA procedure is divided into two sections. The first section involves compiling data from the Physicalc system's database files and transmitting it to a DTA (Transmit to DTA Subfunction). The second section involves the reverse process of taking data from a DTA and transferring it back into the system's database files (Receive From DTA Subfunction). The following sections assume that the selected client's record in the currently selected Client Database file, the client's CWR, and CWH files are opened. Transmit to DTA Subfunction The DTA requires an upload of an exercise routine data package before use. The uploaded data consists of the exercises to be performed and the associated setup and performance parameters as determined by the trainer and the Physicalc program. DTA Data Package Format NOTE: All following data byte values are in their hexadecimal format as indicates by the leading 0x prefix to the number. The DTA accepts a "data package" made up of embedded codes describing the client and the workout routine. The Program DTA Procedure will first construct the Header Block followed by the Exercise Description Blocks (EDBs) and terminated by a Footer code byte and Checksum Byte. Header Block The Header Block consists of 19 bytes. Any data not explicitly specified will be set to 0x0.
______________________________________
Byte 1 HEADER COMMAND
Byte 2 MEMBER # LSB
Byte 3 MEMBER #
Byte 4 MEMBER #
Byte 5 MEMBER # MSB
Byte 6 # OF CHARACTERS IN NAME
Byte 7 222 11111
Byte 8 4 3333 22
Byte 9 55555 4444
Byte 10 77 66666 5
Byte 11 88888 777
Byte 12 AAA 99999
Byte 13 C BBBBB AA
Byte 14 DDDD CCCC
Byte 15 FF EEEEE D
Byte 16 GGGGG FFF
Byte 17 WEIGHT LSB
Byte 18 WEIGHT MSB
Byte 19 PULSE
______________________________________
Header Command (Byte 1) The header command is a byte that tells the DTA to operate in Normal Mode or Learn Mode. In Learn Mode, the DTA user can change the mechanical/ergonomic settings. In Normal Mode these changes are locked out. Normal Mode and Learn Mode are selectable in the Workout Builder menu DTA.fwdarw.Program DTA submenu options. Normal Mode=0x00 Learn Mode=0x02 Membership Number Bytes (Bytes 2-5) The member.sub.-- no field of the client's client database (client.dbt) record in the currently selected client database file contains a 10-digit maximum integer number. This number is stored as four bytes in the header block with leading 0's as required. The Least Significant Byte (LSB) is stored in the Byte 2 location and the Most Significant Byte (MSB) in the Byte 5 location. Client's Last Name Number of Characters Byte (Byte 6) The client's last name is loaded into the DTA up to a maximum of 16 characters. The ASCII characters that makeup the last name are packed into the next 10 bytes to conserve memory in the DTA. The Number of Characters byte will tell the DTA software how many characters to extract from it's memory to display the user's last name. The number of actual characters is determined by counting characters in the last.sub.-- name field of client's record in the currently selected client database file. Client's Packed Last Name Bytes (Bytes 7-16) As mentioned in the above section, the ASCII characters of the client's last name are packed into 10 bytes. The ASCII value of the character is trimmed to only 5 bits, the most significant three (3) bits will be added by the DTA firmware. This, again, is done to conserve space in the limited DTA memory. The characters are represented as the numbers 1-9 and letters A-G in the following packing diagram. In the table below, the bits of the ASCII byte representing the first letter of the client's last name (all leading and trailing blanks removed) is represented by the number 1, the second character's bits by 2, and the last by G. Bits are ordered from right to left, least significant to most significant. The program code will reformat the client's last name character string taken from the last.sub.-- name field of the client's record in the currently selected client database file.
______________________________________
Byte 7
222 11111
Byte 8
4 3333 22
Byte 9
55555 4444
Byte 10
77 66666 5
Byte 11
88888 777
Byte 12
AAA 99999
Byte 13
C BBBBB AA
Byte 14
DDDD CCCC
Byte 15
FF EEEEE D
Byte 16
GGGGG FFF
______________________________________
NOTE: Any blank bytes or left over bits in the byte are set to 0 Client's Weight Bytes (Bytes 17-18) The client's weight is stored in the CWH file's weight field. The program finds the most current record (looking at the ex.sub.-- date field) and extracts the value of the weight field in the record. If no current record found then the value defaults to 0x0000. The field is specified as three digits and a tenths of a pound digit. The program must reformat the data as follows. If there is a tenths digit other than 0 specified (i.e. 195.8 lbs. or 97.1 lbs.) the number is multiplied by 10 to remove the fraction and stored in two (2) bytes. The MSB byte's most significant bit must then be set as a flag to notify the DTA software to divide the number by 10 before displaying. For Example: ##STR2## Client's Pulse (Byte 19) The client's pulse is stored in the CWH file's pulse field. The program finds the most current record (looking at the ex.sub.-- date field) and extracts the value of the pulse field in the record. If no current record found then the value defaults to 0x00. The pulse value is stored in Byte 19 of the Header Block. Exercise Description Blocks (EDB) Following the creation of the Header Block, the Program DTA Procedure--Transmit to DTA Subfunction will now construct EDBs incorporating Physicalc's exercise philosophy algorithms. Exercise Philosophy Pre-Processing The exercise routine for the specific day is extracted from the client's CWR file. Now the philosophy feature of Physicalc uses the last completed routine matching the exercise set number as derived from the processing depicted below. The process follows a step by step procedure as follows: 1. The program first looks at the current system date and determines what day of the week it is, Monday, Tuesday, etc. 2. The program then looks at the d.sub.-- of.sub.-- week field in the first record of the CWR file. By design, all records in the CWR will have the same value in the d.sub.-- of.sub.-- week field. 3. Using the d.sub.-- of.sub.-- week value the program computes what day of the week number it is for the particular client. 4. The program will now, starting at the first record, scan through each record in the CWR and look at the record's week.sub.-- schd field byte. If a bit is set in the computed Day # bit position AND the ex.sub.-- enable field is logical True, the exercise record is copied to a temporary | ||||||
