Expanding shift register code

final code, reads 9 registers:

const int dataPin = 12;   /* Q7 */
const int clockPin = 13;  /* CP */
const int latchPin = 14;  /* PL */
 
const int bits = 72;   //8x number of registers e.g 2 registers = 16

void setup() {
  Serial.begin(115200);
  pinMode(dataPin, INPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(latchPin, OUTPUT);
}
String ios = ""; //in my case, strings fit better. recommend using array
void loop() {
  // Step 1: Sample
  digitalWrite(latchPin, LOW);
  digitalWrite(latchPin, HIGH);
 
  // Step 2: Shift
  ios = "";
  for (int i = 0; i < bits; i++) {
    int bit = digitalRead(dataPin);
    if (bit == HIGH) {
      ios.concat("1");
    } else {
      ios.concat("0");
    }
    digitalWrite(clockPin, HIGH); // Shift out the next bit
    digitalWrite(clockPin, LOW);
  }
  for(int a = 8; a < bits+8; a = a+8){
    Serial.println("register " + String(a/8) + ": " + ios.substring(a-8,a));
  }
  Serial.println();
  delay(1000);
}